def _update_locale(self, locale: str): """ Update the locale environment variables. Parameters ---------- locale : str The language name to use. """ self._locale = locale localedir = None if locale.split("_")[0] != _DEFAULT_LOCALE: from napari_plugin_engine.manager import iter_available_plugins lang_packs = iter_available_plugins(NAPARI_LANGUAGEPACK_ENTRY) data = {k: v for (k, v, _) in lang_packs} if locale not in data: import warnings trans = self warnings.warn( trans._( "Requested locale not available: {locale}", deferred=True, locale=locale, )) else: import importlib mod = importlib.import_module(data[locale]) localedir = Path(mod.__file__).parent / LOCALE_DIR gettext.bindtextdomain(self._domain, localedir=localedir)
def get_language_packs(display_locale: str = _DEFAULT_LOCALE) -> dict: """ Return the available language packs installed in the system. The returned information contains the languages displayed in the current locale. This can be used to generate the preferences dialog information. Parameters ---------- display_locale : str, optional Default is _DEFAULT_LOCALE. Returns ------- dict A dict with the native and display language for all locales found. Examples -------- >>> get_language_packs("es_CO") { 'en': {'displayName': 'Inglés', 'nativeName': 'English'}, 'es_CO': { 'displayName': 'Español (colombia)', 'nativeName': 'Español (colombia)', }, } """ from napari_plugin_engine.manager import iter_available_plugins lang_packs = iter_available_plugins(NAPARI_LANGUAGEPACK_ENTRY) found_locales = {k: v for (k, v, _) in lang_packs} invalid_locales = [] valid_locales = [] for locale in found_locales: if _is_valid_locale(locale): valid_locales.append(locale) else: invalid_locales.append(locale) display_locale = ( display_locale if display_locale in valid_locales else _DEFAULT_LOCALE ) locales = { _DEFAULT_LOCALE: { "displayName": _get_display_name(_DEFAULT_LOCALE, display_locale), "nativeName": _get_display_name(_DEFAULT_LOCALE, _DEFAULT_LOCALE), } } for locale in valid_locales: locales[locale] = { "displayName": _get_display_name(locale, display_locale), "nativeName": _get_display_name(locale, locale), } return locales