From fdf0e9c28c05a8d497a19414099d74f9a0f5d970 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 1 Jul 2018 11:49:53 +0200 Subject: Add browser.locale and browser.translation --- doc/Translating.md | 19 +++++++++++++++++++ lib/configuration/configuration.cpp | 2 ++ src/main.cpp | 20 ++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 doc/Translating.md diff --git a/doc/Translating.md b/doc/Translating.md new file mode 100644 index 0000000..111ddbc --- /dev/null +++ b/doc/Translating.md @@ -0,0 +1,19 @@ +## Generating translations + +~~~sh +lupdate src/ lib/ -ts lang/.ts +~~~ + +## Baking translation +This generates lang/.qm + +~~~sh +lrelease lang/.ts +~~~ + +## Using translations + +~~~sh +--browser.locale # set Qt translation; ex. de +--browser.translation # set translation file; ex. /home/user/.config/smolbote/lang/custom-translate.qm +~~~ diff --git a/lib/configuration/configuration.cpp b/lib/configuration/configuration.cpp index b4a3d07..766dfaf 100644 --- a/lib/configuration/configuration.cpp +++ b/lib/configuration/configuration.cpp @@ -60,6 +60,8 @@ Configuration::Configuration(QObject *parent) configuration_desc.add_options() ("browser.stylesheet", po::value()) ("browser.session", po::value()) + ("browser.locale", po::value()) + ("browser.translation", po::value()) // main window ui ("mainwindow.height", po::value()->default_value(720)) diff --git a/src/main.cpp b/src/main.cpp index a419775..85bf5f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,6 +14,8 @@ #include #include "plugin.h" #include "session.h" +#include +#include int main(int argc, char **argv) { @@ -83,6 +85,24 @@ int main(int argc, char **argv) app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true); app.setConfiguration(config); + // translator + if(config->exists("browser.locale")) { + auto *translator = new QTranslator(&app); + if(translator->load("qt_" + config->value("browser.locale").value(), QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + app.installTranslator(translator); + else + delete translator; + } + + if(config->exists("browser.translation")) { + auto *translator = new QTranslator(&app); + if(translator->load(config->value("browser.translation").value())) + app.installTranslator(translator); + else + delete translator; + } + + app.setup(QString::fromStdString(config->value("profile.default").value())); for(const Plugin &plugin : plugins) { app.registerPlugin(plugin); -- cgit v1.2.1