Added force rotate translators option.
This commit is contained in:
parent
fe16cbe669
commit
4499e94c44
@ -31,6 +31,7 @@ namespace settings_names {
|
||||
const QString translationGroup = "Translation";
|
||||
const QString doTranslation = "doTranslation";
|
||||
const QString ignoreSslErrors = "ignoreSslErrors";
|
||||
const QString forceRotateTranslators = "forceRotateTranslators";
|
||||
const QString sourceLanguage = "source_language";
|
||||
const QString translationLanguage = "translation_language";
|
||||
const QString translationTimeout = "translation_timeout";
|
||||
@ -69,6 +70,7 @@ namespace settings_values {
|
||||
//! Translation
|
||||
const bool doTranslation = true;
|
||||
const bool ignoreSslErrors = false;
|
||||
const bool forceRotateTranslators = false;
|
||||
const QString sourceLanguage = "auto";
|
||||
const QString translationLanguage = "ru";
|
||||
const int translationTimeout = 15; // secs
|
||||
|
@ -129,6 +129,7 @@ void SettingsEditor::saveSettings () const {
|
||||
settings.beginGroup (translationGroup);
|
||||
settings.setValue (doTranslation, ui->doTranslationCheck->isChecked ());
|
||||
settings.setValue (ignoreSslErrors, ui->ignoreSslCheck->isChecked ());
|
||||
settings.setValue (forceRotateTranslators, ui->forceRotateCheck->isChecked ());
|
||||
settings.setValue (translationDebugMode, ui->translatorDebugCheck->isChecked ());
|
||||
QString trLanguage = dictionary_.translateUiToCode (ui->translateLangCombo->currentText ());
|
||||
settings.setValue (translationLanguage, trLanguage);
|
||||
@ -218,6 +219,7 @@ void SettingsEditor::loadSettings () {
|
||||
settings.beginGroup (settings_names::translationGroup);
|
||||
ui->doTranslationCheck->setChecked (GET (doTranslation).toBool ());
|
||||
ui->ignoreSslCheck->setChecked (GET (ignoreSslErrors).toBool ());
|
||||
ui->forceRotateCheck->setChecked (GET (forceRotateTranslators).toBool ());
|
||||
ui->translatorDebugCheck->setChecked (GET (translationDebugMode).toBool ());
|
||||
QString trLanguage = dictionary_.translateCodeToUi (GET (translationLanguage).toString ());
|
||||
ui->translateLangCombo->setCurrentText (trLanguage);
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>553</width>
|
||||
<height>456</height>
|
||||
<height>483</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -378,24 +378,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="translatorDebugCheck">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Режим отладки</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QCheckBox" name="ignoreSslCheck">
|
||||
<property name="text">
|
||||
<string>Игнорировать ошибки SSL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html></string>
|
||||
@ -405,14 +388,17 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="2">
|
||||
<item row="3" column="1" colspan="2">
|
||||
<widget class="QSpinBox" name="translateTimeoutSpin">
|
||||
<property name="suffix">
|
||||
<string> сек.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="4" column="1" colspan="2">
|
||||
<widget class="QComboBox" name="translateLangCombo"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html></string>
|
||||
@ -425,10 +411,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QComboBox" name="translateLangCombo"/>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="3">
|
||||
<item row="5" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Переводчики:</string>
|
||||
@ -438,7 +421,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="3">
|
||||
<item row="6" column="0" colspan="3">
|
||||
<widget class="QListWidget" name="translatorList">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Отображены в порядке убывания приоритета.</p></body></html></string>
|
||||
@ -454,6 +437,30 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="translatorDebugCheck">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Режим отладки</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="ignoreSslCheck">
|
||||
<property name="text">
|
||||
<string>Игнорировать ошибки SSL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="forceRotateCheck">
|
||||
<property name="text">
|
||||
<string>Принудительно менять переводчики</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "Settings.h"
|
||||
|
||||
TranslatorHelper::TranslatorHelper ()
|
||||
: translatorsDir_ ("translators"), currentIndex_ (0) {
|
||||
: translatorsDir_ ("translators"), currentIndex_ (0), triesLeft_ (0) {
|
||||
translatorsDir_ = QApplication::applicationDirPath () + QDir::separator () + translatorsDir_;
|
||||
}
|
||||
|
||||
@ -58,19 +58,25 @@ void TranslatorHelper::loadScripts () {
|
||||
scripts_ = enabledTranslatorScripts ();
|
||||
}
|
||||
|
||||
void TranslatorHelper::newItem () {
|
||||
currentIndex_ = 0;
|
||||
}
|
||||
|
||||
QString TranslatorHelper::currentScript () const {
|
||||
return (currentIndex_ < scripts_.size () ? scripts_.at (currentIndex_) : QString ());
|
||||
void TranslatorHelper::newItem (bool forceRotate) {
|
||||
triesLeft_ = scripts_.size ();
|
||||
currentIndex_ = forceRotate ? currentIndex_ + 1 : 0;
|
||||
}
|
||||
|
||||
QString TranslatorHelper::nextScript () {
|
||||
++currentIndex_;
|
||||
--triesLeft_;
|
||||
|
||||
if (++currentIndex_ >= scripts_.size ()) {
|
||||
currentIndex_ = 0;
|
||||
}
|
||||
|
||||
return currentScript ();
|
||||
}
|
||||
|
||||
QString TranslatorHelper::currentScript () const {
|
||||
return (triesLeft_ > 0 ? scripts_.at (currentIndex_) : QString ());
|
||||
}
|
||||
|
||||
bool TranslatorHelper::gotScripts () const {
|
||||
return !scripts_.isEmpty ();
|
||||
}
|
||||
|
@ -13,15 +13,16 @@ class TranslatorHelper {
|
||||
void setEnabledTranslators (const QStringList &enabled) const;
|
||||
|
||||
void loadScripts ();
|
||||
void newItem ();
|
||||
QString currentScript () const;
|
||||
void newItem (bool forceRotate);
|
||||
QString nextScript ();
|
||||
QString currentScript () const;
|
||||
bool gotScripts () const;
|
||||
|
||||
private:
|
||||
QString translatorsDir_;
|
||||
QStringList scripts_;
|
||||
int currentIndex_;
|
||||
int triesLeft_;
|
||||
};
|
||||
|
||||
#endif // TRANSLATORHELPER_H
|
||||
|
@ -15,7 +15,8 @@ WebTranslator::WebTranslator ()
|
||||
: QObject (),
|
||||
proxy_ (new WebTranslatorProxy (this)), view_ (new QWebView),
|
||||
translatorHelper_ (new TranslatorHelper), isReady_ (true),
|
||||
ignoreSslErrors_ (settings_values::ignoreSslErrors){
|
||||
ignoreSslErrors_ (settings_values::ignoreSslErrors),
|
||||
forceRotateTranslators_ (settings_values::forceRotateTranslators) {
|
||||
|
||||
view_->settings ()->setAttribute (QWebSettings::AutoLoadImages, false);
|
||||
view_->settings ()->setAttribute (QWebSettings::DeveloperExtrasEnabled, true);
|
||||
@ -60,7 +61,7 @@ void WebTranslator::translate (ProcessingItem item) {
|
||||
|
||||
void WebTranslator::translateQueued () {
|
||||
if (isReady_ && !queue_.isEmpty ()) {
|
||||
translatorHelper_->newItem ();
|
||||
translatorHelper_->newItem (forceRotateTranslators_);
|
||||
proxy_->setItem (queue_.first ());
|
||||
if (!tryNextTranslator (true)) {
|
||||
return;
|
||||
@ -145,7 +146,8 @@ void WebTranslator::applySettings () {
|
||||
bool debugMode = GET (translationDebugMode).toBool ();
|
||||
setDebugMode (debugMode);
|
||||
|
||||
ignoreSslErrors_ = GET(ignoreSslErrors).toBool ();
|
||||
ignoreSslErrors_ = GET (ignoreSslErrors).toBool ();
|
||||
forceRotateTranslators_ = GET (forceRotateTranslators).toBool ();
|
||||
#undef GET
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ class WebTranslator : public QObject {
|
||||
QVector<ProcessingItem> queue_;
|
||||
bool isReady_;
|
||||
bool ignoreSslErrors_;
|
||||
bool forceRotateTranslators_;
|
||||
QTimer translationTimeout_;
|
||||
};
|
||||
|
||||
|
@ -736,27 +736,27 @@ Key modifiers what capturing :
|
||||
<translation>Result</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="50"/>
|
||||
<location filename="../ResultDialog.cpp" line="49"/>
|
||||
<source>Распознать другой язык</source>
|
||||
<translation>Recognize another language</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="51"/>
|
||||
<location filename="../ResultDialog.cpp" line="50"/>
|
||||
<source>Перевести на другой язык</source>
|
||||
<translation>Translate to another language</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="52"/>
|
||||
<location filename="../ResultDialog.cpp" line="51"/>
|
||||
<source>Скопировать в буфер</source>
|
||||
<translation>Copy to clipboard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="53"/>
|
||||
<location filename="../ResultDialog.cpp" line="52"/>
|
||||
<source>Скопировать рисунок в буфер</source>
|
||||
<translation>Copy image to clibpoard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="54"/>
|
||||
<location filename="../ResultDialog.cpp" line="53"/>
|
||||
<source>Исправить распознанный текст</source>
|
||||
<translation>Correct recognized text</translation>
|
||||
</message>
|
||||
@ -846,7 +846,7 @@ Key modifiers what capturing :
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="277"/>
|
||||
<location filename="../SettingsEditor.cpp" line="154"/>
|
||||
<location filename="../SettingsEditor.cpp" line="155"/>
|
||||
<source>Путь к tessdata</source>
|
||||
<translation>Tessdata path</translation>
|
||||
</message>
|
||||
@ -990,52 +990,57 @@ Key modifiers what capturing :
|
||||
<translation>Translate text</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="384"/>
|
||||
<location filename="../SettingsEditor.ui" line="443"/>
|
||||
<source><html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Displays translator's window. Should me used only for new translators development.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="387"/>
|
||||
<location filename="../SettingsEditor.ui" line="446"/>
|
||||
<source>Режим отладки</source>
|
||||
<translation>Debug mode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="394"/>
|
||||
<location filename="../SettingsEditor.ui" line="453"/>
|
||||
<source>Игнорировать ошибки SSL</source>
|
||||
<translation>Ignore SSL errors</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="401"/>
|
||||
<location filename="../SettingsEditor.ui" line="460"/>
|
||||
<source>Принудительно менять переводчики</source>
|
||||
<translation>Force rotate translators</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="384"/>
|
||||
<source><html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Max time of translation process.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="404"/>
|
||||
<location filename="../SettingsEditor.ui" line="387"/>
|
||||
<source>Максимальное время перевода:</source>
|
||||
<translation>Max translation time:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="418"/>
|
||||
<location filename="../SettingsEditor.ui" line="404"/>
|
||||
<source><html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Translated text language.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="421"/>
|
||||
<location filename="../SettingsEditor.ui" line="407"/>
|
||||
<source>Язык результата:</source>
|
||||
<translation>Translation language:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="434"/>
|
||||
<location filename="../SettingsEditor.ui" line="417"/>
|
||||
<source>Переводчики:</source>
|
||||
<translation>Translators:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="411"/>
|
||||
<location filename="../SettingsEditor.ui" line="394"/>
|
||||
<source> сек.</source>
|
||||
<translation>secs.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="444"/>
|
||||
<location filename="../SettingsEditor.ui" line="427"/>
|
||||
<source><html><head/><body><p>Отображены в порядке убывания приоритета.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Sorted by priority descending.</p></body></html></translation>
|
||||
</message>
|
||||
@ -1451,17 +1456,17 @@ Change dirs permissions and try again or perform manual update.</translation>
|
||||
<context>
|
||||
<name>WebTranslator</name>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="88"/>
|
||||
<location filename="../WebTranslator.cpp" line="92"/>
|
||||
<source>Перевод отменен по таймауту.</source>
|
||||
<translation>Translation timed out.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="96"/>
|
||||
<location filename="../WebTranslator.cpp" line="100"/>
|
||||
<source>Ошибка загрузки страницы (%1) для перевода.</source>
|
||||
<translation>Page (%1) load failed.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="140"/>
|
||||
<location filename="../WebTranslator.cpp" line="144"/>
|
||||
<source>Нет сценариев для перевода. Измените настройки.</source>
|
||||
<translation>Not found any translators. Change settings.</translation>
|
||||
</message>
|
||||
|
@ -741,27 +741,27 @@
|
||||
<translation>Результат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="50"/>
|
||||
<location filename="../ResultDialog.cpp" line="49"/>
|
||||
<source>Распознать другой язык</source>
|
||||
<translation>Распознать другой язык</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="51"/>
|
||||
<location filename="../ResultDialog.cpp" line="50"/>
|
||||
<source>Перевести на другой язык</source>
|
||||
<translation>Перевести на другой язык</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="52"/>
|
||||
<location filename="../ResultDialog.cpp" line="51"/>
|
||||
<source>Скопировать в буфер</source>
|
||||
<translation>Скопировать в буфер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="53"/>
|
||||
<location filename="../ResultDialog.cpp" line="52"/>
|
||||
<source>Скопировать рисунок в буфер</source>
|
||||
<translation>Скопировать рисунок в буфер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ResultDialog.cpp" line="54"/>
|
||||
<location filename="../ResultDialog.cpp" line="53"/>
|
||||
<source>Исправить распознанный текст</source>
|
||||
<translation>Исправить распознанный текст</translation>
|
||||
</message>
|
||||
@ -851,7 +851,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="277"/>
|
||||
<location filename="../SettingsEditor.cpp" line="154"/>
|
||||
<location filename="../SettingsEditor.cpp" line="155"/>
|
||||
<source>Путь к tessdata</source>
|
||||
<translation>Путь к tessdata</translation>
|
||||
</message>
|
||||
@ -995,52 +995,57 @@
|
||||
<translation>Переводить текст</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="384"/>
|
||||
<location filename="../SettingsEditor.ui" line="443"/>
|
||||
<source><html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Отображает окно переводчика. Следует использовать только для разработки переводчиков.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="387"/>
|
||||
<location filename="../SettingsEditor.ui" line="446"/>
|
||||
<source>Режим отладки</source>
|
||||
<translation>Режим отладки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="394"/>
|
||||
<location filename="../SettingsEditor.ui" line="453"/>
|
||||
<source>Игнорировать ошибки SSL</source>
|
||||
<translation>Игнорировать ошибки SSL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="401"/>
|
||||
<location filename="../SettingsEditor.ui" line="460"/>
|
||||
<source>Принудительно менять переводчики</source>
|
||||
<translation>Принудительно менять переводчики</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="384"/>
|
||||
<source><html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &quot;зависшим&quot;.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="404"/>
|
||||
<location filename="../SettingsEditor.ui" line="387"/>
|
||||
<source>Максимальное время перевода:</source>
|
||||
<translation>Максимальное время перевода:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="418"/>
|
||||
<location filename="../SettingsEditor.ui" line="404"/>
|
||||
<source><html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Язык, на который осуществляется перевод.</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="421"/>
|
||||
<location filename="../SettingsEditor.ui" line="407"/>
|
||||
<source>Язык результата:</source>
|
||||
<translation>Язык результата:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="434"/>
|
||||
<location filename="../SettingsEditor.ui" line="417"/>
|
||||
<source>Переводчики:</source>
|
||||
<translation>Переводчики:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="411"/>
|
||||
<location filename="../SettingsEditor.ui" line="394"/>
|
||||
<source> сек.</source>
|
||||
<translation> сек.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../SettingsEditor.ui" line="444"/>
|
||||
<location filename="../SettingsEditor.ui" line="427"/>
|
||||
<source><html><head/><body><p>Отображены в порядке убывания приоритета.</p></body></html></source>
|
||||
<translation><html><head/><body><p>Отображены в порядке убывания приоритета.</p></body></html></translation>
|
||||
</message>
|
||||
@ -1460,17 +1465,17 @@
|
||||
<context>
|
||||
<name>WebTranslator</name>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="88"/>
|
||||
<location filename="../WebTranslator.cpp" line="92"/>
|
||||
<source>Перевод отменен по таймауту.</source>
|
||||
<translation>Перевод отменен по таймауту.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="96"/>
|
||||
<location filename="../WebTranslator.cpp" line="100"/>
|
||||
<source>Ошибка загрузки страницы (%1) для перевода.</source>
|
||||
<translation>Ошибка загрузки страницы (%1) для перевода.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../WebTranslator.cpp" line="140"/>
|
||||
<location filename="../WebTranslator.cpp" line="144"/>
|
||||
<source>Нет сценариев для перевода. Измените настройки.</source>
|
||||
<translation>Нет сценариев для перевода. Измените настройки.</translation>
|
||||
</message>
|
||||
|
Loading…
Reference in New Issue
Block a user