40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import gettext
|
|
import os
|
|
|
|
from katrain.core.utils import find_package_resource
|
|
class Lang:
|
|
FONTS = {"jp": "NotoSansJP-Regular.otf", "tr": "NotoSans-Regular.ttf", "ua": "NotoSans-Regular.ttf"}
|
|
|
|
def __init__(self, lang):
|
|
self.lang = None
|
|
self.switch_lang(lang)
|
|
|
|
def _(self, text):
|
|
return self.ugettext(text)
|
|
|
|
def switch_lang(self, lang):
|
|
if lang == self.lang:
|
|
return
|
|
# get the right locales directory, and instantiate a gettext
|
|
self.lang = lang
|
|
self.font_name = self.FONTS.get(lang)
|
|
i18n_dir, _ = os.path.split(find_package_resource("katrain/i18n/__init__.py"))
|
|
locale_dir = os.path.join(i18n_dir, "locales")
|
|
locales = gettext.translation("katrain", locale_dir, languages=[lang, DEFAULT_LANGUAGE])
|
|
self.ugettext = locales.gettext
|
|
|
|
|
|
|
|
DEFAULT_LANGUAGE = "en"
|
|
i18n = Lang(DEFAULT_LANGUAGE)
|
|
|
|
|
|
def rank_label(rank):
|
|
if rank is None:
|
|
return "??k"
|
|
|
|
if rank >= 0.5:
|
|
return f"{rank:.0f}{i18n._('strength:dan')}"
|
|
else:
|
|
return f"{1-rank:.0f}{i18n._('strength:kyu')}"
|