Export Apple String Catalog translations

Crowdin’s String Catalog support is great when I’m uploading and translation in crowdin.

However, when I export it, String Catalogs are rolled up into an xliff file.

Is there a way to get the translated xcstrings file, without going through the xliff?

Hello @minima

Just checked your project from my database → for all languages are generated the .xliff file that you have as well

But .xcstrings are multilingual (check the “app” folder if you for example Build&Download, without any Bundles)

I don’t understand what you’re saying.

Can I export the multilingual xcstrings file? There isn’t an option for me to check/select just the “app” folder when I “Build & Download” in the “Translations” tab.

You have not only .xcstrings but also .xliff files in your projects.

Because of this, when you Build & Downalod the project from UI, you receive .zip archive with all the translations, and the structure of folders should be like this:

-app
-de-de
-es-es
-fr-rf

In the app folder, there will be .xcstrings files, and in the language-named folders (like de-de) will be .xliff for that language.

If you want to download 1 file only, you can do it from UI (sources → 3 bullets near needed file → language progress → select and download needed). You can also use API or CLI for more automized processes. Or Bundles, if you want to combine those .xliff and .xcstrings

Thank you, that makes a lot more sense.

Follow up question: if I didn’t have that xliff file in my project, would Build & Download package up xcstrings?

Also: downloading the xcstrings file from Sources tab doesn’t download the updated translations. Same when using the CLI tool. It worked once or twice, but now it’s not working at all, even for approved translations.

This option creates a .zip archive, if unzip it, then yes, there will be .xcstrings

You can connect an integration, like GitHub or similar. In this case, the file will be automatically updated.

Or you have managed to create an API-based workflow?

The zip archive did not have xcstrings. Instead, the xcstring content was in the xliff file, along with everything else.

I tried the CLI but when downloading sources, it wouldn’t download the updated translated strings. I couldn’t specify a translated value for the source xcstrings file, because it requires %locale% or similar variable in the string.

I’m new to crowdin, so I could be missing something obvious. But it just does not work.

Have you attempted to utilize bundles? With bundles, you can export translations in various file formats: Target File Bundles | Crowdin Documentation

In Create Bundle > Targets, I can’t add the Apple String Catalog as a format to output to. When I tap “Add more”, there isn’t an option for Apple String Catalog.

I’d rather not manually configure the json exporter, since I’m not familiar with the file structure of Apple String Catalog.

Could you guys look into adding a string-exporter that supports Apple String Catalog?

Thank you for reaching out. Currently, the Apple String Catalog format is not directly supported in the Create Bundle section. Currently, Apple .stringsdict Exporter is supported:

We understand your concern about manually configuring the JSON exporter. We appreciate your suggestion to add a string-exporter that supports Apple String Catalog. Your feedback is valuable and we will certainly consider this for future updates.

In the meantime, if you have any further questions or need additional assistance, please don’t hesitate to let us know.

Have a great day!

1 Like