Hi @rabbdroid
Here are the direct answers:
- How does Crowdin determine the “MASTER” string when running
crowdin upload sources
(without--branch
)?
The first string uploaded into the project is considered a master, regardless of whether it’s a development or master branch. If it is deleted, then 2nd uploaded will become the master and so on.
When you run crowdin upload sources
without specifying a branch, Crowdin will upload source strings as it is written in your source path (CLI configuration) into root/master.
- If the same string is modified in two different branches, how does Crowdin decide which version is “current” and which translations to download?
Crowdin handles strings in different branches as separate entities tied to their respective branches. There isn’t an automatic “conflict resolution” that merges translations across branches into the main
branch.
If a string is updated in feature/X
and translated there, those translations belong to feature/X
in Crowdin. When you merge feature/X
into your local main
and then crowdin upload sources
to Crowdin’s main
branch, the new source string appears in Crowdin’s main
branch.
Working with duplicates in Crowdin can help here. Just enable duplicate management in your Crowdin project settings (look under “Import”).
Choosing “Show within a version branch (regular detection)” or “Hide (regular detection)” is key. Combined with a good Translation Memory (if needed), it is highly effective for your branching workflow, preventing those “empty string” issues.