When a string is not translated (or translated with a ‘fuzzy’ – i.e., tentative – flag set) it doesn’t get compiled to the MO file and the original English string is used instead. For some language pairs it makes sense to use the other language’s translation in such case – with the idea being that for, e.g., Canadian French is better to fall back to French rather than English.
This situation is handed by the sync-translated.sh script, which – given two locales – copies over the strings translated in one but not translated in the other (both ways). Note that there are language pairs (like de and de_CH, i.e. German and Swiss German) which explicitly asked to not do the syncing for them. We currently sync en_CA with en_GB, es with es_MX and fr with fr_CA:
FIXME: this might be already in the daily i18n jenkins job.
bin/sync-translated.sh en_CA en_GBbin/sync-translated.sh es es_MXbin/sync-translated.sh fr fr_CAgit add pogit commit -m "sync en_CA with en_GB, es with es_MX and fr with fr_CA"git push
Such translations need also to be pushed to Transifex:
for lang in en_CA en_GB es es_MX fr fr_CA; do tx push -t -l $lang; done