From cad017d2da0a04f92609c16549754d5c06cb1ddb Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Mon, 13 Nov 2023 12:21:31 +0100 Subject: [PATCH 01/16] Modo quisco --- README.md | 5 +++++ src/mainwindow.cpp | 9 +++++++++ src/mainwindow.h | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/README.md b/README.md index 2643deb..0e6ca09 100644 --- a/README.md +++ b/README.md @@ -64,3 +64,8 @@ El administrador dispone de una consola y mas información sobre la ejecución d Se activa estableciendo la variable de entorno `ogactiveadmin=true` +## Modo quiosco + +Se puede activar el modo quiosco que impide la salida del navegador con Alt+F4. + +Se activa estableciendo la variable de entorno `OGKIOSKMODE=true` \ No newline at end of file diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f1aeb90..25170ce 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -42,6 +42,7 @@ MainWindow::MainWindow(QWidget *parent) readEnvironmentValues(); m_is_admin = qgetenv("ogactiveadmin") == "true"; + m_kiosk_mode = qgetenv("OGKIOSKMODE") == "true"; // Open the log file for append if(m_env.contains("OGLOGFILE") && m_env["OGLOGFILE"]!="") @@ -164,6 +165,14 @@ MainWindow::MainWindow(QWidget *parent) showFullScreen(); } +void MainWindow::closeEvent(QCloseEvent *event) { + if (isKioskMode()) { + qInfo() << "Modo quiosco activado, ignorando intento de cerrar ventana"; + event->ignore(); + } +} + + MainWindow::~MainWindow() { if(m_logfile) diff --git a/src/mainwindow.h b/src/mainwindow.h index 0a8d2b1..518bf38 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -48,6 +48,8 @@ class MainWindow : public QMainWindow public: MainWindow(QWidget *parent = 0); + void closeEvent(QCloseEvent *event) override; + ~MainWindow(); public slots: @@ -76,10 +78,12 @@ class MainWindow : public QMainWindow private: bool isAdmin() const { return m_is_admin; } + bool isKioskMode() const { return m_kiosk_mode; } void registerScheme(const QString &name); void registerHandler(const QString &name, bool confirm, bool output); bool m_is_admin{false}; + bool m_kiosk_mode{false}; //Functions From 10e022b7f96509b8ba79fbdb5cf9c813bd3a87ae Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Mon, 13 Nov 2023 12:21:43 +0100 Subject: [PATCH 02/16] Instalar binario --- qtermwidget/CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/qtermwidget/CMakeLists.txt b/qtermwidget/CMakeLists.txt index 880911a..09a1e35 100644 --- a/qtermwidget/CMakeLists.txt +++ b/qtermwidget/CMakeLists.txt @@ -286,7 +286,7 @@ install(EXPORT ) install(FILES - ${HDRS_DISTRIB} "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_export.h" "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_version.h" + ${HDRS_DISTRIB} "${CMAKE_CURRENT_BINARY_DIR}/lib/qtermwidget_export.h" "${CMAKE_BINARY_DIR}/lib/qtermwidget_version.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${QTERMWIDGET_LIBRARY_NAME}" COMPONENT Devel ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1b81c6d..12a481e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,4 +35,6 @@ target_include_directories(OGBrowser PRIVATE ${qtermwidget_INCLUDE_DIRS} ${Digit target_link_directories(OGBrowser PRIVATE ${qtermwidget_LIB_DIRS} ${DigitalClock_LIB_DIRS}) +install(TARGETS OGBrowser DESTINATION bin ) + From cde8547c9b09bfa1a77b172ca3a2ecc6490f53bc Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Mon, 13 Nov 2023 14:39:24 +0100 Subject: [PATCH 03/16] Convertir traducciones a formato Qt, e instalar desde cmake --- po/ca.po | 118 ----------------------- po/en.po | 120 ------------------------ src/i18n/OGBrowser_ca.ts | 97 +++++++++++++++++++ src/i18n/OGBrowser_en.ts | 195 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 292 insertions(+), 238 deletions(-) delete mode 100644 po/ca.po delete mode 100644 po/en.po create mode 100644 src/i18n/OGBrowser_ca.ts create mode 100644 src/i18n/OGBrowser_en.ts diff --git a/po/ca.po b/po/ca.po deleted file mode 100644 index 1e76b18..0000000 --- a/po/ca.po +++ /dev/null @@ -1,118 +0,0 @@ -# OpenGnsys Client Browser messeages file. -# Copyright (C) 2016 -# This file is distributed under the same license as the browser package. -# Ramón M. Gómez , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: OpenGnsys Client Browser 1.1.0\n" -"Report-Msgid-Bugs-To: https://opengnsys.es/\n" -"POT-Creation-Date: 2019-09-11 15:48+0000\n" -"PO-Revision-Date: 2016-05-03 10:25+0200\n" -"Last-Translator: Ramón M. Gómez \n" -"Language-Team: CATALAN \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/main.cpp:20 -#, c-format -msgid "Uso: %s -qws http://sitioweb.com/\n" -msgstr "Ús: %s -qws http://web.com/\n" - -#: src/mainwindow.cpp:47 -msgid "El fichero de log no ha podido ser abierto: " -msgstr "Log file could not be opened: " - -#: src/mainwindow.cpp:68 -msgid "&Nueva Terminal" -msgstr "&Nova Terminal" - -#: src/mainwindow.cpp:72 -msgid "Salida" -msgstr "Sortida" - -#: src/mainwindow.cpp:104 -msgid "Proyecto OpenGnsys" -msgstr "Projecte OpenGnsys" - -#: src/mainwindow.cpp:167 -msgid "Hay otro proceso en ejecución. Por favor espere." -msgstr "" - -#: src/mainwindow.cpp:183 src/mainwindow.cpp:250 -msgid "AVISO" -msgstr "AVIS" - -#: src/mainwindow.cpp:186 -msgid "" -"La siguiente acción puede modificar datos o tardar varios minutos. El " -"equipo no podrá ser utilizado durante su ejecución." -msgstr "" - -#: src/mainwindow.cpp:187 -msgid "Ejecutar" -msgstr "Executar" - -#: src/mainwindow.cpp:188 -msgid "Cancelar" -msgstr "Cancel-lar" - -#: src/mainwindow.cpp:233 -#, c-format -msgid "%p% Cargando" -msgstr "%p% Carregat" - -#: src/mainwindow.cpp:253 -msgid "La página no se puede cargar." -msgstr "" - -#: src/mainwindow.cpp:255 -msgid "Recargar" -msgstr "Recarregar" - -#: src/mainwindow.cpp:256 -msgid "Abortar" -msgstr "Avortar" - -#: src/mainwindow.cpp:333 src/mainwindow.cpp:345 -msgid "Fin del proceso. Valor de retorno: " -msgstr "" - -#: src/mainwindow.cpp:338 -msgid "El proceso ha fallado inesperadamente. Salida: " -msgstr "" - -#: src/mainwindow.cpp:347 -msgid "AVISO: Pulsar el botón superior derecho para cerrar" -msgstr "" - -#: src/mainwindow.cpp:353 -msgid "Código de salida: " -msgstr "" - -#: src/mainwindow.cpp:364 -msgid "Imposible lanzar el proceso." -msgstr "" - -#: src/mainwindow.cpp:367 -msgid "Error de escritura en el proceso." -msgstr "" - -#: src/mainwindow.cpp:370 -msgid "Error de lectura del proceso." -msgstr "" - -#: src/mainwindow.cpp:378 -msgid "Error desconocido." -msgstr "" - -#: src/mainwindow.cpp:530 src/mainwindow.cpp:535 -msgid "Lanzando el comando: " -msgstr "" - -#: src/mainwindow.cpp:563 -msgid "ERROR" -msgstr "ERROR" diff --git a/po/en.po b/po/en.po deleted file mode 100644 index 08c26b9..0000000 --- a/po/en.po +++ /dev/null @@ -1,120 +0,0 @@ -# OpenGnsys Client Browser messeages file. -# Copyright (C) 2016 -# This file is distributed under the same license as the browser package. -# Ramón M. Gómez , 2016. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: OpenGnsys Client Browser 1.1.0\n" -"Report-Msgid-Bugs-To: https://opengnsys.es/\n" -"POT-Creation-Date: 2019-09-11 15:48+0000\n" -"PO-Revision-Date: 2016-05-03 10:16+0200\n" -"Last-Translator: Ramón M. Gómez \n" -"Language-Team: ENGLISH \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/main.cpp:20 -#, c-format -msgid "Uso: %s -qws http://sitioweb.com/\n" -msgstr "Usage: %s -qws http://website.com/\n" - -#: src/mainwindow.cpp:47 -msgid "El fichero de log no ha podido ser abierto: " -msgstr "Log file could not be opened: " - -#: src/mainwindow.cpp:68 -msgid "&Nueva Terminal" -msgstr "&New Terminal" - -#: src/mainwindow.cpp:72 -msgid "Salida" -msgstr "Output" - -#: src/mainwindow.cpp:104 -msgid "Proyecto OpenGnsys" -msgstr "OpenGnsys Project" - -#: src/mainwindow.cpp:167 -msgid "Hay otro proceso en ejecución. Por favor espere." -msgstr "There is another process running. Please wait." - -#: src/mainwindow.cpp:183 src/mainwindow.cpp:250 -msgid "AVISO" -msgstr "WARNING" - -#: src/mainwindow.cpp:186 -msgid "" -"La siguiente acción puede modificar datos o tardar varios minutos. El " -"equipo no podrá ser utilizado durante su ejecución." -msgstr "" -"Following action can modify some data or take several minutes. This computer " -"may not be used during execution." - -#: src/mainwindow.cpp:187 -msgid "Ejecutar" -msgstr "Run" - -#: src/mainwindow.cpp:188 -msgid "Cancelar" -msgstr "Cancel" - -#: src/mainwindow.cpp:233 -#, c-format -msgid "%p% Cargando" -msgstr "%p% Loaded" - -#: src/mainwindow.cpp:253 -msgid "La página no se puede cargar." -msgstr "Page can not be loaded." - -#: src/mainwindow.cpp:255 -msgid "Recargar" -msgstr "Reload" - -#: src/mainwindow.cpp:256 -msgid "Abortar" -msgstr "Abort" - -#: src/mainwindow.cpp:333 src/mainwindow.cpp:345 -msgid "Fin del proceso. Valor de retorno: " -msgstr "End of process. Return value: " - -#: src/mainwindow.cpp:338 -msgid "El proceso ha fallado inesperadamente. Salida: " -msgstr "The process crashed unexpectedly. Return value: " - -#: src/mainwindow.cpp:347 -msgid "AVISO: Pulsar el botón superior derecho para cerrar" -msgstr "WARNING: Press the upper right button to close" - -#: src/mainwindow.cpp:353 -msgid "Código de salida: " -msgstr "Exit code: " - -#: src/mainwindow.cpp:364 -msgid "Imposible lanzar el proceso." -msgstr "Unable to launch the process." - -#: src/mainwindow.cpp:367 -msgid "Error de escritura en el proceso." -msgstr "Error writing to the process." - -#: src/mainwindow.cpp:370 -msgid "Error de lectura del proceso." -msgstr "Error reading from the process." - -#: src/mainwindow.cpp:378 -msgid "Error desconocido." -msgstr "Unknown error." - -#: src/mainwindow.cpp:530 src/mainwindow.cpp:535 -msgid "Lanzando el comando: " -msgstr "Launching command: " - -#: src/mainwindow.cpp:563 -msgid "ERROR" -msgstr "ERROR" diff --git a/src/i18n/OGBrowser_ca.ts b/src/i18n/OGBrowser_ca.ts new file mode 100644 index 0000000..b733b06 --- /dev/null +++ b/src/i18n/OGBrowser_ca.ts @@ -0,0 +1,97 @@ + + + + + main.cpp:20 + + Uso: %s -qws http://sitioweb.com/ + + Ús: %s -qws http://web.com/ + + + + + mainwindow.cpp:104 + + Proyecto OpenGnsys + Projecte OpenGnsys + + + + mainwindow.cpp:183 + + AVISO + AVIS + + + + mainwindow.cpp:187 + + Ejecutar + Executar + + + + mainwindow.cpp:188 + + Cancelar + Cancel-lar + + + + mainwindow.cpp:233 + + %p% Cargando + %p% Carregat + + + + mainwindow.cpp:250 + + AVISO + AVIS + + + + mainwindow.cpp:255 + + Recargar + Recarregar + + + + mainwindow.cpp:256 + + Abortar + Avortar + + + + mainwindow.cpp:47 + + El fichero de log no ha podido ser abierto: + Log file could not be opened: + + + + mainwindow.cpp:563 + + ERROR + ERROR + + + + mainwindow.cpp:68 + + &Nueva Terminal + &Nova Terminal + + + + mainwindow.cpp:72 + + Salida + Sortida + + + diff --git a/src/i18n/OGBrowser_en.ts b/src/i18n/OGBrowser_en.ts new file mode 100644 index 0000000..ff37822 --- /dev/null +++ b/src/i18n/OGBrowser_en.ts @@ -0,0 +1,195 @@ + + + + + main.cpp:20 + + Uso: %s -qws http://sitioweb.com/ + + Usage: %s -qws http://website.com/ + + + + + mainwindow.cpp:104 + + Proyecto OpenGnsys + OpenGnsys Project + + + + mainwindow.cpp:167 + + Hay otro proceso en ejecución. Por favor espere. + There is another process running. Please wait. + + + + mainwindow.cpp:183 + + AVISO + WARNING + + + + mainwindow.cpp:186 + + La siguiente acci&oacute;n puede modificar datos o tardar varios minutos. El equipo no podr&aacute; ser utilizado durante su ejecuci&oacute;n. + Following action can modify some data or take several minutes. This computer may not be used during execution. + + + + mainwindow.cpp:187 + + Ejecutar + Run + + + + mainwindow.cpp:188 + + Cancelar + Cancel + + + + mainwindow.cpp:233 + + %p% Cargando + %p% Loaded + + + + mainwindow.cpp:250 + + AVISO + WARNING + + + + mainwindow.cpp:253 + + La p&aacute;gina no se puede cargar. + Page can not be loaded. + + + + mainwindow.cpp:255 + + Recargar + Reload + + + + mainwindow.cpp:256 + + Abortar + Abort + + + + mainwindow.cpp:333 + + Fin del proceso. Valor de retorno: + End of process. Return value: + + + + mainwindow.cpp:338 + + El proceso ha fallado inesperadamente. Salida: + The process crashed unexpectedly. Return value: + + + + mainwindow.cpp:345 + + Fin del proceso. Valor de retorno: + End of process. Return value: + + + + mainwindow.cpp:347 + + AVISO: Pulsar el botón superior derecho para cerrar + WARNING: Press the upper right button to close + + + + mainwindow.cpp:353 + + Código de salida: + Exit code: + + + + mainwindow.cpp:364 + + Imposible lanzar el proceso. + Unable to launch the process. + + + + mainwindow.cpp:367 + + Error de escritura en el proceso. + Error writing to the process. + + + + mainwindow.cpp:370 + + Error de lectura del proceso. + Error reading from the process. + + + + mainwindow.cpp:378 + + Error desconocido. + Unknown error. + + + + mainwindow.cpp:47 + + El fichero de log no ha podido ser abierto: + Log file could not be opened: + + + + mainwindow.cpp:530 + + Lanzando el comando: + Launching command: + + + + mainwindow.cpp:535 + + Lanzando el comando: + Launching command: + + + + mainwindow.cpp:563 + + ERROR + ERROR + + + + mainwindow.cpp:68 + + &Nueva Terminal + &New Terminal + + + + mainwindow.cpp:72 + + Salida + Output + + + From 00271abb4d80a74a64f6744bc433e35cff93b942 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 09:36:03 +0100 Subject: [PATCH 04/16] Translation support in CMake --- src/CMakeLists.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 12a481e..f8b5569 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,10 +19,17 @@ set(SOURCES main.cpp mainwindow.cpp ogurlhandler.cpp - ) +) + +file(GLOB TRANSLATIONS "${PROJECT_SOURCE_DIR}/i18n/*.ts") +message(STATUS "Translations: ${TRANSLATIONS}") -add_executable(OGBrowser ${SOURCES} ) + + +add_executable(OGBrowser ${SOURCES}) + +qt6_add_translations(OGBrowser TS_FILES ${TRANSLATIONS} QM_FILES_OUTPUT_VARIABLE qm_files) set_property(TARGET OGBrowser PROPERTY CXX_STANDARD 17) set_property(TARGET OGBrowser PROPERTY CXX_STANDARD_REQUIRED ON) @@ -36,5 +43,5 @@ target_link_directories(OGBrowser PRIVATE ${qtermwidget_LIB_DIRS} ${DigitalClock install(TARGETS OGBrowser DESTINATION bin ) - +install(FILES ${qm_files} DESTINATION "translations") From f88516626848c6ddb6f31efb8212a8caafdd83f8 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 09:42:23 +0100 Subject: [PATCH 05/16] Eliminar usos de gettext --- src/mainwindow.cpp | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 25170ce..47410b8 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -51,7 +51,7 @@ MainWindow::MainWindow(QWidget *parent) if(!m_logfile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { delete m_logfile; - print(tr(gettext("El fichero de log no ha podido ser abierto: "))+m_env["OGLOGFILE"]+"."); + print(tr("El fichero de log no ha podido ser abierto: ")+m_env["OGLOGFILE"]+"."); } else { @@ -72,11 +72,11 @@ MainWindow::MainWindow(QWidget *parent) // TabWidget m_tabs=new QTabWidget(dock); - QPushButton *button=new QPushButton(tr(gettext("&Nueva Terminal"))); + QPushButton *button=new QPushButton(tr("&Nueva Terminal")); button->setFocusPolicy(Qt::TabFocus); m_tabs->setCornerWidget(button); m_tabs->setFocusPolicy(Qt::NoFocus); - m_tabs->addTab(m_output,tr(gettext("Salida"))); + m_tabs->addTab(m_output,tr("Salida")); slotCreateTerminal(); // Assign tabs to dock dock->setWidget(m_tabs); @@ -108,7 +108,7 @@ MainWindow::MainWindow(QWidget *parent) m_logo->setPixmap(logo); else m_logo->setText("OG"); - m_logo->setToolTip(tr(gettext("Proyecto OpenGnsys"))+"\nhttps://opengnsys.es"); + m_logo->setToolTip(tr("Proyecto OpenGnsys")+"\nhttps://opengnsys.es"); // Progress bar m_progressBar=new QProgressBar(this); m_progressBar->setRange(0,100); @@ -209,12 +209,12 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return if (confirm) { QMessageBox msgBox; msgBox.setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint); - msgBox.setWindowTitle(tr(gettext("AVISO"))); + msgBox.setWindowTitle(tr("AVISO")); msgBox.setIcon(QMessageBox::Question); msgBox.setTextFormat(Qt::RichText); - msgBox.setText(tr(gettext("La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución."))); - QPushButton *execButton = msgBox.addButton(tr(gettext("Ejecutar")), QMessageBox::ActionRole); - msgBox.addButton(tr(gettext("Cancelar")), QMessageBox::RejectRole); + msgBox.setText(tr("La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución.")); + QPushButton *execButton = msgBox.addButton(tr("Ejecutar"), QMessageBox::ActionRole); + msgBox.addButton(tr("Cancelar"), QMessageBox::RejectRole); msgBox.setDefaultButton(execButton); msgBox.exec(); @@ -257,10 +257,10 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return if(isAdmin()) { m_output->setTextColor(QColor(Qt::darkGreen)); - print(tr(gettext("Lanzando el comando: "))+command); + print(tr("Lanzando el comando: ")+command); m_output->setTextColor(QColor(Qt::black)); } else { - write(tr(gettext("Lanzando el comando: "))+command); + write(tr("Lanzando el comando: ")+command); } m_command.process->start(program,list); @@ -271,7 +271,7 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return void MainWindow::slotWebLoadStarted() { startProgressBar(); - m_progressBar->setFormat(gettext("%p% Cargando")); + m_progressBar->setFormat("%p% Cargando"); } void MainWindow::slotWebLoadProgress(int progress) @@ -360,27 +360,27 @@ void MainWindow::slotProcessFinished(int code, QProcess::ExitStatus status) { m_output->setTextColor(QColor(Qt::darkRed)); } - print("\n"+tr(gettext("Fin del proceso. Valor de retorno: "))+QString::number(code)); + print("\n"+tr("Fin del proceso. Valor de retorno: ")+QString::number(code)); } else { m_output->setTextColor(QColor(Qt::darkRed)); - print("\n"+tr(gettext("El proceso ha fallado inesperadamente. Salida: ")+code)); + print("\n"+QString(tr("El proceso ha fallado inesperadamente. Salida: "))+QString::number(code)); } m_output->setTextColor(QColor(Qt::black)); } else { // Non-admin user: show instruction to close the popup window - write(tr(gettext("Fin del proceso. Valor de retorno: "))+QString::number(code)); + write(tr("Fin del proceso. Valor de retorno: ")+QString::number(code)); m_output->setFontUnderline(true); - print("\n\n"+tr(gettext("AVISO: Pulsar el botón superior derecho para cerrar"))+" [X]"); + print("\n\n"+tr("AVISO: Pulsar el botón superior derecho para cerrar")+" [X]"); m_output->setFontUnderline(false); } // On error, show a message box if(code > 0 && ! m_output->isActiveWindow()) { - showErrorMessage(gettext("Código de salida: ")+QString::number(code)); + showErrorMessage(tr("Código de salida: ")+QString::number(code)); } finishProgressBar(); } @@ -393,13 +393,13 @@ void MainWindow::slotProcessError(QProcess::ProcessError error) switch(error) { case QProcess::FailedToStart: - errorMsg=tr(gettext("Imposible lanzar el proceso.")); + errorMsg=tr("Imposible lanzar el proceso."); break; case QProcess::WriteError: - errorMsg=tr(gettext("Error de escritura en el proceso.")); + errorMsg=tr("Error de escritura en el proceso."); break; case QProcess::ReadError: - errorMsg=tr(gettext("Error de lectura del proceso.")); + errorMsg=tr("Error de lectura del proceso."); break; // No capturo crashed porque la pillo por finished case QProcess::Crashed: @@ -407,7 +407,7 @@ void MainWindow::slotProcessError(QProcess::ProcessError error) break; case QProcess::UnknownError: default: - errorMsg=tr(gettext("Error desconocido.")); + errorMsg=tr("Error desconocido."); break; } // Print error and show message box with timeout. @@ -565,7 +565,7 @@ void MainWindow::showErrorMessage(QString text) { QMessageBox* msgBox=new QMessageBox(); msgBox->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint); - msgBox->setWindowTitle(gettext("ERROR")); + msgBox->setWindowTitle("ERROR"); msgBox->setIcon(QMessageBox::Warning); msgBox->setText(text); msgBox->show(); From 502838c165d871a233f394c5f8c89784fd07b659 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 09:53:36 +0100 Subject: [PATCH 06/16] Herramienta para actualizar archivos de i18n --- src/update_translations.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 src/update_translations.sh diff --git a/src/update_translations.sh b/src/update_translations.sh new file mode 100755 index 0000000..c84abc5 --- /dev/null +++ b/src/update_translations.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +for ts in i18n/*.ts ; do + lupdate-qt6 *.cpp -ts $ts +done \ No newline at end of file From bc99ffe722f71561532e519233cff28d790bcbf2 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 09:59:14 +0100 Subject: [PATCH 07/16] Eliminar uso de libintl --- src/mainwindow.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 47410b8..6b09798 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,9 +20,6 @@ #include #include - -#include - #include "qtermwidget.h" #include "digitalclock.h" #include "ogurlhandler.h" From e6e629edc2781fbc9ac3361e3d49658b05aa2617 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 10:46:04 +0100 Subject: [PATCH 08/16] Convertir a utf8 --- src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 6b09798..90d6dd5 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -209,7 +209,7 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return msgBox.setWindowTitle(tr("AVISO")); msgBox.setIcon(QMessageBox::Question); msgBox.setTextFormat(Qt::RichText); - msgBox.setText(tr("La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución.")); + msgBox.setText(tr("La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución.")); QPushButton *execButton = msgBox.addButton(tr("Ejecutar"), QMessageBox::ActionRole); msgBox.addButton(tr("Cancelar"), QMessageBox::RejectRole); msgBox.setDefaultButton(execButton); From ea5bf71d12eac1710b045231eb249b433e0e174f Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 10:50:52 +0100 Subject: [PATCH 09/16] Actualizar traducciones --- src/i18n/OGBrowser_ca.ts | 110 +++++++++++++++++++++++++++++++++++++ src/i18n/OGBrowser_en.ts | 114 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 224 insertions(+) diff --git a/src/i18n/OGBrowser_ca.ts b/src/i18n/OGBrowser_ca.ts index b733b06..1b546ac 100644 --- a/src/i18n/OGBrowser_ca.ts +++ b/src/i18n/OGBrowser_ca.ts @@ -1,6 +1,116 @@ + + MainWindow + + + OpenGnsys Browser + + + + + El fichero de log no ha podido ser abierto: + Log file could not be opened: + + + + &Nueva Terminal + &Nova Terminal + + + + Salida + Sortida + + + + Proyecto OpenGnsys + Projecte OpenGnsys + + + + AVISO + AVIS + + + + La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución. + + + + + Ejecutar + Executar + + + + Cancelar + Cancel-lar + + + + + Lanzando el comando: + + + + + Proc. stdout: + + + + + Proc. stderr: + + + + + + Fin del proceso. Valor de retorno: + + + + + El proceso ha fallado inesperadamente. Salida: + + + + + AVISO: Pulsar el botón superior derecho para cerrar + + + + + Código de salida: + + + + + Imposible lanzar el proceso. + + + + + Error de escritura en el proceso. + + + + + Error de lectura del proceso. + + + + + Error desconocido. + + + + + Term + + + main.cpp:20 diff --git a/src/i18n/OGBrowser_en.ts b/src/i18n/OGBrowser_en.ts index ff37822..cddb590 100644 --- a/src/i18n/OGBrowser_en.ts +++ b/src/i18n/OGBrowser_en.ts @@ -1,6 +1,120 @@ + + MainWindow + + + OpenGnsys Browser + + + + + El fichero de log no ha podido ser abierto: + Log file could not be opened: + + + + &Nueva Terminal + &New Terminal + + + + Salida + Output + + + + Proyecto OpenGnsys + OpenGnsys Project + + + + AVISO + WARNING + + + La siguiente acci&oacute;n puede modificar datos o tardar varios minutos. El equipo no podr&aacute; ser utilizado durante su ejecuci&oacute;n. + Following action can modify some data or take several minutes. This computer may not be used during execution. + + + + La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución. + + + + + Ejecutar + Run + + + + Cancelar + Cancel + + + + + Lanzando el comando: + Launching command: + + + + Proc. stdout: + + + + + Proc. stderr: + + + + + + Fin del proceso. Valor de retorno: + End of process. Return value: + + + + El proceso ha fallado inesperadamente. Salida: + The process crashed unexpectedly. Return value: + + + + AVISO: Pulsar el botón superior derecho para cerrar + WARNING: Press the upper right button to close + + + + Código de salida: + Exit code: + + + + Imposible lanzar el proceso. + Unable to launch the process. + + + + Error de escritura en el proceso. + Error writing to the process. + + + + Error de lectura del proceso. + Error reading from the process. + + + + Error desconocido. + Unknown error. + + + + Term + + + main.cpp:20 From 6a71755880eb9b9ed89afdbecaf13994e7bbf25e Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 11:55:20 +0100 Subject: [PATCH 10/16] Mejorar formato de cadenas traducidas --- src/mainwindow.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 90d6dd5..aa13658 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -48,7 +48,7 @@ MainWindow::MainWindow(QWidget *parent) if(!m_logfile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { delete m_logfile; - print(tr("El fichero de log no ha podido ser abierto: ")+m_env["OGLOGFILE"]+"."); + print(tr("El fichero de log no ha podido ser abierto: %1.").arg(m_env["OGLOGFILE"])); } else { @@ -254,10 +254,10 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return if(isAdmin()) { m_output->setTextColor(QColor(Qt::darkGreen)); - print(tr("Lanzando el comando: ")+command); + print(tr("Lanzando el comando: %1").arg(command)); m_output->setTextColor(QColor(Qt::black)); } else { - write(tr("Lanzando el comando: ")+command); + write(tr("Lanzando el comando: %1").arg(command)); } m_command.process->start(program,list); @@ -268,7 +268,7 @@ void MainWindow::commandQueued(const QString &command, bool confirm, bool return void MainWindow::slotWebLoadStarted() { startProgressBar(); - m_progressBar->setFormat("%p% Cargando"); + m_progressBar->setFormat(tr("%p% Cargando")); } void MainWindow::slotWebLoadProgress(int progress) @@ -357,19 +357,19 @@ void MainWindow::slotProcessFinished(int code, QProcess::ExitStatus status) { m_output->setTextColor(QColor(Qt::darkRed)); } - print("\n"+tr("Fin del proceso. Valor de retorno: ")+QString::number(code)); + print("\n"+tr("Fin del proceso. Valor de retorno: %1").arg(code)); } else { m_output->setTextColor(QColor(Qt::darkRed)); - print("\n"+QString(tr("El proceso ha fallado inesperadamente. Salida: "))+QString::number(code)); + print("\n"+tr("El proceso ha fallado inesperadamente. Salida: %1").arg(code)); } m_output->setTextColor(QColor(Qt::black)); } else { // Non-admin user: show instruction to close the popup window - write(tr("Fin del proceso. Valor de retorno: ")+QString::number(code)); + write(tr("Fin del proceso. Valor de retorno: %1").arg(code)); m_output->setFontUnderline(true); print("\n\n"+tr("AVISO: Pulsar el botón superior derecho para cerrar")+" [X]"); m_output->setFontUnderline(false); @@ -377,7 +377,7 @@ void MainWindow::slotProcessFinished(int code, QProcess::ExitStatus status) // On error, show a message box if(code > 0 && ! m_output->isActiveWindow()) { - showErrorMessage(tr("Código de salida: ")+QString::number(code)); + showErrorMessage(tr("Código de salida: %1").arg(code)); } finishProgressBar(); } From 6538925faa4d1b915f2388e47d0eb6693f346ac0 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 11:59:14 +0100 Subject: [PATCH 11/16] Mas ajustes a traducciones --- src/i18n/OGBrowser_ca.ts | 47 ++++++++++++++++++++++---------------- src/i18n/OGBrowser_en.ts | 49 ++++++++++++++++++++++++++++++---------- src/mainwindow.cpp | 6 ++--- 3 files changed, 68 insertions(+), 34 deletions(-) diff --git a/src/i18n/OGBrowser_ca.ts b/src/i18n/OGBrowser_ca.ts index 1b546ac..78f958f 100644 --- a/src/i18n/OGBrowser_ca.ts +++ b/src/i18n/OGBrowser_ca.ts @@ -9,9 +9,13 @@ - El fichero de log no ha podido ser abierto: - Log file could not be opened: + Log file could not be opened: + + + + El fichero de log no ha podido ser abierto: %1. + @@ -51,7 +55,28 @@ - Lanzando el comando: + Lanzando el comando: %1 + + + + + %p% Cargando + %p% Carregat + + + + + Fin del proceso. Valor de retorno: %1 + + + + + El proceso ha fallado inesperadamente. Salida: %1 + + + + + Código de salida: %1 @@ -64,27 +89,11 @@ Proc. stderr: - - - - Fin del proceso. Valor de retorno: - - - - - El proceso ha fallado inesperadamente. Salida: - - AVISO: Pulsar el botón superior derecho para cerrar - - - Código de salida: - - Imposible lanzar el proceso. diff --git a/src/i18n/OGBrowser_en.ts b/src/i18n/OGBrowser_en.ts index cddb590..e3a8645 100644 --- a/src/i18n/OGBrowser_en.ts +++ b/src/i18n/OGBrowser_en.ts @@ -9,9 +9,8 @@ - El fichero de log no ha podido ser abierto: - Log file could not be opened: + Log file could not be opened: @@ -53,10 +52,8 @@ Cancel - - Lanzando el comando: - Launching command: + Launching command: @@ -69,15 +66,12 @@ - - Fin del proceso. Valor de retorno: - End of process. Return value: + End of process. Return value: - El proceso ha fallado inesperadamente. Salida: - The process crashed unexpectedly. Return value: + The process crashed unexpectedly. Return value: @@ -85,9 +79,40 @@ WARNING: Press the upper right button to close - Código de salida: - Exit code: + Exit code: + + + + El fichero de log no ha podido ser abierto: %1. + + + + + + Lanzando el comando: %1 + + + + + %p% Cargando + %p% Loaded + + + + + Fin del proceso. Valor de retorno: %1 + + + + + El proceso ha fallado inesperadamente. Salida: %1 + + + + + Código de salida: %1 + diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index aa13658..a115ca4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -105,7 +105,7 @@ MainWindow::MainWindow(QWidget *parent) m_logo->setPixmap(logo); else m_logo->setText("OG"); - m_logo->setToolTip(tr("Proyecto OpenGnsys")+"\nhttps://opengnsys.es"); + m_logo->setToolTip(tr("Proyecto OpenGnsys\nhttps://opengnsys.es")); // Progress bar m_progressBar=new QProgressBar(this); m_progressBar->setRange(0,100); @@ -371,7 +371,7 @@ void MainWindow::slotProcessFinished(int code, QProcess::ExitStatus status) // Non-admin user: show instruction to close the popup window write(tr("Fin del proceso. Valor de retorno: %1").arg(code)); m_output->setFontUnderline(true); - print("\n\n"+tr("AVISO: Pulsar el botón superior derecho para cerrar")+" [X]"); + print("\n\n"+tr("AVISO: Pulsar el botón superior derecho para cerrar (✖)")); m_output->setFontUnderline(false); } // On error, show a message box @@ -432,7 +432,7 @@ void MainWindow::slotCreateTerminal() connect(console,SIGNAL(finished()),this,SLOT(slotDeleteTerminal())); - QString name=tr("Term ")+QString::number(m_numberTerminal); + QString name=tr("Term %1").arg(m_numberTerminal); m_tabs->addTab(console,name); } From 0e736ff4e2cfe720e50a96915f2c855bc3b927cc Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 12:18:54 +0100 Subject: [PATCH 12/16] =?UTF-8?q?Completar=20traducci=C3=B3n=20al=20Ingl?= =?UTF-8?q?=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/OGBrowser_ca.ts | 27 ++-- src/i18n/OGBrowser_en.ts | 278 +++++---------------------------------- 2 files changed, 48 insertions(+), 257 deletions(-) diff --git a/src/i18n/OGBrowser_ca.ts b/src/i18n/OGBrowser_ca.ts index 78f958f..f47e88c 100644 --- a/src/i18n/OGBrowser_ca.ts +++ b/src/i18n/OGBrowser_ca.ts @@ -28,9 +28,8 @@ Sortida - Proyecto OpenGnsys - Projecte OpenGnsys + Projecte OpenGnsys @@ -74,24 +73,35 @@ El proceso ha fallado inesperadamente. Salida: %1 + + + AVISO: Pulsar el botón superior derecho para cerrar (✖) + + Código de salida: %1 + + + Term %1 + + Proc. stdout: - - Proc. stderr: + + Proyecto OpenGnsys +https://opengnsys.es - - AVISO: Pulsar el botón superior derecho para cerrar + + Proc. stderr: @@ -114,11 +124,6 @@ Error desconocido. - - - Term - - main.cpp:20 diff --git a/src/i18n/OGBrowser_en.ts b/src/i18n/OGBrowser_en.ts index e3a8645..1085ee6 100644 --- a/src/i18n/OGBrowser_en.ts +++ b/src/i18n/OGBrowser_en.ts @@ -6,329 +6,115 @@ OpenGnsys Browser - - - - El fichero de log no ha podido ser abierto: - Log file could not be opened: + OpenGnsys Browser &Nueva Terminal - &New Terminal + &New Terminal Salida - Output - - - - Proyecto OpenGnsys - OpenGnsys Project + Output AVISO - WARNING - - - La siguiente acci&oacute;n puede modificar datos o tardar varios minutos. El equipo no podr&aacute; ser utilizado durante su ejecuci&oacute;n. - Following action can modify some data or take several minutes. This computer may not be used during execution. + WARNING La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución. - + The following action can modify data or take several minutes. This computer may not be usable during execution. Ejecutar - Run + Run Cancelar - Cancel - - - Lanzando el comando: - Launching command: + Cancel Proc. stdout: - + Process output: Proc. stderr: - - - - Fin del proceso. Valor de retorno: - End of process. Return value: - - - El proceso ha fallado inesperadamente. Salida: - The process crashed unexpectedly. Return value: - - - - AVISO: Pulsar el botón superior derecho para cerrar - WARNING: Press the upper right button to close - - - Código de salida: - Exit code: + Process error: El fichero de log no ha podido ser abierto: %1. - + The log file couldn't be opened: %1. + + + + Proyecto OpenGnsys +https://opengnsys.es + OpenGnsys Project\nhttps://opengnsys.es Lanzando el comando: %1 - + Running command: %1 %p% Cargando - %p% Loaded + %p% Loaded Fin del proceso. Valor de retorno: %1 - + Process finished. Return value: %1 El proceso ha fallado inesperadamente. Salida: %1 - + The process crashed. Return value: %1 + + + + AVISO: Pulsar el botón superior derecho para cerrar (✖) + WARNING: Press the upper right button to close (✖) Código de salida: %1 - + Return value: %1 Imposible lanzar el proceso. - Unable to launch the process. + Unable to launch the process. Error de escritura en el proceso. - Error writing to the process. + Error writing to the process. Error de lectura del proceso. - Error reading from the process. + Error reading from the process. Error desconocido. - Unknown error. + Unknown error. - Term - - - - - main.cpp:20 - - Uso: %s -qws http://sitioweb.com/ - - Usage: %s -qws http://website.com/ - - - - - mainwindow.cpp:104 - - Proyecto OpenGnsys - OpenGnsys Project - - - - mainwindow.cpp:167 - - Hay otro proceso en ejecución. Por favor espere. - There is another process running. Please wait. - - - - mainwindow.cpp:183 - - AVISO - WARNING - - - - mainwindow.cpp:186 - - La siguiente acci&oacute;n puede modificar datos o tardar varios minutos. El equipo no podr&aacute; ser utilizado durante su ejecuci&oacute;n. - Following action can modify some data or take several minutes. This computer may not be used during execution. - - - - mainwindow.cpp:187 - - Ejecutar - Run - - - - mainwindow.cpp:188 - - Cancelar - Cancel - - - - mainwindow.cpp:233 - - %p% Cargando - %p% Loaded - - - - mainwindow.cpp:250 - - AVISO - WARNING - - - - mainwindow.cpp:253 - - La p&aacute;gina no se puede cargar. - Page can not be loaded. - - - - mainwindow.cpp:255 - - Recargar - Reload - - - - mainwindow.cpp:256 - - Abortar - Abort - - - - mainwindow.cpp:333 - - Fin del proceso. Valor de retorno: - End of process. Return value: - - - - mainwindow.cpp:338 - - El proceso ha fallado inesperadamente. Salida: - The process crashed unexpectedly. Return value: - - - - mainwindow.cpp:345 - - Fin del proceso. Valor de retorno: - End of process. Return value: - - - - mainwindow.cpp:347 - - AVISO: Pulsar el botón superior derecho para cerrar - WARNING: Press the upper right button to close - - - - mainwindow.cpp:353 - - Código de salida: - Exit code: - - - - mainwindow.cpp:364 - - Imposible lanzar el proceso. - Unable to launch the process. - - - - mainwindow.cpp:367 - - Error de escritura en el proceso. - Error writing to the process. - - - - mainwindow.cpp:370 - - Error de lectura del proceso. - Error reading from the process. - - - - mainwindow.cpp:378 - - Error desconocido. - Unknown error. - - - - mainwindow.cpp:47 - - El fichero de log no ha podido ser abierto: - Log file could not be opened: - - - - mainwindow.cpp:530 - - Lanzando el comando: - Launching command: - - - - mainwindow.cpp:535 - - Lanzando el comando: - Launching command: - - - - mainwindow.cpp:563 - - ERROR - ERROR - - - - mainwindow.cpp:68 - - &Nueva Terminal - &New Terminal - - - - mainwindow.cpp:72 - - Salida - Output + Term %1 + Term %1 From 7ba424513b211573ff3e742f20a237d1939644d9 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 13:23:52 +0100 Subject: [PATCH 13/16] =?UTF-8?q?Traducci=C3=B3n=20al=20Catal=C3=A1n=20por?= =?UTF-8?q?=20Google=20Translate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/OGBrowser_ca.ts | 154 ++++++++------------------------------- 1 file changed, 32 insertions(+), 122 deletions(-) diff --git a/src/i18n/OGBrowser_ca.ts b/src/i18n/OGBrowser_ca.ts index f47e88c..3501422 100644 --- a/src/i18n/OGBrowser_ca.ts +++ b/src/i18n/OGBrowser_ca.ts @@ -1,92 +1,91 @@ - + MainWindow OpenGnsys Browser - - - - El fichero de log no ha podido ser abierto: - Log file could not be opened: + Projecte OpenGnsys El fichero de log no ha podido ser abierto: %1. - + Google Translate + El fitxer de log no ha pogut ser obert: %1. &Nueva Terminal - &Nova Terminal + &Nova Terminal Salida - Sortida - - - Proyecto OpenGnsys - Projecte OpenGnsys + Sortida AVISO - AVIS + AVIS La siguiente acción puede modificar datos o tardar varios minutos. El equipo no podrá ser utilizado durante su ejecución. - + Google Translate + La següent acció pot modificar dades o trigar uns quants minuts. L'equip no es pot utilitzar durant la seva execució. Ejecutar - Executar + Executar Cancelar - Cancel-lar + Cancel-lar Lanzando el comando: %1 - + Google Translate + Llançant l'ordre: %1 %p% Cargando - %p% Carregat + %p% Carregat Fin del proceso. Valor de retorno: %1 - + Google Translate + Fi del procés. Valor de tornada: %1 El proceso ha fallado inesperadamente. Salida: %1 - + Google Translate + El procés ha fallat inesperadament. Sortida: %1 AVISO: Pulsar el botón superior derecho para cerrar (✖) - + Google Translate + AVÍS: Polsar el botó superior dret per tancar (✖) Código de salida: %1 - + Google Translate + Codi de sortida: %1 Term %1 - + Term %1 @@ -97,7 +96,7 @@ Proyecto OpenGnsys https://opengnsys.es - + Projecte OpenGnsys\nhttps://opengnsys.es @@ -107,115 +106,26 @@ https://opengnsys.es Imposible lanzar el proceso. - + Google Translate + Impossible llençar el procés. Error de escritura en el proceso. - + Google Translate + Error d'escriptura al procés. Error de lectura del proceso. - + Google Translate + Error de lectura del procés. Error desconocido. - - - - - main.cpp:20 - - Uso: %s -qws http://sitioweb.com/ - - Ús: %s -qws http://web.com/ - - - - - mainwindow.cpp:104 - - Proyecto OpenGnsys - Projecte OpenGnsys - - - - mainwindow.cpp:183 - - AVISO - AVIS - - - - mainwindow.cpp:187 - - Ejecutar - Executar - - - - mainwindow.cpp:188 - - Cancelar - Cancel-lar - - - - mainwindow.cpp:233 - - %p% Cargando - %p% Carregat - - - - mainwindow.cpp:250 - - AVISO - AVIS - - - - mainwindow.cpp:255 - - Recargar - Recarregar - - - - mainwindow.cpp:256 - - Abortar - Avortar - - - - mainwindow.cpp:47 - - El fichero de log no ha podido ser abierto: - Log file could not be opened: - - - - mainwindow.cpp:563 - - ERROR - ERROR - - - - mainwindow.cpp:68 - - &Nueva Terminal - &Nova Terminal - - - - mainwindow.cpp:72 - - Salida - Sortida + Google Translate + Error desconegut. From 8e79a8a6cd377ba04e0428e561ddc5897c9523b6 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 13:44:24 +0100 Subject: [PATCH 14/16] =?UTF-8?q?Activar=20sistema=20de=20traducci=C3=B3n?= =?UTF-8?q?=20de=20Qt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.cpp | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3b56a47..df89b5a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,30 +1,22 @@ #include -#include +#include + #include "mainwindow.h" -// Internacionalización con GNU Gettext. -#include -#define TEXTDOMAIN "browser" -#define LOCALEDIR "/opt/opengnsys/lib/locale" -#define CHARSET "UTF-8" int main(int argc, char *argv[]) { - // Preparar internacionalización. - setlocale (LC_ALL, ""); - bindtextdomain (TEXTDOMAIN, LOCALEDIR); - textdomain (TEXTDOMAIN); - - if(argc<=1) - { - printf(gettext("Uso: %s -qws http://sitioweb.com/\n"),argv[0]); - return -1; - } - // Codificación de caracteres. - //QTextCodec::setCodecForTr(QTextCodec::codecForName(CHARSET)); - // QTextCodec::setCodecForCStrings(QTextCodec::codecForName(CHARSET)); - //QTextCodec::setCodecForLocale(QTextCodec::codecForName(CHARSET)); - QApplication a(argc, argv); + QCoreApplication::setApplicationName("OGBrowser"); + QCoreApplication::setOrganizationName("OpenGnsys"); + QCoreApplication::setOrganizationDomain("opengnsys.es"); + + QTranslator translator; + if (translator.load(QLocale(), "OGBrowser_")) { + QCoreApplication::installTranslator(&translator); + } else { + qWarning() << "Failed to load translations"; + } + MainWindow w; w.show(); return a.exec(); From 38818c6a4270209e68b9256fbc59f94c45daf973 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Wed, 15 Nov 2023 13:44:39 +0100 Subject: [PATCH 15/16] =?UTF-8?q?Documentar=20traducci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e6ca09..6b7aae3 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,18 @@ El sistema esta basado en CMake. Para compilar: make -j8 # 8 cores -- cambiar según el numero de cores del hardware +### Traducción + +Se usa el sistema de traducción de Qt. Los archivos de lenguaje se encuentran en src/i18n. El sistema de traducción busca cadenas identificadas for `tr("texto")` en el código fuente, +y las reemplaza por versiones traducidas. + +Para actualizar los archivos de traducción con cadenas nuevas y/o modificadas en el código, ejecutar `src/update_translations.sh`. + +Para traducir, ejecutar Qt Linguist, por ejemplo: + + linguist-qt6 i18n/OGBrowser_ca.ts + + ## Uso src/OGBrowser URL @@ -68,4 +80,5 @@ Se activa estableciendo la variable de entorno `ogactiveadmin=true` Se puede activar el modo quiosco que impide la salida del navegador con Alt+F4. -Se activa estableciendo la variable de entorno `OGKIOSKMODE=true` \ No newline at end of file +Se activa estableciendo la variable de entorno `OGKIOSKMODE=true` + From 0b686744859ed40bc1ebb10b97e03b935af9cdcf Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Thu, 16 Nov 2023 10:35:28 +0100 Subject: [PATCH 16/16] Buscar traducciones en multiples rutas --- src/main.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index df89b5a..88edd61 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "mainwindow.h" @@ -11,10 +12,22 @@ int main(int argc, char *argv[]) QCoreApplication::setOrganizationDomain("opengnsys.es"); QTranslator translator; - if (translator.load(QLocale(), "OGBrowser_")) { - QCoreApplication::installTranslator(&translator); - } else { - qWarning() << "Failed to load translations"; + QStringList translationDirs{QCoreApplication::applicationDirPath(), "", "."}; + + bool translationsOk = false; + + for(const QString &dir : translationDirs) { + qDebug() << "Trying to find translations in" << dir; + if (translator.load(QLocale(), "OGBrowser_", "", dir)) { + qDebug() << "Translations loaded"; + QCoreApplication::installTranslator(&translator); + translationsOk = true; + break; + } + } + + if (!translationsOk) { + qWarning() << "Failed to load translations. Tried looking in:" << translationDirs; } MainWindow w;