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