A package for easy creating and using translated messages with gettext in python projects
- gettext installed in your system (gettext)
- python: tested for 3.10, 3.11
- python package
python-dotenv
(pip install python-dotenv
)
-
First, create a new
.env
file in your project, eg:GETTEXT_DOMAIN=myapp LOCALE_DIR=locales # => directory inside your project base dir to store the gettext translations GETTEXT_LANGUAGES='pl,en' GETTEXT_LANGUAGE=pl
-
Load environment variables from
.env
file to use above environment variables:from dotenv import load_dotenv load_dotenv()
-
In your code add something with translation e.g.:
from s_translation import gettext as _ print(_("Hello, world"))
-
Create translations files
.po
:from s_translation import MessageCreator creator = MessageCreator() creator.create_message_files()
-
Next, put your translations to the created files in the previous step
./locales/{language}/LC_MESSAGES/myapp.po
e.g../locales/pl/LC_MESSAGES/myapp.po
. -
Finally, now generate gettext message object files
mo
:from s_translation import MessageCreator creator = MessageCreator() creator.generate_message_objects()
-
In your code add something with translation e.g.:
from s_translation import Translation _ = Translation(domain='myapp', language_code='pl', locale_dir='locales').gettext print(_("Hello, world"))
-
Create translations files:
from s_translation import MessageCreator creator = MessageCreator(domain='myapp', languages=['en', 'pl'], locale_dir='locales') creator.create_message_files()
-
Next, put your translations to the created files in the previous step
./locales/{language}/LC_MESSAGES/myapp.po
e.g../locales/pl/LC_MESSAGES/myapp.po
. -
So, now generate gettext message object files
mo
:from s_translation import MessageCreator creator = MessageCreator(domain='myapp', languages=['en', 'pl'], locale_dir='locales') creator.generate_message_objects()
Now, your gettext translation is ready to use.