Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Translator.cpp')
-rw-r--r--src/core/Translator.cpp70
1 files changed, 24 insertions, 46 deletions
diff --git a/src/core/Translator.cpp b/src/core/Translator.cpp
index 4e3f568cb..ff7dafde5 100644
--- a/src/core/Translator.cpp
+++ b/src/core/Translator.cpp
@@ -27,7 +27,7 @@
#include "config-keepassx.h"
#include "core/Config.h"
-#include "core/FilePath.h"
+#include "core/Resources.h"
/**
* Install all KeePassXC and Qt translators.
@@ -35,7 +35,7 @@
void Translator::installTranslators()
{
QStringList languages;
- QString languageSetting = config()->get("GUI/Language").toString();
+ QString languageSetting = config()->get(Config::GUI_Language).toString();
if (languageSetting.isEmpty() || languageSetting == "system") {
// NOTE: this is a workaround for the terrible way Qt loads languages
// using the QLocale::uiLanguages() approach. Instead, we search each
@@ -49,22 +49,9 @@ void Translator::installTranslators()
// Always try to load english last
languages << "en_US";
- const QStringList paths = {
-#ifdef QT_DEBUG
- QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR),
-#endif
- filePath()->dataPath("translations")};
-
- bool translationsLoaded = false;
- for (const QString& path : paths) {
- installQtTranslator(languages, path);
- if (installTranslator(languages, path)) {
- translationsLoaded = true;
- break;
- }
- }
-
- if (!translationsLoaded) {
+ const auto path = resources()->dataPath("translations");
+ installQtTranslator(languages, path);
+ if (!installTranslator(languages, path)) {
// couldn't load configured language or fallback
qWarning("Couldn't load translations.");
}
@@ -117,40 +104,31 @@ bool Translator::installQtTranslator(const QStringList& languages, const QString
*/
QList<QPair<QString, QString>> Translator::availableLanguages()
{
- const QStringList paths = {
-#ifdef QT_DEBUG
- QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR),
-#endif
- filePath()->dataPath("translations")};
-
QList<QPair<QString, QString>> languages;
languages.append(QPair<QString, QString>("system", "System default"));
QRegularExpression regExp("^keepassx_([a-zA-Z_]+)\\.qm$", QRegularExpression::CaseInsensitiveOption);
- for (const QString& path : paths) {
- const QStringList fileList = QDir(path).entryList();
- for (const QString& filename : fileList) {
- QRegularExpressionMatch match = regExp.match(filename);
- if (match.hasMatch()) {
- QString langcode = match.captured(1);
- if (langcode == "en") {
- continue;
- }
-
- QLocale locale(langcode);
- QString languageStr = QLocale::languageToString(locale.language());
- if (langcode == "la") {
- // langcode "la" (Latin) is translated into "C" by QLocale::languageToString()
- languageStr = "Latin";
- }
- QString countryStr;
- if (langcode.contains("_")) {
- countryStr = QString(" (%1)").arg(QLocale::countryToString(locale.country()));
- }
+ const QStringList fileList = QDir(resources()->dataPath("translations")).entryList();
+ for (const QString& filename : fileList) {
+ QRegularExpressionMatch match = regExp.match(filename);
+ if (match.hasMatch()) {
+ QString langcode = match.captured(1);
+ if (langcode == "en") {
+ continue;
+ }
- QPair<QString, QString> language(langcode, languageStr + countryStr);
- languages.append(language);
+ QLocale locale(langcode);
+ QString languageStr = QLocale::languageToString(locale.language());
+ if (langcode == "la") {
+ // langcode "la" (Latin) is translated into "C" by QLocale::languageToString()
+ languageStr = "Latin";
}
+ if (langcode.contains("_")) {
+ languageStr += QString(" (%1)").arg(QLocale::countryToString(locale.country()));
+ }
+
+ QPair<QString, QString> language(langcode, languageStr);
+ languages.append(language);
}
}