A custom i18n implementation that is built to be easily used.
Project description
Setting up
Start by downloading the package via pip.
python3 -m pip install ezi18n
After that, you can just import it into your file.
Examples
import ezi18n
import random
_ = ezi18n.Translator() # if you don't provide anything in the brackets, it will look for the file's name's language JSON file. If the main file is main.py, it will look for main_lang.json - unless you provide a base filename (in this case: main) and/or a suffix (by default: _lang)
dice = random.randint(1, 6)
language = input("What's your native language? / Was ist Deine Muttersprache? (en/de) >>> ")
print(_("dice_result", language, dice=dice))
{
"en": {
"dice_result": "Your dice rolled {dice}!"
},
"de": {
"dice_result": "Dein Würfel hat eine {dice} gewürfelt!"
}
}
Working with plurals
import ezi18n
import locale
_ = ezi18n.Translator("main", "_plurals") # this will look for main_plurals.json as the language JSON file
apples = int(input("How many apples do you have? >>> "))
language = locale.getlocale()[0][:2] # this will return the default OS language, such as en, hu, de, fr, es etc.
print(_.one("apples", apples, language, apples=apples))
{
"en": {
"apples": ["You only have one apple! What a loser...", "You have {apples} apples!"]
},
"hu": {
"apples": ["{apples} almád van!"]
}
}
This example does a great job at presenting how the .one()
function works. Here's the explanation for the code:
The code will look for the default OS language, and will tell you how many apples you have with plurals in mind. I always get angry when I see "you have 1 apples"-ish text on a website, and it's an easy fix, but for some reason, many developers don't pay attention to it.
Hungarian doesn't make a difference between plurals, so the list for "hu"/"apples" only has 1 item. This won't be a problem though - the library isn't hardcoded to only look for the first and second elements in the returned list, it will look for the first and the last. Which means that if a list only has 1 item, it will only return that item.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file ezi18n-1.1.0.tar.gz
.
File metadata
- Download URL: ezi18n-1.1.0.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69767e6b371d7eecdf6719606b748b2c8ccfb449582fc024c68ed0f36cbed167 |
|
MD5 | f3ecb242966345d56799f98e7bdeb804 |
|
BLAKE2b-256 | 59a25b1d82af659769b4d990facb8224a574c3cf222edd2b7a14bb7d62e1ea64 |
File details
Details for the file ezi18n-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: ezi18n-1.1.0-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a7ff424210d738c73773395d128ba7702f4a4302101899c7d82573b3cd41083 |
|
MD5 | 9ec114ae2802d50c69bbd8ce06008b7e |
|
BLAKE2b-256 | ee56e40ad9fede0b1361a351dbda513f9bace05f5c598d4aa555db5135c12f07 |