Added force rotate translators option.

This commit is contained in:
Gres 2018-02-22 21:31:24 +03:00
parent fe16cbe669
commit 4499e94c44
9 changed files with 108 additions and 77 deletions

View File

@ -31,6 +31,7 @@ namespace settings_names {
const QString translationGroup = "Translation"; const QString translationGroup = "Translation";
const QString doTranslation = "doTranslation"; const QString doTranslation = "doTranslation";
const QString ignoreSslErrors = "ignoreSslErrors"; const QString ignoreSslErrors = "ignoreSslErrors";
const QString forceRotateTranslators = "forceRotateTranslators";
const QString sourceLanguage = "source_language"; const QString sourceLanguage = "source_language";
const QString translationLanguage = "translation_language"; const QString translationLanguage = "translation_language";
const QString translationTimeout = "translation_timeout"; const QString translationTimeout = "translation_timeout";
@ -69,6 +70,7 @@ namespace settings_values {
//! Translation //! Translation
const bool doTranslation = true; const bool doTranslation = true;
const bool ignoreSslErrors = false; const bool ignoreSslErrors = false;
const bool forceRotateTranslators = false;
const QString sourceLanguage = "auto"; const QString sourceLanguage = "auto";
const QString translationLanguage = "ru"; const QString translationLanguage = "ru";
const int translationTimeout = 15; // secs const int translationTimeout = 15; // secs

View File

@ -129,6 +129,7 @@ void SettingsEditor::saveSettings () const {
settings.beginGroup (translationGroup); settings.beginGroup (translationGroup);
settings.setValue (doTranslation, ui->doTranslationCheck->isChecked ()); settings.setValue (doTranslation, ui->doTranslationCheck->isChecked ());
settings.setValue (ignoreSslErrors, ui->ignoreSslCheck->isChecked ()); settings.setValue (ignoreSslErrors, ui->ignoreSslCheck->isChecked ());
settings.setValue (forceRotateTranslators, ui->forceRotateCheck->isChecked ());
settings.setValue (translationDebugMode, ui->translatorDebugCheck->isChecked ()); settings.setValue (translationDebugMode, ui->translatorDebugCheck->isChecked ());
QString trLanguage = dictionary_.translateUiToCode (ui->translateLangCombo->currentText ()); QString trLanguage = dictionary_.translateUiToCode (ui->translateLangCombo->currentText ());
settings.setValue (translationLanguage, trLanguage); settings.setValue (translationLanguage, trLanguage);
@ -218,6 +219,7 @@ void SettingsEditor::loadSettings () {
settings.beginGroup (settings_names::translationGroup); settings.beginGroup (settings_names::translationGroup);
ui->doTranslationCheck->setChecked (GET (doTranslation).toBool ()); ui->doTranslationCheck->setChecked (GET (doTranslation).toBool ());
ui->ignoreSslCheck->setChecked (GET (ignoreSslErrors).toBool ()); ui->ignoreSslCheck->setChecked (GET (ignoreSslErrors).toBool ());
ui->forceRotateCheck->setChecked (GET (forceRotateTranslators).toBool ());
ui->translatorDebugCheck->setChecked (GET (translationDebugMode).toBool ()); ui->translatorDebugCheck->setChecked (GET (translationDebugMode).toBool ());
QString trLanguage = dictionary_.translateCodeToUi (GET (translationLanguage).toString ()); QString trLanguage = dictionary_.translateCodeToUi (GET (translationLanguage).toString ());
ui->translateLangCombo->setCurrentText (trLanguage); ui->translateLangCombo->setCurrentText (trLanguage);

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>553</width> <width>553</width>
<height>456</height> <height>483</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -378,24 +378,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="3" column="0">
<widget class="QCheckBox" name="translatorDebugCheck">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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">
<widget class="QLabel" name="label_9"> <widget class="QLabel" name="label_9">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -405,14 +388,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" colspan="2"> <item row="3" column="1" colspan="2">
<widget class="QSpinBox" name="translateTimeoutSpin"> <widget class="QSpinBox" name="translateTimeoutSpin">
<property name="suffix"> <property name="suffix">
<string> сек.</string> <string> сек.</string>
</property> </property>
</widget> </widget>
</item> </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"> <widget class="QLabel" name="label_6">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -425,10 +411,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1" colspan="2"> <item row="5" column="0" colspan="3">
<widget class="QComboBox" name="translateLangCombo"/>
</item>
<item row="3" column="0" colspan="3">
<widget class="QLabel" name="label_10"> <widget class="QLabel" name="label_10">
<property name="text"> <property name="text">
<string>Переводчики:</string> <string>Переводчики:</string>
@ -438,7 +421,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" colspan="3"> <item row="6" column="0" colspan="3">
<widget class="QListWidget" name="translatorList"> <widget class="QListWidget" name="translatorList">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -454,6 +437,30 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" colspan="2">
<widget class="QCheckBox" name="translatorDebugCheck">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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> </layout>
</widget> </widget>
</widget> </widget>

View File

@ -7,7 +7,7 @@
#include "Settings.h" #include "Settings.h"
TranslatorHelper::TranslatorHelper () TranslatorHelper::TranslatorHelper ()
: translatorsDir_ ("translators"), currentIndex_ (0) { : translatorsDir_ ("translators"), currentIndex_ (0), triesLeft_ (0) {
translatorsDir_ = QApplication::applicationDirPath () + QDir::separator () + translatorsDir_; translatorsDir_ = QApplication::applicationDirPath () + QDir::separator () + translatorsDir_;
} }
@ -58,19 +58,25 @@ void TranslatorHelper::loadScripts () {
scripts_ = enabledTranslatorScripts (); scripts_ = enabledTranslatorScripts ();
} }
void TranslatorHelper::newItem () { void TranslatorHelper::newItem (bool forceRotate) {
currentIndex_ = 0; triesLeft_ = scripts_.size ();
} currentIndex_ = forceRotate ? currentIndex_ + 1 : 0;
QString TranslatorHelper::currentScript () const {
return (currentIndex_ < scripts_.size () ? scripts_.at (currentIndex_) : QString ());
} }
QString TranslatorHelper::nextScript () { QString TranslatorHelper::nextScript () {
++currentIndex_; --triesLeft_;
if (++currentIndex_ >= scripts_.size ()) {
currentIndex_ = 0;
}
return currentScript (); return currentScript ();
} }
QString TranslatorHelper::currentScript () const {
return (triesLeft_ > 0 ? scripts_.at (currentIndex_) : QString ());
}
bool TranslatorHelper::gotScripts () const { bool TranslatorHelper::gotScripts () const {
return !scripts_.isEmpty (); return !scripts_.isEmpty ();
} }

View File

@ -13,15 +13,16 @@ class TranslatorHelper {
void setEnabledTranslators (const QStringList &enabled) const; void setEnabledTranslators (const QStringList &enabled) const;
void loadScripts (); void loadScripts ();
void newItem (); void newItem (bool forceRotate);
QString currentScript () const;
QString nextScript (); QString nextScript ();
QString currentScript () const;
bool gotScripts () const; bool gotScripts () const;
private: private:
QString translatorsDir_; QString translatorsDir_;
QStringList scripts_; QStringList scripts_;
int currentIndex_; int currentIndex_;
int triesLeft_;
}; };
#endif // TRANSLATORHELPER_H #endif // TRANSLATORHELPER_H

View File

@ -15,7 +15,8 @@ WebTranslator::WebTranslator ()
: QObject (), : QObject (),
proxy_ (new WebTranslatorProxy (this)), view_ (new QWebView), proxy_ (new WebTranslatorProxy (this)), view_ (new QWebView),
translatorHelper_ (new TranslatorHelper), isReady_ (true), 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::AutoLoadImages, false);
view_->settings ()->setAttribute (QWebSettings::DeveloperExtrasEnabled, true); view_->settings ()->setAttribute (QWebSettings::DeveloperExtrasEnabled, true);
@ -60,7 +61,7 @@ void WebTranslator::translate (ProcessingItem item) {
void WebTranslator::translateQueued () { void WebTranslator::translateQueued () {
if (isReady_ && !queue_.isEmpty ()) { if (isReady_ && !queue_.isEmpty ()) {
translatorHelper_->newItem (); translatorHelper_->newItem (forceRotateTranslators_);
proxy_->setItem (queue_.first ()); proxy_->setItem (queue_.first ());
if (!tryNextTranslator (true)) { if (!tryNextTranslator (true)) {
return; return;
@ -145,7 +146,8 @@ void WebTranslator::applySettings () {
bool debugMode = GET (translationDebugMode).toBool (); bool debugMode = GET (translationDebugMode).toBool ();
setDebugMode (debugMode); setDebugMode (debugMode);
ignoreSslErrors_ = GET(ignoreSslErrors).toBool (); ignoreSslErrors_ = GET (ignoreSslErrors).toBool ();
forceRotateTranslators_ = GET (forceRotateTranslators).toBool ();
#undef GET #undef GET
} }

View File

@ -50,6 +50,7 @@ class WebTranslator : public QObject {
QVector<ProcessingItem> queue_; QVector<ProcessingItem> queue_;
bool isReady_; bool isReady_;
bool ignoreSslErrors_; bool ignoreSslErrors_;
bool forceRotateTranslators_;
QTimer translationTimeout_; QTimer translationTimeout_;
}; };

View File

@ -736,27 +736,27 @@ Key modifiers what capturing :
<translation>Result</translation> <translation>Result</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="50"/> <location filename="../ResultDialog.cpp" line="49"/>
<source>Распознать другой язык</source> <source>Распознать другой язык</source>
<translation>Recognize another language</translation> <translation>Recognize another language</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="51"/> <location filename="../ResultDialog.cpp" line="50"/>
<source>Перевести на другой язык</source> <source>Перевести на другой язык</source>
<translation>Translate to another language</translation> <translation>Translate to another language</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="52"/> <location filename="../ResultDialog.cpp" line="51"/>
<source>Скопировать в буфер</source> <source>Скопировать в буфер</source>
<translation>Copy to clipboard</translation> <translation>Copy to clipboard</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="53"/> <location filename="../ResultDialog.cpp" line="52"/>
<source>Скопировать рисунок в буфер</source> <source>Скопировать рисунок в буфер</source>
<translation>Copy image to clibpoard</translation> <translation>Copy image to clibpoard</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="54"/> <location filename="../ResultDialog.cpp" line="53"/>
<source>Исправить распознанный текст</source> <source>Исправить распознанный текст</source>
<translation>Correct recognized text</translation> <translation>Correct recognized text</translation>
</message> </message>
@ -846,7 +846,7 @@ Key modifiers what capturing :
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="277"/> <location filename="../SettingsEditor.ui" line="277"/>
<location filename="../SettingsEditor.cpp" line="154"/> <location filename="../SettingsEditor.cpp" line="155"/>
<source>Путь к tessdata</source> <source>Путь к tessdata</source>
<translation>Tessdata path</translation> <translation>Tessdata path</translation>
</message> </message>
@ -990,52 +990,57 @@ Key modifiers what capturing :
<translation>Translate text</translation> <translation>Translate text</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="384"/> <location filename="../SettingsEditor.ui" line="443"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Displays translator&apos;s window. Should me used only for new translators development.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Displays translator&apos;s window. Should me used only for new translators development.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="387"/> <location filename="../SettingsEditor.ui" line="446"/>
<source>Режим отладки</source> <source>Режим отладки</source>
<translation>Debug mode</translation> <translation>Debug mode</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="394"/> <location filename="../SettingsEditor.ui" line="453"/>
<source>Игнорировать ошибки SSL</source> <source>Игнорировать ошибки SSL</source>
<translation>Ignore SSL errors</translation> <translation>Ignore SSL errors</translation>
</message> </message>
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Max time of translation process.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Max time of translation process.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="404"/> <location filename="../SettingsEditor.ui" line="387"/>
<source>Максимальное время перевода:</source> <source>Максимальное время перевода:</source>
<translation>Max translation time:</translation> <translation>Max translation time:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="418"/> <location filename="../SettingsEditor.ui" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Translated text language.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Translated text language.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="421"/> <location filename="../SettingsEditor.ui" line="407"/>
<source>Язык результата:</source> <source>Язык результата:</source>
<translation>Translation language:</translation> <translation>Translation language:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="434"/> <location filename="../SettingsEditor.ui" line="417"/>
<source>Переводчики:</source> <source>Переводчики:</source>
<translation>Translators:</translation> <translation>Translators:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="411"/> <location filename="../SettingsEditor.ui" line="394"/>
<source> сек.</source> <source> сек.</source>
<translation>secs.</translation> <translation>secs.</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="444"/> <location filename="../SettingsEditor.ui" line="427"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Sorted by priority descending.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Sorted by priority descending.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
@ -1451,17 +1456,17 @@ Change dirs permissions and try again or perform manual update.</translation>
<context> <context>
<name>WebTranslator</name> <name>WebTranslator</name>
<message> <message>
<location filename="../WebTranslator.cpp" line="88"/> <location filename="../WebTranslator.cpp" line="92"/>
<source>Перевод отменен по таймауту.</source> <source>Перевод отменен по таймауту.</source>
<translation>Translation timed out.</translation> <translation>Translation timed out.</translation>
</message> </message>
<message> <message>
<location filename="../WebTranslator.cpp" line="96"/> <location filename="../WebTranslator.cpp" line="100"/>
<source>Ошибка загрузки страницы (%1) для перевода.</source> <source>Ошибка загрузки страницы (%1) для перевода.</source>
<translation>Page (%1) load failed.</translation> <translation>Page (%1) load failed.</translation>
</message> </message>
<message> <message>
<location filename="../WebTranslator.cpp" line="140"/> <location filename="../WebTranslator.cpp" line="144"/>
<source>Нет сценариев для перевода. Измените настройки.</source> <source>Нет сценариев для перевода. Измените настройки.</source>
<translation>Not found any translators. Change settings.</translation> <translation>Not found any translators. Change settings.</translation>
</message> </message>

View File

@ -741,27 +741,27 @@
<translation>Результат</translation> <translation>Результат</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="50"/> <location filename="../ResultDialog.cpp" line="49"/>
<source>Распознать другой язык</source> <source>Распознать другой язык</source>
<translation>Распознать другой язык</translation> <translation>Распознать другой язык</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="51"/> <location filename="../ResultDialog.cpp" line="50"/>
<source>Перевести на другой язык</source> <source>Перевести на другой язык</source>
<translation>Перевести на другой язык</translation> <translation>Перевести на другой язык</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="52"/> <location filename="../ResultDialog.cpp" line="51"/>
<source>Скопировать в буфер</source> <source>Скопировать в буфер</source>
<translation>Скопировать в буфер</translation> <translation>Скопировать в буфер</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="53"/> <location filename="../ResultDialog.cpp" line="52"/>
<source>Скопировать рисунок в буфер</source> <source>Скопировать рисунок в буфер</source>
<translation>Скопировать рисунок в буфер</translation> <translation>Скопировать рисунок в буфер</translation>
</message> </message>
<message> <message>
<location filename="../ResultDialog.cpp" line="54"/> <location filename="../ResultDialog.cpp" line="53"/>
<source>Исправить распознанный текст</source> <source>Исправить распознанный текст</source>
<translation>Исправить распознанный текст</translation> <translation>Исправить распознанный текст</translation>
</message> </message>
@ -851,7 +851,7 @@
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="277"/> <location filename="../SettingsEditor.ui" line="277"/>
<location filename="../SettingsEditor.cpp" line="154"/> <location filename="../SettingsEditor.cpp" line="155"/>
<source>Путь к tessdata</source> <source>Путь к tessdata</source>
<translation>Путь к tessdata</translation> <translation>Путь к tessdata</translation>
</message> </message>
@ -995,52 +995,57 @@
<translation>Переводить текст</translation> <translation>Переводить текст</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="384"/> <location filename="../SettingsEditor.ui" line="443"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображает окно переводчика. Следует использовать только для разработки переводчиков.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="387"/> <location filename="../SettingsEditor.ui" line="446"/>
<source>Режим отладки</source> <source>Режим отладки</source>
<translation>Режим отладки</translation> <translation>Режим отладки</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="394"/> <location filename="../SettingsEditor.ui" line="453"/>
<source>Игнорировать ошибки SSL</source> <source>Игнорировать ошибки SSL</source>
<translation>Игнорировать ошибки SSL</translation> <translation>Игнорировать ошибки SSL</translation>
</message> </message>
<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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Максимальное время, которое может быть затрачено на перевод, чтобы он не считался &amp;quot;зависшим&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="404"/> <location filename="../SettingsEditor.ui" line="387"/>
<source>Максимальное время перевода:</source> <source>Максимальное время перевода:</source>
<translation>Максимальное время перевода:</translation> <translation>Максимальное время перевода:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="418"/> <location filename="../SettingsEditor.ui" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Язык, на который осуществляется перевод.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="421"/> <location filename="../SettingsEditor.ui" line="407"/>
<source>Язык результата:</source> <source>Язык результата:</source>
<translation>Язык результата:</translation> <translation>Язык результата:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="434"/> <location filename="../SettingsEditor.ui" line="417"/>
<source>Переводчики:</source> <source>Переводчики:</source>
<translation>Переводчики:</translation> <translation>Переводчики:</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="411"/> <location filename="../SettingsEditor.ui" line="394"/>
<source> сек.</source> <source> сек.</source>
<translation> сек.</translation> <translation> сек.</translation>
</message> </message>
<message> <message>
<location filename="../SettingsEditor.ui" line="444"/> <location filename="../SettingsEditor.ui" line="427"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Отображены в порядке убывания приоритета.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
@ -1460,17 +1465,17 @@
<context> <context>
<name>WebTranslator</name> <name>WebTranslator</name>
<message> <message>
<location filename="../WebTranslator.cpp" line="88"/> <location filename="../WebTranslator.cpp" line="92"/>
<source>Перевод отменен по таймауту.</source> <source>Перевод отменен по таймауту.</source>
<translation>Перевод отменен по таймауту.</translation> <translation>Перевод отменен по таймауту.</translation>
</message> </message>
<message> <message>
<location filename="../WebTranslator.cpp" line="96"/> <location filename="../WebTranslator.cpp" line="100"/>
<source>Ошибка загрузки страницы (%1) для перевода.</source> <source>Ошибка загрузки страницы (%1) для перевода.</source>
<translation>Ошибка загрузки страницы (%1) для перевода.</translation> <translation>Ошибка загрузки страницы (%1) для перевода.</translation>
</message> </message>
<message> <message>
<location filename="../WebTranslator.cpp" line="140"/> <location filename="../WebTranslator.cpp" line="144"/>
<source>Нет сценариев для перевода. Измените настройки.</source> <source>Нет сценариев для перевода. Измените настройки.</source>
<translation>Нет сценариев для перевода. Измените настройки.</translation> <translation>Нет сценариев для перевода. Измените настройки.</translation>
</message> </message>