Localization¶
Opsdroid runs by default in English, but it can be translated to your local language. In order to achieve it, gettext and babel are used.
To mark a string as translatable, just call the special _
function:
txt = 'hello {}'.format(name) # this is NOT translatable
txt = _('hello {}').format(name) # but now it's translatable! 🎉
When some new translatable strings are added, you must extract them to a non-versioned pot
file with:
python setup.py extract_messages
Then, update all existing language po
files from the extracted pot
file with the command:
python setup.py update_catalog
Now, you can translate editing manually or with Poedit the po
files in locale/<lang>/LC_MESSAGES/opsdroid.po
. Those files contain the real translations and are versioned.
After you made a change in any po
file, in order to view the changes in opsdroid, you should compile them to mo
binary files, the format read by python gettext:
python setup.py compile_catalog
Starting a new language¶
If your language is not in the locale
folder, you can initialize it. You will need the ISO 639-1 code of the language. For example, in order to start a new Esperanto translation:
python setup.py init_catalog -l eo
Then you can translate it in locale/eo/LC_MESSAGES/opsdroid.po
, then compile it, etc.