Skip to main content

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.6 (2025-02-04)

  • Ignore translator API error in order to write .po file with already translated strings

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

django-translatemessages-0.0.6.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_translatemessages-0.0.6-py2.py3-none-any.whl (7.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-translatemessages-0.0.6.tar.gz.

File metadata

File hashes

Hashes for django-translatemessages-0.0.6.tar.gz
Algorithm Hash digest
SHA256 554c89941de8ac883c5e9588f046d971a3c1b71bfa90bff0b25a989925e81ee5
MD5 ee2707bab15f16a9613a676a590d3a21
BLAKE2b-256 6c476fe1b6808f48463ec8dcaaf2c3d327142249139c4d867c3eb13ff2edf303

See more details on using hashes here.

File details

Details for the file django_translatemessages-0.0.6-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_translatemessages-0.0.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 dfa7b1e2ae2a0bcfe0d1543d898d79bc913e29b96a4fe6bbb2109e9560185929
MD5 8ba779829ad0d18c5d7069b433d4966b
BLAKE2b-256 7cbc2f871b394eaa4b25e56ca23165bbd1d3ff724106d035f51d7d47ba602bc2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page