diff --git a/aqt/preferences.py b/aqt/preferences.py index 68e62f741..379b82937 100644 --- a/aqt/preferences.py +++ b/aqt/preferences.py @@ -4,6 +4,7 @@ import datetime, time from aqt.qt import * +import anki.lang from aqt.utils import openFolder, showWarning, getText, openHelp, showInfo import aqt @@ -22,6 +23,7 @@ class Preferences(QDialog): self.form.buttonBox.button(QDialogButtonBox.Close).setAutoDefault(False) self.connect(self.form.buttonBox, SIGNAL("helpRequested()"), lambda: openHelp("profileprefs")) + self.setupLang() self.setupCollection() self.setupNetwork() self.setupBackup() @@ -43,6 +45,28 @@ class Preferences(QDialog): def reject(self): self.accept() + # Language + ###################################################################### + + def setupLang(self): + f = self.form + f.lang.addItems([x[0] for x in anki.lang.langs]) + f.lang.setCurrentIndex(self.langIdx()) + self.connect(f.lang, SIGNAL("currentIndexChanged(int)"), + self.onLangIdxChanged) + + def langIdx(self): + codes = [x[1] for x in anki.lang.langs] + try: + return codes.index(anki.lang.getLang()) + except: + return codes.index("en") + + def onLangIdxChanged(self, idx): + code = anki.lang.langs[idx][1] + self.mw.pm.setLang(code) + showInfo(_("Please restart Anki to complete language change."), parent=self) + # Collection options ###################################################################### diff --git a/aqt/profiles.py b/aqt/profiles.py index 7301e1e4e..66ae1ddc5 100644 --- a/aqt/profiles.py +++ b/aqt/profiles.py @@ -15,7 +15,7 @@ import re from aqt.qt import * from anki.db import DB from anki.utils import isMac, isWin, intTime, checksum -from anki.lang import langs +import anki.lang from aqt.utils import showWarning from aqt import appHelpSite import aqt.forms @@ -322,7 +322,7 @@ please see: # find index idx = None en = None - for c, (name, code) in enumerate(langs): + for c, (name, code) in enumerate(anki.lang.langs): if code == "en": en = c if code == lang: @@ -331,13 +331,13 @@ please see: if idx is None: idx = en # update list - f.lang.addItems([x[0] for x in langs]) + f.lang.addItems([x[0] for x in anki.lang.langs]) f.lang.setCurrentRow(idx) d.exec_() def _onLangSelected(self): f = self.langForm - obj = langs[f.lang.currentRow()] + obj = anki.lang.langs[f.lang.currentRow()] code = obj[1] name = obj[0] en = "Are you sure you wish to display Anki's interface in %s?" @@ -346,7 +346,11 @@ please see: QMessageBox.No) if r != QMessageBox.Yes: return self._setDefaultLang() + self.setLang(code) + + def setLang(self, code): self.meta['defaultLang'] = code sql = "update profiles set data = ? where name = ?" self.db.execute(sql, cPickle.dumps(self.meta), "_global") self.db.commit() + anki.lang.setLang(code, local=False) diff --git a/designer/preferences.ui b/designer/preferences.ui index 186314b9a..2fac561b4 100644 --- a/designer/preferences.ui +++ b/designer/preferences.ui @@ -7,7 +7,7 @@ 0 0 405 - 450 + 455 @@ -30,6 +30,27 @@ 12 + + + + + + Interface language: + + + + + + + + 0 + 0 + + + + + + @@ -413,6 +434,7 @@ + lang showEstimates showProgress stripHTML @@ -429,6 +451,8 @@ numBackups buttonBox tabWidget + fullSync + compressBackups