Internationalization ==================== The error messages returned by the validators can be translated. Fiasko Bro currently supports English and Russian languages. The choice of the language depends on environment variables ``LANGUAGE``, ``LC_ALL``, ``LC_MESSAGES`` and ``LANG`` (in the same order of priority: if ``LANGUAGE`` is set, others ignored). For example:: $ python >>> from fiasko_bro import validate >>> validate('../10_coursera_temp') [('camel_case_vars', 'for example, rename the following: WorkBook'), ('file_too_long', 'coursera.py')] >>> $ export LANGUAGE=ru $ python >>> from fiasko_bro import validate >>> validate('../10_coursera_temp') [('camel_case_vars', 'переименуй, например, WorkBook'), ('file_too_long', 'coursera.py')] >>> Add translations ^^^^^^^^^^^^^^^^ The whole process consists of three parts. First, you have to find the strings that need translations and put them into the ``.pot`` file. Second, you need to translate the strings and put the translations into ``.po`` file. Finally, you have to compile the ``.po`` files to ``.mo`` files and test your translations. Here are more detailed instructions on each of the steps: 0. Mark the strings that need the translation by importing ``gettext`` function:: from i18n import _ # ... _('a string to translate') 1. To generate the ``.pot`` file, user Babel:: pybabel extract fiasko_bro -o fiasko_bro/locale/fiasko_bro.pot 2. To translate the extracted strings, use a tool like `Poedit `_. Open the ``.pot`` file with it and add the translations. When you're done, place the file in the following directory and with the following name: ``fiasko_bro/locale//LC_MESSAGES/fiasko_bro.po``. 3. Compile the file:: pybabel compile -i fiasko_bro/locale//LC_MESSAGES/fiasko_bro.po -o fiasko_bro/locale//LC_MESSAGES/fiasko_bro.mo Now change the locale make sure Fiasko produces the right output:: $ python >>> from fiasko_bro import validate >>> validate('../10_coursera_temp') [('camel_case_vars', 'for example, rename the following: WorkBook'), ('file_too_long', 'coursera.py')] >>> $ export LANGUAGE= $ python >>> from fiasko_bro import validate >>> validate('../10_coursera_temp') [('camel_case_vars', 'переименуй, например, WorkBook'), ('file_too_long', 'coursera.py')] >>> Finally, add the ``.po`` file to git and you're done.