diff --git a/README.md b/README.md
index 38841b1..1001d2f 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
![How it looks](screenshot.png)
[Español](https://github.com/Artikash/Textractor/blob/master/README_ES.md) ● [简体中文](https://github.com/Artikash/Textractor/blob/master/README_SC.md) ●
-[日本語](https://github.com/Artikash/Textractor/blob/master/README_JP.md)
+[日本語](https://github.com/Artikash/Textractor/blob/master/README_JP.md) ● [Русский](https://github.com/Artikash/Textractor/blob/master/README_RU.md)
**Textractor** (a.k.a. NextHooker) is an open-source x86/x64 video game text hooker for Windows/Wine based off of [ITHVNR](http://www.hongfire.com/forum/showthread.php/438331-ITHVNR-ITH-with-the-VNR-engine).
Watch the [tutorial video](https://youtu.be/eecEOacF6mw) for a quick rundown on using it.
@@ -60,6 +60,7 @@ If you're on this list and want your link changed let me know.
- Spanish translation by [scese250](https://github.com/scese250)
- Turkish translation by niisokusu
- Simplified Chinese translation by [tinyAdapter](https://github.com/tinyAdapter)
+- Russian translation by [TokcDK](https://github.com/TokcDK)
- ITHVNR updated by [mireado](https://github.com/mireado) and [Eguni](https://github.com/Eguni)
- ITHVNR originally made by [Stomp](http://www.hongfire.com/forum/member/325894-stomp)
- VNR engine made by [jichi](https://archive.is/prJwr)
diff --git a/README_RU.md b/README_RU.md
new file mode 100644
index 0000000..1e842b8
--- /dev/null
+++ b/README_RU.md
@@ -0,0 +1,74 @@
+# Textractor
+
+![Как это выглядит](screenshot.png)
+
+[English/Original](https://github.com/Artikash/Textractor/blob/master/README.md) ● [Español](https://github.com/Artikash/Textractor/blob/master/README_ES.md) ● [简体中文](https://github.com/Artikash/Textractor/blob/master/README_SC.md) ●
+[日本語](https://github.com/Artikash/Textractor/blob/master/README_JP.md)
+
+**Textractor** (a.k.a. NextHooker) это проект x86/x64 Windows/Wine программы для захвата текста из видеоигр, основанный на [ITHVNR](http://www.hongfire.com/forum/showthread.php/438331-ITHVNR-ITH-with-the-VNR-engine).
+Смотреть [обучающее видео](https://youtu.be/eecEOacF6mw) для быстрого ознакомления.
+
+[![Задонатить автору](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=akashmozumdar%40gmail.com&item_name=Textractor%20development¤cy_code=USD)
+
+## Загрузка
+
+Выпуски Textractor могут быть найдены [здесь](https://github.com/Artikash/Textractor/releases).
+Последний выпуск ITHVNR может быть найден [здесь](https://drive.google.com/open?id=13aHF4uIXWn-3YML_k2YCDWhtGgn5-tnO).
+Установите библиотеки Visual C redist(vc_redist.x86.exe), если получаете ошибку при запуске Textractor.
+
+## Возможности
+
+- Высокая расширяемость
+- Автозахват текста из множества игровых движков (включая некоторые, неподдерживаемые в VNR!)
+- Захват текста с использованием /H "hook" кодов (поддерживается большинство AGTH кодов)
+- Прямое извлечение текста с использованием /R "read" кодов
+
+## Поддержка
+
+Сообщайте о любых ошибках, играх, с которыми у Textractor проблемы, запросах о новых функциях или другие предложения.
+Если у вас возникают проблемы с захватом текста из какой либо игры, скиньте на электронную почту ссылку на её загрузку или киньте её подарком в [Steam](https://steamcommunity.com/profiles/76561198097566313/) , для тестирования.
+
+## Расширения
+
+Смотрите [Проект примера расширения](https://github.com/Artikash/ExampleExtension), чтобы узнать, как создать расширение.
+Также для примера того, что делают расширения, смотрите папку extensions.
+
+## Вклад
+
+Любой вклад приветствуется! Пишите мне(автору)(нет, я не занят!) на akashmozumdar@gmail.com, если у вас есть любые вопросы о кодовой базе.
+Используйте стандартные действия для создания pull request (fork, branch, commit changes, создайте PR из своей ветки branch на мой master).
+Вклад в перевод совсем не сложен: просто переведите строки в text.cpp, также, как и этот README.
+
+## Компиляция
+
+Перед компиляцией *Textractor*, установите Visual Studio с поддержкой CMake, а также Qt версии 5.11
+Тогда вы сможете просто открыть и построить проект в Visual Studio. Запустите Textractor.exe.
+
+## Архитектура проекта
+
+Хост (смотрите папку GUI/host) внедряет texthook.dll (созданной из папки texthook) в целевой процесс и подключается к нему через два файла-канала (pipe).
+Хост пишет в hostPipe, texthook пишет в hookPipe.
+texthook ждет присоединения канала, тогда внедряет некоторые инструкции в любые выводящие текст функции (такие как TextOut, GetGlyphOutline), что вызывает пересылку поступающего в них текста черех канал.
+Дополнительная информация о хуках размещена через файл просмотра (a.k.a. section object), который сопоставленсо ссылкой на класс TextHook.
+Текст, который получает хост через канал, Текст, который хост получает через канал, затем немного обрабатывается перед отправкой обратно в графический интерфейс (GUI).
+Наконец, GUI откправляет текст расширениям, перед его отображением.
+
+## Разработчики
+
+Если вы в этом списке и хотите, чтобы ваша ссылка была изменена, сообщите об этом.
+- Авторы Textractor: [Artikash](https://github.com/Artikash) и [DoumanAsh](https://github.com/DoumanAsh)
+- Испанская локализация: [scese250](https://github.com/scese250)
+- Турецкая локализация: niisokusu
+- Китайская локализация: [tinyAdapter](https://github.com/tinyAdapter)
+- Русская локализация: [TokcDK](https://github.com/TokcDK)
+- Обновление ITHVNR: [mireado](https://github.com/mireado) and [Eguni](https://github.com/Eguni)
+- Автор ITHVNR: [Stomp](http://www.hongfire.com/forum/member/325894-stomp)
+- Автор движка VNR: [jichi](https://archive.is/prJwr)
+- Обновление ITH: [Andys](https://github.com/AndyScull)
+- Автор ITH: [kaosu](http://www.hongfire.com/forum/member/562651-kaosu)
+- Автор библиотеки Locale Emulator: [xupefei](https://github.com/xupefei)
+- Автор библиотеки MinHook: [TsudaKageyu](https://github.com/TsudaKageyu)
+
+## Особая благодарность
+
+- Всем, кто пишет о проблемах и предложения в секции Issues!
diff --git a/text.cpp b/text.cpp
index 37edbfc..1167fd4 100644
--- a/text.cpp
+++ b/text.cpp
@@ -3,6 +3,7 @@
//#define TURKISH
//#define SPANISH
//#define SIMPLIFIED_CHINESE
+//#define RUSSIAN
const char* ATTACH = u8"Attach to game";
const char* LAUNCH = u8"Launch game";
@@ -321,5 +322,124 @@ S/Q/V: 代码页/UTF-16/UTF-8 字符串
INVALID_REGEX = u8"无效的正则表达式";
CURRENT_FILTER = u8"当前过滤中: ";
#endif // SIMPLIFIED_CHINESE
+
+#ifdef RUSSIAN
+ ATTACH = u8"Присоединить к игре";
+ LAUNCH = u8"Запустить игру";
+ DETACH = u8"Отсоединить от игры";
+ ADD_HOOK = u8"Добавить хук";
+ SAVE_HOOKS = u8"Сохранить хук(и)";
+ SETTINGS = u8"Настройки";
+ EXTENSIONS = u8"Расширения";
+ SELECT_PROCESS = u8"Выберете процесс";
+ ATTACH_INFO = u8R"(Если вы не видите процесс, к которому хотите присоединить, попробуйте запуск с правами администратора
+Вы также можете ввести id процесса)";
+ SEARCH_GAME = u8"Найти в проводнике";
+ PROCESSES = u8"Процессы (*.exe)";
+ CODE_INFODUMP = u8R"(Искать текст
+S[codepage#]текст
+ИЛИ
+Введите код чтения (R-code)
+R{S|Q|V}[codepage#][*deref_offset]@addr
+ИЛИ
+Введите код хука (H-code)
+H{A|B|W|S|Q|V}[N][codepage#]data_offset[*deref_offset1][:split_offset[*deref_offset2]]@addr[:module[:func]]
+Все числа, кроме кодовой страницы в шестнадцатеричном формате
+Кодировка по умолчанию 932 (Shift-JIS), но она может быть изменена в настройках
+A/B: codepage char little/big endian
+W: UTF-16 char
+S/Q/V: codepage/UTF-16/UTF-8 string
+Отрицательное для data/split офсетов, ссылающихся на регистры
+-4 для EAX, -8 для ECX, -C для EDX, -10 для EBX, -14 для ESP, -18 для EBP, -1C для ESI, -20 для EDI
+* значит dereference pointer+deref_offset)";
+ SAVE_SETTINGS = u8"Сохранить настройки";
+ EXTEN_WINDOW_INSTRUCTIONS = u8R"(Перетащите сюда (.dll) файлы расширений из проводника для их добавления
+(Не работает при запуске от администратора)
+Перетаскивайте по списку для изменения порядка
+Нажмите клавишу удаления, чтобы удалить выбранное расширение)";
+ USE_JP_LOCALE = u8"Симулировать японскую локаль";
+ FILTER_REPETITION = u8"Фильтр повторений";
+ DEFAULT_CODEPAGE = u8"Кодировка по умолчанию";
+ FLUSH_DELAY = u8"Задержка сброса";
+ MAX_BUFFER_SIZE = u8"Максимальный размер буфера";
+ CONSOLE = L"Консоль";
+ CLIPBOARD = L"Буфер обмена";
+ ABOUT = L"Textractor в." CURRENT_VERSION LR"( автор: Artikash (email: akashmozumdar@gmail.com)
+Домашняя страница: https://github.com/Artikash/Textractor
+Обучающее видео: https://www.youtube.com/watch?v=eecEOacF6mw
+Сообщайте о любых проблемах, желаемых для добавления функциях, или задавайте вопросы, касающиеся Textractor
+Сделать это вы можете домашней странице (секция issues) или через электронную почту
+Исходный код доступен по лицензии GPLv3 на домашней странице проекта
+I'm currently looking for a new job: email me if you know anyone hiring US software engineers
+Если эта программа вам понравилась, расскажите всем о ней :))";
+ CL_OPTIONS = LR"(usage: Textractor [-p{process id|"process name"}]...)";
+ UPDATE_AVAILABLE = L"Доступно обновление: загрузите его на https://github.com/Artikash/Textractor/releases";
+ ALREADY_INJECTED = L"Textractor: уже присоединен";
+ ARCHITECTURE_MISMATCH = L"Textractor: несоответствие архитектуры: попробуйте 32-битный Textractor вместо этого";
+ INJECT_FAILED = L"Textractor: невозможно присоединиться";
+ LAUNCH_FAILED = L"Textractor: невозможно запустить";
+ INVALID_CODE = L"Textractor: неверный код";
+ INVALID_CODEPAGE = L"Textractor: невозможно конвертировать тект (неверная кодировка?)";
+ PIPE_CONNECTED = u8"Textractor: канал присоединен";
+ INSERTING_HOOK = u8"Textractor: вставка хука: %s";
+ REMOVING_HOOK = u8"Textractor: удаление хука: %s";
+ HOOK_FAILED = u8"Textractor: не удалось вставить хук";
+ TOO_MANY_HOOKS = u8"Textractor: слишком много хуков: невозможно вставить";
+ NOT_ENOUGH_TEXT = u8"Textractor: не достаточно текста для точного поиска";
+ FUNC_MISSING = u8"Textractor: функция отсутствует";
+ MODULE_MISSING = u8"Textractor: модуль отсутствует";
+ GARBAGE_MEMORY = u8"Textractor: память постоянно изменяется, бесполезно читать";
+ SEND_ERROR = u8"Textractor: Send ERROR (вероятно неверный H-code)";
+ READ_ERROR = u8"Textractor: Reader ERROR (вероятно неверный R-code)";
+ HIJACK_ERROR = u8"Textractor: Hijack ERROR";
+ COULD_NOT_FIND = u8"Textractor: невозможно найти текст";
+ SELECT_LANGUAGE = u8"Выберете язык";
+ BING_PROMPT = u8"На какой язык переводить в Bing?";
+ GOOGLE_PROMPT = u8"На какой язык переводить в Google?";
+ TOO_MANY_TRANS_REQUESTS = L"Слишком много запросов для перевода: отклонено";
+ TRANSLATION_ERROR = L"Ошибка при переводе";
+ EXTRA_WINDOW_INFO = u8R"(Правый клик для изменения настроек
+Нажмите и перетазите за края - для перемещения, или за правый-нижний угол - для изменения размера)";
+ TOPMOST = u8"Поверх всех окон";
+ SIZE_LOCK = u8"Фиксированный размер";
+ BG_COLOR = u8"Цвет заднего фона";
+ TEXT_COLOR = u8"Цвет текста";
+ FONT_SIZE = u8"Размер шрифта";
+ LUA_INTRO = u8R"(--[[
+ProcessSentence вызывается каждый раз, когда Textractor получает предложение с текстом.
+
+Param sentence: предложение полученое в Textractor (UTF-8).
+Param sentenceInfo: таблица различной информации о предложении.
+
+При возвращении строки предложение будет изменено на эту строку.
+При возвращении нуля, предложение останетсябез изменения.
+
+Это расширение использует несколько копий интерпретатора Lua для безопасности нити.
+Модификации глобальных переменных из ProcessSentence не обязательно сохраняется.
+
+Параметры в sentenceInfo:
+"current select": равно 0, если предложение не находится в текстовой нити, выбранной в данный момент пользователем.
+"process id": id процесса, из которого предложение поступило. Равно 0, когда это консоль или буфер обмена.
+"text number": номер текущей текстовой нити. Растет один за другим по мере создания текстовых нитей. 0 для консоли, 1 для буфера обмена.
+--]]
+function ProcessSentence(sentence, sentenceInfo)
+ --Ваш код здесь...
+end)";
+ LOAD_LUA_SCRIPT = u8"Загрузить скрипт";
+ LUA_ERROR = L"Ошибка Lua: ";
+ REGEX_FILTER = u8"Фильтр Regex";
+ INVALID_REGEX = u8"Неверный regex";
+ CURRENT_FILTER = u8"Сейчас фильтруется: ";
+ REPLACER_INSTRUCTIONS = LR"(Этот файл делает что-то только когда используется расширение "Replacer".
+Команды для замены должны выглядеть так:
+|ORIG|текст_оригинала|BECOMES|текст_замены|END|
+Весь текст в этом файле вне команд заменителей будет проигнорирован.
+Пробелы в текст_оригинала игнорируются, но текст_замены может содержать пробелы, новые строки и пр.
+Этот файл должен быть в кодировке Unicode (UTF-16 little endian).)";
+ THREAD_LINKER = u8"Связыватель нитей";
+ LINK = u8"Связь";
+ THREAD_LINK_FROM = u8"Номер нити, от которой связывать";
+ THREAD_LINK_TO = u8"Номер нити, к которой привязывать";
+#endif // RUSSIAN
return 0;
}();