From 252e261a55b5a6b8e74a3a5beb4063b2103560db Mon Sep 17 00:00:00 2001 From: Conatum Date: Thu, 2 Mar 2023 18:57:05 +0200 Subject: [PATCH] rewrite: Update Babel. New default locale resolution. Added translation utilities for common tasks. --- src/babel/__init__.py | 2 ++ src/babel/cog.py | 2 +- src/babel/translator.py | 7 +++++-- src/babel/utils.py | 20 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 src/babel/utils.py diff --git a/src/babel/__init__.py b/src/babel/__init__.py index 791d8e2e..bfaa8035 100644 --- a/src/babel/__init__.py +++ b/src/babel/__init__.py @@ -1,5 +1,7 @@ from .translator import SOURCE_LOCALE, LeoBabel, LocalBabel, LazyStr, ctx_locale, ctx_translator +babel = LocalBabel('babel') + async def setup(bot): from .cog import BabelCog diff --git a/src/babel/cog.py b/src/babel/cog.py index bbf7161f..b78e4650 100644 --- a/src/babel/cog.py +++ b/src/babel/cog.py @@ -19,8 +19,8 @@ from settings.groups import SettingGroup from core.data import CoreData from .translator import ctx_locale, ctx_translator, LocalBabel, SOURCE_LOCALE +from . import babel -babel = LocalBabel('babel') _ = babel._ _p = babel._p diff --git a/src/babel/translator.py b/src/babel/translator.py index 2ede4068..7a7b1231 100644 --- a/src/babel/translator.py +++ b/src/babel/translator.py @@ -39,6 +39,9 @@ class LeoBabel(Translator): self.supported_domains = {dom for dom in stripped if dom} async def load(self): + self._load() + + def _load(self): """ Initialise the gettext translators for the supported_locales. """ @@ -75,7 +78,7 @@ class LeoBabel(Translator): def t(self, lazystr, locale=None): domain = lazystr.domain - translator = self.get_translator(locale or lazystr.locale, domain) + translator = self.get_translator(locale or lazystr.locale or ctx_locale.get(), domain) return lazystr._translate_with(translator) async def translate(self, string: locale_str, locale: Locale, context): @@ -130,7 +133,7 @@ class LazyStr(locale_str): self.method = method self.args = args self.domain = domain - self.locale = locale or ctx_locale.get() + self.locale = locale @property def message(self): diff --git a/src/babel/utils.py b/src/babel/utils.py new file mode 100644 index 00000000..e3faa1cb --- /dev/null +++ b/src/babel/utils.py @@ -0,0 +1,20 @@ +from .translator import ctx_translator +from . import babel + +_, _p, _np = babel._, babel._p, babel._np + + +MONTHS = _p( + 'utils|months', + "January,February,March,April,May,June,July,August,September,October,November,December" +) + +SHORT_MONTHS = _p( + 'utils|short_months', + "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec" +) + + +def local_month(month, short=False): + string = MONTHS if not short else SHORT_MONTHS + return ctx_translator.get().t(string).split(',')[month-1]