What we stripped away¶
The usual workflow for translating apps is pretty complex. We made it simple by removing some of the steps that don’t bring much of a value in a regular translation pipeline. Our design philosophy is “make simple simple, make complex possible”. There are some of these things:
The compiled translations are stored next to your Python code instead of
/usr/share/locale
.We don’t generate
*.pot
files. Instead, we directly create empty*.po
files for all languages.You don’t need to explicitly update translations for each language. Instead, the
extract
command updates all translation files in place.There is only one translation file per project per language. No need to merge multiple files together.
There is no
LC_MESSAGES
subdirectory because “flat is better than nested”.There is only one
.get
method instead of the whole mess of similar ones (gettext
,ngettext
,pgettext
, and so on) provided by gettext.The locale doesn’t have categories. While UNIX and other OS allow to specify locale for each action (
LC_TIME
for formatting time,LC_NUMERIC
for formatting numbers), we make one-to-one correspondence between locales and categories. If you need to format a number in a different locale, just use a separate Locale instance for it.