Internationalization and localization¶
Refer to the Django i18n documentation to get started with internationalization (i18n).
Enabling i18n in Django¶
Make sure you’ve activated translation for your project
(the fastest way is to check in your
settings.py file if
Then compile the messages so they can be used by Django.
python manage.py compilemessages
It should get you started !
The translation of the language files is handled using Transifex.
Improving existing translations¶
To check out what languages are currently being worked on, check out the Project page. If you want to help with one of the translations, open the team page by clicking on the language and request to join the team.
Now you can start translating. Open the language page, select a language resource (e.g. djadmin2.po).
Then select a string from the list on the left and enter a translation on the right side. Finally, click the Save button on the top right and you’re done.
It is also possible to suggest better translations for existing ones with the Suggest button on the bottom.
Using i18n in the django-admin2 project development¶
This section is mainly directed at
Marking strings for translation¶
Make sure to use gettext or gettext_lazy on strings that will be shown to the users, with string interpolation ( “%(name_of_variable)s” instead of “%s” ) where needed.
Remember that all languages do not use the same word order, so try to provide flexible strings to translate !
Make sure to load the i18n tags and put
trans tags and
blocktrans blocks where needed.
Block variables are very useful to keep the strings simple.
Adding a new locale¶
cd djadmin2 django-admin.py makemessages -l $LOCALE_CODE
A new file will be created under
Update the headers of the newly created file to match existing files and start the translation!
If you need help to adjust the Plural-Forms configuration in the .po file, refer to the gettext docs.
Updating existing locales¶
To update the language files with new strings in your .py files / templates:
cd djadmin2 # or any other package, for instance example/blog django-admin.py makemessages -a
Then translate the files directly or upload them to Transifex.
When the translation is done, you need to recompile the new translations: