def __init__(self, parent=None): super().__init__(parent) self._ui = uic.loadUi('mc/preferences/AcceptLanguage.ui', self) self.setAttribute(Qt.WA_DeleteOnClose) self._ui.listWidget.setLayoutDirection(Qt.LeftToRight) settings = Settings() settings.beginGroup('Language') # QStringList langs = settings.value('acceptLanguage', self.defaultLanguage(), type=list) settings.endGroup() for code in langs: loc = QLocale(code.replace('-', '_')) label = '' if loc.language() == QLocale.C: label = _('Personal [%s]') % code else: label = '%s/%s [%s]' % (loc.languageToString( loc.language()), loc.countryToString(loc.country()), code) self._ui.listWidget.addItem(label) self._ui.add.clicked.connect(self.addLanguage) self._ui.remove.clicked.connect(self.removeLanguage) self._ui.up.clicked.connect(self.upLanguage) self._ui.down.clicked.connect(self.downLanguage)
def _onLanguagesReceived(self, languages): loc = QLocale.system() sysLang = QLocale.languageToString(loc.language()) preferredLanguages = self._getPreferredLanguages() self._langList.clear() firstCheckedItem = None for lang in sorted(languages, key=lambda x: x['name']): langName = lang['name'] langCode = lang['code'] nativeLang = self._getNativeLanguageName(langName) text = langName isSystemLang = langName == sysLang if nativeLang and not isSystemLang: text += " (" + nativeLang + ")" item = QListWidgetItem(text) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) item.setData(Qt.UserRole, langCode) if (preferredLanguages and langCode in preferredLanguages) \ or isSystemLang: item.setCheckState(Qt.Checked) firstCheckedItem = item else: item.setCheckState(Qt.Unchecked) self._langList.addItem(item) self._langList.setMinimumWidth(self._langList.sizeHintForColumn(0)) if firstCheckedItem: self._langList.scrollToItem(firstCheckedItem)
def _expand(self, language): ''' @param: QLocale::Language @return: QStringList ''' allLanguages = [] countries = QLocale.matchingLocales(language, QLocale.AnyScript, QLocale.AnyCountry) for jdx in range(0, len(countries)): languageString = '' country = countries[jdx].country() if len(countries) == 1: languageString = '%s [%s]' % (QLocale.languageToString( language), QLocale(language).name().split('_')[0]) else: languageString = '%s/%s [%s]' % (QLocale.languageToString( language), QLocale.countryToString(country), ('-'.join( QLocale(language, country).name().split('_'))).lower()) if languageString not in allLanguages: allLanguages.append(languageString) return allLanguages
def _initLocales(self): locales = QLocale.matchingLocales(QLocale.AnyLanguage, QLocale.AnyScript, QLocale.AnyCountry) localeDict = {} for loc in locales: langName = QLocale.languageToString(loc.language()) if langName == "C": continue if langName in localeDict: continue localeDict[langName] = loc self._localeDict = localeDict