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