Lightweight i18n for Python
Project description
I18n for Python
Lightweight i18n for Python.
Install
pip install i18nx
Usage
from i18nx import I18n
i18n = I18n(
locale = 'en',
fallback = 'fr',
translations = {
'en': { 'message': { 'hello': 'Hello World!' } },
'fr': { 'message': { 'hello': 'Bonjour le monde !' } },
},
)
print(i18n.tr("message.hello")) # Hello World!
Message Format Syntax
Interpolation
i18nx
use the Mustache like placeholders {}
syntax for interpolation.
from i18nx import I18n
i18n = I18n(
locale = 'en',
fallback = 'fr',
translations = {
'en': { 'message': { 'hello': 'Hello {name}!' } },
'fr': { 'message': { 'hello': 'Bonjour {name} !' } },
},
)
print(i18n.tr("message.hello", name = 'Mario')) # Hello Mario!
Pluralization
Use a pipe |
separator in combination with the param count
to define
plurals on the locale translations.
from i18nx import I18n
i18n = I18n(
locale = 'en',
fallback = 'fr',
translations = {
'en': {
'car': 'car | cars',
'apple': 'no apples | one apple | {count} apples',
},
},
)
print(i18n.tr("car")) # 'car'
print(i18n.tr("car", count = 0)) # 'car'
print(i18n.tr("car", count = 1)) # 'car'
print(i18n.tr("car", count = 2)) # 'cars'
print(i18n.tr("apple", count = 0)) # 'no apples'
print(i18n.tr("apple", count = 1)) # 'one apple'
print(i18n.tr("apple", count = 15)) # '15 apples'
List of Messages
from i18nx import I18n
i18n = I18n(
locale = 'en',
fallback_locale = 'fr',
translations = {
'en': {
"greetings": [
"Hey {firtname}!",
"Hi {firtname}!",
],
},
},
)
print(i18n.tr("greetings.0", firtname = 'Mario')) # 'Hey Mario!'
print(i18n.tr("greetings.1", firtname = 'Mario')) # 'Hi Mario!'
I18n API
interface class I18n:
constructor(locale: str, fallback_locale: str, translations: Dict[str, Dict[str, Any]], show_warning = False)
# Active locale
@property locale: str
# Fallback locale
@property fallback_locale: str
# Available locales
@getter available_locales: List[str]
# Raw translations object for the active locale
@getter raw: dict
# Get the translate text for the given dot path
@method tr(path: str, **params) -> str
Development Setup
-
At the top-level of your project run:
direnv allow
The next time your launch your terminal and enter the top-level of your project,
direnv
will check for changes.
Scripts
# run tests
make test
# run tests with coverage
make coverage
# run linter
make lint
# run build process
make dist
# publish
make publish
License
Under the MIT license. See LICENSE file for more 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
i18nx-1.1.0.tar.gz
(4.4 kB
view details)
Built Distribution
i18nx-1.1.0-py3-none-any.whl
(4.5 kB
view details)
File details
Details for the file i18nx-1.1.0.tar.gz
.
File metadata
- Download URL: i18nx-1.1.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f481c3ce1f45346f6dd7518ef35c556c8c8f7da626f13bea83c92bac45e0c08 |
|
MD5 | 61abc8963d2e752442eb3843d37a50c5 |
|
BLAKE2b-256 | 110df340fc80f224f371713abe9565779d1549895c0a8dc65e88c8efccd256b0 |
File details
Details for the file i18nx-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: i18nx-1.1.0-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7aac8985341616d42822d74c53c02c42feb9a96a3f421ab05abff54fc056e5d6 |
|
MD5 | 89f835da556685f930e43ca70de9a92e |
|
BLAKE2b-256 | 62a4168a08d315000404504d1bbc3a16d7b9f2ba390cea47c4cc3d14c4c06c59 |