mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2026-07-15 07:14:42 -04:00
Add some polish to i18n
package Qt translations so that standard buttons etc. get l10n.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include <QLibraryInfo>
|
||||
#include <QSysInfo>
|
||||
#include <QDir>
|
||||
#include <QDirIterator>
|
||||
#include <QStandardPaths>
|
||||
#include <QStringList>
|
||||
#include <QLockFile>
|
||||
@@ -116,6 +117,15 @@ int main(int argc, char *argv[])
|
||||
.arg (QLocale::scriptToString (locale.script ()))
|
||||
.arg (QLocale::countryToString (locale.country ()))
|
||||
.arg (locale.uiLanguages ().join (", "));
|
||||
// qDebug () << "+++++++++++++++++++++++++++ Resources ++++++++++++++++++++++++++++";
|
||||
// {
|
||||
// QDirIterator resources_iter {":/", QDirIterator::Subdirectories};
|
||||
// while (resources_iter.hasNext ())
|
||||
// {
|
||||
// qDebug () << resources_iter.next ();
|
||||
// }
|
||||
// }
|
||||
// qDebug () << "--------------------------- Resources ----------------------------";
|
||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
||||
// consistent format, do this after
|
||||
// instantiating QApplication so
|
||||
@@ -128,8 +138,14 @@ int main(int argc, char *argv[])
|
||||
//
|
||||
// Enable base i18n
|
||||
//
|
||||
QTranslator translator_from_resources;
|
||||
QTranslator base_translator_from_resources;
|
||||
QString translations_dir {":/Translations"};
|
||||
QTranslator qt_translator;
|
||||
if (qt_translator.load (locale, "qt", "_", translations_dir))
|
||||
{
|
||||
*early_messages << "Loaded Qt translations for current locale from resources";
|
||||
a.installTranslator (&qt_translator);
|
||||
}
|
||||
|
||||
// Default translations for releases use translations stored in
|
||||
// the resources file system under the Translations
|
||||
// directory. These are built by the CMake build system from .ts
|
||||
@@ -142,15 +158,18 @@ int main(int argc, char *argv[])
|
||||
// source control for translators to access and update.
|
||||
|
||||
// try and load the base translation
|
||||
QTranslator base_translator_from_resources;
|
||||
for (QString locale_name : locale.uiLanguages ())
|
||||
{
|
||||
auto language = locale_name.left (2);
|
||||
if (locale.uiLanguages ().front ().left (2) == language)
|
||||
{
|
||||
*early_messages << QString {"Trying %1"}.arg (language);
|
||||
if (base_translator_from_resources.load ("wsjtx_" + language, ":/Translations"))
|
||||
if (base_translator_from_resources.load ("wsjtx_" + language, translations_dir))
|
||||
{
|
||||
*early_messages << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (language);
|
||||
*early_messages << QString {"Loaded base translation file from %1 based on language %2"}
|
||||
.arg (translations_dir)
|
||||
.arg (language);
|
||||
a.installTranslator (&base_translator_from_resources);
|
||||
break;
|
||||
}
|
||||
@@ -158,7 +177,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
// 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"))
|
||||
QTranslator translator_from_resources;
|
||||
if (translator_from_resources.load (locale, "wsjtx", "_", translations_dir))
|
||||
{
|
||||
*early_messages << "Loaded translations for current locale from resources";
|
||||
a.installTranslator (&translator_from_resources);
|
||||
@@ -214,35 +234,37 @@ int main(int argc, char *argv[])
|
||||
// Complete i18n
|
||||
//
|
||||
|
||||
QTranslator translation_override_from_resources;
|
||||
QTranslator base_translation_override_from_resources;
|
||||
// Load any matching translation from the current directory
|
||||
// using the command line option language override. This allows
|
||||
// translators to easily test their translations by releasing
|
||||
// (lrelease) a .qm file into the current directory with a
|
||||
// suitable name (e.g. wsjtx_en_GB.qm), then running wsjtx to
|
||||
// view the results.
|
||||
QTranslator base_translation_override_from_resources;
|
||||
QTranslator translation_override_from_resources;
|
||||
if (parser.isSet (lang_option))
|
||||
{
|
||||
auto language = parser.value (lang_option).replace ('-', '_');
|
||||
// try and load the base translation
|
||||
auto base_language = language.left (2);
|
||||
if (base_translation_override_from_resources.load ("wsjtx_" + base_language, ":/Translations"))
|
||||
if (base_translation_override_from_resources.load ("wsjtx_" + base_language, translations_dir))
|
||||
{
|
||||
*early_messages << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (base_language);
|
||||
*early_messages << QString {"Loaded base translation file from %1 based on language %2"}
|
||||
.arg (translations_dir)
|
||||
.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"))
|
||||
if (translation_override_from_resources.load ("wsjtx_" + language, translations_dir))
|
||||
{
|
||||
*early_messages << QString {"Loaded translation file from :/Translations based on language %1"}.arg (language);
|
||||
*early_messages << QString {"Loaded translation file from %1 based on language %2"}
|
||||
.arg (translations_dir)
|
||||
.arg (language);
|
||||
a.installTranslator (&translation_override_from_resources);
|
||||
}
|
||||
}
|
||||
|
||||
QTranslator translator_from_cwd;
|
||||
QTranslator base_translator_from_cwd;
|
||||
// Load any matching translation from the current directory
|
||||
// using the current locale. This allows translators to easily
|
||||
// test their translations by releasing (lrelease) a .qm file
|
||||
@@ -253,6 +275,7 @@ int main(int argc, char *argv[])
|
||||
// on non-Windows system.
|
||||
|
||||
// try and load the base translation
|
||||
QTranslator base_translator_from_cwd;
|
||||
for (QString locale_name : locale.uiLanguages ())
|
||||
{
|
||||
auto language = locale_name.left (2);
|
||||
@@ -269,20 +292,21 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
// now try and load the most specific translations (may be a
|
||||
// duplicate but we shouldn't care)
|
||||
QTranslator translator_from_cwd;
|
||||
if (translator_from_cwd.load (locale, "wsjtx", "_"))
|
||||
{
|
||||
*early_messages << "loaded translations for current locale from a file";
|
||||
a.installTranslator (&translator_from_cwd);
|
||||
}
|
||||
|
||||
QTranslator translation_override_from_cwd;
|
||||
QTranslator base_translation_override_from_cwd;
|
||||
// Load any matching translation from the current directory
|
||||
// using the command line option language override. This allows
|
||||
// translators to easily test their translations on Windows by
|
||||
// releasing (lrelease) a .qm file into the current directory
|
||||
// with a suitable name (e.g. wsjtx_en_GB.qm), then running
|
||||
// wsjtx to view the results.
|
||||
QTranslator base_translation_override_from_cwd;
|
||||
QTranslator translation_override_from_cwd;
|
||||
if (parser.isSet (lang_option))
|
||||
{
|
||||
auto language = parser.value (lang_option).replace ('-', '_');
|
||||
|
||||
Reference in New Issue
Block a user