Richard, this might be interesting to you: After my latest fixes for mergepo.py in 2.3-staging it is quite easy to transfer translations between different branches. Assuming that you have two different branches, and in both branches no strings have been changed after the latest remerge, you can call mergepo.py like I did at 04e4d6c4eb3d. Doing this to merge translations from master to 2.1 results in a 217kB diff and the attached summary. Note that no changed translation has been overtaken (you would need the -o option for that), only strings that would be shown untranslated in the old version have been updated.
Georg
lyx-2.1$ python -tt ../lyx-2.3-staging/development/tools/mergepo.py -t po ../lyx-2.2/po Merging lyx-2.2/po/pt_PT.po into lyx-2.1/po/pt_PT.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/ja.po into lyx-2.1/po/ja.po: Updated 50 translations with minimal diff. Merging lyx-2.2/po/sl.po into lyx-2.1/po/sl.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/bg.po into lyx-2.1/po/bg.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/fr.po into lyx-2.1/po/fr.po: Updated 9 translations with minimal diff. Merging lyx-2.2/po/id.po into lyx-2.1/po/id.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/fi.po into lyx-2.1/po/fi.po: Updated 297 translations with minimal diff. Merging lyx-2.2/po/ar.po into lyx-2.1/po/ar.po: Updated 1 translations with minimal diff. Merging lyx-2.2/po/ia.po into lyx-2.1/po/ia.po: Updated 119 translations with minimal diff. Merging lyx-2.2/po/cs.po into lyx-2.1/po/cs.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/zh_CN.po into lyx-2.1/po/zh_CN.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/nl.po into lyx-2.1/po/nl.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/el.po into lyx-2.1/po/el.po: Updated 1 translations with minimal diff. Merging lyx-2.2/po/de.po into lyx-2.1/po/de.po: Updated 9 translations with minimal diff. Merging lyx-2.2/po/en.po into lyx-2.1/po/en.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/pt_BR.po into lyx-2.1/po/pt_BR.po: Updated 9 translations with minimal diff. Merging lyx-2.2/po/wa.po into lyx-2.1/po/wa.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/sr.po into lyx-2.1/po/sr.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/ko.po into lyx-2.1/po/ko.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/hu.po into lyx-2.1/po/hu.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/ro.po into lyx-2.1/po/ro.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/tr.po into lyx-2.1/po/tr.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/uk.po into lyx-2.1/po/uk.po: Updated 163 translations with minimal diff. Merging lyx-2.2/po/ru.po into lyx-2.1/po/ru.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/he.po into lyx-2.1/po/he.po: Updated 569 translations with minimal diff. Merging lyx-2.2/po/sk.po into lyx-2.1/po/sk.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/da.po into lyx-2.1/po/da.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/nb.po into lyx-2.1/po/nb.po: Updated 50 translations with minimal diff. Merging lyx-2.2/po/es.po into lyx-2.1/po/es.po: Updated 163 translations with minimal diff. Merging lyx-2.2/po/pl.po into lyx-2.1/po/pl.po: Updated 2 translations with minimal diff. Merging lyx-2.2/po/eu.po into lyx-2.1/po/eu.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/gl.po into lyx-2.1/po/gl.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/ca.po into lyx-2.1/po/ca.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/sv.po into lyx-2.1/po/sv.po: Updated 9 translations with minimal diff. Merging lyx-2.2/po/nn.po into lyx-2.1/po/nn.po: Updated 0 translations with minimal diff. Merging lyx-2.2/po/it.po into lyx-2.1/po/it.po: Updated 9 translations with minimal diff. Merging lyx-2.2/po/zh_TW.po into lyx-2.1/po/zh_TW.po: Updated 2 translations with minimal diff.