53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
translation_language_fallback = None
|
|
|
|
translation_language_shall = None
|
|
|
|
def translation_initialize(language_fallback, language_shall):
|
|
global translation_language_fallback
|
|
global translation_language_shall
|
|
translation_language_fallback = language_fallback
|
|
translation_language_shall = language_shall
|
|
|
|
|
|
def translation_get(key, arguments = None):
|
|
global translation_language_fallback
|
|
global translation_language_shall
|
|
global localization_data
|
|
if (arguments is None):
|
|
arguments = {}
|
|
languages = list(
|
|
filter(
|
|
lambda language: (language is not None),
|
|
[translation_language_shall, translation_language_fallback]
|
|
)
|
|
)
|
|
for language in languages:
|
|
if (language not in localization_data):
|
|
_sys.stderr.write(
|
|
string_coin(
|
|
"[notice] missing localization data for language '{{language}}'\n",
|
|
{
|
|
"language": language,
|
|
}
|
|
)
|
|
)
|
|
else:
|
|
if (key not in localization_data[language]):
|
|
_sys.stderr.write(
|
|
string_coin(
|
|
"[notice] missing translation in language '{{language}}' for key '{{key}}'\n",
|
|
{
|
|
"language": language,
|
|
"key": key,
|
|
}
|
|
)
|
|
)
|
|
else:
|
|
return string_coin(
|
|
localization_data[language][key],
|
|
arguments
|
|
)
|
|
return ("{{%s}}" % key)
|
|
|
|
|