diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-07-25 19:28:24 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-07-25 19:28:24 +0000 |
commit | c367c21a7683617c76bc9281991c3ee11adcdaa0 (patch) | |
tree | 95c8f9c53c1cac8b8024572bc4b8316786dce8ad /rbutil/rbutilqt | |
parent | 3f01df3f9c713f679d192061000e1441ec664439 (diff) | |
download | rockbox-c367c21a7683617c76bc9281991c3ee11adcdaa0.tar.gz rockbox-c367c21a7683617c76bc9281991c3ee11adcdaa0.zip |
Make rbutil check the system language and try to use the correct translation. A language selection in the configuration file will override this.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18118 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 17 | ||||
-rw-r--r-- | rbutil/rbutilqt/main.cpp | 10 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbsettings.cpp | 8 |
3 files changed, 25 insertions, 10 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 364068f61a..4406e4aba2 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -37,7 +37,7 @@ | |||
37 | #include <windows.h> | 37 | #include <windows.h> |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | #define DEFAULT_LANG "English (C)" | 40 | #define DEFAULT_LANG "English (en)" |
41 | 41 | ||
42 | Config::Config(QWidget *parent,int index) : QDialog(parent) | 42 | Config::Config(QWidget *parent,int index) : QDialog(parent) |
43 | { | 43 | { |
@@ -56,14 +56,13 @@ Config::Config(QWidget *parent,int index) : QDialog(parent) | |||
56 | QStringList langs = findLanguageFiles(); | 56 | QStringList langs = findLanguageFiles(); |
57 | for(int i = 0; i < langs.size(); ++i) | 57 | for(int i = 0; i < langs.size(); ++i) |
58 | lang.insert(languageName(langs.at(i)) + tr(" (%1)").arg(langs.at(i)), langs.at(i)); | 58 | lang.insert(languageName(langs.at(i)) + tr(" (%1)").arg(langs.at(i)), langs.at(i)); |
59 | lang.insert(DEFAULT_LANG, ""); | 59 | lang.insert(DEFAULT_LANG, "en"); |
60 | QMap<QString, QString>::const_iterator i = lang.constBegin(); | 60 | QMap<QString, QString>::const_iterator i = lang.constBegin(); |
61 | while (i != lang.constEnd()) { | 61 | while (i != lang.constEnd()) { |
62 | ui.listLanguages->addItem(i.key()); | 62 | ui.listLanguages->addItem(i.key()); |
63 | i++; | 63 | i++; |
64 | } | 64 | } |
65 | ui.listLanguages->setSelectionMode(QAbstractItemView::SingleSelection); | 65 | ui.listLanguages->setSelectionMode(QAbstractItemView::SingleSelection); |
66 | connect(ui.listLanguages, SIGNAL(itemSelectionChanged()), this, SLOT(updateLanguage())); | ||
67 | ui.proxyPass->setEchoMode(QLineEdit::Password); | 66 | ui.proxyPass->setEchoMode(QLineEdit::Password); |
68 | ui.treeDevices->setAlternatingRowColors(true); | 67 | ui.treeDevices->setAlternatingRowColors(true); |
69 | ui.listLanguages->setAlternatingRowColors(true); | 68 | ui.listLanguages->setAlternatingRowColors(true); |
@@ -109,7 +108,7 @@ void Config::accept() | |||
109 | settings->setProxyType(proxyType); | 108 | settings->setProxyType(proxyType); |
110 | 109 | ||
111 | // language | 110 | // language |
112 | if(settings->curLang() != language) | 111 | if(settings->curLang() != language && !language.isEmpty()) |
113 | QMessageBox::information(this, tr("Language changed"), | 112 | QMessageBox::information(this, tr("Language changed"), |
114 | tr("You need to restart the application for the changed language to take effect.")); | 113 | tr("You need to restart the application for the changed language to take effect.")); |
115 | settings->setLang(language); | 114 | settings->setLang(language); |
@@ -188,13 +187,19 @@ void Config::setUserSettings() | |||
188 | b = i.key(); | 187 | b = i.key(); |
189 | break; | 188 | break; |
190 | } | 189 | } |
190 | else if(settings->curLang().startsWith(i.value(), Qt::CaseInsensitive)) { | ||
191 | // check if there is a base language (en -> en_US, etc.) | ||
192 | b = i.key(); | ||
193 | break; | ||
194 | } | ||
191 | i++; | 195 | i++; |
192 | } | 196 | } |
193 | a = ui.listLanguages->findItems(b, Qt::MatchExactly); | 197 | a = ui.listLanguages->findItems(b, Qt::MatchExactly); |
194 | if(a.size() <= 0) | ||
195 | a = ui.listLanguages->findItems(DEFAULT_LANG, Qt::MatchExactly); | ||
196 | if(a.size() > 0) | 198 | if(a.size() > 0) |
197 | ui.listLanguages->setCurrentItem(a.at(0)); | 199 | ui.listLanguages->setCurrentItem(a.at(0)); |
200 | // don't connect before language list has been set up to prevent | ||
201 | // triggering the signal by selecting the saved language. | ||
202 | connect(ui.listLanguages, SIGNAL(itemSelectionChanged()), this, SLOT(updateLanguage())); | ||
198 | 203 | ||
199 | // devices tab | 204 | // devices tab |
200 | ui.mountPoint->setText(QDir::toNativeSeparators(settings->mountpoint())); | 205 | ui.mountPoint->setText(QDir::toNativeSeparators(settings->mountpoint())); |
diff --git a/rbutil/rbutilqt/main.cpp b/rbutil/rbutilqt/main.cpp index b8419c00a3..f1b4c8d5fd 100644 --- a/rbutil/rbutilqt/main.cpp +++ b/rbutil/rbutilqt/main.cpp | |||
@@ -37,12 +37,16 @@ int main( int argc, char ** argv ) { | |||
37 | user = new QSettings(absolutePath + "/RockboxUtility.ini", QSettings::IniFormat, 0); | 37 | user = new QSettings(absolutePath + "/RockboxUtility.ini", QSettings::IniFormat, 0); |
38 | else user = new QSettings(QSettings::IniFormat, QSettings::UserScope, "rockbox.org", "RockboxUtility"); | 38 | else user = new QSettings(QSettings::IniFormat, QSettings::UserScope, "rockbox.org", "RockboxUtility"); |
39 | 39 | ||
40 | QString applang = QLocale::system().name(); | ||
40 | QTranslator translator; | 41 | QTranslator translator; |
41 | // install translator | 42 | // install translator |
42 | if(!user->value("lang", "").toString().isEmpty()) { | 43 | if(!user->value("lang", "").toString().isEmpty()) { |
43 | if(!translator.load("rbutil_" + user->value("lang").toString(), absolutePath)) | 44 | applang = user->value("lang", "").toString(); |
44 | translator.load("rbutil_" + user->value("lang").toString(), ":/lang"); | 45 | } |
45 | QLocale::setDefault(user->value("lang").toString()); | 46 | if(!applang.isEmpty()) { |
47 | if(!translator.load("rbutil_" + applang, absolutePath)) | ||
48 | translator.load("rbutil_" + applang, ":/lang"); | ||
49 | QLocale::setDefault(applang); | ||
46 | } | 50 | } |
47 | delete user; | 51 | delete user; |
48 | app.installTranslator(&translator); | 52 | app.installTranslator(&translator); |
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp index 38ed542ee7..d1f90ea7f6 100644 --- a/rbutil/rbutilqt/rbsettings.cpp +++ b/rbutil/rbutilqt/rbsettings.cpp | |||
@@ -252,7 +252,13 @@ QString RbSettings::curVoiceName() | |||
252 | 252 | ||
253 | QString RbSettings::curLang() | 253 | QString RbSettings::curLang() |
254 | { | 254 | { |
255 | return userSettings->value("lang").toString(); | 255 | // QSettings::value only returns the default when the setting |
256 | // doesn't exist. Make sure to return the system language if | ||
257 | // the language in the configuration is present but empty too. | ||
258 | QString lang = userSettings->value("lang").toString(); | ||
259 | if(lang.isEmpty()) | ||
260 | lang = QLocale::system().name(); | ||
261 | return lang; | ||
256 | } | 262 | } |
257 | 263 | ||
258 | QString RbSettings::curEncoder() | 264 | QString RbSettings::curEncoder() |