summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-15 11:54:07 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-15 11:54:36 -0700
commitff14ca4dd570c63a0cf93630d0d40efc35e8befb (patch)
treec84eff34a1f6074b6633f5667feaee023749a1ef
parent1ed8cb373f0b02299508087bf26fc23837625158 (diff)
downloadsubsurface-ff14ca4dd570c63a0cf93630d0d40efc35e8befb.tar.gz
translations: use the right Qt translations (part 2)
It turns out that contrary to what the documentation states, a few languages are still only using the 'qt' translation. But those exist for all languages, so we need to first search for the 'qtbase' translations, and only if that fails do we try to load the 'qt' translations. And even that will fail for languages in which Qt simply isn't localized (like Dutch). To make the code more readable, the check for 'US English' was moved earlier as there is no point to look for a Qt translation for that (simply doesn't exist). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/qt-init.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/core/qt-init.cpp b/core/qt-init.cpp
index 587ace9a1..18f9a6ef7 100644
--- a/core/qt-init.cpp
+++ b/core/qt-init.cpp
@@ -86,13 +86,22 @@ void init_qt_late()
#else
translationLocation = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
#endif
- if (qtTranslator.load(loc, "qtbase", "_", translationLocation) ||
- qtTranslator.load(loc, "qtbase", "_", getSubsurfaceDataPath("translations")) ||
- qtTranslator.load(loc, "qtbase", "_", getSubsurfaceDataPath("../translations"))) {
- application->installTranslator(&qtTranslator);
- } else {
- if (uiLang != "en_US" && uiLang != "en-US")
- qDebug() << "can't find Qt base localization for locale" << uiLang << "searching in" << translationLocation;
+ if (uiLang != "en_US" && uiLang != "en-US") {
+ if (qtTranslator.load(loc, "qtbase", "_", translationLocation) ||
+ qtTranslator.load(loc, "qtbase", "_", getSubsurfaceDataPath("translations")) ||
+ qtTranslator.load(loc, "qtbase", "_", getSubsurfaceDataPath("../translations"))) {
+ application->installTranslator(&qtTranslator);
+ } else {
+ // it's possible that this is one of the couple of languages that still have qt_XX translations
+ // and no qtbase_XX translations - as of this writing this is true for Swedish and Portuguese
+ if (qtTranslator.load(loc, "qt", "_", translationLocation) ||
+ qtTranslator.load(loc, "qt", "_", getSubsurfaceDataPath("translations")) ||
+ qtTranslator.load(loc, "qt", "_", getSubsurfaceDataPath("../translations"))) {
+ application->installTranslator(&qtTranslator);
+ } else {
+ qDebug() << "can't find Qt base localization for locale" << uiLang << "searching in" << translationLocation;
+ }
+ }
}
if (ssrfTranslator.load(loc, "subsurface", "_") ||
ssrfTranslator.load(loc, "subsurface", "_", translationLocation) ||