Source code for kvalikirstu2.localization
"""A module for localization."""
import gettext
import os
import locale
from babel import Locale
def __get_gettext(localedir, default_language):
"""Gets the gettext translation function for the given language and locale directory.
"""
translate = gettext.translation('kvalikirstu2', localedir, fallback=True, languages=[default_language])
return translate.gettext
[docs]def set_language(language):
""" Sets the language of the program.
:param language: The language to use.
"""
_VARIABLES['language'] = language
def _kvalikirstu2_gettext(text):
return __get_gettext(_VARIABLES['localedir'], _VARIABLES['language'])(text)
_VARIABLES = {'localedir': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'locale'),
'language': locale.getdefaultlocale()[0]}
_ = _kvalikirstu2_gettext
[docs]def get_languages(user_locale=locale.getdefaultlocale()[0]):
"""Gets a list of pairs of language codes and their display names in the users locale.
"""
translations = [directory for directory in os.listdir(_VARIABLES['localedir'])
if os.path.isdir(os.path.join(_VARIABLES['localedir'], directory))
and 'LC_MESSAGES' in os.listdir(os.path.join(_VARIABLES['localedir'], directory))]
out = []
for lang in translations + ['en_US']:
loc = Locale.parse(lang)
out.append((lang, loc.get_display_name(user_locale)))
return sorted(out, key=lambda x: x[1])
[docs]def get_translation_func(language):
"""Gets the translation function for the given language.
:param str language: The language that the translation should be for.
"""
translate = gettext.translation('kvalikirstu2', _VARIABLES['localedir'], fallback=True, languages=[language])
return translate.gettext