How to preload an existing translation

Crowdsourcing mods translations.
Post Reply
User avatar
Magus
Site Admin
Posts: 474
Joined: Mon Nov 21, 2016 9:13 am
Contact:

How to preload an existing translation

Post by Magus »

This is for modders. Translators - nevermind.

If you want to start translating your mod on BGforge, often you have existing translations, that are complete to some extent. It possible to pre-load and re-use them.

You can request the translations to be pre-loaded, or you can do that yourself.

Let's say, for example, that I have Ascension 2.0, with outdated Russian translation from version 1.4. I want to re-use it for 2.0, pre-loading strings that haven't changed between the releases. What do I do?

1. Install msg2po tools.

2. Checkout mod tag v1.4.

3. Create .bgforge.yml:

Code: Select all

$ cd Ascension
$ cat .bgforge.yml
translation:
tra_dir = ascension/lang

4. Generate POT (PO file template) from source language:

Code: Select all

$ poify.py
Found directory ascension/lang/english
processing ascension.tra
processing balth.tra
processing balth2.tra
processing ee.tra
processing finbodh.tra
processing finmel01.tra
processing finsarev.tra
processing finsol01.tra
processing imoen25j.tra
processing imoen25p.tra
processing irenic2.tra
processing meliss01.tra
processing player1.tra
processing ppguy02.tra
processing sarev25j.tra
processing setup.tra
processing shawnesepilogues.tra
processing shawnesepilogues_ee.tra
processing solar.tra
Processed directory ascension/lang/english with encoding cp1252, the result is in ascension/lang/po/english.pot

5. Create a PO file, load an existing translation into it:

Code: Select all

$ cd ascension/lang
$ cp po/english.pot po/russian.po
$ dir2msgstr.py -s russian -o po/russian.po --ext tra
processing ascension.tra with encoding cp1251
processing balth.tra with encoding cp1251
processing balth2.tra with encoding cp1251
processing ee.tra with encoding utf-8
processing finbodh.tra with encoding cp1251
processing finmel01.tra with encoding cp1251
processing finsarev.tra with encoding cp1251
processing finsol01.tra with encoding cp1251
processing imoen25j.tra with encoding cp1251
processing imoen25p.tra with encoding cp1251
processing irenic2.tra with encoding cp1251
processing meliss01.tra with encoding cp1251
processing player1.tra with encoding cp1251
processing ppguy02.tra with encoding cp1251
processing sarev25j.tra with encoding cp1251
processing setup.tra with encoding cp866
processing shawnesepilogues.tra with encoding cp1251
processing shawnesepilogues_ee.tra with encoding utf-8
processing solar.tra with encoding cp1251
Processed directory russian, the result is in po/russian.po

6. Now we have english.pot and russian.po corresponding to v1.4. Next, checkout the latest version of the mod. Copy over .bgforge.yml, english.pot and russian.po into corresponding dirs.

7. Poify again. Now english.pot corresponds to v2.0.

8. Merge pot into po:

Code: Select all

msgmerge -v --previous --no-fuzzy-matching --no-wrap -U --backup=off "russian.po" "english.pot"

9. Now we have russian.po ready to use in the translation system. Commit and push.
Please do not PM or email me about my mods and projects. Use forums. Also, see our talk channels.
Post Reply