diff --git a/share/translations/screentranslator_ru.ts b/share/translations/screentranslator_ru.ts
index 200e201..c4ddc9f 100644
--- a/share/translations/screentranslator_ru.ts
+++ b/share/translations/screentranslator_ru.ts
@@ -827,32 +827,32 @@ in %1
Пользовательская коррекция
-
+
Use auto corrections (hunspell)
Использовать автокоррекцию (hunspell)
-
+
Use user substitutions
Использовать пользовательскую коррекцию
-
+
Hunspell dictionaries path:
Путь к словарям Hunspell:
-
+
Language:
Язык:
-
+
secs
сек
-
+
Ignore SSL errors
Игнорировать ошибки SSL
@@ -892,92 +892,97 @@ in %1
Путь к языкам (tessdata):
-
+
+ \\ for \ symbol, \n for newline
+ \\ для символа \ , \n для символа новой строки
+
+
+
Translators path:
Путь к переводчикам:
-
+
Translators
Переводчики
-
+
Result window
Окно результата
-
+
Font:
Шрифт:
-
+
Font size:
Размер шрифта:
-
+
Font color:
Цвет шрифта:
-
+
Background:
Фон:
-
+
Show image
Показывать изображение
-
+
Show recognized
Показывать распознанное
-
+
Update check interval (days):
Интервал проверки обновления (дней):
-
+
0 - disabled
- отключено
-
+
Apply updates
Применить изменения
-
+
Translate text
Переводить текст
-
+
Single translator timeout:
Переходить к следующему переводчику после:
-
+
Result type
Тип результата
-
+
Tray
Трей
-
+
Window
Окно
-
+
Check now
Проверить сейчас
@@ -1050,17 +1055,17 @@ in %1
SubstitutionsTable
-
+
Language
Язык
-
+
Source
Исходный текст
-
+
Changed
Замена
@@ -1168,73 +1173,73 @@ in %1
Updates
-
+
Tb
Тб
-
+
Gb
Гб
-
+
Mb
Мб
-
+
Kb
Кб
-
+
bytes
байт
-
+
Not installed
Не установлено
-
+
Update available
Доступно обновление
-
+
Up to date
Последняя версия
-
+
Remove
Удалить
-
+
Install/Update
Установить/Обновить
-
-
+
+
Directory is not writable
%1
Папка недоступна для записи
%1
-
+
Downloaded file not exists
%1
Скачанный файл не существует
%1
-
-
+
+
Failed to remove file
%1
Error %2
@@ -1243,14 +1248,14 @@ Error %2
Текст %2
-
+
Failed to create path
%1
Ошибка создания папки
%1
-
+
Failed to move file
%1
to %2
@@ -1261,7 +1266,7 @@ Error %3
Текст %3
-
+
Failed to set modification time of file
%1
to %2. Error %3
@@ -1281,66 +1286,66 @@ to %2. Error %3
update::Loader
-
+
Empty updates info from
%1
Пустой файл обновлений из
%1
-
+
Empty updates info unpacked from
%1
Пустой файл обновлений распакован из
%1
-
+
Failed to parse updates from
%1 (%2)
Ошибка разбора файла обновлений
%1 (%2)
-
+
Failed to download file
%1. Error %2
Ошибка скачивания файла
%1. Текст %2
-
+
Already updating
Обновление в процессе
-
+
No actions selected
Нет выделенных действий
-
+
Failed to create temp path
%1
Ошибка создания временной папки
%1
-
+
Empty data downloaded from
%1
Пустой файл из
%1
-
+
Empty data unpacked from
%1
Пустой файл распакован из
%1
-
+
Failed to save downloaded file
%1
to %2
@@ -1351,7 +1356,7 @@ Error %3
Текст %3
-
+
Update failed: %1
Ошибка обновления: %1
@@ -1359,62 +1364,62 @@ Error %3
update::Model
-
+
Select all updates
Выбрать все обновления
-
+
Reset actions
Сбросить действия
-
+
Failed to parse: %1 at %2
Ошибка разбора: %1 в %2
-
+
Wrong updates version: %1
Неверная версия файла обновлений: %1
-
+
No data parsed
Нет разобранных данных
-
+
Name
Название
-
+
State
Состояние
-
+
Action
Действие
-
+
Size
Размер
-
+
Version
Версия
-
+
Progress
Прогресс
-
+
Files
Файла
diff --git a/src/settingseditor.ui b/src/settingseditor.ui
index f1f1679..8a61bc2 100644
--- a/src/settingseditor.ui
+++ b/src/settingseditor.ui
@@ -298,6 +298,9 @@
-
+
+ \\ for \ symbol, \n for newline
+
QAbstractItemView::SelectRows
diff --git a/src/substitutionstable.cpp b/src/substitutionstable.cpp
index 89fbf31..d854132 100644
--- a/src/substitutionstable.cpp
+++ b/src/substitutionstable.cpp
@@ -3,6 +3,7 @@
#include "languagecodes.h"
#include
+#include
#include
#include
#include
@@ -22,7 +23,52 @@ public:
{
painter->drawText(option.rect, Qt::AlignCenter, index.data().toString());
}
-};
+
+ QWidget *createEditor(QWidget *parent,
+ const QStyleOptionViewItem & /*option*/,
+ const QModelIndex & /*index*/) const override
+ {
+ return new QLineEdit(parent);
+ }
+
+ void setEditorData(QWidget *editor, const QModelIndex &index) const override
+ {
+ auto casted = qobject_cast(editor);
+ SOFT_ASSERT(casted, return );
+ auto text = index.data(Qt::EditRole).toString();
+
+ text.replace('\\', "\\\\");
+ text.replace('\n', "\\n");
+
+ casted->setText(text);
+ }
+
+ void setModelData(QWidget *editor, QAbstractItemModel *model,
+ const QModelIndex &index) const override
+ {
+ auto casted = qobject_cast(editor);
+ SOFT_ASSERT(casted, return );
+ auto text = casted->text();
+
+ if (!text.isEmpty()) {
+ const QMap replacements{
+ {"\\\\", "\\"},
+ {"\\n", "\n"},
+ };
+ for (auto i = 0, end = text.size() - 1; i < end; ++i) {
+ const auto pair = text.mid(i, 2);
+ const auto replaced = replacements.value(pair);
+ if (replaced.isEmpty())
+ continue;
+
+ text.replace(i, 2, replaced);
+ --end;
+ }
+ }
+
+ model->setData(index, text);
+ }
+}; // namespace
} // namespace