From fea6b191a8738c92adf644c399d020f420527312 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 2 Feb 2019 00:54:09 +1100 Subject: [PATCH] cli arg to load external translation file --- main.cpp | 11 +++++++++++ mainwindow.cpp | 13 ++++++++++--- mainwindow.h | 3 +++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index 13a767cf7..48188e2a6 100644 --- a/main.cpp +++ b/main.cpp @@ -44,6 +44,7 @@ int main(int argc, char *argv[]) { "\t--disable-shaders\tDisable OpenGL shaders (for debugging)\n" "\t--no-debug\t\tDisable internal debug log and output directly to console\n" "\t--disable-blend-modes\tDisable shader-based blending for older GPUs\n" + "\t--translation \tSet an external language file to use\n" "\n", argv[0]); return 0; } else if (!strcmp(argv[i], "--fullscreen") || !strcmp(argv[i], "-f")) { @@ -54,6 +55,16 @@ int main(int argc, char *argv[]) { use_internal_logger = false; } else if (!strcmp(argv[i], "--disable-blend-modes")) { disable_blending = true; + } else if (!strcmp(argv[i], "--translation")) { + if (i + 1 < argc && argv[i + 1][0] != '-') { + // load translation file + external_translation_file = argv[i + 1]; + + i++; + } else { + printf("[ERROR] No translation file specified\n"); + return 1; + } } else { printf("[ERROR] Unknown argument '%s'\n", argv[1]); return 1; diff --git a/mainwindow.cpp b/mainwindow.cpp index 394a09ed5..2ca0470be 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -57,6 +57,9 @@ MainWindow* mainWindow; #define DEFAULT_CSS "QPushButton::checked { background: rgb(25, 25, 25); }" #define OLIVE_FILE_FILTER "Olive Project (*.ove)" +// load external translation file +QString external_translation_file; + QTimer autorecovery_timer; QString config_fn; bool demoNoticeShown = false; @@ -207,10 +210,14 @@ MainWindow::MainWindow(QWidget *parent, const QString &an) : } // load preferred language from file - if (!config.language_file.isEmpty() - && QFileInfo::exists(config.language_file)) { + QString language_file = external_translation_file.isEmpty() ? + config.language_file : + external_translation_file; + + if (!language_file.isEmpty() + && QFileInfo::exists(language_file)) { QTranslator* translator = new QTranslator(this); - translator->load(config.language_file); + translator->load(language_file); QApplication::installTranslator(translator); } diff --git a/mainwindow.h b/mainwindow.h index b00bf28c9..4ef98ebae 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -213,4 +213,7 @@ private: extern MainWindow* mainWindow; +// load external translation file +extern QString external_translation_file; + #endif // MAINWINDOW_H