Translate Django .po files
Project description
Django app for translating Django .po files. It uses deep-translator and polib
Installation
when using pip:
pip install django-translatemessages
When using poetry:
poetry add django-translatemessages
Configuration
You must declare in your settings.py what translator to use and its params. Please refer to deep-translator Translators to know what parameters to specify (Note that django-translatemessages automatically add source and target parameters)
To configure GoogleTranslator, add in your settings.py:
TRANSLATEMESSAGES_PARAMS = { "translator": { "class": "GoogleTranslator", "params": {}, }, }
To configure DeeplTranslator, you will need an API key, add in your settings.py:
TRANSLATEMESSAGES_PARAMS = { "translator": { "class": "DeeplTranslator", "params": { "api_key": "your deepl api key", }, }, }
A good pratice in a Django application is to encapsulate strings to be translated into square brakets, thus, you will noticed at once what strings has not been translated yet. You can ask django-translatemessages to extract the string to translate from the source string. Use a regex which selects with parentheses the text to extract. Note that if there is no match, the translation will not occur.
For example if you want to translate [my english string] into my french string with deepl, put in settings.py:
TRANSLATEMESSAGES_PARAMS = { "extract_regex": r"\[(.*)\]", "translator": { "class": "DeeplTranslator", "params": { "api_key": "your deepl api key", }, }, }
The source language is en by default, but you can use another one in your settings.py:
TRANSLATEMESSAGES_PARAMS = { "source_lang": "fr", ... }
IMPORTANT : By default, django-translatemessages will produce translations with the flag fuzzy. This force the developer to validate manually each translation.
To do so, edit each django.po file, search for the line #, fuzzy and remove it if you agree with the proposed translation. If you do not do this, Django will not display the translation. You can also use poedit and press CTRL + RETURN on each highlighted translation you agree.
To disable auto-fuzzy feature, use this in your settings.py:
TRANSLATEMESSAGES_PARAMS = { "auto_fuzzy": False, ... }
Usage
To auto-translate all languages in all apps:
python ./manage.py translatemessages
Do not forget to do a makemessages before if needed (See Django documentation)
For more options, run python ./manage.py translatemessages -h
News
0.0.5 (2023-06-29)
Force translation of fuzzy strings except when obsolete or already translated by django-translatemessages
0.0.4 (2023-06-21)
Do not translate fuzzy strings
0.0.2 (2023-06-11)
First commit
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-translatemessages-0.0.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ded329e147d400240d39e778b1f9a4af9ac15a884b7ee4855a2fa1452756bc5 |
|
MD5 | 078ab61335f8733a572d9c8c1677822c |
|
BLAKE2b-256 | 7ecf6e8628a530140076e62238418fa38584611cfc5b0d97a2532f830fcfe941 |
Hashes for django_translatemessages-0.0.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2271c1d7f6f2865d66bf9625cc3205b4fae2a569d9e4c98b32a24d80b770f00 |
|
MD5 | 59e4ab0f78742ae1b3fc32427a9051fe |
|
BLAKE2b-256 | 639db5832092141b201c19d6a1f452286b68430ca13149cb91ac043c91bd49f0 |