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