i18n: loads language code only and full locale name for lrc
Qt loads only one specific file with QTranslate.load().
So if for example locale name is 'fr_CA', only this specific
translation will be loaded, but not 'fr', that may contains
usefull generic translations not given by lang_country one.
This patch fixes that by loading language code only fist
then 'language_COUNTRY' one.
Change-Id: I11a5adbd55f6575aab5453df0033377967ccc17e
Reviewed-by: Anthony LĂ©onard <anthony.leonard@savoirfairelinux.com>
diff --git a/main.cpp b/main.cpp
index 6f4a626..b7d8a18 100644
--- a/main.cpp
+++ b/main.cpp
@@ -112,18 +112,35 @@
ShmClient* shmClient = new ShmClient(shm, sem);
#endif
- QTranslator qtTranslator;
- qtTranslator.load("qt_" + QLocale::system().name(),
- QLibraryInfo::location(QLibraryInfo::TranslationsPath));
- a.installTranslator(&qtTranslator);
+ const auto locale_name = QLocale::system().name();
+ const auto locale_lang = locale_name.split('_')[0];
- QTranslator lrcTranslator;
- lrcTranslator.load("share/libringclient/translations/lrc_" + QLocale::system().name());
- a.installTranslator(&lrcTranslator);
+ QTranslator qtTranslator_lang;
+ QTranslator qtTranslator_name;
+ if (locale_name != locale_lang) {
+ qtTranslator_lang.load("qt_" + locale_lang, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ a.installTranslator(&qtTranslator_lang);
+ }
+ qtTranslator_name.load("qt_" + locale_name, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ a.installTranslator(&qtTranslator_name);
- QTranslator mainTranslator;
- mainTranslator.load("share/ring/translations/ring_client_windows_" + QLocale::system().name());
- a.installTranslator(&mainTranslator);
+ QTranslator lrcTranslator_lang;
+ QTranslator lrcTranslator_name;
+ if (locale_name != locale_lang) {
+ lrcTranslator_lang.load("share/libringclient/translations/lrc_" + locale_lang);
+ a.installTranslator(&lrcTranslator_lang);
+ }
+ lrcTranslator_name.load("share/libringclient/translations/lrc_" + locale_name);
+ a.installTranslator(&lrcTranslator_name);
+
+ QTranslator mainTranslator_lang;
+ QTranslator mainTranslator_name;
+ if (locale_name != locale_lang) {
+ mainTranslator_lang.load("share/ring/translations/ring_client_windows_" + locale_lang);
+ a.installTranslator(&mainTranslator_lang);
+ }
+ mainTranslator_name.load("share/ring/translations/ring_client_windows_" + locale_name);
+ a.installTranslator(&mainTranslator_name);
QFont font;
font.setFamily("Segoe UI");