fix(babel): Improve locale logging.
This commit is contained in:
@@ -230,14 +230,15 @@ class BabelCog(LionCog):
|
||||
supported = self.bot.translator.supported_locales
|
||||
formatted = []
|
||||
for locale in supported:
|
||||
name = locale_names.get(locale.replace('_', '-'), None)
|
||||
if name:
|
||||
localestr = f"{locale} ({t(name)})"
|
||||
names = locale_names.get(locale.replace('_', '-'), None)
|
||||
if names:
|
||||
local_name, native_name = names
|
||||
localestr = f"{native_name} ({t(local_name)})"
|
||||
else:
|
||||
localestr = locale
|
||||
formatted.append((locale, localestr))
|
||||
|
||||
matching = {item for item in formatted if partial in item[1]}
|
||||
matching = {item for item in formatted if partial in item[1] or partial in item[0]}
|
||||
if matching:
|
||||
choices = [
|
||||
appcmds.Choice(name=localestr, value=locale)
|
||||
|
||||
@@ -38,37 +38,44 @@ class LocaleMap(Enum):
|
||||
hebrew = 'he-IL'
|
||||
|
||||
|
||||
# Original Discord names
|
||||
locale_names = {
|
||||
'en-US': _p('localenames|locale:en-US', "American English"),
|
||||
'en-GB': _p('localenames|locale:en-GB', "British English"),
|
||||
'bg': _p('localenames|locale:bg', "Bulgarian"),
|
||||
'zh-CN': _p('localenames|locale:zh-CN', "Chinese"),
|
||||
'zh-TW': _p('localenames|locale:zh-TW', "Taiwan Chinese"),
|
||||
'hr': _p('localenames|locale:hr', "Croatian"),
|
||||
'cs': _p('localenames|locale:cs', "Czech"),
|
||||
'da': _p('localenames|locale:da', "Danish"),
|
||||
'nl': _p('localenames|locale:nl', "Dutch"),
|
||||
'fi': _p('localenames|locale:fi', "Finnish"),
|
||||
'fr': _p('localenames|locale:fr', "French"),
|
||||
'de': _p('localenames|locale:de', "German"),
|
||||
'el': _p('localenames|locale:el', "Greek"),
|
||||
'hi': _p('localenames|locale:hi', "Hindi"),
|
||||
'hu': _p('localenames|locale:hu', "Hungarian"),
|
||||
'it': _p('localenames|locale:it', "Italian"),
|
||||
'ja': _p('localenames|locale:ja', "Japanese"),
|
||||
'ko': _p('localenames|locale:ko', "Korean"),
|
||||
'lt': _p('localenames|locale:lt', "Lithuanian"),
|
||||
'no': _p('localenames|locale:no', "Norwegian"),
|
||||
'pl': _p('localenames|locale:pl', "Polish"),
|
||||
'pt-BR': _p('localenames|locale:pt-BR', "Brazil Portuguese"),
|
||||
'ro': _p('localenames|locale:ro', "Romanian"),
|
||||
'ru': _p('localenames|locale:ru', "Russian"),
|
||||
'es-ES': _p('localenames|locale:es-ES', "Spain Spanish"),
|
||||
'sv-SE': _p('localenames|locale:sv-SE', "Swedish"),
|
||||
'th': _p('localenames|locale:th', "Thai"),
|
||||
'tr': _p('localenames|locale:tr', "Turkish"),
|
||||
'uk': _p('localenames|locale:uk', "Ukrainian"),
|
||||
'vi': _p('localenames|locale:vi', "Vietnamese"),
|
||||
'he': _p('localenames|locale:he', "Hebrew"),
|
||||
'he-IL': _p('localenames|locale:he_IL', "Hebrew (Israel)"),
|
||||
'id': (_p('localenames|locale:id', "Indonesian"), "Bahasa Indonesia"),
|
||||
'da': (_p('localenames|locale:da', "Danish"), "Dansk"),
|
||||
'de': (_p('localenames|locale:de', "German"), "Deutsch"),
|
||||
'en-GB': (_p('localenames|locale:en-GB', "English, UK"), "English, UK"),
|
||||
'en-US': (_p('localenames|locale:en-US', "English, US"), "English, US"),
|
||||
'es-ES': (_p('localenames|locale:es-ES', "Spanish"), "Español"),
|
||||
'fr': (_p('localenames|locale:fr', "French"), "Français"),
|
||||
'hr': (_p('localenames|locale:hr', "Croatian"), "Hrvatski"),
|
||||
'it': (_p('localenames|locale:it', "Italian"), "Italiano"),
|
||||
'lt': (_p('localenames|locale:lt', "Lithuanian"), "Lietuviškai"),
|
||||
'hu': (_p('localenames|locale:hu', "Hungarian"), "Magyar"),
|
||||
'nl': (_p('localenames|locale:nl', "Dutch"), "Nederlands"),
|
||||
'no': (_p('localenames|locale:no', "Norwegian"), "Norsk"),
|
||||
'pl': (_p('localenames|locale:pl', "Polish"), "Polski"),
|
||||
'pt-BR': (_p('localenames|locale:pt-BR', "Portuguese, Brazilian"), "Português do Brasil"),
|
||||
'ro': (_p('localenames|locale:ro', "Romanian, Romania"), "Română"),
|
||||
'fi': (_p('localenames|locale:fi', "Finnish"), "Suomi"),
|
||||
'sv-SE': (_p('localenames|locale:sv-SE', "Swedish"), "Svenska"),
|
||||
'vi': (_p('localenames|locale:vi', "Vietnamese"), "Tiếng Việt"),
|
||||
'tr': (_p('localenames|locale:tr', "Turkish"), "Türkçe"),
|
||||
'cs': (_p('localenames|locale:cs', "Czech"), "Čeština"),
|
||||
'el': (_p('localenames|locale:el', "Greek"), "Ελληνικά"),
|
||||
'bg': (_p('localenames|locale:bg', "Bulgarian"), "български"),
|
||||
'ru': (_p('localenames|locale:ru', "Russian"), "Pусский"),
|
||||
'uk': (_p('localenames|locale:uk', "Ukrainian"), "Українська"),
|
||||
'hi': (_p('localenames|locale:hi', "Hindi"), "हिन्दी"),
|
||||
'th': (_p('localenames|locale:th', "Thai"), "ไทย"),
|
||||
'zh-CN': (_p('localenames|locale:zh-CN', "Chinese, China"), "中文"),
|
||||
'ja': (_p('localenames|locale:ja', "Japanese"), "日本語"),
|
||||
'zh-TW': (_p('localenames|locale:zh-TW', "Chinese, Taiwan"), "繁體中文"),
|
||||
'ko': (_p('localenames|locale:ko', "Korean"), "한국어"),
|
||||
}
|
||||
|
||||
# More names for languages not supported by Discord
|
||||
locale_names |= {
|
||||
'he': (_p('localenames|locale:he', "Hebrew"), "Hebrew"),
|
||||
'he-IL': (_p('localenames|locale:he-IL', "Hebrew"), "Hebrew"),
|
||||
'ceaser': (_p('localenames|locale:test', "Test Language"), "dfbtfs"),
|
||||
}
|
||||
|
||||
@@ -43,9 +43,9 @@ class LocaleSetting(StringSetting):
|
||||
if data is None:
|
||||
formatted = t(_p('settype:locale|formatted:unset', "Unset"))
|
||||
else:
|
||||
name = locale_names.get(data, None)
|
||||
if name:
|
||||
formatted = f"`{data} ({t(name)})`"
|
||||
if data in locale_names:
|
||||
local_name, native_name = locale_names[data]
|
||||
formatted = f"`{native_name} ({t(local_name)})`"
|
||||
else:
|
||||
formatted = f"`{data}`"
|
||||
return formatted
|
||||
|
||||
@@ -47,33 +47,43 @@ class LeoBabel(Translator):
|
||||
Initialise the gettext translators for the supported_locales.
|
||||
"""
|
||||
self.read_supported()
|
||||
missing = []
|
||||
loaded = []
|
||||
for locale in self.supported_locales:
|
||||
for domain in self.supported_domains:
|
||||
if locale == SOURCE_LOCALE:
|
||||
continue
|
||||
try:
|
||||
translator = gettext.translation(domain, "locales/", languages=[locale])
|
||||
loaded.append(f"Loaded translator for <locale: {locale}> <domain: {domain}>")
|
||||
except OSError:
|
||||
# Presume translation does not exist
|
||||
logger.warning(f"Could not load translator for supported <locale: {locale}> <domain: {domain}>")
|
||||
pass
|
||||
else:
|
||||
logger.debug(f"Loaded translator for <locale: {locale}> <domain: {domain}>")
|
||||
self.translators[locale][domain] = translator
|
||||
missing.append(f"Could not load translator for supported <locale: {locale}> <domain: {domain}>")
|
||||
translator = null
|
||||
|
||||
self.translators[locale][domain] = translator
|
||||
if missing:
|
||||
logger.warning('\n'.join(("Missing Translators:", *missing)))
|
||||
if loaded:
|
||||
logger.debug('\n'.join(("Loaded Translators:", *loaded)))
|
||||
|
||||
async def unload(self):
|
||||
self.translators.clear()
|
||||
|
||||
def get_translator(self, locale, domain):
|
||||
if locale == SOURCE_LOCALE:
|
||||
return null
|
||||
|
||||
translator = self.translators[locale].get(domain, None)
|
||||
if translator is None:
|
||||
logger.warning(
|
||||
f"Translator missing for requested <locale: {locale}> and <domain: {domain}>. Setting NullTranslator."
|
||||
)
|
||||
self.translators[locale][domain] = null
|
||||
translator = null
|
||||
elif locale in self.supported_locales and domain in self.supported_domains:
|
||||
translator = self.translators[locale].get(domain, None)
|
||||
if translator is None:
|
||||
# This should never really happen because we already loaded the supported translators
|
||||
logger.warning(
|
||||
f"Translator missing for supported <locale: {locale}> "
|
||||
"and <domain: {domain}>. Setting NullTranslator."
|
||||
)
|
||||
translator = self.translators[locale][domain] = null
|
||||
else:
|
||||
# Unsupported
|
||||
translator = null
|
||||
return translator
|
||||
|
||||
|
||||
Reference in New Issue
Block a user