diff --git a/src/app/application.cpp b/src/app/application.cpp index 9ffd1104d..cfdfe7c36 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -337,8 +337,20 @@ void Application::initializeTranslation() Preferences* const pref = Preferences::instance(); // Load translation QString locale = pref->getLocale(); + if (locale.isEmpty()) { - locale = QLocale::system().name(); + QLocale systemLocale = QLocale::system(); + // Check if Chinese and act according to script instead of country + if (systemLocale.language() == QLocale::Chinese) { + if (systemLocale.script() == QLocale::SimplifiedHanScript) + locale = "zh_Hans"; + else + locale = "zh_Hant"; + } + else { + locale = systemLocale.name(); + } + pref->setLocale(locale); } diff --git a/src/gui/options_imp.cpp b/src/gui/options_imp.cpp index 461e082e5..00587ecf5 100644 --- a/src/gui/options_imp.cpp +++ b/src/gui/options_imp.cpp @@ -1075,7 +1075,19 @@ QString options_imp::getLocale() const { void options_imp::setLocale(const QString &localeStr) { QLocale locale(localeStr); - QString name = locale.name(); + QString name; + + // Check if Chinese and act according to script instead of country + if (locale.language() == QLocale::Chinese) { + if (locale.script() == QLocale::SimplifiedHanScript) + name = "zh_Hans"; + else + name = "zh_Hant"; + } + else { + name = locale.name(); + } + // Attempt to find exact match int index = comboI18n->findData(name, Qt::UserRole); if (index < 0 ) { @@ -1360,7 +1372,7 @@ QString options_imp::languageToLocalizedString(const QLocale &locale) case QLocale::Basque: return QString::fromUtf8("Euskara"); case QLocale::Vietnamese: return QString::fromUtf8("tiếng Việt"); case QLocale::Chinese: { - if (locale.country() == QLocale::China) + if (locale.script() == QLocale::SimplifiedHanScript) return QString::fromUtf8("中文 (简体)"); return QString::fromUtf8("中文 (繁體)"); } diff --git a/src/lang.qrc b/src/lang.qrc index 143d0f9d7..ff9ef69d5 100644 --- a/src/lang.qrc +++ b/src/lang.qrc @@ -40,7 +40,7 @@ lang/qbittorrent_tr.qm lang/qbittorrent_uk.qm lang/qbittorrent_vi.qm - lang/qbittorrent_zh.qm - lang/qbittorrent_zh_TW.qm + lang/qbittorrent_zh_Hans.qm + lang/qbittorrent_zh_Hant.qm diff --git a/src/lang/qbittorrent_zh.ts b/src/lang/qbittorrent_zh_Hans.ts similarity index 99% rename from src/lang/qbittorrent_zh.ts rename to src/lang/qbittorrent_zh_Hans.ts index ba09768d1..a29c10120 100644 --- a/src/lang/qbittorrent_zh.ts +++ b/src/lang/qbittorrent_zh_Hans.ts @@ -1,6 +1,6 @@ - + AboutDlg diff --git a/src/lang/qbittorrent_zh_TW.ts b/src/lang/qbittorrent_zh_Hant.ts similarity index 99% rename from src/lang/qbittorrent_zh_TW.ts rename to src/lang/qbittorrent_zh_Hant.ts index 6647b5fb5..2c29c47b2 100644 --- a/src/lang/qbittorrent_zh_TW.ts +++ b/src/lang/qbittorrent_zh_Hant.ts @@ -1,6 +1,6 @@ - + AboutDlg diff --git a/src/src.pro b/src/src.pro index c194557f2..142927066 100644 --- a/src/src.pro +++ b/src/src.pro @@ -75,8 +75,8 @@ RESOURCES += \ # Translations TRANSLATIONS = \ $$LANG_PATH/qbittorrent_fr.ts \ - $$LANG_PATH/qbittorrent_zh.ts \ - $$LANG_PATH/qbittorrent_zh_TW.ts \ + $$LANG_PATH/qbittorrent_zh_Hans.ts \ + $$LANG_PATH/qbittorrent_zh_Hant.ts \ $$LANG_PATH/qbittorrent_en.ts \ $$LANG_PATH/qbittorrent_en_AU.ts \ $$LANG_PATH/qbittorrent_en_GB.ts \ diff --git a/src/webui/www/public/preferences_content.html b/src/webui/www/public/preferences_content.html index 41adb243f..3f82f8f1d 100644 --- a/src/webui/www/public/preferences_content.html +++ b/src/webui/www/public/preferences_content.html @@ -316,8 +316,8 @@ - - + +