From 2dfb92a16017a72d0450bc100952dc51197ea5a0 Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Thu, 16 Jul 2020 18:05:57 -0400 Subject: [PATCH] feat: add translation function on the engine --- .../lib/include/DOtherSide/DOtherSide.h | 5 +++++ vendor/DOtherSide/lib/src/DOtherSide.cpp | 22 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h index 8ae1766ba5..6822bcf37c 100644 --- a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h +++ b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h @@ -142,6 +142,11 @@ DOS_API void DOS_CALL dos_qqmlapplicationengine_load_url(DosQQmlApplicationEngin /// \param data The UTF-8 string of the QML to load DOS_API void DOS_CALL dos_qqmlapplicationengine_load_data(DosQQmlApplicationEngine *vptr, const char *data); +/// \brief Calls the load and install function for translations and calls retranslate on QQmlApplicationEngine +/// \param vptr The QQmlApplicationEngine +/// \param data The UTF-8 string of the path to the translation file (.qm) +DOS_API void DOS_CALL dos_qapplication_load_translation(DosQQmlApplicationEngine *vptr, const char* translationPackage); + /// \brief Calls the QQmlApplicationEngine::addImportPath function /// \param vptr The QQmlApplicationEngine /// \param path The path to be added to the list of import paths diff --git a/vendor/DOtherSide/lib/src/DOtherSide.cpp b/vendor/DOtherSide/lib/src/DOtherSide.cpp index c4ed9e37ae..66e141baff 100644 --- a/vendor/DOtherSide/lib/src/DOtherSide.cpp +++ b/vendor/DOtherSide/lib/src/DOtherSide.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #ifdef QT_QUICKCONTROLS2_LIB #include #endif @@ -57,6 +58,9 @@ void register_meta_types() } +// jrainville: I'm not sure where to put this, but it works like so +QTranslator *m_translator = new QTranslator(); + char *convert_to_cstring(const QByteArray &array) { return qstrdup(array.data()); @@ -167,6 +171,20 @@ void dos_qqmlapplicationengine_load_data(::DosQQmlApplicationEngine *vptr, const engine->loadData(data); } +void dos_qapplication_load_translation(::DosQQmlApplicationEngine *vptr, const char* translationPackage) +{ + if (!m_translator->isEmpty()) { + QCoreApplication::removeTranslator(m_translator); + } + if (m_translator->load(translationPackage)) { + bool success = QCoreApplication::installTranslator(m_translator); + auto engine = static_cast(vptr); + engine->retranslate(); + } else { + printf("Failed to load translation file %s\n", translationPackage); + } +} + void dos_qqmlapplicationengine_add_import_path(::DosQQmlApplicationEngine *vptr, const char *path) { auto engine = static_cast(vptr); @@ -1092,4 +1110,6 @@ void dos_qncm_delete(::DosQNetworkConfigurationManager *vptr) { auto ncm = static_cast(vptr); delete ncm; -} \ No newline at end of file +} + +#include "DOtherSide.moc"