From 7959bc54929c379fdebf1f509bc3beffa478088d Mon Sep 17 00:00:00 2001 From: leca <leca@foxarmy.org> Date: Wed, 4 Dec 2024 18:44:40 +0300 Subject: [PATCH] added language combo box in preferences --- icon.svg | 9 +- main.cpp | 12 +- mainwindow.ui | 2 +- settings/settings.cpp | 1 + settingsdialog.cpp | 15 ++ settingsdialog.h | 2 + settingsdialog.ui | 337 ++++++++++++++++++++++-------------------- translations/en_US.ts | 64 +++++--- translations/ru_RU.ts | 64 +++++--- 9 files changed, 306 insertions(+), 200 deletions(-) diff --git a/icon.svg b/icon.svg index 8c1fa09..4eae187 100644 --- a/icon.svg +++ b/icon.svg @@ -9,6 +9,9 @@ id="svg1" inkscape:version="1.4 (e7c3feb100, 2024-10-09)" sodipodi:docname="icon.svg" + inkscape:export-filename="icon.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -24,9 +27,9 @@ inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showguides="true" - inkscape:zoom="0.64375976" - inkscape:cx="342.51908" - inkscape:cy="653.97067" + inkscape:zoom="0.84246729" + inkscape:cx="162.02409" + inkscape:cy="522.27547" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" diff --git a/main.cpp b/main.cpp index 8ea9762..abfbb71 100644 --- a/main.cpp +++ b/main.cpp @@ -43,9 +43,17 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); QTranslator translator; - if(!translator.load(QLocale::system().name())) { - translator.load("en_US"); + QString lang = "en_US"; + + if (s.get_all_settings().contains("language")) { + lang = QString::fromStdString(s.get_all_settings()["language"]); + } else if (translator.load(QLocale::system().name())) { + lang = QLocale::system().name(); + } else { + lang = QString::fromStdString("en_US"); } + translator.load(lang); + a.installTranslator(&translator); MainWindow w; w.update(); diff --git a/mainwindow.ui b/mainwindow.ui index 5c5bad0..f4ebd1e 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -110,7 +110,7 @@ <widget class="QPushButton" name="chooseImageButton_ocr"> <property name="geometry"> <rect> - <x>0</x> + <x>10</x> <y>0</y> <width>80</width> <height>26</height> diff --git a/settings/settings.cpp b/settings/settings.cpp index d4f2513..bdfa92b 100644 --- a/settings/settings.cpp +++ b/settings/settings.cpp @@ -26,6 +26,7 @@ Settings::Settings(std::string path) { "stores_modules_url":"https://foxarmy.org/checks-parser/modules/stores/", "print_header": true, "print_total": true, + "language":"en_US", "output_order": { "goods_name": { "position":1, diff --git a/settingsdialog.cpp b/settingsdialog.cpp index d27f6bf..4c06072 100644 --- a/settingsdialog.cpp +++ b/settingsdialog.cpp @@ -3,6 +3,8 @@ #include "ui_settingsdialog.h" #include "utils/utils.h" +#include <QMessageBox> + SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::settingsdialog), settings(Settings(get_path_relative_to_home( @@ -32,6 +34,9 @@ SettingsDialog::SettingsDialog(QWidget *parent) ui->printHeaderCheckBox->setChecked(this->settings.get_all_settings()["print_header"]); ui->printTotalCheckBox->setChecked(this->settings.get_all_settings()["print_total"]); + + int index = ui->languageComboBox->findText(QString::fromStdString(this->settings.get_all_settings()["language"])); + ui->languageComboBox->setCurrentIndex(index); } SettingsDialog::~SettingsDialog() { delete ui; } @@ -121,4 +126,14 @@ void SettingsDialog::on_buttonBox_accepted() { this->settings.flush(); } void SettingsDialog::on_buttonBox_rejected() { this->close(); } +void SettingsDialog::on_languageComboBox_currentTextChanged(const QString &changed) { + if (changed == QString::fromStdString(this->settings.get_all_settings()["language"])) return; + this->settings.get_all_settings()["language"] = changed.toStdString(); + + QMessageBox infoDialog; + infoDialog.setText(tr("You need to restart program to apply language changes")); + infoDialog.setIcon(QMessageBox::Information); + infoDialog.setWindowTitle(tr("Restart required")); + infoDialog.exec(); +} diff --git a/settingsdialog.h b/settingsdialog.h index 7eade0e..d3aceb6 100644 --- a/settingsdialog.h +++ b/settingsdialog.h @@ -52,6 +52,8 @@ private slots: void on_buttonBox_rejected(); + void on_languageComboBox_currentTextChanged(const QString &arg1); + private: Ui::settingsdialog *ui; }; diff --git a/settingsdialog.ui b/settingsdialog.ui index c6379b8..a239e0f 100644 --- a/settingsdialog.ui +++ b/settingsdialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>599</width> - <height>727</height> + <height>799</height> </rect> </property> <property name="windowTitle"> @@ -17,16 +17,16 @@ <property name="geometry"> <rect> <x>310</x> - <y>690</y> + <y>740</y> <width>251</width> <height>32</height> </rect> </property> <property name="orientation"> - <enum>Qt::Orientation::Horizontal</enum> + <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> - <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Save</set> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set> </property> </widget> <widget class="QScrollArea" name="scrollArea"> @@ -35,7 +35,7 @@ <x>10</x> <y>0</y> <width>541</width> - <height>661</height> + <height>741</height> </rect> </property> <property name="widgetResizable"> @@ -47,7 +47,7 @@ <x>0</x> <y>0</y> <width>539</width> - <height>659</height> + <height>739</height> </rect> </property> <widget class="QWidget" name="gridLayoutWidget"> @@ -56,16 +56,126 @@ <x>0</x> <y>0</y> <width>531</width> - <height>651</height> + <height>731</height> </rect> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="11" column="1"> - <widget class="QLineEdit" name="goodsNetWeightAliasEdit"/> + <item row="15" column="1"> + <widget class="QCheckBox" name="printTotalCheckBox"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="10" column="0"> + <widget class="QLabel" name="label_15"> + <property name="text"> + <string>Goods net weight position</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QSpinBox" name="goodsNamePositionSpin"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Stores modules url</string> + </property> + </widget> + </item> + <item row="8" column="0"> + <widget class="QLabel" name="label_13"> + <property name="text"> + <string>Goods quantity position</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="OFDModulesDirEdit"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>OFD modules url</string> + </property> + </widget> + </item> + <item row="14" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Print header</string> + </property> + </widget> + </item> + <item row="6" column="1"> + <widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="storesModulesURLEdit"/> + </item> + <item row="9" column="0"> + <widget class="QLabel" name="label_14"> + <property name="text"> + <string>Goods quantity alias</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>OFD modules directory</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QLineEdit" name="goodsNameAliasEdit"/> + </item> + <item row="15" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Print total</string> + </property> + </widget> + </item> + <item row="13" column="1"> + <widget class="QLineEdit" name="goodsTotalAliasEdit"/> + </item> + <item row="8" column="1"> + <widget class="QSpinBox" name="goodsQuantityPositionSpin"/> + </item> + <item row="11" column="0"> + <widget class="QLabel" name="label_16"> + <property name="text"> + <string>Goods net weight alias</string> + </property> + </widget> + </item> + <item row="10" column="1"> + <widget class="QSpinBox" name="goodsNetWeightPositionSpin"/> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="OFDModulesURLEdit"/> + </item> + <item row="13" column="0"> + <widget class="QLabel" name="label_18"> + <property name="text"> + <string>Goods total alias</string> + </property> + </widget> </item> <item row="1" column="1"> <widget class="QLineEdit" name="storesModulesDirEdit"/> </item> + <item row="7" column="1"> + <widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/> + </item> + <item row="9" column="1"> + <widget class="QLineEdit" name="goodsQuantityAliasEdit"/> + </item> + <item row="11" column="1"> + <widget class="QLineEdit" name="goodsNetWeightAliasEdit"/> + </item> <item row="4" column="0"> <widget class="QLabel" name="label_9"> <property name="text"> @@ -73,6 +183,51 @@ </property> </widget> </item> + <item row="14" column="1"> + <widget class="QCheckBox" name="printHeaderCheckBox"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>Goods name alias</string> + </property> + </widget> + </item> + <item row="6" column="0"> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Goods price per unit position</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Stores modules directory</string> + </property> + </widget> + </item> + <item row="12" column="0"> + <widget class="QLabel" name="label_17"> + <property name="text"> + <string>Goods total position</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QPushButton" name="OFDModulesDirChooseButton"> + <property name="text"> + <string>Choose</string> + </property> + </widget> + </item> + <item row="12" column="1"> + <widget class="QSpinBox" name="goodsTotalPositionSpin"/> + </item> <item row="7" column="0"> <widget class="QLabel" name="label_12"> <property name="text"> @@ -87,159 +242,25 @@ </property> </widget> </item> - <item row="13" column="1"> - <widget class="QLineEdit" name="goodsTotalAliasEdit"/> - </item> - <item row="14" column="0"> - <widget class="QLabel" name="label_2"> + <item row="16" column="0"> + <widget class="QLabel" name="label_4"> <property name="text"> - <string>Print header</string> + <string>TextLabel</string> </property> </widget> </item> - <item row="11" column="0"> - <widget class="QLabel" name="label_16"> - <property name="text"> - <string>Goods net weight alias</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Stores modules url</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="storesModulesURLEdit"/> - </item> - <item row="13" column="0"> - <widget class="QLabel" name="label_18"> - <property name="text"> - <string>Goods total alias</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_10"> - <property name="text"> - <string>Goods name alias</string> - </property> - </widget> - </item> - <item row="12" column="1"> - <widget class="QSpinBox" name="goodsTotalPositionSpin"/> - </item> - <item row="9" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Goods quantity alias</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>Stores modules directory</string> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QLineEdit" name="goodsNameAliasEdit"/> - </item> - <item row="10" column="1"> - <widget class="QSpinBox" name="goodsNetWeightPositionSpin"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_6"> - <property name="text"> - <string>OFD modules directory</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QSpinBox" name="goodsNamePositionSpin"/> - </item> - <item row="9" column="1"> - <widget class="QLineEdit" name="goodsQuantityAliasEdit"/> - </item> - <item row="7" column="1"> - <widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/> - </item> - <item row="6" column="0"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>Goods price per unit position</string> - </property> - </widget> - </item> - <item row="10" column="0"> - <widget class="QLabel" name="label_15"> - <property name="text"> - <string>Goods net weight position</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>OFD modules url</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="OFDModulesDirEdit"/> - </item> - <item row="12" column="0"> - <widget class="QLabel" name="label_17"> - <property name="text"> - <string>Goods total position</string> - </property> - </widget> - </item> - <item row="8" column="0"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>Goods quantity position</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="OFDModulesURLEdit"/> - </item> - <item row="8" column="1"> - <widget class="QSpinBox" name="goodsQuantityPositionSpin"/> - </item> - <item row="0" column="2"> - <widget class="QPushButton" name="OFDModulesDirChooseButton"> - <property name="text"> - <string>Choose</string> - </property> - </widget> - </item> - <item row="6" column="1"> - <widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/> - </item> - <item row="15" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Print total</string> - </property> - </widget> - </item> - <item row="14" column="1"> - <widget class="QCheckBox" name="printHeaderCheckBox"> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="15" column="1"> - <widget class="QCheckBox" name="printTotalCheckBox"> - <property name="text"> - <string/> - </property> + <item row="16" column="1"> + <widget class="QComboBox" name="languageComboBox"> + <item> + <property name="text"> + <string>en_US</string> + </property> + </item> + <item> + <property name="text"> + <string>ru_RU</string> + </property> + </item> </widget> </item> </layout> diff --git a/translations/en_US.ts b/translations/en_US.ts index dde4f5e..a6f47fb 100644 --- a/translations/en_US.ts +++ b/translations/en_US.ts @@ -308,6 +308,19 @@ <translation>Print total</translation> </message> </context> +<context> + <name>SettingsDialog</name> + <message> + <location filename="../settingsdialog.cpp" line="134"/> + <source>You need to restart program to apply language changes</source> + <translation>You need to restart program to apply language changes</translation> + </message> + <message> + <location filename="../settingsdialog.cpp" line="136"/> + <source>Restart required</source> + <translation>Restart required</translation> + </message> +</context> <context> <name>SolveCaptchaDialog</name> <message> @@ -334,88 +347,103 @@ <translation>Dialog</translation> </message> <message> - <location filename="../settingsdialog.ui" line="72"/> + <location filename="../settingsdialog.ui" line="182"/> <source>Goods name position</source> <translation>Goods name position</translation> </message> <message> - <location filename="../settingsdialog.ui" line="79"/> + <location filename="../settingsdialog.ui" line="234"/> <source>Goods price per unit alias</source> <translation>Goods price per unit alias</translation> </message> <message> - <location filename="../settingsdialog.ui" line="86"/> - <location filename="../settingsdialog.ui" line="217"/> + <location filename="../settingsdialog.ui" line="248"/> + <source>TextLabel</source> + <translation>Language</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="256"/> + <source>en_US</source> + <translation>en_US</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="261"/> + <source>ru_RU</source> + <translation>ru_RU</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="224"/> + <location filename="../settingsdialog.ui" line="241"/> <source>Choose</source> <translation>Choose</translation> </message> <message> - <location filename="../settingsdialog.ui" line="96"/> + <location filename="../settingsdialog.ui" line="107"/> <source>Print header</source> <translation>Print header</translation> </message> <message> - <location filename="../settingsdialog.ui" line="103"/> + <location filename="../settingsdialog.ui" line="150"/> <source>Goods net weight alias</source> <translation>Goods net weight alias</translation> </message> <message> - <location filename="../settingsdialog.ui" line="110"/> + <location filename="../settingsdialog.ui" line="83"/> <source>Stores modules url</source> <translation>Stores modules url</translation> </message> <message> - <location filename="../settingsdialog.ui" line="120"/> + <location filename="../settingsdialog.ui" line="163"/> <source>Goods total alias</source> <translation>Goods total alias</translation> </message> <message> - <location filename="../settingsdialog.ui" line="127"/> + <location filename="../settingsdialog.ui" line="196"/> <source>Goods name alias</source> <translation>Goods name alias</translation> </message> <message> - <location filename="../settingsdialog.ui" line="137"/> + <location filename="../settingsdialog.ui" line="120"/> <source>Goods quantity alias</source> <translation>Goods quantity alias</translation> </message> <message> - <location filename="../settingsdialog.ui" line="144"/> + <location filename="../settingsdialog.ui" line="210"/> <source>Stores modules directory</source> <translation>Stores modules directory</translation> </message> <message> - <location filename="../settingsdialog.ui" line="157"/> + <location filename="../settingsdialog.ui" line="127"/> <source>OFD modules directory</source> <translation>OFD modules directory</translation> </message> <message> - <location filename="../settingsdialog.ui" line="173"/> + <location filename="../settingsdialog.ui" line="203"/> <source>Goods price per unit position</source> <translation>Goods price per unit position</translation> </message> <message> - <location filename="../settingsdialog.ui" line="180"/> + <location filename="../settingsdialog.ui" line="73"/> <source>Goods net weight position</source> <translation>Goods net weight position</translation> </message> <message> - <location filename="../settingsdialog.ui" line="187"/> + <location filename="../settingsdialog.ui" line="100"/> <source>OFD modules url</source> <translation>OFD modules url</translation> </message> <message> - <location filename="../settingsdialog.ui" line="197"/> + <location filename="../settingsdialog.ui" line="217"/> <source>Goods total position</source> <translation>Goods total position</translation> </message> <message> - <location filename="../settingsdialog.ui" line="204"/> + <location filename="../settingsdialog.ui" line="90"/> <source>Goods quantity position</source> <translation>Goods quantity position</translation> </message> <message> - <location filename="../settingsdialog.ui" line="227"/> + <location filename="../settingsdialog.ui" line="137"/> <source>Print total</source> <translation>Print total</translation> </message> diff --git a/translations/ru_RU.ts b/translations/ru_RU.ts index 5decfa3..cccbea1 100644 --- a/translations/ru_RU.ts +++ b/translations/ru_RU.ts @@ -304,6 +304,19 @@ <translation>Печатать Итого</translation> </message> </context> +<context> + <name>SettingsDialog</name> + <message> + <location filename="../settingsdialog.cpp" line="135"/> + <source>You need to restart program to apply language changes</source> + <translation>Требуется перезагрузить программу, чтобы применить изменения языка</translation> + </message> + <message> + <location filename="../settingsdialog.cpp" line="137"/> + <source>Restart required</source> + <translation>Требуется перезагрузка</translation> + </message> +</context> <context> <name>SolveCaptchaDialog</name> <message> @@ -330,88 +343,103 @@ <translation>Диалог</translation> </message> <message> - <location filename="../settingsdialog.ui" line="72"/> + <location filename="../settingsdialog.ui" line="182"/> <source>Goods name position</source> <translation>Позиция имени товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="79"/> + <location filename="../settingsdialog.ui" line="234"/> <source>Goods price per unit alias</source> <translation>Алиас цены товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="86"/> - <location filename="../settingsdialog.ui" line="217"/> + <location filename="../settingsdialog.ui" line="248"/> + <source>TextLabel</source> + <translation>Язык</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="256"/> + <source>en_US</source> + <translation>en_US</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="261"/> + <source>ru_RU</source> + <translation>ru_RU</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="224"/> + <location filename="../settingsdialog.ui" line="241"/> <source>Choose</source> <translation>Выбрать</translation> </message> <message> - <location filename="../settingsdialog.ui" line="96"/> + <location filename="../settingsdialog.ui" line="107"/> <source>Print header</source> <translation>Печатать заголовок</translation> </message> <message> - <location filename="../settingsdialog.ui" line="103"/> + <location filename="../settingsdialog.ui" line="150"/> <source>Goods net weight alias</source> <translation>Алиас массы нетто товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="110"/> + <location filename="../settingsdialog.ui" line="83"/> <source>Stores modules url</source> <translation>URL модулей магазина</translation> </message> <message> - <location filename="../settingsdialog.ui" line="120"/> + <location filename="../settingsdialog.ui" line="163"/> <source>Goods total alias</source> <translation>Алиас всего за продукт</translation> </message> <message> - <location filename="../settingsdialog.ui" line="127"/> + <location filename="../settingsdialog.ui" line="196"/> <source>Goods name alias</source> <translation>Алиас имени товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="137"/> + <location filename="../settingsdialog.ui" line="120"/> <source>Goods quantity alias</source> <translation>Алиас количества товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="144"/> + <location filename="../settingsdialog.ui" line="210"/> <source>Stores modules directory</source> <translation>Директория модулей магазина</translation> </message> <message> - <location filename="../settingsdialog.ui" line="157"/> + <location filename="../settingsdialog.ui" line="127"/> <source>OFD modules directory</source> <translation>Директория модулей ОФД</translation> </message> <message> - <location filename="../settingsdialog.ui" line="173"/> + <location filename="../settingsdialog.ui" line="203"/> <source>Goods price per unit position</source> <translation>Позиция центы товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="180"/> + <location filename="../settingsdialog.ui" line="73"/> <source>Goods net weight position</source> <translation>Позиция массы нетто товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="187"/> + <location filename="../settingsdialog.ui" line="100"/> <source>OFD modules url</source> <translation>URL модулей ОФД</translation> </message> <message> - <location filename="../settingsdialog.ui" line="197"/> + <location filename="../settingsdialog.ui" line="217"/> <source>Goods total position</source> <translation>Позиция всего за товар</translation> </message> <message> - <location filename="../settingsdialog.ui" line="204"/> + <location filename="../settingsdialog.ui" line="90"/> <source>Goods quantity position</source> <translation>Позиция количества товара</translation> </message> <message> - <location filename="../settingsdialog.ui" line="227"/> + <location filename="../settingsdialog.ui" line="137"/> <source>Print total</source> <translation>Печатать Итого</translation> </message>