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.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.5.tar.gz (7.6 kB view hashes)

Uploaded Source

Built Distribution

django_translatemessages-0.0.5-py2.py3-none-any.whl (7.5 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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