Merge pull request #115 from TokcDK/master
Russian localization for GUI and Readme
This commit is contained in:
commit
c6b7c6ba22
@ -3,7 +3,7 @@
|
|||||||
![How it looks](screenshot.png)
|
![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) ●
|
[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).<br>
|
**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).<br>
|
||||||
Watch the [tutorial video](https://youtu.be/eecEOacF6mw) for a quick rundown on using it.
|
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)
|
- Spanish translation by [scese250](https://github.com/scese250)
|
||||||
- Turkish translation by niisokusu
|
- Turkish translation by niisokusu
|
||||||
- Simplified Chinese translation by [tinyAdapter](https://github.com/tinyAdapter)
|
- 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 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)
|
- ITHVNR originally made by [Stomp](http://www.hongfire.com/forum/member/325894-stomp)
|
||||||
- VNR engine made by [jichi](https://archive.is/prJwr)
|
- VNR engine made by [jichi](https://archive.is/prJwr)
|
||||||
|
74
README_RU.md
Normal file
74
README_RU.md
Normal file
@ -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).<br>
|
||||||
|
Смотреть [обучающее видео](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).<br>
|
||||||
|
Последний выпуск ITHVNR может быть найден [здесь](https://drive.google.com/open?id=13aHF4uIXWn-3YML_k2YCDWhtGgn5-tnO).<br>
|
||||||
|
Установите библиотеки Visual C redist(vc_redist.x86.exe), если получаете ошибку при запуске Textractor.
|
||||||
|
|
||||||
|
## Возможности
|
||||||
|
|
||||||
|
- Высокая расширяемость
|
||||||
|
- Автозахват текста из множества игровых движков (включая некоторые, неподдерживаемые в VNR!)
|
||||||
|
- Захват текста с использованием /H "hook" кодов (поддерживается большинство AGTH кодов)
|
||||||
|
- Прямое извлечение текста с использованием /R "read" кодов
|
||||||
|
|
||||||
|
## Поддержка
|
||||||
|
|
||||||
|
Сообщайте о любых ошибках, играх, с которыми у Textractor проблемы, запросах о новых функциях или другие предложения.<br>
|
||||||
|
Если у вас возникают проблемы с захватом текста из какой либо игры, скиньте на электронную почту ссылку на её загрузку или киньте её подарком в [Steam](https://steamcommunity.com/profiles/76561198097566313/) , для тестирования.
|
||||||
|
|
||||||
|
## Расширения
|
||||||
|
|
||||||
|
Смотрите [Проект примера расширения](https://github.com/Artikash/ExampleExtension), чтобы узнать, как создать расширение.<br>
|
||||||
|
Также для примера того, что делают расширения, смотрите папку extensions.
|
||||||
|
|
||||||
|
## Вклад
|
||||||
|
|
||||||
|
Любой вклад приветствуется! Пишите мне(автору)(нет, я не занят!) на akashmozumdar@gmail.com, если у вас есть любые вопросы о кодовой базе.<br>
|
||||||
|
Используйте стандартные действия для создания pull request (fork, branch, commit changes, создайте PR из своей ветки branch на мой master).<br>
|
||||||
|
Вклад в перевод совсем не сложен: просто переведите строки в text.cpp, также, как и этот README.
|
||||||
|
|
||||||
|
## Компиляция
|
||||||
|
|
||||||
|
Перед компиляцией *Textractor*, установите Visual Studio с поддержкой CMake, а также Qt версии 5.11<br>
|
||||||
|
Тогда вы сможете просто открыть и построить проект в Visual Studio. Запустите Textractor.exe.
|
||||||
|
|
||||||
|
## Архитектура проекта
|
||||||
|
|
||||||
|
Хост (смотрите папку GUI/host) внедряет texthook.dll (созданной из папки texthook) в целевой процесс и подключается к нему через два файла-канала (pipe).<br>
|
||||||
|
Хост пишет в hostPipe, texthook пишет в hookPipe.<br>
|
||||||
|
texthook ждет присоединения канала, тогда внедряет некоторые инструкции в любые выводящие текст функции (такие как TextOut, GetGlyphOutline), что вызывает пересылку поступающего в них текста черех канал.<br>
|
||||||
|
Дополнительная информация о хуках размещена через файл просмотра (a.k.a. section object), который сопоставленсо ссылкой на класс TextHook.<br>
|
||||||
|
Текст, который получает хост через канал, Текст, который хост получает через канал, затем немного обрабатывается перед отправкой обратно в графический интерфейс (GUI).<br>
|
||||||
|
Наконец, 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!
|
120
text.cpp
120
text.cpp
@ -3,6 +3,7 @@
|
|||||||
//#define TURKISH
|
//#define TURKISH
|
||||||
//#define SPANISH
|
//#define SPANISH
|
||||||
//#define SIMPLIFIED_CHINESE
|
//#define SIMPLIFIED_CHINESE
|
||||||
|
//#define RUSSIAN
|
||||||
|
|
||||||
const char* ATTACH = u8"Attach to game";
|
const char* ATTACH = u8"Attach to game";
|
||||||
const char* LAUNCH = u8"Launch game";
|
const char* LAUNCH = u8"Launch game";
|
||||||
@ -321,5 +322,124 @@ S/Q/V: 代码页/UTF-16/UTF-8 字符串
|
|||||||
INVALID_REGEX = u8"无效的正则表达式";
|
INVALID_REGEX = u8"无效的正则表达式";
|
||||||
CURRENT_FILTER = u8"当前过滤中: ";
|
CURRENT_FILTER = u8"当前过滤中: ";
|
||||||
#endif // SIMPLIFIED_CHINESE
|
#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;
|
return 0;
|
||||||
}();
|
}();
|
||||||
|
Loading…
Reference in New Issue
Block a user