From 46a1bf4fffc66272163f9f8457ebc1f43081ef29 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 28 Nov 2016 12:08:59 +0100 Subject: [PATCH] feat(app/App): use own translator --- tests/CMakeLists.txt | 2 ++ tests/assets/languages/en.ts | 24 ++++++------------------ tests/src/app/App.cpp | 19 +++++++++++-------- tests/src/app/App.hpp | 7 +++++-- tests/src/app/DefaultTranslator.cpp | 20 ++++++++++++++++++++ tests/src/app/DefaultTranslator.hpp | 17 +++++++++++++++++ 6 files changed, 61 insertions(+), 28 deletions(-) create mode 100644 tests/src/app/DefaultTranslator.cpp create mode 100644 tests/src/app/DefaultTranslator.hpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6328be1b0..e640e4ed9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -32,6 +32,7 @@ list(APPEND LIBS "${CMAKE_SOURCE_DIR}/../OUTPUT/desktop/lib64/liblinphone++.so") set(SOURCES src/app/App.cpp src/app/Database.cpp + src/app/DefaultTranslator.cpp src/app/Logger.cpp src/components/chat/ChatModel.cpp src/components/chat/ChatProxyModel.cpp @@ -51,6 +52,7 @@ set(SOURCES set(HEADERS src/app/App.hpp src/app/Database.hpp + src/app/DefaultTranslator.hpp src/app/Logger.hpp src/components/chat/ChatModel.hpp src/components/chat/ChatProxyModel.hpp diff --git a/tests/assets/languages/en.ts b/tests/assets/languages/en.ts index cddf5a3e4..df2c4d4a8 100644 --- a/tests/assets/languages/en.ts +++ b/tests/assets/languages/en.ts @@ -178,41 +178,29 @@ incomingCall Incoming call - - hangup - End call - - - lostIncomingCall - Lost incoming call - - - lostOutgoingCall - Lost outgoing call - outgoingCall - + Outgoing call declinedIncomingCall - + Declined incoming call declinedOutgoingCall - + Declined outgoing call endedCall - + Ended call missedIncomingCall - + Missed incoming call missedOutgoingCall - + Missed outgoing call diff --git a/tests/src/app/App.cpp b/tests/src/app/App.cpp index e02582734..412bc8064 100644 --- a/tests/src/app/App.cpp +++ b/tests/src/app/App.cpp @@ -29,15 +29,18 @@ App *App::m_instance = nullptr; App::App (int &argc, char **argv) : QApplication(argc, argv) { QString current_locale = QLocale::system().name(); - // Try to use default locale. Otherwise use english. - if (m_translator.load(QString(LANGUAGES_PATH) + current_locale)) { - installTranslator(&m_translator); + if (m_english_translator.load(LANGUAGES_PATH "en")) + installTranslator(&m_english_translator); + else + qWarning("Unable to install english translator."); + + // Try to use default locale. + if (m_default_translator.load(QString(LANGUAGES_PATH) + current_locale)) { + installTranslator(&m_default_translator); m_locale = current_locale; - } else if (m_translator.load(LANGUAGES_PATH "en")) { - installTranslator(&m_translator); - } else { - qFatal("No translation found."); - } + } else + qWarning() << QStringLiteral("Unable to found translations for locale: %1.") + .arg(current_locale); setWindowIcon(QIcon(WINDOW_ICON_PATH)); diff --git a/tests/src/app/App.hpp b/tests/src/app/App.hpp index eb8236dac..46972291b 100644 --- a/tests/src/app/App.hpp +++ b/tests/src/app/App.hpp @@ -5,7 +5,8 @@ #include #include #include -#include + +#include "DefaultTranslator.hpp" class Notifier; @@ -47,7 +48,9 @@ private: QQmlApplicationEngine m_engine; QQmlFileSelector *m_file_selector = nullptr; QSystemTrayIcon *m_system_tray_icon = nullptr; - QTranslator m_translator; + + DefaultTranslator m_default_translator; + QTranslator m_english_translator; Notifier *m_notifier = nullptr; QString m_locale = "en"; diff --git a/tests/src/app/DefaultTranslator.cpp b/tests/src/app/DefaultTranslator.cpp new file mode 100644 index 000000000..099a711b3 --- /dev/null +++ b/tests/src/app/DefaultTranslator.cpp @@ -0,0 +1,20 @@ +#include + +#include "DefaultTranslator.hpp" + +// =================================================================== + +QString DefaultTranslator::translate ( + const char *context, + const char *source_text, + const char *disambiguation, + int n +) const { + QString translation = QTranslator::translate(context, source_text, disambiguation, n); + + if (translation.length() == 0) + qWarning() << QStringLiteral("Unable to found a translation. (context=%1, label=%2)") + .arg(context).arg(source_text); + + return translation; +} diff --git a/tests/src/app/DefaultTranslator.hpp b/tests/src/app/DefaultTranslator.hpp new file mode 100644 index 000000000..55436b318 --- /dev/null +++ b/tests/src/app/DefaultTranslator.hpp @@ -0,0 +1,17 @@ +#ifndef DEFAULT_TRANSLATOR_H_ +#define DEFAULT_TRANSLATOR_H_ + +#include + +// =================================================================== + +class DefaultTranslator : public QTranslator { + QString translate ( + const char *context, + const char *source_text, + const char *disambiguation = Q_NULLPTR, + int n = -1 + ) const override; +}; + +#endif