Crowdin reset my translated strings?

I woke up this morning to Crowdin overriding my already-translated-but-not-yet-approved German strings back to English:

What exactly caused this to happen?

Github commit hash: 9cdb7c9eac8a4922ab10e9d90e0a4bce1857f770

Sidenote: The other changes in that diff were caused by an addition of a new set of keys plus a change in one string:

Hello @wobedi

The best thing to track this is to review the project Activity page. It records all the changes and in case you were the one who set up the integration, the activity will be displayed on your behalf, so there would be no chance to miss the needed activity record. Most actions can be undone, so you can revert the project to the old view.

Depending on the file type, changing 1 string may cause changing IDs (keys) for all others, it’s a common behavior with non-key formats (HTML, Docx, etc.)

JSON has keys, so most likely, it was a merge from the Git side that caused it. The way I see it, you merged branch 1 into branch 2, and the system considers it as a new file, with new IDs, that’s why the translation progress was lost.

The best way to deal with this is using the duplicates option. So once you add a new branch, you don’t delete 1st branch instantly, but wait a few seconds in order for translation to migrate from branch 1 to branch 2. Once they’re moved to (under master - duplicate relationship) you safely delete branch 1.

In this case, use either Import translation from the integration page, or TM pre-translation from the project homepage.

More information about branch management can be found here → Version Management | Crowdin Documentation

Hi Dima, thanks for the quick reply!

Here’s what I see on the Activity page:

Some more details:

  • We use JSON only, no other formats
  • One single JSON file with ~500 keys
  • We use the out-of-the-box github Crowdin integration, like so:

Now what I don’t understand is the following part of the Activity log:

Sep 25, 2023 13:28
You updated 2 files in the bilateralstimulation project

Sep 25, 2023 14:42
You deleted the file locale.json from the [**bilateralstimulation**]( project

Sep 26, 2023 19:10
You uploaded the file locale.json with 555 new strings to the bilateralstimulation project

What exactly caused this sequence of events?

“New users can only embed a single image in a post” the forum tells me, so I have do three posts to show you my github integration config - here goes:

Hello @wobedi

I see a lot of BLS branches from your screenshot, please confirm whether you haven’t merged any branches or files from the GitHub side. Maybe you made some other changes in the configuration?

Please provide me with a step-by-step record of actions that you’ve taken. I’ve temporarily activated additional projects and integration for you from my end, so you can reproduce your case in a safe environment with no risk at all.

@Dima Thanks! I should be able to look at this next week.

Just one question before I dive in:

I should in theory be able to add/remove/change source keys in my JSON on github and for that change to then play correctly into Crowdin (without invalidating all prior translations), yes?


Not depending on the synchronization settings, the source files’ changes on the repo will still be synced with Crowdin continuously.

You can add the update_option parameters to your config to define the behaviour towards translations of changed strings. If it is not set, translations for changed strings will be lost.
The values are:

  • update_as_unapproved - preserve translations of changed strings and remove validations of those translations if they exist
  • update_without_changes - preserve translations and validations of changed strings
    Configuration File | Crowdin Developer Portal

Thanks! I’ve set it to update_as_unapproved now.

If I want to delete a key in my source JSON without invalidating all other keys, what is the safest way of doing so?

Delete it on github and let it sync up?

Or delete it on crowdin and let it sync down?

1 Like

It doesn’t matter really, you can delete strings both ways: on the repo and in Crowdin

1 Like