Hi Yannick,
We use translation tokens that mitigates this issue, so you
can freely modify the en_US lang files without affecting any
other translation.
The way it works is:
file.php
<?php
global $langs;
$langs->load("langfile")
echo $lang->trans("MyToken");
langs/en_US/langfile.lang
MyToken = My token
langs/fr_FR/langfile.lang
MyToken = Mon jeton
When you're translating in any language, Transifex uses the
token to extract the en_US translation as a base text.
What really matters is the token.
Changing the tokens on the other hand is frowned upon for
the very reason you exposed: the string would need to be
retranslated in every language.
Unless the token is really meaningless, it's better leaving
it there.
en_US/langfile.lang should be updated in the source code.
This file is then pushed to transifex and used as the base
language.
All other language files are pulled from Transifex every
once in a while so you better not modify them in the source
code as they will be overwritten by the sync.
Hope it helps.