summaryrefslogtreecommitdiff
path: root/settings/accounts-translations-plugin/plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'settings/accounts-translations-plugin/plugin.cpp')
-rw-r--r--settings/accounts-translations-plugin/plugin.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/settings/accounts-translations-plugin/plugin.cpp b/settings/accounts-translations-plugin/plugin.cpp
new file mode 100644
index 0000000..2bd504f
--- /dev/null
+++ b/settings/accounts-translations-plugin/plugin.cpp
@@ -0,0 +1,50 @@
+#include <QCoreApplication>
+#include <QLocale>
+#include <QQmlEngine>
+#include <QQmlExtensionPlugin>
+#include <QTranslator>
+#include <QtQml>
+
+class AppTranslator : public QTranslator
+{
+ Q_OBJECT
+public:
+ explicit AppTranslator(QObject *parent)
+ : QTranslator(parent)
+ {
+ qApp->installTranslator(this);
+ }
+
+ ~AppTranslator() override
+ {
+ qApp->removeTranslator(this);
+ }
+};
+
+class MastodonAccountsTranslationsPlugin : public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "com.jolla.settings.accounts.mastodon")
+
+public:
+ void initializeEngine(QQmlEngine *engine, const char *uri) override
+ {
+ Q_UNUSED(uri)
+
+ AppTranslator *engineeringEnglish = new AppTranslator(engine);
+ engineeringEnglish->load("settings-accounts-mastodon_eng_en", "/usr/share/translations");
+
+ AppTranslator *translator = new AppTranslator(engine);
+ translator->load(QLocale(), "settings-accounts-mastodon", "-", "/usr/share/translations");
+ }
+
+ void registerTypes(const char *uri) override
+ {
+ Q_ASSERT(QLatin1String(uri) == QLatin1String("com.jolla.settings.accounts.mastodon"));
+ qmlRegisterUncreatableType<MastodonAccountsTranslationsPlugin>(uri, 1, 0,
+ "MastodonTranslationPlugin",
+ QString());
+ }
+};
+
+#include "plugin.moc"