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.