mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
Load language translations only when matching the primary language
This commit is contained in:
parent
5f1aa8d52e
commit
9de87fb137
55
main.cpp
55
main.cpp
@ -10,6 +10,7 @@
|
||||
#include <QTemporaryFile>
|
||||
#include <QDateTime>
|
||||
#include <QApplication>
|
||||
#include <QLocale>
|
||||
#include <QTranslator>
|
||||
#include <QRegularExpression>
|
||||
#include <QObject>
|
||||
@ -107,9 +108,14 @@ int main(int argc, char *argv[])
|
||||
ExceptionCatchingApplication a(argc, argv);
|
||||
try
|
||||
{
|
||||
QLocale locale; // get the current system locale
|
||||
qDebug () << "locale: language:" << locale.language () << "script:" << locale.script ()
|
||||
<< "country:" << locale.country () << "ui-languages:" << locale.uiLanguages ();
|
||||
std::unique_ptr<QStringList> early_messages {new QStringList};
|
||||
|
||||
QLocale locale; // get the current system locale
|
||||
*early_messages << QString {"locale: language: %1 script: %2 country: %3 ui-languages: %4"}
|
||||
.arg (QLocale::languageToString (locale.language ()))
|
||||
.arg (QLocale::scriptToString (locale.script ()))
|
||||
.arg (QLocale::countryToString (locale.country ()))
|
||||
.arg (locale.uiLanguages ().join (", "));
|
||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
||||
// consistent format, do this after
|
||||
// instantiating QApplication so
|
||||
@ -139,18 +145,22 @@ int main(int argc, char *argv[])
|
||||
for (QString locale_name : locale.uiLanguages ())
|
||||
{
|
||||
auto language = locale_name.left (2);
|
||||
if (base_translator_from_resources.load ("wsjtx_" + language, ":/Translations"))
|
||||
if (locale.uiLanguages ().front ().left (2) == language)
|
||||
{
|
||||
qDebug () << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (language);
|
||||
a.installTranslator (&base_translator_from_resources);
|
||||
break;
|
||||
*early_messages << QString {"Trying %1"}.arg (language);
|
||||
if (base_translator_from_resources.load ("wsjtx_" + language, ":/Translations"))
|
||||
{
|
||||
*early_messages << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (language);
|
||||
a.installTranslator (&base_translator_from_resources);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// now try and load the most specific translations (may be a
|
||||
// duplicate but we shouldn't care)
|
||||
if (translator_from_resources.load (locale, "wsjtx", "_", ":/Translations"))
|
||||
{
|
||||
qDebug () << "Loaded translations for current locale from resources";
|
||||
*early_messages << "Loaded translations for current locale from resources";
|
||||
a.installTranslator (&translator_from_resources);
|
||||
}
|
||||
|
||||
@ -219,14 +229,14 @@ int main(int argc, char *argv[])
|
||||
auto base_language = language.left (2);
|
||||
if (base_translation_override_from_resources.load ("wsjtx_" + base_language, ":/Translations"))
|
||||
{
|
||||
qDebug () << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (base_language);
|
||||
*early_messages << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (base_language);
|
||||
a.installTranslator (&base_translation_override_from_resources);
|
||||
}
|
||||
// now load the requested translations (may be a duplicate
|
||||
// but we shouldn't care)
|
||||
if (translation_override_from_resources.load ("wsjtx_" + language , ":/Translations"))
|
||||
{
|
||||
qDebug () << QString {"Loaded translation file from :/Translations based on language %1"}.arg (language);
|
||||
*early_messages << QString {"Loaded translation file from :/Translations based on language %1"}.arg (language);
|
||||
a.installTranslator (&translation_override_from_resources);
|
||||
}
|
||||
}
|
||||
@ -246,18 +256,22 @@ int main(int argc, char *argv[])
|
||||
for (QString locale_name : locale.uiLanguages ())
|
||||
{
|
||||
auto language = locale_name.left (2);
|
||||
if (base_translator_from_cwd.load ("wsjtx_" + language))
|
||||
if (locale.uiLanguages ().front ().left (2) == language)
|
||||
{
|
||||
qDebug () << QString {"Loaded base translation file from $cwd based on language %1"}.arg (language);
|
||||
a.installTranslator (&base_translator_from_cwd);
|
||||
break;
|
||||
*early_messages << QString {"Trying %1"}.arg (language);
|
||||
if (base_translator_from_cwd.load ("wsjtx_" + language))
|
||||
{
|
||||
*early_messages << QString {"Loaded base translation file from $cwd based on language %1"}.arg (language);
|
||||
a.installTranslator (&base_translator_from_cwd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// now try and load the most specific translations (may be a
|
||||
// duplicate but we shouldn't care)
|
||||
if (translator_from_cwd.load (locale, "wsjtx", "_"))
|
||||
{
|
||||
qDebug () << "loaded translations for current locale from a file";
|
||||
*early_messages << "loaded translations for current locale from a file";
|
||||
a.installTranslator (&translator_from_cwd);
|
||||
}
|
||||
|
||||
@ -276,14 +290,14 @@ int main(int argc, char *argv[])
|
||||
auto base_language = language.left (2);
|
||||
if (base_translation_override_from_cwd.load ("wsjtx_" + base_language))
|
||||
{
|
||||
qDebug () << QString {"Loaded base translation file from $cwd based on language %1"}.arg (base_language);
|
||||
*early_messages << QString {"Loaded base translation file from $cwd based on language %1"}.arg (base_language);
|
||||
a.installTranslator (&base_translation_override_from_cwd);
|
||||
}
|
||||
// now load the requested translations (may be a duplicate
|
||||
// but we shouldn't care)
|
||||
if (translation_override_from_cwd.load ("wsjtx_" + language))
|
||||
{
|
||||
qDebug () << QString {"loaded translation file from $cwd based on language %1"}.arg (language);
|
||||
*early_messages << QString {"loaded translation file from $cwd based on language %1"}.arg (language);
|
||||
a.installTranslator (&translation_override_from_cwd);
|
||||
}
|
||||
}
|
||||
@ -357,6 +371,13 @@ int main(int argc, char *argv[])
|
||||
qDebug () << program_title (revision ()) + " - Program startup";
|
||||
#endif
|
||||
|
||||
// trace early messages now we have a trace file
|
||||
for (auto const& message : *early_messages)
|
||||
{
|
||||
qDebug () << message;
|
||||
}
|
||||
early_messages.reset (); // free memory
|
||||
|
||||
// Create a unique writeable temporary directory in a suitable location
|
||||
bool temp_ok {false};
|
||||
QString unique_directory {QApplication::applicationName ()};
|
||||
|
Loading…
Reference in New Issue
Block a user