Manual:Pywikibot/i18n conversion

Sun Jan 16 13:33:11 UTC 2011

Hello all,

After my last mail, you have of course set up a working rewrite development environment and were wondering how to spread TW integration like a virus through the scripts/ directory. So, how to do it:

As you will notice, there is now a i18n/ directory inside the scripts/ directory. This directory contains all files exported from TranslateWiki. The script name defines which TW keys are defined in the file, so i18n/category.py contains category-* (category-was-moved, category-also-in, etc). These are the translations that before were in scripts/category.py.

Adapting scripts to translatewiki consists of four parts:
 * Defining TW keys for translations
 * Reading in translations and outputting them into the TW format
 * Removing translations from script file
 * Adding  and adapting all/most   entries with.

Defining TW keys
To use isbn.py as an example. There is only one message (only showing german and english):

For TW, we define this message as isbn-formatting.

Sometimes pywikibot.translate is used for site- or language-specific configuration. Don't move those to TranslateWiki files (yet).

Reading in translations and outputting them into the TW format
Although it is possible to do the isbn example by hand, I'll use a script that can easily be adapted for a larger number of messages. Don't forget to  your virtualenv! The script is available at http://pastebin.com/u2XrKt5b (too long to paste in this e-mail)

For other scripts, you have to adapt at least lines 2, 6 and 12. Line 12 has a list of tuples (old dict, translatewiki key). If the messages have (one or more) parameters, you should change them to *named parameters*, so translators can move them around in the message. See lines 15 and 16 for an example of how to do this.

Running this script gives you a new file, i18n/isbn.py

Test the translation: (pwbde)/rewrite/scripts$ python >>> from pywikibot import i18n >>> i18n.twtranslate("de", "isbn-formatting") u'Bot: Formatiere ISBN'

hurrah!

Removing translations from the script file
Use a sledgehammer, jackhammer or scalpel. Whatever works for you. In the case of isbn.py, lines 49 to 61.

Adapting all/most pywikibot.translate entries
Search for pywikibot.translate. Change the following: to or

With *'tw-key-for-msg'* referring to the tw key you thought up for *msg*, and *'param_1'* and *'param_2'* (the dictionary keys) referring to the *named parameters* you introduced in step 2.

For isbn.py, this is simpler:

Congratulations! You have adapted a script to use TranslateWiki translations!

Of course, before committing, *test* the script: (pwb)/rewrite/scripts$ *python isbn.py -page:Gebruiker:Valhallasw -to13 -format* (...) Page Gebruiker:Valhallasw saved yielding: (huidig | vorige) 16 jan 2011 14:29 Valhallasw (Overleg | bijdragen) k (1.735 bytes) (Bot: ISBN opgemaakt) (ongedaan maken)

And, as a last step, commit the script (and the translations!) to the svn repository: Special:Code/pywikipedia/8838

Good luck adapting scripts!

Best regards, Valhallasw 21:23, 11 July 2011 (UTC)