Skip to main content

Translatable-Enums is a i18n tool which uses built-in Enums as an convenient way to store translation keys.

Project description

Translatable-Enums

Lib logo

GitHub GitHub release (latest by date) PyPI - Downloads Coverage Code Style

Translatable-Enums is an i18n tool which uses built-in Enums as a convenient way to store translation keys.

Key-Features

  • No dependencies except the Python's standard library. Based on built-in enums & gettext
  • Powerful utility for extracting translation-keys
  • Easy-to-Use

Installation

You can use PIP:

pip install translatable-enums

Or Poetry:

poetry add translatable-enums

Getting-Started

from i18n import (
    TranslatableEnum,
    set_domain,
    set_language,
    language
)


class Messages(TranslatableEnum):
    HELLO = 'Hello,'
    WORLD = 'World!'


set_domain('app', './resources/languages')
set_language('en_US')

print(Messages.HELLO, Messages.WORLD)  # Hello, World!

set_language('uk_UA')

print(Messages.HELLO, Messages.WORLD)  # Привіт, Світ!

set_language('fr_FR')

print(Messages.HELLO, Messages.WORLD)  # Bonjour le monde!

print(Messages.HELLO.language('uk'), Messages.WORLD.language('en'))  # Привіт, World!

with language('uk_UA'):
    print(Messages.HELLO, Messages.WORLD)  # Привіт, Світ!

print(Messages.HELLO, Messages.WORLD)  # Bonjour le monde!

Extraction-Tools

To extract the translation-keys from application:

python -m i18n main.py application.pot

You will obtain a .pot file like this:

msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: \n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

# Messages.WORLD
msgid "World!"
msgstr ""

# Messages.HELLO
msgid "Hello,"
msgstr ""

Key-Format

python -m i18n main.py application.pot --key-format "{enum}.{name}.{value}"

Default: "{value}"

  • enum - enum name
  • name - attribute name
  • value - attribute value

Examples:

{enum}.{name}.{value}

# Messages.WORLD
msgid "Messages.WORLD.World!"
msgstr ""

{enum}.{name}

# Messages.WORLD
msgid "Messages.WORLD"
msgstr ""

{value}

# Messages.WORLD
msgid "World!"
msgstr ""

Examples

See /examples for more examples.

Status

0.0.6 - RELEASED

Licence

Translatable-Enums is released under the MIT License. See the bundled LICENSE file for details.

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

translatable_enums-0.0.7.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

translatable_enums-0.0.7-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file translatable_enums-0.0.7.tar.gz.

File metadata

  • Download URL: translatable_enums-0.0.7.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.1 Windows/10

File hashes

Hashes for translatable_enums-0.0.7.tar.gz
Algorithm Hash digest
SHA256 89dc6de14c54016a63c0c88db199801c9a8e3511c80c877ea099551b78ae71c0
MD5 a5f92c88c895f0b7b025060e55d924d1
BLAKE2b-256 279935fbbfb00099ccf5cc8e79d5bff846dcef0263637dcf423053e06e248821

See more details on using hashes here.

File details

Details for the file translatable_enums-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for translatable_enums-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 eb158a99eebef01c2fc6210ec7a7001e3109edcb49881a8c0b9c690cf301d00e
MD5 12e549e8142157be67729a517b1119cb
BLAKE2b-256 f597806aa57015dea725544984810c300996464ff063c34a0ab71871da07439f

See more details on using hashes here.

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