Translations workflow ===================== LTSP is translated online on launchpad: https://translations.launchpad.net/ltsp Due to a misconfiguration, we rely on "Series" to have translatable subprojects for LTSP and LDM: https://translations.launchpad.net/ltsp/ltsp/+translations https://translations.launchpad.net/ltsp/ldm/+translations As that page says, > Automatic synchronization: Translations are imported with every update from branch lp:ltsp, > and exported daily to branch lp:~ltsp-upstream/ltsp/ltsp-translations. Unfortunately launchpad currently only supports synchronization with bzr branches, but LTSP is maintained in git. So: * The LTSP code is at https://code.launchpad.net/~ltsp-upstream/ltsp/+git/ltsp. * At StringFreeze, we should push an updated po/ltsp.pot, and give translators enough time to translate it. * All the LTSP code, including ltsp.pot, is automatically mirrored in bzr format at https://code.launchpad.net/~ltsp-upstream/ltsp/ltsp. * Launchpad pulls ltsp.pot from there and allows translators to translate it online. * When there are new translations, it daily pushes the updated .po files at https://code.launchpad.net/~ltsp-upstream/ltsp/ltsp-translations * Before release, we should manually pull po/*.po from ltsp-translations and push them to the upstream git repository. (e.g. git merge --squash --allow-unrelated-histories --strategy=recursive --strategy-option=theirs translations/master) * We have configured launchpad to only read *.pot and ignore *.po, so we shouldn't commit any new .po files sent e.g. by email. We should instruct translators to use launchpad instead. Also the translator credits are kept there internally in launchpad, and exposed in a special string called "translator-credits" which can be shown in about dialogs etc.