A simple module providing facilities to localize small programs via textual files.
Project description
klocmod -- Kozalo's Localization Module
Screw you, gettext! I don't wanna bother of compiling strings into binary files!
This module provides a very simple, suboptimal way for localizing your scripts, bots or applications. The advantage is its simplicity: to supply some sets of different string literals for different languages, you just need a simple JSON, YAML or INI file (or even a dict) fed to the library. After that, the only thing you should take care of is to get an instance of the dictionary for a specific language and extract messages from it by key values.
All you mostly want is the LocalizationsContainer
class. In particular, its static method
LocalizationsContainer.from_file()
that reads a localization file and returns an instance of the factory. The factory
is supposed to produce instances of the LanguageDictionary
class. Most likely, you will encounter instances of its
subclass -- the SpecificLanguageDictionary
class (the base class is only used as a fallback that returns passed key
values back).
Installation
# basic installation
pip install klocmod
# or with YAML files support enabled
pip install klocmod[YAML]
Examples of localization files
JSON (language first)
{
"en": {
"yes": "yes",
"no": "no"
},
"ru-RU": {
"yes": "да",
"no": "нет"
}
}
JSON (phrase first)
{
"yes": {
"en": "yes",
"ru-RU": "да"
},
"no": {
"en": "no",
"ru-RU": "нет"
}
}
INI
[DEFAULT]
yes = yes
no = no
[ru-RU]
yes = да
no = нет
YAML
Requires an extra dependency: PyYAML.
# language first
en:
yes: yes
no: no
ru-RU:
yes: да
no: нет
---
# phrase first
yes:
en: yes
ru-RU: да
no:
en: no
ru-RU: нет
Code example
from klocmod import LocalizationsContainer
localizations = LocalizationsContainer.from_file("localization.json")
ru = localizations.get_lang("ru")
# or
en = localizations.get_lang() # get default language
# then
print(ru['yes']) # output: да
# alternative ways to get a specific phrase:
localizations.get_phrase("ru-RU", "no")
localizations['ru-RU']['no']
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
Built Distribution
File details
Details for the file klocmod-0.3.1.tar.gz
.
File metadata
- Download URL: klocmod-0.3.1.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc1889ae01ef8944e6bade472603103aec012ca3dae2ed4e8848eb7debf8e35e |
|
MD5 | 487b07cca7f952a93085b1227b507b56 |
|
BLAKE2b-256 | bf50521f7caffc5b708ecea861f8ee92631bfb25a841ebd329f23b6749268221 |
File details
Details for the file klocmod-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: klocmod-0.3.1-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a469534c55e87843ce1a04884919244c6c0a47593b14412a53e9c5de843bbb0 |
|
MD5 | 3c5175357ce301eeab96560fe3677ba9 |
|
BLAKE2b-256 | 9f58f9ff113fdc18acf9734525f5c80e348d859052f5b3d7a5cdce99034207f9 |