Well, lets see, there are multiple cases here:
-
Key of translation changes: We try to avoid that, but sometimes it’s simply not possible. If the English string doesn’t change, we could use Translation Memory to automatically use existing translations. Crowdin has a “TM Pre-translation” workflow step which does exactly that.
Pre-translate files with Translation Memory ™ to speed up the translation of the same or similar strings…
Unfortunately this prevents translators from making any changes to the translation afterwards, because a string translated by Translation Memory can’t go through the “Crowdsource” workflow step. I reported this a long time ago, but it doesn’t look like it’s been fixed yet. That’s why we don’t use “TM Pre-translation” at the moment. cc @Andriy_Crowdin
-
Modified English string: What counts as minor change? That’s a hard decision to make and might even vary for different languages. Let’s take a step back. What happens when we modify an existing string in English?
- We push a modified string to GitHub
- The translator-bot picks it up and pushes it to Crowdin
- This invalidates all translations for that string on Crowdin, but doesn’t affect the translations in Discourse yet
- Every Tuesday we pull the current translations from Crowdin and push them to GitHub.
- Missing translations will be removed
- New translations will be added
So, unless we modified the string right before Tuesday, there should be enough time to provide a new translation on Crowdin. The suggestions on Crowdin usually make it very easy to translate the modified string.
-
Modifications that shouldn’t affect existing translations: We usually try to keep existing translations when we make insignificant bulk changes to English strings. For example, we did that in the past when we changed the
{{count}}
placeholder to%{count}
or during the rename of the English locale. There are special commands we can add to commit messages:@discourse-translator-bot keep_translations_and_approvals @discourse-translator-bot keep_translations
I’m happy to implement improvements to our workflow if they are feasible. However, there is no concept of a fuzzy translation in Crowdin. It’s either translated or not. And I think that’s a good thing, otherwise it would just overcomplicate things. As a translator you get notified about new and modified strings, so that should help translators in staying on top of things.
@patrickemin I added the missing French translation from Translation Memory. It will be included in today’s update.