diff --git a/gui/builtinPreferenceViews/pyfaGeneralPreferences.py b/gui/builtinPreferenceViews/pyfaGeneralPreferences.py index 98eae19a7..9eae63d92 100644 --- a/gui/builtinPreferenceViews/pyfaGeneralPreferences.py +++ b/gui/builtinPreferenceViews/pyfaGeneralPreferences.py @@ -102,9 +102,14 @@ class PFGeneralPref(PreferenceView): self.stLangLabel.Wrap(-1) langSizer.Add(self.stLangLabel, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) - self.langChoices = sorted([v for x, v in LocaleSettings.supported_langauges().items()], key=lambda x: x.Description) + self.langChoices = sorted([langInfo for lang, langInfo in LocaleSettings.supported_langauges().items()], key=lambda x: x.Description) - self.chLang = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [x.Description for x in self.langChoices], 0) + def langDisplay(langInfo): + progress = self.localeSettings.get_progress(langInfo.CanonicalName) + progress_display = (" ({}%)".format(progress['translated_progress']) if progress is not None else "") + return langInfo.Description + progress_display + + self.chLang = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [langDisplay(x) for x in self.langChoices], 0) self.chLang.Bind(wx.EVT_CHOICE, self.onLangSelection) selectedIndex = self.langChoices.index(next((x for x in self.langChoices if x.CanonicalName == self.localeSettings.get('locale')), None)) diff --git a/service/settings.py b/service/settings.py index 26397e682..c3d5bb41c 100644 --- a/service/settings.py +++ b/service/settings.py @@ -22,6 +22,7 @@ import os.path import urllib.request import urllib.error import urllib.parse +import json from collections import namedtuple import wx @@ -536,20 +537,24 @@ class GraphSettings: def set(self, type, value): self.settings[type] = value -Locale = namedtuple('Locale', ['wxLocale', 'eosLang']) + class LocaleSettings: _instance = None - DEFAULT = "en_US" + DEFAULT = "en_US" defaults = { 'locale': DEFAULT, 'eos_locale': 'Auto' # flag for "Default" which is the same as the locale or, if not available, English } - @classmethod - def supported_langauges(cls): - """Requires the application to be initialized, otherwise wx.Translation isn't set.""" - return {x: wx.Locale.FindLanguageInfo(x) for x in wx.Translations.Get().GetAvailableTranslations(config.CATALOG)} + def __init__(self): + self.settings = SettingsProvider.getInstance().getSettings('localeSettings', self.defaults) + + try: + with open(os.path.join(config.pyfaPath, 'locale', 'progress.json'), "r") as f: + self.progress_data = json.load(f) + except FileNotFoundError: + self.progress_data = None @classmethod def getInstance(cls): @@ -557,8 +562,17 @@ class LocaleSettings: cls._instance = LocaleSettings() return cls._instance - def __init__(self): - self.settings = SettingsProvider.getInstance().getSettings('localeSettings', self.defaults) + def get_progress(self, lang): + if self.progress_data is None: + return None + if lang == self.defaults['locale']: + return None + return self.progress_data[lang] + + @classmethod + def supported_langauges(cls): + """Requires the application to be initialized, otherwise wx.Translation isn't set.""" + return {x: wx.Locale.FindLanguageInfo(x) for x in wx.Translations.Get().GetAvailableTranslations(config.CATALOG)} def get(self, key): """gets the raw value fo the setting"""