Can't exclude language via GitHub-Action/Crowdin-CLI

Hi there,

We are currently in a process to renew our language tooling and used Crowdins own GitHub-Action, which uses the CLI.

Now we experience some weird behaviour at some places:

  1. Bokmal (two letters code: nb) won’t be excluded by the import, even when mentioning it in excluded_target_languages in the crowdin.yml. We included 2 codes to exclude, nb & sr. While sr will be excluded, nb won’t-
  2. German (de) should be renamed via the languages_mapping option to de-DE which the action doesn’t do as well.

Can you give us a hint?

This is our files property in the crowdin.yml:

files: [{
    "source": "/en-GB/**/*.json",
    "translation": "/%two_letters_code%/**/%original_file_name%",
    "type": "json",
    "excluded_target_languages": [
        "nb",
        "sr"
    ],
    "languages_mapping": {
        "two_letters_code": {
            "ar": "ar-SA",
            "bg": "bg-BG",
            "bs": "bs-BA",
            "ca": "ca-ES",
            "cs": "cs-CZ",
            "da": "da-DK",
            "de": "de-DE",
            "el": "el-GR",
            "fi": "fi-FI",
            "fr": "fr-FR",
            "he": "he-IL",
            "hi": "hi-IN",
            "hr": "hr-HR",
            "hu": "hu-HU",
            "id": "id-ID",
            "it": "it-IT",
            "ja": "ja-JP",
            "ko": "ko-KR",
            "lt": "lt-LT",
            "lv": "lv-LV",
            "nl": "nl-NL",
            "no": "nb-NO",
            "pl": "pl-PL",
            "pt": "pt-PT",
            "ro": "ro-RO",
            "ru": "ru-RU",
            "sk": "sk-SK",
            "sl": "sl-SI",
            "th": "th-TH",
            "tr": "tr-TR",
            "uk": "uk-UA",
            "vi": "vi-VN",
        }
    }
}

Hi @marcelbrode,

Could you please check if there is no mapping for Bokmal in your Crowdin project?

Regarding the German language not being renamed to de-DE, it appears that your configuration is correct. However, it’s possible that there might be a caching issue or a syntax error elsewhere in your crowdin.yml file that’s affecting this functionality.

Could you please try the following steps?

  1. Clear any caches related to the GitHub Action or CLI tool you might have.
  2. Validate the syntax of your entire crowdin.yml file to ensure there are no errors.
  3. Run the GitHub Action again

If the issue persists, please run the CLI command with the --debug and --verbose parameters, as this can provide more insight into what might be going wrong.

Hey @NataliaS !

if you’re talking about language mapping, there’s currently none in crowdins language settings, only in the yml mentioned.

Regarding your steps:
I don’t know if there’s other Caches beside the “Caches” section of GitHub Actions, but I took care of those.

Tried it locally via the CLI which behaves the exact same. --debug and --verbose seem not to do anything via crowdin pull command.

Are there settings in crowdin preventing the change? It’s just interesting, that german and english are our main languages and germany just doesn’t work. (Default project language in crowdin is english btw)

But here, just to make sure, the full yml file and output:

"project_id_env": "CROWDIN_PROJECT_ID"
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
"base_path": "./translations/"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

files: [{
    "source": "/en-GB/**/*.json",
    "translation": "/%two_letters_code%/**/%original_file_name%",
    "type": "json",
    "excluded_target_languages": [],
    "languages_mapping": {
        "two_letters_code": {
            "ar": "ar-SA",
            "bg": "bg-BG",
            "bs": "bs-BA",
            "ca": "ca-ES",
            "cs": "cs-CZ",
            "da": "da-DK",
            "de": "de-DE",
            "el": "el-GR",
            "fi": "fi-FI",
            "fr": "fr-FR",
            "he": "he-IL",
            "hi": "hi-IN",
            "hr": "hr-HR",
            "hu": "hu-HU",
            "id": "id-ID",
            "it": "it-IT",
            "ja": "ja-JP",
            "ko": "ko-KR",
            "lt": "lt-LT",
            "lv": "lv-LV",
            "nl": "nl-NL",
            "no": "nn-NO",
            "pl": "pl-PL",
            "pt": "pt-PT",
            "ro": "ro-RO",
            "ru": "ru-RU",
            "sk": "sk-SK",
            "sl": "sl-SI",
            "th": "th-TH",
            "tr": "tr-TR",
            "uk": "uk-UA",
            "vi": "vi-VN",
        }
    }
}, {
    "source": "/en-GB/**/*.json",
    "translation": "/%locale%/**/%original_file_name%",
    "type": "json",
    "excluded_target_languages": [],
    "languages_mapping": {
        "languages_mapping": {
            "locale": {
                "sr-CS": "sr-RS"
            }
        }
    }
}]

and output:

 crowdin pull --debug --verbose
✔️  Fetching project info     
✔️  Building ZIP archive with the latest translations
✔️  Building translation (100%)
✔️  Downloading translations     
✔️  Extracting archive     
✔️  Extracted: 'ar-SA/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'ar-SA/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Platform/Core/messages.json'
✔️  Extracted: 'bg-BG/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'bg-BG/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'bg-BG/Plugins/SwagSocialShopping/Administration/administration.json'
✔️  Extracted: 'bs-BA/Platform/Core/messages.json'
✔️  Extracted: 'bs-BA/Platform/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'bs-BA/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'bs-BA/Plugins/SwagSocialShopping/Administration/administration.json'
✔️  Extracted: 'ca-ES/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'ca-ES/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Platform/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Platform/Core/messages.json'
✔️  Extracted: 'cs-CZ/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'cs-CZ/Plugins/SwagSocialShopping/Administration/administration.json'
✔️  Extracted: 'da-DK/Platform/Administration/administration.json'
✔️  Extracted: 'da-DK/Platform/Core/messages.json'
✔️  Extracted: 'da-DK/Platform/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'da-DK/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'da-DK/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Platform/Administration/administration.json'
✔️  Extracted: 'de-AT/Platform/Core/messages.json'
✔️  Extracted: 'de-AT/Platform/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'de-AT/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'de-AT/Plugins/SwagSocialShopping/Administration/administration.json'
✔️  Extracted: 'de-CH/Platform/Administration/administration.json'
✔️  Extracted: 'de-CH/Platform/Core/messages.json'
✔️  Extracted: 'de-CH/Platform/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'de-CH/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'de-CH/Plugins/SwagSocialShopping/Administration/administration.json'
✔️  Extracted: 'de/Platform/Administration/administration.json'
✔️  Extracted: 'de/Platform/Core/messages.json'
✔️  Extracted: 'de/Platform/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'de/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagMigrationMagento/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'de/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'de/Plugins/SwagSocialShopping/Administration/administration.json'
[... Lots of same stuff, deleted because of character limit]

@marcelbrode It looks like you have two file groups in your configuration file that match the same sources but have different translation patterns. This is probably causing some conflicts.

Also, the languages_mapping configuration in the second file group is wrong - it contains a double-nested languages_mapping object.

Please try to merge these two file groups into one. Then make sure that the “resulting file after translations export” is correct (FAQ | Crowdin CLI).

@andrii-bodnar Noticed that double nesting as well, fixed it but it’s still not functioning :confused:

Yup, 2 file groups, but the reason is crowdin, since without those two groups, it doesn’t really fetch crowdins languages, so I need one for the 2-letter-crowdin-languages and one for the locale-crowdin-languages, since in our product we only have locale codes.

When I comment the second block, I get the following, which are all language files with languages crowdin itself uses a locale for. If I comment the first block, it’s 100% reverse. If you know how to combine those, feel free to help me :slight_smile:

Edit:
The Documentation shows me that I’m able to setup some custom names with stuff like test.%language%.json or similar, but it seems due to the redesign it isn’t there anymore.
I also tried to language mapping of course, but it ignores that as well

Due to missing respective sources, the following translations will be omitted:
	- hy-AM/Platform/Core/messages.json
	- hy-AM/Plugins/SwagCmsExtensions/Administration/administration.json
	- hy-AM/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- hy-AM/Plugins/SwagPayPal/Storefront/storefront.json
	- hy-AM/Plugins/PluginPublisher/Storefront/storefront.json
	- hy-AM/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- hy-AM/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- en-GB/Platform/Storefront/storefront.json
	- en-GB/Platform/Administration/administration.json
	- en-GB/Platform/Core/messages.json
	- en-GB/Plugins/SwagCmsExtensions/Administration/administration.json
	- en-GB/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- en-GB/Plugins/SwagMigrationAssistant/Administration/administration.json
	- en-GB/Plugins/SwagMigrationMagento/Administration/administration.json
	- en-GB/Plugins/SwagSocialShopping/Administration/administration.json
	- en-GB/Plugins/SwagPayPal/Administration/administration.json
	- en-GB/Plugins/SwagPayPal/Storefront/storefront.json
	- en-GB/Plugins/SwagCustomizedProducts/Administration/administration.json
	- en-GB/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- en-GB/Plugins/PluginPublisher/Administration/administration.json
	- en-GB/Plugins/PluginPublisher/Storefront/storefront.json
	- en-GB/Plugins/SwagB2bPlatform/Administration/administration.json
	- en-GB/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- en-GB/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- en-GB/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- en-US/Platform/Core/messages.json
	- en-US/Plugins/SwagCmsExtensions/Administration/administration.json
	- en-US/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- en-US/Plugins/SwagPayPal/Storefront/storefront.json
	- en-US/Plugins/PluginPublisher/Storefront/storefront.json
	- en-US/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- en-US/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- de-AT/Platform/Storefront/storefront.json
	- de-AT/Platform/Administration/administration.json
	- de-AT/Platform/Core/messages.json
	- de-AT/Plugins/SwagCmsExtensions/Administration/administration.json
	- de-AT/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- de-AT/Plugins/SwagMigrationAssistant/Administration/administration.json
	- de-AT/Plugins/SwagMigrationMagento/Administration/administration.json
	- de-AT/Plugins/SwagSocialShopping/Administration/administration.json
	- de-AT/Plugins/SwagPayPal/Administration/administration.json
	- de-AT/Plugins/SwagPayPal/Storefront/storefront.json
	- de-AT/Plugins/SwagCustomizedProducts/Administration/administration.json
	- de-AT/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- de-AT/Plugins/PluginPublisher/Administration/administration.json
	- de-AT/Plugins/PluginPublisher/Storefront/storefront.json
	- de-AT/Plugins/SwagB2bPlatform/Administration/administration.json
	- de-AT/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- de-AT/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- de-AT/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- de-CH/Platform/Storefront/storefront.json
	- de-CH/Platform/Administration/administration.json
	- de-CH/Platform/Core/messages.json
	- de-CH/Plugins/SwagCmsExtensions/Administration/administration.json
	- de-CH/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- de-CH/Plugins/SwagMigrationAssistant/Administration/administration.json
	- de-CH/Plugins/SwagMigrationMagento/Administration/administration.json
	- de-CH/Plugins/SwagSocialShopping/Administration/administration.json
	- de-CH/Plugins/SwagPayPal/Administration/administration.json
	- de-CH/Plugins/SwagPayPal/Storefront/storefront.json
	- de-CH/Plugins/SwagCustomizedProducts/Administration/administration.json
	- de-CH/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- de-CH/Plugins/PluginPublisher/Administration/administration.json
	- de-CH/Plugins/PluginPublisher/Storefront/storefront.json
	- de-CH/Plugins/SwagB2bPlatform/Administration/administration.json
	- de-CH/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- de-CH/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- de-CH/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- pt-PT/Platform/Storefront/storefront.json
	- pt-PT/Platform/Core/messages.json
	- pt-PT/Plugins/SwagCmsExtensions/Administration/administration.json
	- pt-PT/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- pt-PT/Plugins/SwagMigrationAssistant/Administration/administration.json
	- pt-PT/Plugins/SwagMigrationMagento/Administration/administration.json
	- pt-PT/Plugins/SwagSocialShopping/Administration/administration.json
	- pt-PT/Plugins/SwagPayPal/Storefront/storefront.json
	- pt-PT/Plugins/SwagCustomizedProducts/Administration/administration.json
	- pt-PT/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- pt-PT/Plugins/PluginPublisher/Administration/administration.json
	- pt-PT/Plugins/PluginPublisher/Storefront/storefront.json
	- pt-PT/Plugins/SwagB2bPlatform/Administration/administration.json
	- pt-PT/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- pt-PT/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- pt-PT/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- sr-CS/Platform/Storefront/storefront.json
	- sr-CS/Platform/Core/messages.json
	- sr-CS/Plugins/SwagCmsExtensions/Administration/administration.json
	- sr-CS/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- sr-CS/Plugins/SwagPayPal/Administration/administration.json
	- sr-CS/Plugins/SwagPayPal/Storefront/storefront.json
	- sr-CS/Plugins/SwagCustomizedProducts/Administration/administration.json
	- sr-CS/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- sr-CS/Plugins/PluginPublisher/Administration/administration.json
	- sr-CS/Plugins/PluginPublisher/Storefront/storefront.json
	- sr-CS/Plugins/SwagB2bPlatform/Administration/administration.json
	- sr-CS/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- sr-CS/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- es-ES/Platform/Storefront/storefront.json
	- es-ES/Platform/Core/messages.json
	- es-ES/Plugins/SwagCmsExtensions/Administration/administration.json
	- es-ES/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- es-ES/Plugins/SwagSocialShopping/Administration/administration.json
	- es-ES/Plugins/SwagPayPal/Storefront/storefront.json
	- es-ES/Plugins/SwagCustomizedProducts/Administration/administration.json
	- es-ES/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- es-ES/Plugins/PluginPublisher/Administration/administration.json
	- es-ES/Plugins/PluginPublisher/Storefront/storefront.json
	- es-ES/Plugins/SwagB2bPlatform/Administration/administration.json
	- es-ES/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- es-ES/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- es-ES/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- es-AR/Platform/Storefront/storefront.json
	- es-AR/Platform/Core/messages.json
	- es-AR/Plugins/SwagCmsExtensions/Administration/administration.json
	- es-AR/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- es-AR/Plugins/SwagSocialShopping/Administration/administration.json
	- es-AR/Plugins/SwagPayPal/Storefront/storefront.json
	- es-AR/Plugins/SwagCustomizedProducts/Administration/administration.json
	- es-AR/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- es-AR/Plugins/PluginPublisher/Administration/administration.json
	- es-AR/Plugins/PluginPublisher/Storefront/storefront.json
	- es-AR/Plugins/SwagB2bPlatform/Administration/administration.json
	- es-AR/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- es-AR/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- es-AR/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- sv-SE/Platform/Storefront/storefront.json
	- sv-SE/Platform/Administration/administration.json
	- sv-SE/Platform/Core/messages.json
	- sv-SE/Plugins/SwagCmsExtensions/Administration/administration.json
	- sv-SE/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- sv-SE/Plugins/SwagMigrationAssistant/Administration/administration.json
	- sv-SE/Plugins/SwagSocialShopping/Administration/administration.json
	- sv-SE/Plugins/SwagPayPal/Administration/administration.json
	- sv-SE/Plugins/SwagPayPal/Storefront/storefront.json
	- sv-SE/Plugins/SwagCustomizedProducts/Administration/administration.json
	- sv-SE/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- sv-SE/Plugins/PluginPublisher/Administration/administration.json
	- sv-SE/Plugins/PluginPublisher/Storefront/storefront.json
	- sv-SE/Plugins/SwagB2bPlatform/Administration/administration.json
	- sv-SE/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- sv-SE/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- sv-SE/Plugins/SwagEnterpriseSearch/Storefront/storefront.json

@marcelbrode got you, thanks for the details! I would recommend the following:

  1. Having only one file group for matching sources and translations in the crowdin.yml configuration file.
  2. Changing the %two_letters_code% placeholder to a more unique %locale% (since the two letters code might be the same for some languages and cause conflicts and translation overwriting).
  3. Updating the mapping section to map the locale code.

Something like this:

"project_id_env": "CROWDIN_PROJECT_ID"
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
"base_path": "./translations/"
"base_url": "https://api.crowdin.com"
"preserve_hierarchy": true

files: [{
    "source": "/en-GB/**/*.json",
    "translation": "/%locale%/**/%original_file_name%",
    "type": "json",
    "excluded_target_languages": [],
    "languages_mapping": {
        "locale": {
            "ar": "ar-SA",
            "bg": "bg-BG",
            "bs": "bs-BA",
            "ca": "ca-ES",
            "cs": "cs-CZ",
            "da": "da-DK",
            "de": "de-DE",
            "el": "el-GR",
            "fi": "fi-FI",
            "fr": "fr-FR",
            "he": "he-IL",
            "hi": "hi-IN",
            "hr": "hr-HR",
            "hu": "hu-HU",
            "id": "id-ID",
            "it": "it-IT",
            "ja": "ja-JP",
            "ko": "ko-KR",
            "lt": "lt-LT",
            "lv": "lv-LV",
            "nl": "nl-NL",
            "no": "nn-NO",
            "pl": "pl-PL",
            "pt": "pt-PT",
            "ro": "ro-RO",
            "ru": "ru-RU",
            "sk": "sk-SK",
            "sr-CS": "sr-RS", # moved from the second file-group
            "sl": "sl-SI",
            "th": "th-TH",
            "tr": "tr-TR",
            "uk": "uk-UA",
            "vi": "vi-VN",
        }
    }
}]

This will require the crowdin push command to update the “resulting file after translation export” parameter in Crowdin.

With your data, it’s as mentioned before. Everything which crowdin itself tags in the URL with 2 chars will be ignored, see attachment.

I hoped it would work like that back then as well, but sadly it just doesnt :frowning:

[... same stuff before ...]
✔️  Extracted: 'sr-RS/Platform/Core/messages.json'
✔️  Extracted: 'sr-RS/Platform/Storefront/storefront.json'
✔️  Extracted: 'sr-RS/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'sr-RS/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'sr-RS/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'sr-RS/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'sr-RS/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'sr-RS/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Platform/Administration/administration.json'
✔️  Extracted: 'sv-SE/Platform/Core/messages.json'
✔️  Extracted: 'sv-SE/Platform/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/PluginPublisher/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/PluginPublisher/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagB2bPlatform/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagB2bPlatform/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagCmsExtensions/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagCmsExtensions/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagCustomizedProducts/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagCustomizedProducts/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagEnterpriseSearch/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagEnterpriseSearch/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagMigrationAssistant/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagPayPal/Administration/administration.json'
✔️  Extracted: 'sv-SE/Plugins/SwagPayPal/Storefront/storefront.json'
✔️  Extracted: 'sv-SE/Plugins/SwagSocialShopping/Administration/administration.json'
⚠️  Due to missing respective sources, the following translations will be omitted:
	- ar/Plugins/PluginPublisher/Storefront/storefront.json
	- ar/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- bs/Platform/Storefront/storefront.json
	- bs/Platform/Core/messages.json
	- bs/Plugins/SwagCmsExtensions/Administration/administration.json
	- bs/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- bs/Plugins/SwagSocialShopping/Administration/administration.json
	- bs/Plugins/SwagPayPal/Administration/administration.json
	- bs/Plugins/SwagPayPal/Storefront/storefront.json
	- bs/Plugins/SwagCustomizedProducts/Administration/administration.json
	- bs/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- bs/Plugins/PluginPublisher/Administration/administration.json
	- bs/Plugins/PluginPublisher/Storefront/storefront.json
	- bs/Plugins/SwagB2bPlatform/Administration/administration.json
	- bs/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- bs/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- bs/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- bg/Platform/Core/messages.json
	- bg/Plugins/SwagCmsExtensions/Administration/administration.json
	- bg/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- bg/Plugins/SwagMigrationAssistant/Administration/administration.json
	- bg/Plugins/SwagMigrationMagento/Administration/administration.json
	- bg/Plugins/SwagSocialShopping/Administration/administration.json
	- bg/Plugins/SwagPayPal/Storefront/storefront.json
	- bg/Plugins/SwagCustomizedProducts/Administration/administration.json
	- bg/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- bg/Plugins/PluginPublisher/Administration/administration.json
	- bg/Plugins/PluginPublisher/Storefront/storefront.json
	- bg/Plugins/SwagB2bPlatform/Administration/administration.json
	- bg/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- bg/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- bg/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- ca/Plugins/PluginPublisher/Storefront/storefront.json
	- ca/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- hr/Platform/Core/messages.json
	- hr/Plugins/SwagCmsExtensions/Administration/administration.json
	- hr/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- hr/Plugins/SwagMigrationAssistant/Administration/administration.json
	- hr/Plugins/SwagMigrationMagento/Administration/administration.json
	- hr/Plugins/SwagSocialShopping/Administration/administration.json
	- hr/Plugins/SwagPayPal/Administration/administration.json
	- hr/Plugins/SwagPayPal/Storefront/storefront.json
	- hr/Plugins/SwagCustomizedProducts/Administration/administration.json
	- hr/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- hr/Plugins/PluginPublisher/Administration/administration.json
	- hr/Plugins/PluginPublisher/Storefront/storefront.json
	- hr/Plugins/SwagB2bPlatform/Administration/administration.json
	- hr/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- hr/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- hr/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- cs/Platform/Administration/administration.json
	- cs/Platform/Core/messages.json
	- cs/Plugins/SwagCmsExtensions/Administration/administration.json
	- cs/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- cs/Plugins/SwagMigrationMagento/Administration/administration.json
	- cs/Plugins/SwagSocialShopping/Administration/administration.json
	- cs/Plugins/SwagPayPal/Storefront/storefront.json
	- cs/Plugins/SwagCustomizedProducts/Administration/administration.json
	- cs/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- cs/Plugins/PluginPublisher/Administration/administration.json
	- cs/Plugins/PluginPublisher/Storefront/storefront.json
	- cs/Plugins/SwagB2bPlatform/Administration/administration.json
	- cs/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- cs/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- da/Platform/Storefront/storefront.json
	- da/Platform/Administration/administration.json
	- da/Platform/Core/messages.json
	- da/Plugins/SwagCmsExtensions/Administration/administration.json
	- da/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- da/Plugins/SwagMigrationAssistant/Administration/administration.json
	- da/Plugins/SwagMigrationMagento/Administration/administration.json
	- da/Plugins/SwagPayPal/Storefront/storefront.json
	- da/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- da/Plugins/PluginPublisher/Administration/administration.json
	- da/Plugins/PluginPublisher/Storefront/storefront.json
	- da/Plugins/SwagB2bPlatform/Administration/administration.json
	- da/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- da/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- da/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- nl/Platform/Storefront/storefront.json
	- nl/Platform/Core/messages.json
	- nl/Plugins/SwagCmsExtensions/Administration/administration.json
	- nl/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- nl/Plugins/SwagMigrationAssistant/Administration/administration.json
	- nl/Plugins/SwagMigrationMagento/Administration/administration.json
	- nl/Plugins/SwagSocialShopping/Administration/administration.json
	- nl/Plugins/SwagPayPal/Storefront/storefront.json
	- nl/Plugins/SwagCustomizedProducts/Administration/administration.json
	- nl/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- nl/Plugins/PluginPublisher/Administration/administration.json
	- nl/Plugins/PluginPublisher/Storefront/storefront.json
	- nl/Plugins/SwagB2bPlatform/Administration/administration.json
	- nl/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- nl/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- nl/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- fi/Platform/Core/messages.json
	- fi/Plugins/SwagCmsExtensions/Administration/administration.json
	- fi/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- fi/Plugins/SwagMigrationAssistant/Administration/administration.json
	- fi/Plugins/SwagMigrationMagento/Administration/administration.json
	- fi/Plugins/SwagSocialShopping/Administration/administration.json
	- fi/Plugins/SwagPayPal/Administration/administration.json
	- fi/Plugins/SwagPayPal/Storefront/storefront.json
	- fi/Plugins/SwagCustomizedProducts/Administration/administration.json
	- fi/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- fi/Plugins/PluginPublisher/Administration/administration.json
	- fi/Plugins/PluginPublisher/Storefront/storefront.json
	- fi/Plugins/SwagB2bPlatform/Administration/administration.json
	- fi/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- fi/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- fi/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- fr/Platform/Storefront/storefront.json
	- fr/Platform/Administration/administration.json
	- fr/Platform/Core/messages.json
	- fr/Plugins/SwagCmsExtensions/Administration/administration.json
	- fr/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- fr/Plugins/SwagMigrationAssistant/Administration/administration.json
	- fr/Plugins/SwagMigrationMagento/Administration/administration.json
	- fr/Plugins/SwagSocialShopping/Administration/administration.json
	- fr/Plugins/SwagPayPal/Administration/administration.json
	- fr/Plugins/SwagPayPal/Storefront/storefront.json
	- fr/Plugins/SwagCustomizedProducts/Administration/administration.json
	- fr/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- fr/Plugins/PluginPublisher/Administration/administration.json
	- fr/Plugins/PluginPublisher/Storefront/storefront.json
	- fr/Plugins/SwagB2bPlatform/Administration/administration.json
	- fr/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- fr/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- fr/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
	- de/Platform/Storefront/storefront.json
	- de/Platform/Administration/administration.json
	- de/Platform/Core/messages.json
	- de/Plugins/SwagCmsExtensions/Administration/administration.json
	- de/Plugins/SwagCmsExtensions/Storefront/storefront.json
	- de/Plugins/SwagMigrationAssistant/Administration/administration.json
	- de/Plugins/SwagMigrationMagento/Administration/administration.json
	- de/Plugins/SwagSocialShopping/Administration/administration.json
	- de/Plugins/SwagPayPal/Administration/administration.json
	- de/Plugins/SwagPayPal/Storefront/storefront.json
	- de/Plugins/SwagCustomizedProducts/Administration/administration.json
	- de/Plugins/SwagCustomizedProducts/Storefront/storefront.json
	- de/Plugins/PluginPublisher/Administration/administration.json
	- de/Plugins/PluginPublisher/Storefront/storefront.json
	- de/Plugins/SwagB2bPlatform/Administration/administration.json
	- de/Plugins/SwagB2bPlatform/Storefront/storefront.json
	- de/Plugins/SwagEnterpriseSearch/Administration/administration.json
	- de/Plugins/SwagEnterpriseSearch/Storefront/storefront.json
        [... same stuff after...]

@marcelbrode please make sure to re-sync your source files with the crowdin push command.

1 Like