From 576b0c11c62a35be6765e6ebaf0fb8503c14165a Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 21 Jun 2015 21:45:58 +0200 Subject: [PATCH] using "en_US" as fallback language --- resources/resources.cpp | 30 +++++++++++++++++++++++++----- resources/resources.h | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/resources/resources.cpp b/resources/resources.cpp index ca5cedd..7eaa89e 100644 --- a/resources/resources.cpp +++ b/resources/resources.cpp @@ -47,7 +47,7 @@ void cleanup() namespace TranslationFiles { /*! - * \brief Loads and installs the appropriate Qt translation file. + * \brief Loads and installs the appropriate Qt translation file for the current locale. */ void loadQtTranslationFile() { @@ -64,7 +64,7 @@ void loadQtTranslationFile() } /*! - * \brief Loads and installs the appropriate application translation file. + * \brief Loads and installs the appropriate application translation file for the current locale. * \param applicationName Specifies the name of the application. * \remarks Translation files have to be placed in one of the following * locations: @@ -75,15 +75,35 @@ void loadQtTranslationFile() */ void loadApplicationTranslationFile(const QString &applicationName) { - QLocale locale; + loadApplicationTranslationFile(applicationName, QLocale().name()); +} + +/*! + * \brief Loads and installs the appropriate application translation file for the specified locale. + * \param applicationName Specifies the name of the application. + * \param localName Specifies the name of the locale. + * \remarks Translation files have to be placed in one of the following + * locations: + * - /usr/share/$application/translations + * - ./translations + * Translation files must be named using the following scheme: + * - $application_$language.qm + */ +void loadApplicationTranslationFile(const QString &applicationName, const QString &localeName) +{ QTranslator *appTranslator = new QTranslator; - QString fileName = QStringLiteral("%1_%2").arg(applicationName, locale.name()); + QString fileName = QStringLiteral("%1_%2").arg(applicationName, localeName); if(appTranslator->load(fileName, QStringLiteral("./translations"))) { QCoreApplication::installTranslator(appTranslator); } else if(appTranslator->load(fileName, QStringLiteral("/usr/share/%1/translations").arg(applicationName))) { QCoreApplication::installTranslator(appTranslator); } else { - cout << "Unable to load application translation file for the language " << locale.name().toStdString() << "." << endl; + if(localeName != QStringLiteral("en_US")) { + cout << "Unable to load application translation file for the language \"" << localeName.toStdString() << "\", falling back to language \"en_US\"." << endl; + loadApplicationTranslationFile(applicationName, QStringLiteral("en_US")); + } else { + cout << "Unable to load application translation file for the language \"" << localeName.toStdString() << "\"." << endl; + } } } diff --git a/resources/resources.h b/resources/resources.h index 46580af..2447d3f 100644 --- a/resources/resources.h +++ b/resources/resources.h @@ -21,6 +21,7 @@ namespace TranslationFiles { LIB_EXPORT void loadQtTranslationFile(); LIB_EXPORT void loadApplicationTranslationFile(const QString &applicationName); +LIB_EXPORT void loadApplicationTranslationFile(const QString &applicationName, const QString &localeName); }