2020-08-12 09:25:45 -06:00
# ifdef _WIN64
# define ARCH "x64"
# else
# define ARCH "x86"
# endif
#if 0
# define TURKISH
# define SPANISH
# define SIMPLIFIED_CHINESE
# define RUSSIAN
# define INDONESIAN
# define ITALIAN
# define THAI
# define PORTUGUESE
# define KOREAN
# define FRENCH
# endif
// If you are updating a previous translation see https://github.com/Artikash/Textractor/issues/313
const char * NATIVE_LANGUAGE = " English " ;
const char * ATTACH = u8 " Attach to game " ;
const char * LAUNCH = u8 " Launch game " ;
2021-01-15 06:07:23 -07:00
const char * CONFIG = u8 " Configure game " ;
2020-08-12 09:25:45 -06:00
const char * DETACH = u8 " Detach from game " ;
const char * FORGET = u8 " Forget game " ;
const char * ADD_HOOK = u8 " Add hook " ;
const char * REMOVE_HOOKS = u8 " Remove hook(s) " ;
const char * SAVE_HOOKS = u8 " Save hook(s) " ;
const char * SEARCH_FOR_HOOKS = u8 " Search for hooks " ;
const char * SETTINGS = u8 " Settings " ;
const char * EXTENSIONS = u8 " Extensions " ;
const char * SELECT_PROCESS = u8 " Select process " ;
const char * ATTACH_INFO = u8R " (If you don't see the process you want to attach, try running with admin rights
You can also type in the process id ) " ;
const char * SELECT_PROCESS_INFO = u8 " If you manually type in the process file name, please use the absolute path " ;
const char * FROM_COMPUTER = u8 " Select from computer " ;
const char * PROCESSES = u8 " Processes (*.exe) " ;
const char * CODE_INFODUMP = u8R " (Enter read code
R { S | Q | V | M } [ null_length < ] [ codepage # ] @ addr
OR
Enter hook code
H { A | B | W | H | S | Q | V | M } [ F ] [ null_length < ] [ N ] [ codepage # ] [ padding + ] data_offset [ * deref_offset ] [ : split_offset [ * deref_offset ] ] @ addr [ : module [ : func ] ]
All numbers except codepage / null_length in hexadecimal
Default codepage is 932 ( Shift - JIS ) but this can be changed in settings
A / B : codepage char little / big endian
W : UTF - 16 char
H : Two hex bytes
S / Q / V / M : codepage / UTF - 16 / UTF - 8 / hex string
F : treat strings as full lines of text
N : don ' t use context
null_length : length of null terminator used for string
padding : length of padding data before string ( C struct { int64_t size ; char string [ 500 ] ; } needs padding = 8 )
Negatives for data_offset / split_offset refer to registers
- 4 for EAX , - 8 for ECX , - C for EDX , - 10 for EBX , - 14 for ESP , - 18 for EBP , - 1 C for ESI , - 20 for EDI
- C for RAX , - 14 for RBX , - 1 C for RCX , - 24 for RDX , and so on for RSP , RBP , RSI , RDI , R8 - R15
* means dereference pointer + deref_offset ) " ;
const char * SAVE_SETTINGS = u8 " Save settings " ;
const char * EXTEN_WINDOW_INSTRUCTIONS = u8R " (To add an extension, right click the extension list
Alternatively , drag and drop the extension file from your computer
To reorder extensions , drag and drop them within the list
( Extensions are used from top to bottom : order DOES matter )
To remove an extension , select it and press delete ) " ;
const char * ADD_EXTENSION = u8 " Add extension " ;
const char * INVALID_EXTENSION = u8 " %1 is an invalid extension " ;
const char * CONFIRM_EXTENSION_OVERWRITE = u8 " Another version of this extension already exists, do you want to delete and overwrite it? " ;
const char * EXTENSION_WRITE_ERROR = u8 " Failed to save extension " ;
const char * USE_JP_LOCALE = u8 " Emulate japanese locale? " ;
const char * FAILED_TO_CREATE_CONFIG_FILE = u8 " Failed to create config file \" %1 \" " ;
const char * HOOK_SEARCH_UNSTABLE_WARNING = u8 " Searching for hooks is unstable! Be prepared for your game to crash! " ;
const char * SEARCH_CJK = u8 " Search for Chinese/Japanese/Korean " ;
const char * SEARCH_PATTERN = u8 " Search pattern (hex byte array) " ;
const char * SEARCH_DURATION = u8 " Search duration (ms) " ;
const char * SEARCH_MODULE = u8 " Search within module " ;
const char * PATTERN_OFFSET = u8 " Offset from pattern start " ;
const char * MAX_HOOK_SEARCH_RECORDS = u8 " Search result cap " ;
const char * MIN_ADDRESS = u8 " Minimum address (hex) " ;
const char * MAX_ADDRESS = u8 " Maximum address (hex) " ;
const char * STRING_OFFSET = u8 " String offset (hex) " ;
const char * HOOK_SEARCH_FILTER = u8 " Results must match this regex " ;
const char * TEXT = u8 " Text " ;
const char * CODEPAGE = u8 " Codepage " ;
const char * SEARCH_FOR_TEXT = u8 " Search for specific text " ;
const char * START_HOOK_SEARCH = u8 " Start hook search " ;
const char * SAVE_SEARCH_RESULTS = u8 " Save search results " ;
const char * TEXT_FILES = u8 " Text (*.txt) " ;
const char * DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " Double click a hook to remove it " ;
const char * FILTER_REPETITION = u8 " Filter repetition " ;
const char * AUTO_ATTACH = u8 " Auto attach " ;
const char * ATTACH_SAVED_ONLY = u8 " Auto attach (saved only) " ;
const char * SHOW_SYSTEM_PROCESSES = u8 " Show system processes " ;
const char * DEFAULT_CODEPAGE = u8 " Default codepage " ;
const char * FLUSH_DELAY = u8 " Flush delay " ;
const char * MAX_BUFFER_SIZE = u8 " Max buffer size " ;
const char * MAX_HISTORY_SIZE = u8 " Max history size " ;
const char * CONFIG_JP_LOCALE = u8 " Launch with JP locale " ;
const wchar_t * CONSOLE = L " Console " ;
const wchar_t * CLIPBOARD = L " Clipboard " ;
const wchar_t * ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( made by me: Artikash (email: akashmozumdar@gmail.com)
Project homepage : https : //github.com/Artikash/Textractor
Tutorial video : https : //tinyurl.com/textractor-tutorial
FAQ : https : //github.com/Artikash/Textractor/wiki/FAQ
Please contact me with any problems , feature requests , or questions relating to Textractor
You can do so via the project homepage ( issues section ) or via email
Source code available under GPLv3 at project homepage
If you like this project , please tell everyone about it : ) ) " ;
const wchar_t * CL_OPTIONS = LR " (usage: Textractor [-p{process id| " process name " }]...
example : Textractor - p4466 - p " My Game.exe " tries to inject processes with id 4466 or with name My Game . exe ) " ;
const wchar_t * UPDATE_AVAILABLE = L " Update available: download it from https://github.com/Artikash/Textractor/releases " ;
const wchar_t * ALREADY_INJECTED = L " Textractor: already injected " ;
const wchar_t * NEED_32_BIT = L " Textractor: architecture mismatch: only Textractor x86 can inject this process " ;
const wchar_t * NEED_64_BIT = L " Textractor: architecture mismatch: only Textractor x64 can inject this process " ;
const wchar_t * INJECT_FAILED = L " Textractor: couldn't inject " ;
const wchar_t * LAUNCH_FAILED = L " Textractor: couldn't launch " ;
const wchar_t * INVALID_CODE = L " Textractor: invalid code " ;
const wchar_t * INVALID_CODEPAGE = L " Textractor: couldn't convert text (invalid codepage?) " ;
const char * PIPE_CONNECTED = u8 " Textractor: pipe connected " ;
const char * INSERTING_HOOK = u8 " Textractor: inserting hook: %s " ;
const char * REMOVING_HOOK = u8 " Textractor: removing hook: %s " ;
const char * HOOK_FAILED = u8 " Textractor: failed to insert hook " ;
const char * TOO_MANY_HOOKS = u8 " Textractor: too many hooks: can't insert " ;
const char * STARTING_SEARCH = u8 " Textractor: starting search " ;
const char * NOT_ENOUGH_TEXT = u8 " Textractor: not enough text to search accurately " ;
const char * HOOK_SEARCH_INITIALIZED = u8 " Textractor: search initialized with %zd hooks " ;
const char * MAKE_GAME_PROCESS_TEXT = u8 " Textractor: please click around in the game to force it to process text during the next %d seconds " ;
const char * HOOK_SEARCH_FINISHED = u8 " Textractor: hook search finished, %d results found " ;
const char * OUT_OF_RECORDS_RETRY = u8 " Textractor: out of search records, please retry if results are poor (default record count increased) " ;
const char * FUNC_MISSING = u8 " Textractor: function not present " ;
const char * MODULE_MISSING = u8 " Textractor: module not present " ;
const char * GARBAGE_MEMORY = u8 " Textractor: memory constantly changing, useless to read " ;
const char * SEND_ERROR = u8 " Textractor: Send ERROR (likely an unstable/incorrect H-code) " ;
const char * READ_ERROR = u8 " Textractor: Reader ERROR (likely an incorrect R-code) " ;
const char * HIJACK_ERROR = u8 " Textractor: Hijack ERROR " ;
const char * COULD_NOT_FIND = u8 " Textractor: could not find text " ;
const char * TRANSLATE_TO = u8 " Translate to " ;
const char * TRANSLATE_SELECTED_THREAD_ONLY = u8 " Translate selected text thread only " ;
const char * RATE_LIMIT_ALL_THREADS = u8 " Rate limit all text threads " ;
const char * RATE_LIMIT_SELECTED_THREAD = u8 " Rate limit selected text thread " ;
const char * USE_TRANS_CACHE = u8 " Use translation cache " ;
const char * RATE_LIMIT_TOKEN_COUNT = u8 " Rate limiter token count " ;
const char * RATE_LIMIT_TOKEN_RESTORE_DELAY = u8 " Rate limiter token restore delay (ms) " ;
const wchar_t * TOO_MANY_TRANS_REQUESTS = L " Rate limit exceeded: refuse to make more translation requests " ;
const wchar_t * TRANSLATION_ERROR = L " Error while translating " ;
const char * USE_PREV_SENTENCE_CONTEXT = u8 " Use previous sentence as context " ;
const char * API_KEY = u8 " API key " ;
2021-01-15 06:07:23 -07:00
const char * CHROME_LOCATION = " Google Chrome location " ;
const char * START_DEVTOOLS = u8 " Start DevTools " ;
const char * STOP_DEVTOOLS = u8 " Stop DevTools " ;
const char * HEADLESS_MODE = u8 " Headless mode " ;
const char * DEVTOOLS_STATUS = u8 " DevTools status " ;
const char * AUTO_START = u8 " Start automatically " ;
const wchar_t * ERROR_START_CHROME = L " failed to start Chrome or to connect to it " ;
2020-08-12 09:25:45 -06:00
const char * EXTRA_WINDOW_INFO = u8R " (Right click to change settings
Click and drag on window edges to move , or the bottom right corner to resize ) " ;
const char * SENTENCE_TOO_BIG = u8 " Sentence too large to display " ;
const char * MAX_SENTENCE_SIZE = u8 " Max sentence size " ;
const char * TOPMOST = u8 " Always on top " ;
const char * DICTIONARY = u8 " Dictionary " ;
const char * DICTIONARY_INSTRUCTIONS = u8R " (This file is used only for the " Dictionary " feature of the Extra Window extension.
It uses a custom format specific to Textractor and is not meant to be written manually .
You should look for a dictionary in this format online ( https : //github.com/Artikash/Textractor-Dictionaries/releases is a good place to start).
Alternatively , if you ' re a programmer , you can write a script to convert a dictionary from another format with the info below .
Once you have a dictionary , to look up some text in Extra Window , hover over it . You can scroll through all the matching definitions .
Definitions are formatted like this : | TERM | Hola < < ignored | TERM | hola | TERM | Bonjour | TERM | bonjour | DEFINITION | hello | END |
The term and definition can include rich text ( https : //doc.qt.io/qt-5/richtext-html-subset.html) which will be formatted properly.
Inflections are formatted like this : | ROOT | 1 < < noun | INFLECTS TO | ( \ w * ) s | NAME | plural | END |
Textractor will check if a term matches the inflection regex and if it does , will recursively search for the root term .
The root term is generated by replacing each number with the corresponding regex capture group ( with 0 being replaced by the entire match ) .
This process can easily result in infinite loops and / or stack overflows . It ' s your job to avoid that .
Inflection regex uses QRegularExpression ( https : //doc.qt.io/qt-5/qregularexpression.html) unicode syntax.
Textractor will display the final root term as well as all inflections used to get to that root term .
However , the text in a term after < < is ignored when displaying . This is intended to store part - of - speech information .
This file must be encoded in UTF - 8. ) " ;
const char * SHOW_ORIGINAL = u8 " Original text " ;
const char * SHOW_ORIGINAL_INFO = u8R " (Original text will not be shown
Only works if this extension is used directly after a translation extension ) " ;
const char * SIZE_LOCK = u8 " Size lock " ;
const char * OPACITY = u8 " Opacity " ;
const char * BG_COLOR = u8 " Background color " ;
const char * TEXT_COLOR = u8 " Text color " ;
const char * TEXT_OUTLINE = u8 " Text outline " ;
const char * OUTLINE_COLOR = u8 " Outline color " ;
const char * OUTLINE_SIZE = u8 " Outline size " ;
const char * OUTLINE_SIZE_INFO = u8 " Size in pixels (recommended to stay below 20% of the font size) " ;
const char * FONT = u8 " Font " ;
const char * LUA_INTRO = u8R " (--[[
ProcessSentence is called each time Textractor receives a sentence of text .
Param sentence : sentence received by Textractor ( UTF - 8 ) .
Param sentenceInfo : table of miscellaneous info about the sentence .
If you return a string , the sentence will be turned into that string .
If you return nil , the sentence will be unmodified .
This extension uses several copies of the Lua interpreter for thread safety .
Modifications to global variables from ProcessSentence are not guaranteed to persist .
Properties in sentenceInfo :
" current select " : 0 unless sentence is in the text thread currently selected by the user .
" process id " : process id that the sentence is coming from . 0 for console and clipboard .
" text number " : number of the current text thread . Counts up one by one as text threads are created . 0 for console , 1 for clipboard .
- - ] ]
function ProcessSentence ( sentence , sentenceInfo )
- - Your code here . . .
end ) " ;
2021-01-15 09:53:57 -07:00
const char * LOAD_SCRIPT = u8 " Load script " ;
2020-08-12 09:25:45 -06:00
const wchar_t * LUA_ERROR = L " Lua error: %s " ;
const char * REGEX_FILTER = u8 " Regex Filter " ;
const char * INVALID_REGEX = u8 " Invalid regex " ;
const char * CURRENT_FILTER = u8 " Currently filtering: %1 " ;
const wchar_t * REPLACER_INSTRUCTIONS = LR " (This file only does anything when the " Replacer " extension is used.
Replacement commands must be formatted like this :
| ORIG | original_text | BECOMES | replacement_text | END |
All text in this file outside of a replacement command is ignored .
A caret ( ^ ) acts as a wildcard that matches any other single character .
Whitespace in original_text is ignored , but replacement_text can contain spaces , newlines , etc .
This file must be encoded in Unicode ( UTF - 16 Little Endian ) . ) " ;
const char * THREAD_LINKER = u8 " Thread Linker " ;
const char * LINK = u8 " Link " ;
const char * THREAD_LINK_FROM = u8 " Thread number to link from " ;
const char * THREAD_LINK_TO = u8 " Thread number to link to " ;
const char * HEXADECIMAL = u8 " Hexadecimal " ;
2021-01-15 06:07:23 -07:00
void Localize ( )
2020-08-12 09:25:45 -06:00
{
# ifdef TURKISH
NATIVE_LANGUAGE = " Turkish " ;
ATTACH = u8 " Oyuna bağla " ;
DETACH = u8 " Oyundan kopar " ;
ADD_HOOK = u8 " Kanca ekle " ;
SAVE_HOOKS = u8 " Kancaları kaydet " ;
SETTINGS = u8 " Ayarlar " ;
EXTENSIONS = u8 " Uzantı lar " ;
SELECT_PROCESS = u8 " İşlem seçin " ;
ATTACH_INFO = u8 " Bağlanmak istediğiniz işlemi görmüyorsanı z yönetici olarak çalı ştı rmayı deneyin " ;
DEFAULT_CODEPAGE = u8 " Varsayı lan Kod Sayfası " ;
FLUSH_DELAY = u8 " Temizleme Gecikmesi " ;
MAX_BUFFER_SIZE = u8 " Maksimum Arabellek Boyu " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( (proje ana sayfası : https://github.com/Artikash/Textractor)
Benim tarafı mdan yapı ldı : Artikash ( e - posta : akashmozumdar @ gmail . com )
Textractor ile ilgili tüm sorunları nı z , istekleriniz ve soruları nı z için lütfen benimle iletişime geçin
Benimle , proje ana sayfası ndan ( “ issues ” kı smı ndan ) ya da e - posta aracı lı ğı yla iletişime geçebilirsiniz
Kaynak kodu GKLv3 koruması altı nda proje ana sayfası nda mevcut ) " ;
UPDATE_AVAILABLE = L " Güncelleme mevcut: https://github.com/Artikash/Textractor/releases adresinden indirin " ;
ALREADY_INJECTED = L " Textractor: Zaten enjekte edili " ;
NEED_32_BIT = L " Textractor: Mimari uyumsuzluğu: Lütfen Textractor’ ı n 32 bitlik sürümünü deneyin " ;
INJECT_FAILED = L " Textractor: Enjekte edilemedi " ;
INVALID_CODE = L " Textractor: Geçersiz kod " ;
INVALID_CODEPAGE = L " Textractor: Metne dönüştürülemedi (geçersiz kod sayfası ?) " ;
PIPE_CONNECTED = u8 " Textractor: Boru bağlandı " ;
INSERTING_HOOK = u8 " Textractor: Kanca ekleniyor: %s " ;
REMOVING_HOOK = u8 " Textractor: Kanca çı karı lı yor:: %s " ;
HOOK_FAILED = u8 " Textractor: Kanca eklenemedi " ;
TOO_MANY_HOOKS = u8 " Textractor: Çok fazla kanca var: Eklenemiyor " ;
FUNC_MISSING = u8 " Textractor: Fonksiyon mevcut değil " ;
MODULE_MISSING = u8 " Textractor: Modül mevcut değil " ;
GARBAGE_MEMORY = u8 " Textractor: Hafı za sürekli değişiyor, okumak boşa " ;
# endif // TURKISH
# ifdef SPANISH
NATIVE_LANGUAGE = " Spanish " ;
ATTACH = u8 " Adjuntar juego " ;
LAUNCH = u8 " Iniciar juego " ;
DETACH = u8 " Desconectar juego " ;
ADD_HOOK = u8 " Añadir hook " ;
SAVE_HOOKS = u8 " Guardar hook(s) " ;
SETTINGS = u8 " Opciones " ;
EXTENSIONS = u8 " Extensiones " ;
SELECT_PROCESS = u8 " Seleccionar procreso " ;
ATTACH_INFO = u8R " (Si no ves el proceso que quieras adjuntar, ejecuta este programa como administrador
También puedes escribir la ID del proceso ) " ;
FROM_COMPUTER = u8 " Seleccionar desde computadora " ;
PROCESSES = u8 " Procesos (*.exe) " ;
SAVE_SETTINGS = u8 " Guardar opciones " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Arrrastra y suelta la extension (.dll) aquí desde tu computadora para añadirlos
Arrastra y suelta la lista para reordenar
Presiona supr en una extension seleccionada para removerla ) " ;
USE_JP_LOCALE = u8 " ¿Emular idioma japonés? " ;
DEFAULT_CODEPAGE = u8 " Default Codepage " ;
FLUSH_DELAY = u8 " Flush Delay " ;
MAX_BUFFER_SIZE = u8 " Max Buffer Size " ;
CONSOLE = L " Consola " ;
CLIPBOARD = L " Portapapeles " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( hecho por mí: Artikash (correo: akashmozumdar@gmail.com)
Página del proyecto : https : //github.com/Artikash/Textractor
Video tutorial : https : //tinyurl.com/textractor-tutorial
No dudes en conectarme si tienes algún problema , petición de característica o preguntas relacionadas con Textractor
Puedes hacerlo en la página del proyecto ( en el apartado de " Issues " ) o por correo . Usa el inglés para comunicarte .
Código fuente disponible bajo GPLv3 en la página del proyecto ) " ;
UPDATE_AVAILABLE = L " Actualización disponible: descárguela en https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: ya inyectado " ;
INJECT_FAILED = L " Textractor: no se puede inyectar " ;
LAUNCH_FAILED = L " Textractor: no se puede iniciar " ;
INVALID_CODE = L " Textractor: código inválido " ;
INVALID_CODEPAGE = L " Textractor: no se puede convertir texto (¿Codepage inválido?) " ;
PIPE_CONNECTED = u8 " Textractor: pipe connected " ;
INSERTING_HOOK = u8 " Textractor: insertando hook: %s " ;
REMOVING_HOOK = u8 " Textractor: removiendo hook: %s " ;
HOOK_FAILED = u8 " Textractor: no se puede insertar hook " ;
TOO_MANY_HOOKS = u8 " Textractor: demasiados hooks: no se puede insertar " ;
NOT_ENOUGH_TEXT = u8 " Textractor: no hay suficiente texto para buscar con precisión " ;
FUNC_MISSING = u8 " Textractor: función no presente " ;
MODULE_MISSING = u8 " Textractor: module not present " ;
GARBAGE_MEMORY = u8 " Textractor: memory constantly changing, useless to read " ;
SEND_ERROR = u8 " Textractor: Send ERROR (probablemente un H-code incorrecto) " ;
READ_ERROR = u8 " Textractor: Reader ERROR (probablemente un R-code incorrecto) " ;
HIJACK_ERROR = u8 " Textractor: Hijack ERROR " ;
COULD_NOT_FIND = u8 " Textractor: no se puede encontrar texto " ;
TOO_MANY_TRANS_REQUESTS = L " Demasiadas peticiones de traducción: no se puede hacer más " ;
TRANSLATION_ERROR = L " Error al traducir " ;
EXTRA_WINDOW_INFO = u8R " (Clic derecho para configurar
Clic y arrastra los bordes de la ventana para moverla , o en la esquina inferior derecha para cambiar el tamaño ) " ;
BG_COLOR = u8 " Color de fondo " ;
TEXT_COLOR = u8 " Color de texto " ;
TOPMOST = u8 " Siempre visible " ;
REGEX_FILTER = u8 " Filtro Regex " ;
INVALID_REGEX = u8 " Regex inválido " ;
CURRENT_FILTER = u8 " Actualmente filtrando: %1 " ;
# endif // SPANISH
# ifdef SIMPLIFIED_CHINESE
NATIVE_LANGUAGE = " Chinese (simplified) " ;
ATTACH = u8 " 附加到游戏 " ;
LAUNCH = u8 " 启动游戏 " ;
2021-01-15 06:07:23 -07:00
CONFIG = u8 " 配置游戏 " ;
2020-08-12 09:25:45 -06:00
DETACH = u8 " 从游戏分离 " ;
FORGET = u8 " 移除游戏 " ;
ADD_HOOK = u8 " 添加钩子 " ;
REMOVE_HOOKS = u8 " 移除钩子 " ;
SAVE_HOOKS = u8 " 保存钩子 " ;
SEARCH_FOR_HOOKS = u8 " 搜索钩子 " ;
SETTINGS = u8 " 设置 " ;
EXTENSIONS = u8 " 扩展 " ;
SELECT_PROCESS = u8 " 选择进程 " ;
ATTACH_INFO = u8R " (如果没看见想要附加的进程,尝试使用管理员权限运行
也 可 以 手 动 输 入 进 程 ID ) " ;
SELECT_PROCESS_INFO = u8 " 如果手动输入游戏名,请使用绝对路径 " ;
FROM_COMPUTER = u8 " 从计算机中选择 " ;
PROCESSES = u8 " 进程 (*.exe) " ;
SAVE_SETTINGS = u8 " 保存设置 " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (从计算机拖拽扩展 (.dll) 文件到这里来添加
( 如 果 使 用 超 级 管 理 员 运 行 , 则 无 法 工 作 )
在 列 表 中 拖 拽 来 重 新 排 序
使 用 delete 键 移 除 选 中 的 扩 展 ) " ;
ADD_EXTENSION = u8 " 添加扩展 " ;
INVALID_EXTENSION = u8 " %1 是一个无效扩展 " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " 此扩展的另一个版本已启用,是否删除并覆盖它? " ;
EXTENSION_WRITE_ERROR = u8 " 保存扩展失败 " ;
USE_JP_LOCALE = u8 " 模拟日本区域设置? " ;
HOOK_SEARCH_UNSTABLE_WARNING = u8 " 搜索钩子的功能是不稳定的! 可能会导致你的游戏崩溃! " ;
SEARCH_CJK = u8 " 搜索中文/日文/韩文 " ;
SEARCH_PATTERN = u8 " 搜索匹配特征 (hex byte array) " ;
SEARCH_DURATION = u8 " 搜索持续时间 (ms) " ;
SEARCH_MODULE = u8 " 搜索指定模块 " ;
PATTERN_OFFSET = u8 " 相对于特征地址的偏移值 " ;
MAX_HOOK_SEARCH_RECORDS = u8 " 搜索结果上限 " ;
MIN_ADDRESS = u8 " 起始地址 (hex) " ;
MAX_ADDRESS = u8 " 结束地址 (hex) " ;
STRING_OFFSET = u8 " 字符串偏移值 (hex) " ;
HOOK_SEARCH_FILTER = u8 " 结果必须匹配的正则表达式 " ;
TEXT = u8 " 文本 " ;
CODEPAGE = u8 " 代码页 " ;
SEARCH_FOR_TEXT = u8 " 搜索指定文本 " ;
START_HOOK_SEARCH = u8 " 开始搜索钩子 " ;
SAVE_SEARCH_RESULTS = u8 " 保存搜索结果 " ;
TEXT_FILES = u8 " 文本文档 (*.txt) " ;
DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " 双击移除不需要的钩子 " ;
FILTER_REPETITION = u8 " 过滤重复文本 " ;
AUTO_ATTACH = u8 " 自动附加 " ;
ATTACH_SAVED_ONLY = u8 " 自动附加 (saved only) " ;
SHOW_SYSTEM_PROCESSES = u8 " 显示系统进程 " ;
DEFAULT_CODEPAGE = u8 " 默认代码页 " ;
FLUSH_DELAY = u8 " 刷新延迟 " ;
MAX_BUFFER_SIZE = u8 " 最大缓冲区长度 " ;
MAX_HISTORY_SIZE = u8 " 最大缓存文本长度 " ;
CONFIG_JP_LOCALE = u8 " 模拟日本区域启动游戏 " ;
CONSOLE = L " 控制台 " ;
CLIPBOARD = L " 剪贴板 " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( 作者: Artikash (email: akashmozumdar@gmail.com)
项 目 主 页 : https : //github.com/Artikash/Textractor
教 程 视 频 : https : //tinyurl.com/textractor-tutorial
如 果 有 任 何 关 于 Textractor 的 困 难 , 功 能 请 求 或 问 题 , 请 联 系 我
可 以 通 过 项 目 主 页 ( 问 题 区 ) 或 通 过 邮 件 来 联 系
项 目 主 页 提 供 基 于 GPLv3 协 议 的 源 代 码 ) " ;
UPDATE_AVAILABLE = L " 有可用的更新: 请从 https://github.com/Artikash/Textractor/releases 下载 " ;
ALREADY_INJECTED = L " Textractor: 已经注入 " ;
NEED_32_BIT = L " Textractor: 架构不匹配: 请尝试使用32位版本的Textractor " ;
NEED_64_BIT = L " Textractor: 架构不匹配: 请尝试使用64位版本的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: 钩子数量已达上限: 无法注入 " ;
STARTING_SEARCH = u8 " Textractor: 开始搜索钩子 " ;
NOT_ENOUGH_TEXT = u8 " Textractor: 没有足够的文本用来精确搜索 " ;
HOOK_SEARCH_INITIALIZED = u8 " Textractor: 搜索初始化完成, 创建了 %zd 个钩子 " ;
MAKE_GAME_PROCESS_TEXT = u8 " Textractor: 请点击游戏区域, 在接下来的 %d 秒内使游戏强制处理文本 " ;
HOOK_SEARCH_FINISHED = u8 " Textractor: 钩子搜索完毕, 找到了 %d 条结果 " ;
OUT_OF_RECORDS_RETRY = u8 " Textractor: 搜索结果已达上限, 如果结果不理想, 请重试(默认最大记录数增加) " ;
FUNC_MISSING = u8 " Textractor: 函数不存在 " ;
MODULE_MISSING = u8 " Textractor: 模块不存在 " ;
GARBAGE_MEMORY = u8 " Textractor: 内存一直在变,读了也没用 " ;
SEND_ERROR = u8 " Textractor: Sender 错误 (H码可能不正确) " ;
READ_ERROR = u8 " Textractor: Reader 错误 (R码可能不正确) " ;
HIJACK_ERROR = u8 " Textractor: Hijack 错误 " ;
COULD_NOT_FIND = u8 " Textractor: 无法找到文本 " ;
TRANSLATE_TO = u8 " 翻译为 " ;
TRANSLATE_SELECTED_THREAD_ONLY = u8 " 仅翻译当前选择的文本线程 " ;
RATE_LIMIT_ALL_THREADS = u8 " 限制所有文本线程的请求频率 " ;
RATE_LIMIT_SELECTED_THREAD = u8 " 限制当前选择线程的请求频率 " ;
USE_TRANS_CACHE = u8 " 使用缓存的翻译结果 " ;
RATE_LIMIT_TOKEN_COUNT = u8 " 限流器令牌数 " ;
RATE_LIMIT_TOKEN_RESTORE_DELAY = u8 " 限流器令牌重置时间 (ms) " ;
TOO_MANY_TRANS_REQUESTS = L " 太多翻译请求: 拒绝生成更多 " ;
TRANSLATION_ERROR = L " 翻译时出错 " ;
USE_PREV_SENTENCE_CONTEXT = u8 " 使用之前的句子作为上下文 " ;
API_KEY = u8 " API key " ;
EXTRA_WINDOW_INFO = u8R " (右键修改设置
在 窗 口 边 缘 点 击 并 拖 拽 来 移 动 , 或 在 右 下 角 点 击 并 拖 拽 来 调 整 大 小 ) " ;
SENTENCE_TOO_BIG = u8 " 文本过长无法显示 " ;
MAX_SENTENCE_SIZE = u8 " 最大文本长度 " ;
TOPMOST = u8 " 窗口总是置顶 " ;
DICTIONARY = u8 " 字典 " ;
SHOW_ORIGINAL = u8 " 显示原文 " ;
SHOW_ORIGINAL_INFO = u8R " (将不显示原文
仅 当 此 扩 展 置 于 翻 译 扩 展 之 后 使 用 时 才 有 效 ) " ;
OPACITY = u8 " 透明度 " ;
SIZE_LOCK = u8 " 锁定窗口大小 " ;
BG_COLOR = u8 " 背景颜色 " ;
TEXT_COLOR = u8 " 文本颜色 " ;
TEXT_OUTLINE = u8 " 文字边框 " ;
OUTLINE_COLOR = u8 " 边框颜色 " ;
OUTLINE_SIZE = u8 " 边框大小 " ;
OUTLINE_SIZE_INFO = u8 " 以像素为单位的大小(建议保持在字体大小的20%以下) " ;
FONT = u8 " 字体 " ;
LUA_INTRO = u8R " (--[[
ProcessSentence 是 Textractor每接收到一句文本时都会调用的函数 。
参 数 sentence : Textractor接收到的文本 ( UTF - 8 ) 。
参 数 sentenceInfo : 用 于 保 存 文 本 相 关 信 息 的 table 。
如 果 你 返 回 一 个 字 符 串 , 文 本 将 被 转 换 为 该 字 符 串 。
如 果 返 回 nil , 该 文 本 将 不 会 被 修 改 。
此 扩 展 使 用 了 几 个 Lua解释器的副本用于保证线程安全 。
在 ProcessSentence函数中对全局变量的修改可能不会生效 。
sentenceInfo有以下成员 :
" current select " : 除 非 文 本 属 于 用 户 当 前 选 择 的 文 本 线 程 , 否 则 为 0 。
" process id " : 这 句 文 本 所 属 的 进 程 id . 0 表 示 控 制 台 与 剪 贴 板 线 程 。
" text number " : 当 前 选 择 的 文 本 线 程 的 id . 这 是 在 创 建 文 本 线 程 时 逐 个 递 增 的 计 数 。 0 为 控 制 台 , 1 为 剪 贴 板 。
- - ] ]
function ProcessSentence ( sentence , sentenceInfo )
- - 在 此 处 添 加 你 的 代 码 . . .
end ) " ;
2021-01-15 09:53:57 -07:00
LOAD_SCRIPT = u8 " 加载脚本 " ;
2020-08-12 09:25:45 -06:00
LUA_ERROR = L " Lua 错误 " ;
REGEX_FILTER = u8 " 正则表达式过滤器 " ;
INVALID_REGEX = u8 " 无效的正则表达式 " ;
CURRENT_FILTER = u8 " 当前过滤中: %1 " ;
REPLACER_INSTRUCTIONS = LR " (使用 " Replace " 扩展时会使用此文件
替 换 指 令 必 须 遵 循 以 下 格 式 :
| ORIG | 原 文 | BECOMES | 替 代 文 本 | END |
替 换 指 令 之 外 的 所 有 文 本 都 会 被 忽 略 .
原 文 中 的 空 白 字 符 将 被 忽 略 , 但 是 替 代 文 本 可 以 包 含 空 白 字 符 、 换 行 符 等 .
此 文 件 必 须 使 用 Unicode字符集 ( UTF - 16 little endian ) . ) " ;
THREAD_LINKER = u8 " 线程链接器 " ;
LINK = u8 " 链接 " ;
THREAD_LINK_FROM = u8 " 需要链接的线程id " ;
THREAD_LINK_TO = u8 " 链接到的线程id " ;
HEXADECIMAL = u8 " 十六进制 " ;
# endif // SIMPLIFIED_CHINESE
# ifdef RUSSIAN
NATIVE_LANGUAGE = " Russian " ;
ATTACH = u8 " Присоединить к игре " ;
LAUNCH = u8 " Запустить игру " ;
2021-01-15 06:07:23 -07:00
CONFIG = u8 " Настройки игры " ;
2020-08-12 09:25:45 -06:00
DETACH = u8 " Отсоединить от игры " ;
FORGET = u8 " Забыть игру " ;
ADD_HOOK = u8 " Добавить хук " ;
REMOVE_HOOKS = u8 " Удалить хук(и) " ;
SAVE_HOOKS = u8 " Сохранить хук(и) " ;
SEARCH_FOR_HOOKS = u8 " Найти хуки " ;
SETTINGS = u8 " Настройки " ;
EXTENSIONS = u8 " Расширения " ;
SELECT_PROCESS = u8 " Выберете процесс " ;
ATTACH_INFO = u8R " (Если вы не видите процесс, к которому хотите присоединить, попробуйте запуск с правами администратора
В ы т а к ж е м о ж е т е в в е с т и id п р о ц е с с а ) " ;
SELECT_PROCESS_INFO = u8 " При ручном вводе имени файла процесса используйте абсолютный путь " ;
FROM_COMPUTER = u8 " Найти в проводнике " ;
PROCESSES = u8 " Процессы (*.exe) " ;
CODE_INFODUMP = u8R " (Введите код чтения
R { S | Q | V | M } [ null_length < ] [ codepage # ] @ addr
И Л И
В в е д и т е х у к - к о д
H { A | B | W | H | S | Q | V | M } [ F ] [ null_length < ] [ N ] [ codepage # ] [ padding + ] data_offset [ * deref_offset ] [ : split_offset [ * deref_offset ] ] @ addr [ : module [ : func ] ]
В с е ц и ф р ы к р о м е codepage / null_length в hexadecimal
К о д и р о в к а п о у м о л ч а н и ю - 932 ( Shift - JIS ) , н о м о ж е т б ы т ь и з м е н е н а в н а с т р о й к а х
A / B : с и м в о л к о д и р о в к и little / big endian
W : с и м в о л UTF - 16
H : Д в а hex б а й т а
S / Q / V / M : codepage / UTF - 16 / UTF - 8 / hex string
F : treat strings as full lines of text
N : н е и с п о л ь з о в а т ь к о н т е к с т
null_length : д л и н а null п р е р ы в а т е л я , и с п о л ь з у е м о г о в с т р о к е
padding : д л и н а д о б а в о ч н ы х д а н н ы х п е р е д с т р о к о й ( C struct { int64_t size ; char string [ 500 ] ; } needs padding = 8 )
О т р и ц а т е л ь н о е д л я data_offset / split_offset с с ы л а е т с я н а р е г и с т р ы
- 4 д л я EAX , - 8 д л я ECX , - C д л я EDX , - 10 д л я EBX , - 14 д л я ESP , - 18 д л я EBP , - 1 C д л я ESI , - 20 д л я EDI
- C д л я RAX , - 14 д л я RBX , - 1 C д л я RCX , - 24 д л я RDX , и т а к д а л е е д л я RSP , RBP , RSI , RDI , R8 - R15
* з н а ч и т у к а з а т е л ь р а з н и ц ы + deref_offset ) " ;
SAVE_SETTINGS = u8 " Сохранить настройки " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Перетащите сюда (.dll) файлы расширений из проводника для их добавления
( Н е р а б о т а е т п р и з а п у с к е о т а д м и н и с т р а т о р а )
П е р е т а с к и в а й т е п о с п и с к у д л я и з м е н е н и я п о р я д к а
Н а ж м и т е к л а в и ш у у д а л е н и я , ч т о б ы у д а л и т ь в ы б р а н н о е р а с ш и р е н и е ) " ;
ADD_EXTENSION = u8 " Добавить расширение " ;
INVALID_EXTENSION = u8 " %1 - неверное расширение " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " Уже существует другая версия этого расширения, перезаписать е г о ? " ;
EXTENSION_WRITE_ERROR = u8 " Н е удалось сохранить расширение" ;
USE_JP_LOCALE = u8 " Симулировать японскую локаль? " ;
FAILED_TO_CREATE_CONFIG_FILE = u8 " Н е удалось создать файл настроек \" %1 \" " ;
HOOK_SEARCH_UNSTABLE_WARNING = u8 " Поиск хуков нестабилен! Игра может закрыться с ошибкой! " ;
SEARCH_CJK = u8 " Поиск для Китайского/Японского/Корейского " ;
SEARCH_PATTERN = u8 " Шаблон поиска (hex byte array) " ;
SEARCH_DURATION = u8 " Продолжительность поиска (ms) " ;
SEARCH_MODULE = u8 " Поиск по модулю " ;
PATTERN_OFFSET = u8 " Смещение от начала шаблона " ;
MAX_HOOK_SEARCH_RECORDS = u8 " Порог поиска " ;
MIN_ADDRESS = u8 " Начальный адрес (hex) " ;
MAX_ADDRESS = u8 " Конечный адрес (hex) " ;
STRING_OFFSET = u8 " Смещение строки (hex) " ;
HOOK_SEARCH_FILTER = u8 " Результат должен совпадать с этим regex " ;
TEXT = u8 " Текст " ;
CODEPAGE = u8 " Кодировка " ;
SEARCH_FOR_TEXT = u8 " Поиск определенного текста " ;
START_HOOK_SEARCH = u8 " Начать поиск хуков " ;
SAVE_SEARCH_RESULTS = u8 " Сохранить результат поиска " ;
TEXT_FILES = u8 " Текст (*.txt) " ;
DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " Двойной клик по хуку для е г о удаления " ;
FILTER_REPETITION = u8 " Фильтр повторений " ;
AUTO_ATTACH = u8 " Авто-присоединение " ;
ATTACH_SAVED_ONLY = u8 " Авто-присоединение (только сохраненные) " ;
SHOW_SYSTEM_PROCESSES = u8 " Показать системные процесы " ;
DEFAULT_CODEPAGE = u8 " Кодировка по умолчанию " ;
FLUSH_DELAY = u8 " Задержка с б р о с а " ;
MAX_BUFFER_SIZE = u8 " Максимальный размер буфера " ;
MAX_HISTORY_SIZE = u8 " Макс. размер истории " ;
CONFIG_JP_LOCALE = u8 " Запуск с JP локалью " ;
CONSOLE = L " Консоль " ;
CLIPBOARD = L " Буфер обмена " ;
ABOUT = L " Textractor " ARCH L " в. " VERSION LR " ( автор: Artikash (email: akashmozumdar@gmail.com)
Д о м а ш н я я с т р а н и ц а : https : //github.com/Artikash/Textractor
О б у ч а ю щ е е в и д е о : https : //tinyurl.com/textractor-tutorial
С о о б щ а й т е о л ю б ы х п р о б л е м а х , ж е л а е м ы х д л я д о б а в л е н и я ф у н к ц и я х , и л и з а д а в а й т е в о п р о с ы , к а с а ю щ и е с я Textractor
С д е л а т ь э т о в ы м о ж е т е н а д о м а ш н е й с т р а н и ц е ( с е к ц и я issues ) и л и ч е р е з э л е к т р о н н у ю п о ч т у
И с х о д н ы й к о д д о с т у п е н п о л и ц е н з и и GPLv3 н а д о м а ш н е й с т р а н и ц е п р о е к т а
Е с л и э т а п р о г р а м м а в а м п о н р а в и л а с ь , р а с с к а ж и т е в с е м о н е й : ) ) " ;
CL_OPTIONS = LR " (использование: Textractor [-p{process id| " process name " }]...
п р и м е р : Textractor - p4466 - p " My Game.exe " п о п р о б у е т п р и с о е д и н и т ь с я к п р о ц е с с у с id 4466 и л и с и м е н е м My Game . exe ) " ;
UPDATE_AVAILABLE = L " Доступно обновление: загрузите е г о на https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: уже присоединен " ;
NEED_32_BIT = L " Textractor: несоответствие архитектуры: попробуйте Textractor x86 вместо этого " ;
NEED_64_BIT = L " Textractor: несоответствие архитектуры: только Textractor x64 может присоединиться к этому процессу " ;
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: слишком много хуков: невозможно вставить " ;
STARTING_SEARCH = u8 " Textractor: начало поиска " ;
NOT_ENOUGH_TEXT = u8 " Textractor: не достаточно текста для точного поиска " ;
HOOK_SEARCH_INITIALIZED = u8 " Textractor: поиск инициализирован с %zd хуками " ;
MAKE_GAME_PROCESS_TEXT = u8 " Textractor: покликайте в игре, чтобы вызвать смену текста в течение %d секунд " ;
HOOK_SEARCH_FINISHED = u8 " Textractor: поиск хуков завершен, %d результатов найдено " ;
OUT_OF_RECORDS_RETRY = 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) " ;
COULD_NOT_FIND = u8 " Textractor: невозможно найти текст " ;
TRANSLATE_TO = u8 " Переводить на " ;
TRANSLATE_SELECTED_THREAD_ONLY = u8 " Переводить текст только в выбранном потоке " ;
RATE_LIMIT_ALL_THREADS = u8 " Ограничение скорости для всех текстовых потоков " ;
RATE_LIMIT_SELECTED_THREAD = u8 " Ограничение скорости выделенного текстового потока " ;
USE_TRANS_CACHE = u8 " Использовать кеш перевода " ;
RATE_LIMIT_TOKEN_COUNT = u8 " Ограничение частоты подсчёта токенов " ;
RATE_LIMIT_TOKEN_RESTORE_DELAY = u8 " Ограничение частоты задержки восстановления токенов (мс) " ;
TOO_MANY_TRANS_REQUESTS = L " Слишком много запросов для перевода: отклонено " ;
TRANSLATION_ERROR = L " Ошибка при переводе " ;
USE_PREV_SENTENCE_CONTEXT = u8 " Использовать предыдущее предложение как контекст " ;
API_KEY = u8 " Ключ API " ;
EXTRA_WINDOW_INFO = u8R " (Правый клик для изменения настроек
Н а ж м и т е и п е р е т а щ и т е з а к р а я - д л я п е р е м е щ е н и я , и л и з а п р а в ы й - н и ж н и й у г о л - д л я и з м е н е н и я р а з м е р а ) " ;
SENTENCE_TOO_BIG = u8 " Придложение слишком длинное для отображения " ;
MAX_SENTENCE_SIZE = u8 " Максимальная длина предложения " ;
TOPMOST = u8 " Поверх всех окон " ;
DICTIONARY = u8 " Словарь " ;
DICTIONARY_INSTRUCTIONS = u8R " (Этот файл использован только для функции " С л о в а р ь " расширения Extra Window.
О н и с п о л ь з у е т с в о й ф о р м а т , с п е ц и а л ь н о д л я Textractor и н е п р е д н а з н а ч е н д л я р а ч н о г о в в о д а .
С м о т р и т е о н л а й н с л о в а р ь в э т о м ф о р м а т е ( https : //github.com/Artikash/Textractor-Dictionaries/releases - начните здесь).
В к а ч е с т в е а л ь т е р н а т и в ы , е с л и в ы п р о г р а м м и с т , в ы м о ж е т е н а п и с а т ь с к р и п т д л я к о н в е р т и р о в а н и я с л о в а р я и з д р у г о г о ф о р м а т а с и н ф о р м а ц и е й , п р и в е д е н н о й н и ж е .
П р и н а л и ч и и с л о в а р я , д л я п р о с м о т р а т е к с т а в Э к с т р а о к н е п р о с т о н а в е д и т е к у р с о р н а н е г о . М о ж н о п р о к р у т и т ь в с е с о в п а д а ю щ и е о п р е д е л е н и я .
О п р е д е л е н и я и м е ю т с л е д у ю щ и й ф о р м а т : | TERM | Hola < < ignored | TERM | hola | TERM | Bonjour | TERM | bonjour | DEFINITION | hello | END |
Т е р м и н и о п р е д е л е н и е м о г у т в к л ю ч а т ь ф о р м а т и р о в а н н ы й т е к с т ( https : //doc.qt.io/qt-5/richtext-html-subset.html), который будет соответствующе отформатирован.
П е р е ф р а з и р о в к и и м е ю т с л е д у ю щ и й ф о р м а т : | ROOT | 1 < < noun | INFLECTS TO | ( \ w * ) s | NAME | plural | END |
Textractor п р о в е р и т , с о в п а д а е т л и т е р м и н с р е г е к с о м п е р е ф р а з и р о в к и и п р и с о в п а д е н и и б у д е т р е к у р с и в н о и с к а т ь к о р н е в о й т е р м и н . .
К о р н е в о й т е р м и н г е н е р и р у е т с я п у т е м з а м е н ы к а ж д о г о ч и с л а н а с о о т в е т с т в у ю щ у ю regex г р у п п у з а х в а т а ( п р и э т о м 0 з а м е н я е т с я н а п о л н о е с о в п а д е н и е ) .
Э т о т п р о ц е с с м о ж е т л е г к о п р и в е с т и к б е с к о н е ч н ы м ц и к л а м и / и л и п е р е п о л н е н и ю с т е к а . В а ш а з а д а ч а - и з б е ж а т ь э т о г о .
regex п е р е ф р а з и р о в о к и с п о л ь з у е т QRegularExpression ( https : //doc.qt.io/qt-5/qregularexpression.html) unicode синтаксис.
Textractor о т о б р а з и т к о н е ч н ы й к о р н е в о й т е р м и н , а т а к ж е в с е п е р е ф р а з и р о в к и , и с п о л ь з у е м ы е д л я п о л у ч е н и я э т о г о к о р н е в о г о т е р м и н а .
О д н а к о , т е к с т в т е р м и н е п о с л е < < и г н о р и р у е т с я п р и о т о б р а ж е н и и . Э т о с д е л а н о д л я х р а н е н и я и н ф о р м а ц и и о ч а с т и р е ч и .
У э т о г о ф а й л а к о д и р о в к а д о л ж н а б ы т ь UTF - 8. ) " ;
SHOW_ORIGINAL = u8 " Исходный текст " ;
SHOW_ORIGINAL_INFO = u8R " (Исходный текст будет скрыт
Р а б о т а е т т о л ь к о е с л и э т о р а с ш и р е н и е и с п о л ь з у е т с я п о с л е р а с ш и р е н и я п е р е в о д а ) " ;
SIZE_LOCK = u8 " Фиксированный размер " ;
OPACITY = u8 " Прозрачность " ;
BG_COLOR = u8 " Цвет заднего фона " ;
TEXT_COLOR = u8 " Цвет текста " ;
TEXT_OUTLINE = u8 " Обводка текста " ;
OUTLINE_COLOR = u8 " Цвет обводки " ;
OUTLINE_SIZE = u8 " Толщина обводки " ;
OUTLINE_SIZE_INFO = u8 " Размер в пикселях (рекомендуется оставить как 20% от размера шрифта) " ;
FONT = 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 ) " ;
2021-01-15 09:53:57 -07:00
LOAD_SCRIPT = u8 " Загрузить скрипт " ;
2020-08-12 09:25:45 -06:00
LUA_ERROR = L " Ошибка Lua: %s " ;
REGEX_FILTER = u8 " Фильтр Regex " ;
INVALID_REGEX = u8 " Неверный regex " ;
CURRENT_FILTER = u8 " Сейчас фильтруется: %1 " ;
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
# ifdef INDONESIAN
NATIVE_LANGUAGE = " Indonesian " ;
ATTACH = u8 " Tempelkan kedalam game " ;
LAUNCH = u8 " Mulai game " ;
DETACH = u8 " Lepaskan dari game " ;
ADD_HOOK = u8 " Tambahkan hook " ;
SAVE_HOOKS = u8 " Simpan hook " ;
SETTINGS = u8 " Pengaturan " ;
EXTENSIONS = u8 " Ekstensi " ;
SELECT_PROCESS = u8 " Pilih Proses " ;
ATTACH_INFO = u8R " (Jika kamu tidak dapat melihat proses yang akan ditempelkan, coba menjalankan dengan mode administrator
Kamu juga dapat mengetik process id game yang akan ditempel ) " ;
FROM_COMPUTER = u8 " Pilih dari komputer " ;
PROCESSES = u8 " Proses (*.exe) " ;
SAVE_SETTINGS = u8 " Simpan pengaturan " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Drag and drop file ekstensi (.dll) kedalam sini dari komputer kamu untuk menambah ekstensi
( Tidak bekerja dalam mode administrator )
Drag and drop ekstensi di dalam list untuk mengatur list
Tekan delete pada ekstensi yang dipilih untuk menghapus ekstensi ) " ;
USE_JP_LOCALE = u8 " Gunakan locale jepang? " ;
DEFAULT_CODEPAGE = u8 " Codepage standar " ;
FLUSH_DELAY = u8 " Flush Delay " ;
MAX_BUFFER_SIZE = u8 " Max Buffer Size " ;
CONSOLE = L " Konsol " ;
CLIPBOARD = L " Papan clipboard " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( dibuat oleh saya: Artikash (email: akashmozumdar@gmail.com)
Halaman project : https : //github.com/Artikash/Textractor
Video tutorial : https : //tinyurl.com/textractor-tutorial
Tolong hubungi saya jika kamu memiliki masalah terkait masalah , permintaan fitur , atau pertanyaan terkait Textractor
Kamu dapat melakukannya lewat halaman utama project ( bagian issues ) atau lewat email
Source code tersedia dibawah lisensi GPLv3 di halaman utama project
Jika kamu menyukai project ini , tolong sebarluaskan project ini : ) ) " ;
UPDATE_AVAILABLE = L " Pembaharuan tersedia: pembaharuan dapat di unduh di https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: sudah ditempelkan " ;
INJECT_FAILED = L " Textractor: menempelkan gagal " ;
LAUNCH_FAILED = L " Textractor: game tidak dapat dijalankan " ;
INVALID_CODE = L " Textractor: kode tidak sesuai " ;
INVALID_CODEPAGE = L " Textractor: tidak dapat mengkonversi teks (Codepage tidak sesuai?) " ;
PIPE_CONNECTED = u8 " Textractor: pipe tersambung " ;
INSERTING_HOOK = u8 " Textractor: memasukkan hook: %s " ;
REMOVING_HOOK = u8 " Textractor: menghapus hook: %s " ;
HOOK_FAILED = u8 " Textractor: gagal memasukkan hook " ;
TOO_MANY_HOOKS = u8 " Textractor: terlalu banyak hook: tidak dapat memasukkan hook " ;
NOT_ENOUGH_TEXT = u8 " Textractor: tidak cukup teks untuk melakukan pencarian secara akurat " ;
FUNC_MISSING = u8 " Textractor: tidak ada fungsi " ;
MODULE_MISSING = u8 " Textractor: tidak ada modul " ;
GARBAGE_MEMORY = u8 " Textractor: memory terus berganti, tidak dapat dibaca " ;
SEND_ERROR = u8 " Textractor: Send ERROR (kemungkinan H-Code salah) " ;
READ_ERROR = u8 " Textractor: Reader ERROR (Kemungkinan R-Code salah) " ;
HIJACK_ERROR = u8 " Textractor: Hijack ERROR " ;
COULD_NOT_FIND = u8 " Textractor: tidak dapat menemukan teks " ;
TOO_MANY_TRANS_REQUESTS = L " Terlalu banyak permintaan terjemahan: menolak untuk menerjemahkan " ;
TRANSLATION_ERROR = L " Terjadi kesalahan ketika menerjemahkan " ;
EXTRA_WINDOW_INFO = u8R " (Klik kanan untuk merubah pengaturan
Klik dan tarik pinggiran jendela untuk memindahkan , atau sudut kanan bawah untuk mengatur ukuran jendela ) " ;
BG_COLOR = u8 " Warna latar " ;
TEXT_COLOR = u8 " Warna teks " ;
TOPMOST = u8 " Selalu berada di atas " ;
REGEX_FILTER = u8 " Filter regex " ;
INVALID_REGEX = u8 " Regex tidak sesuai " ;
CURRENT_FILTER = u8 " Regex yang digunakan sekarang: %1 " ;
# endif // INDONESIAN
# ifdef ITALIAN
NATIVE_LANGUAGE = " Italian " ;
ATTACH = u8 " Collega al gioco " ;
LAUNCH = u8 " Avvia gioco " ;
2021-01-15 06:07:23 -07:00
CONFIG = u8 " Configura gioco " ;
2020-08-12 09:25:45 -06:00
DETACH = u8 " Scollega dal gioco " ;
FORGET = u8 " Dimentica gioco " ;
ADD_HOOK = u8 " Aggiungi gancio " ;
REMOVE_HOOKS = u8 " Rimuovi gancio/ci " ;
SAVE_HOOKS = u8 " Salva gancio/ci " ;
SEARCH_FOR_HOOKS = u8 " Ricerca ganci " ;
SETTINGS = u8 " Impostazioni " ;
EXTENSIONS = u8 " Estenzioni " ;
SELECT_PROCESS = u8 " Seleziona processo " ;
ATTACH_INFO = u8R " (Se non vedi il processo che desideri allefare, prova ad eseguire come amministratore
Puoi anche digitare l ' ID del processo ) " ;
SELECT_PROCESS_INFO = u8 " Se digiti manualmente il nome file del processo, si prega di utilizzare il percorso assoluto " ;
FROM_COMPUTER = u8 " Seleziona dal computer " ;
PROCESSES = u8 " Processi (*.exe) " ;
CODE_INFODUMP = u8R " (Digita il codice di lettura
R { S | Q | V | M } [ null_length < ] [ codepage # ] @ addr
OR
Digita il codice gancio
H { A | B | W | H | S | Q | V | M } [ F ] [ null_length < ] [ N ] [ codepage # ] [ padding + ] data_offset [ * deref_offset ] [ : split_offset [ * deref_offset ] ] @ addr [ : module [ : func ] ]
Tutti i numeri eccetto codepage / null_lengt nell ' esadecimale
Codepage di base è 932 ( Shift - JIS ) ma può essere cambiato nelle impostazioni
A / B : carattere del codepage little / big endian
W : carattere UTF - 16
H : Due byte esadecimali
S / Q / V / M : stringa codepage / UTF - 16 / UTF - 8 / hex
F : tratta le stringhe come linee di testo complete
N : non usa il contesto
null_lengt : lunghezza del terminatore null utilizzato per la stringa
padding : lunghezza del data padding prima della stringa ( C struct { int64_t size ; char string [ 500 ] ; } needs padding = 8 )
Negativi per data_offset / split_offset consulta i registri
- 4 for EAX , - 8 for ECX , - C for EDX , - 10 for EBX , - 14 for ESP , - 18 for EBP , - 1 C for ESI , - 20 for EDI
- C for RAX , - 14 for RBX , - 1 C for RCX , - 24 for RDX , and so on for RSP , RBP , RSI , RDI , R8 - R15
* significa puntatore di deferenziazione + deref_offset ) " ;
SAVE_SETTINGS = u8 " Salva impostazioni " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Per aggiugnere un estenzione, clicca con il tasto destro la lista estenzioni
Alternativamente , trascina e rilascia il file estenzione dal tuo computer
Per riordinare le estenzioni , trascinali dentro la lista
( le estenzioni sono usate dall ' alto verso il basso : l ' ordine è IMPORTANTE )
Per rimuovere un estenzione , selezionala e premi rimuovi ) " ;
ADD_EXTENSION = u8 " Aggiungi estenzione " ;
INVALID_EXTENSION = u8 " %1 è un estenzione non valida " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " Un'altra versione di questa estenzione esiste già, desidera cancellarla e sovvrascriverla? " ;
EXTENSION_WRITE_ERROR = u8 " Impossibile salvare l'estenzione " ;
USE_JP_LOCALE = u8 " Emulare l'impostazione locale giapponese? " ;
FAILED_TO_CREATE_CONFIG_FILE = u8 " Impossibile creare il file di configurazione \" %1 \" " ;
HOOK_SEARCH_UNSTABLE_WARNING = u8 " Cercare i ganci è instabile! Preparati a un crash del tuo gioco! " ;
SEARCH_CJK = u8 " Cerca per Cinese/Giapponese/Coreano " ;
SEARCH_PATTERN = u8 " Cerca schema (matrice byte in esa) " ;
SEARCH_DURATION = u8 " Cerca durata (ms) " ;
SEARCH_MODULE = u8 " Cerca dentro il modulo " ;
PATTERN_OFFSET = u8 " Offset dall'inizio dello schema " ;
MAX_HOOK_SEARCH_RECORDS = u8 " Limite risultati di ricerca " ;
MIN_ADDRESS = u8 " Indirizzo minimo (esa) " ;
MAX_ADDRESS = u8 " Indirizzo massimo (esa) " ;
STRING_OFFSET = u8 " Offset stringa (esa) " ;
HOOK_SEARCH_FILTER = u8 " I risultati devono combaciare con questa espreressione regolare " ;
TEXT = u8 " Testo " ;
CODEPAGE = u8 " Codepage " ;
SEARCH_FOR_TEXT = u8 " Cerca per un testo specifico " ;
START_HOOK_SEARCH = u8 " Avvia ricerca gancio " ;
SAVE_SEARCH_RESULTS = u8 " Salva i risultati ricerca " ;
TEXT_FILES = u8 " Testo (*.txt) " ;
DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " Doppio click su un gancio per rimuoverlo " ;
FILTER_REPETITION = u8 " Filtro ripetizione " ;
AUTO_ATTACH = u8 " Allega automaticamente " ;
ATTACH_SAVED_ONLY = u8 " Allega automaticamente (solamente salvato) " ;
SHOW_SYSTEM_PROCESSES = u8 " Mostra i processi di sistema " ;
DEFAULT_CODEPAGE = u8 " Codepage di base " ;
FLUSH_DELAY = u8 " Ritardo flush " ;
MAX_BUFFER_SIZE = u8 " Massima dimensione buffer " ;
MAX_HISTORY_SIZE = u8 " Massima dimensione cronologia " ;
CONFIG_JP_LOCALE = u8 " Avvia con il JP locale " ;
CONSOLE = L " Console " ;
CLIPBOARD = L " Appunti " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( creato da me: Artikash (email: akashmozumdar@gmail.com)
Pagina principale del progetto : https : //github.com/Artikash/Textractor
Video tutorial : https : //tinyurl.com/textractor-tutorial
Contattatemi per ogni problema , richiesta futura , o domande legate a Textractor
Puoi farlo attraverso la pagina principale del progetto ( sezione issues ) o via email
Il codice sorgente è disponibile sotto il GPLv3 nella pagina principale
Al momento sono in cerca di un nuovo lavoro : contattatemi per email se conoscete qualcuno che ingaggia periti informatici statunitensi
Se ti piace questo progetto , parlane con tutti per favore : ) ) " ;
CL_OPTIONS = LR " (utilizzo: Textractor [-p{process id| " process name " }]...
esempio : Textractor - p4466 - p " My Game.exe " sta tentando di inniettare i processi con l ' ID 4466 o con il nome My Game . exe ) " ;
UPDATE_AVAILABLE = L " Aggiornamento disponibile: scaricala da https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: già inniettato " ;
NEED_32_BIT = L " Textractor: incompatibilità di architettura: solo Textractor x86 può inniettare questo processo " ;
NEED_64_BIT = L " Textractor: incompatibilità di architettura: solo Textractor x64 può inniettare questo processo " ;
INJECT_FAILED = L " Textractor: impossibile inniettare " ;
LAUNCH_FAILED = L " Textractor: impossibile avviare " ;
INVALID_CODE = L " Textractor: codice invalido " ;
INVALID_CODEPAGE = L " impossibile convertire il testo (codepage invalido?) " ;
PIPE_CONNECTED = u8 " Textractor: tubo connesso " ;
INSERTING_HOOK = u8 " Textractor: aggiungi gancio: %s " ;
REMOVING_HOOK = u8 " Textractor: rimuovi gancio: %s " ;
HOOK_FAILED = u8 " Textractor: inserimento gancio non riuscito " ;
TOO_MANY_HOOKS = u8 " Textractor: troppi ganci: impossibile inserirli " ;
STARTING_SEARCH = u8 " Textractor: avvia la ricerca " ;
NOT_ENOUGH_TEXT = u8 " Textractor: testo insufficente per la ricerca accurata " ;
HOOK_SEARCH_INITIALIZED = u8 " Textractor: ricerca inizializzata con %zd ganci " ;
MAKE_GAME_PROCESS_TEXT = u8 " Textractor: clicca intorno al gioco per forzarlo nel testo del processo durante i prossimi %d secondi " ;
HOOK_SEARCH_FINISHED = u8 " ricerca ganci conclusa, %d risultati trovati " ;
OUT_OF_RECORDS_RETRY = u8 " registri di ricerca esauriti, riprova se i risultati sono scarsi (conto registri di base aumentato) " ;
FUNC_MISSING = u8 " Textractor: funzione non presente " ;
MODULE_MISSING = u8 " Textractor: modulo non presente " ;
GARBAGE_MEMORY = u8 " Textractor: memoria è in costante cambiamento, inutila la lettura " ;
SEND_ERROR = u8 " Textractor: Send ERROR (probabilmente un H-code incorretto) " ;
READ_ERROR = u8 " Textractor: Reader ERROR (probabilmente un R-code incorretto) " ;
HIJACK_ERROR = u8 " Textractor: ERRORE di Hijack " ;
COULD_NOT_FIND = u8 " Textractor: impossibile trovare il testo " ;
TRANSLATE_TO = u8 " Traduci a " ;
TRANSLATE_SELECTED_THREAD_ONLY = u8 " Traduci solo il thread del testo selezionato " ;
RATE_LIMIT_ALL_THREADS = u8 " Rate limit tutti i thread del testo " ;
RATE_LIMIT_SELECTED_THREAD = u8 " Rate limit thread del testo selezionato " ;
USE_TRANS_CACHE = u8 " Utilizza la cache di traduzione " ;
RATE_LIMIT_TOKEN_COUNT = u8 " Numero di token del Rate Limit " ;
RATE_LIMIT_TOKEN_RESTORE_DELAY = u8 " Token del rate limit ripristina il ritardo (ms) " ;
TOO_MANY_TRANS_REQUESTS = L " Rate limit superato: rifiuta per fare altre richieste di traduzione " ;
TRANSLATION_ERROR = L " Errore durante la traduzione " ;
USE_PREV_SENTENCE_CONTEXT = u8 " Utilizza la precedente sentenza come contesto " ;
API_KEY = u8 " Chiave API " ;
EXTRA_WINDOW_INFO = u8R " (Tasto destro per cambiare le impostazioni
Clicca e trascina i bordi della finestra per muoverla , oppure nell ' angolo in basso a destra per ridimensionare ) " ;
SENTENCE_TOO_BIG = u8 " Sentenza troppo grande da visualizzare " ;
MAX_SENTENCE_SIZE = u8 " Dimensione massima sentenza " ;
TOPMOST = u8 " Sempre in primo piano " ;
DICTIONARY = u8 " Dizionario " ;
DICTIONARY_INSTRUCTIONS = u8R " (Questo file è utilizzato solo per la funzione " Dizionario " dell'estenzione Extra Window.
Utilizza un formato personalizzato spedifico per Textractor e non è pensato per essere critto manualmente .
Dovresti cercare per un dizionario in questo formato online ( https : //github.com/Artikash/Textractor-Dictionaries/releases è un buon posto per cominciare).
In alternativa , se sei un progammatore , puoi scrivere uno script per convertire un dizionario da un ' altro formato con le informazioni sottostanti .
Una volta che hai il dizionario , cerca qualche testo in Extra Window , posizionaci sopra . Puoi scorrere fra tutte le definizioni corrispondenti .
Le definizioni sono formattate cosi : | TERM | Hola < < ignored | TERM | hola | TERM | Bonjour | TERM | bonjour | DEFINITION | hello | END |
Il termine e la definizione può includere rich text ( https : //doc.qt.io/qt-5/richtext-html-subset.html) che sarà formattato a dovere.
Le inflessioni sono formattate cosi : | ROOT | 1 < < noun | INFLECTS TO | ( \ w * ) s | NAME | plural | END |
Textractor controllerà se un termine corrisponde il regex dell ' inflessione e se cosi fosse , cercherà ricorsivamente per la radice .
La radice è generata rimpiazziando ogni numero con il regex del gruppo di cattura corrispondente ( con 0 sostituito dall ' intera corrispondenza ) .
Questo processo può risultare facilmente in cicli infiniti e / o in stack overflow . È il tuo compito impedirlo .
Il regex dell ' inflessione utilizza la sintassi unicode QRegularExpression ( https : //doc.qt.io/qt-5/qregularexpression.html).
Textractor visualizzerà la radice finale cosi come tutte le inflessioni utilizzate per ottenere quella radice .
Tuttavia , il testo in un termine dopo < < è ignorato quando è visualizzato . Questo è pensato per conservare l ' informazione sulle parti del discorso .
Questo file deve essere codificato in UTF - 8. ) " ;
SHOW_ORIGINAL = u8 " Testo originale " ;
SHOW_ORIGINAL_INFO = u8R " (Testo originale non sarà mostrato
Funziona solo se questa estenzione è usata direttamente dopo un ' estensione di traduzione ) " ;
SIZE_LOCK = u8 " Lock delle dimensione " ;
OPACITY = u8 " Opacità " ;
BG_COLOR = u8 " Colore dello sfondo " ;
TEXT_COLOR = u8 " Colore del testo " ;
TEXT_OUTLINE = u8 " Contorno del testo " ;
OUTLINE_COLOR = u8 " Colore del contorno " ;
OUTLINE_SIZE = u8 " Dimensione del contorno " ;
OUTLINE_SIZE_INFO = u8 " Dimensione in pixel (consigliato di rimanere sotto il 20% della dimensione del font) " ;
FONT = u8 " Font " ;
LUA_INTRO = u8R " (--[[
ProcessSentence è chiamato ogni volta che Textractor riceva una sentenza di testo .
Param sentence : sentenza ricevuta da Textractor ( UTF - 8 ) .
Param sentenceInfo : tavola di informazioni miste sulla sentenza .
Se fai il return di una stringa , la sentenza di trasformera in quella stringa .
Se fai il return di nulla , la sentenza non sarà modificata .
Questa estenzione utilizza diverse copie dell ' interprete Lua per la sicurezza del thread .
Modifiche alle variabili globali da ProcessSentence non sono garantite di persistere .
Proprietà in sentenceInfo :
" current select " : 0 a meno che la sentenza è nel thread di testo attualmente scelto dall ' utente .
" process id " : id del processo che da cui proviene la sentenza . 0 per console e per appunti .
" text number " : numero dell ' attuale thread di testo . Conta uno ad uno quando i thread di testo sono creati . 0 per console , 1 per appunti .
- - ] ]
function ProcessSentence ( sentence , sentenceInfo )
- - Tuo codice qui . . .
end ) " ;
2021-01-15 09:53:57 -07:00
LOAD_SCRIPT = u8 " Carica script " ;
2020-08-12 09:25:45 -06:00
LUA_ERROR = L " Errore Lua: %s " ;
REGEX_FILTER = u8 " Filtro regex " ;
INVALID_REGEX = u8 " Regex non valido " ;
CURRENT_FILTER = u8 " Filtraggio attuale: %1 " ;
REPLACER_INSTRUCTIONS = LR " (Questo file fa qualcosa solo quando l'estenzione " Replacer " è utilizzata.
I comandi di rimpiazzo devono essere formattati cosi :
| ORIG | testo_originale | BECOMES | testo_sostituito | END |
Tutto il testo in questo file all ' infuori di un comando di rimpiazzo è ignorato .
La spaziatura nel testo_originale è ignorato , ma testo_sostituito può contenere spaziature , ritorni a capo , ecc .
Questo file deve essere codificato in Unicode ( UTF - 16 Little Endian ) . ) " ;
THREAD_LINKER = u8 " Collegatore di thread " ;
LINK = u8 " Collegamento " ;
THREAD_LINK_FROM = u8 " Numero di thread da cui collegarsi " ;
THREAD_LINK_TO = u8 " Numero di thread a cui collegarsi " ;
HEXADECIMAL = u8 " Esadecimale " ;
# endif // ITALIAN
# ifdef PORTUGUESE
NATIVE_LANGUAGE = " Portuguese " ;
ATTACH = u8 " Anexar ao Jogo " ;
LAUNCH = u8 " Iniciar Jogo " ;
DETACH = u8 " Desconectar do Jogo " ;
ADD_HOOK = u8 " Adicionar um Hook " ;
SAVE_HOOKS = u8 " Salvar Hook(s) " ;
SETTINGS = u8 " Opções " ;
EXTENSIONS = u8 " Extensões " ;
SELECT_PROCESS = u8 " Selecionar Processo " ;
ATTACH_INFO = u8R " (Se você não encontrar o processo o qual deseja anexar a, tente iniciar com permissão de Administrador. Você também pode digitar a ID do processo) " ;
FROM_COMPUTER = u8 " Busque no Computador " ;
PROCESSES = u8 " Executaveis (*.exe) " ;
SAVE_SETTINGS = u8 " Salvar opções " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Arraste e solte a extensão (.dll) aqui para adicioná-la.
( Não funciona se estiver rodando como Administrador )
Arraste e solte dentro da lista para reordená - la .
( As extensões são utilizadas de cima para baixo : a ORDEM IMPORTA . )
Pressione delete com uma extensão selecionada para removê - la . ) " ;
INVALID_EXTENSION = u8 " %1 não é uma extensão válida. " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " Outra versão dessa extensão já existe, você gostaria de deletar e reescrevê-la? " ;
EXTENSION_WRITE_ERROR = u8 " Falha na gravação da extensão " ;
USE_JP_LOCALE = u8 " Emular o idioma Japonês? " ;
SHOW_SYSTEM_PROCESSES = u8 " Mostrar Processos do sistema " ;
DEFAULT_CODEPAGE = u8 " página de código padrão " ;
FLUSH_DELAY = u8 " Delay do Flush " ;
MAX_BUFFER_SIZE = u8 " Tamanho Máximo do Buffer " ;
MAX_HISTORY_SIZE = u8 " Tamanho Máximo do Histórico " ;
CONSOLE = L " Terminal " ;
CLIPBOARD = L " Área de Transferência " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( Feito por mim: Artikash (e-mail: akashmozumdar@gmail.com)
Homepage do Projeto : https : //github.com/Artikash/Textractor
Vídeo Tutorial : https : //tinyurl.com/textractor-tutorial
Por favor , em caso de problemas , requisição de recurso e / ou funções e de dúvidas , entrar em contato comigo . Use o Inglês para se comunicar .
Você pode fazê - lo por meio da Homepage do Projeto ( na aba " Issues " ) ou via E - mail .
O código - fonte se encontra disponível na Homepage do projeto sob a licença GPLv3 .
Se você gostou desse projeto , divulgue a todos : ) ) " ;
UPDATE_AVAILABLE = L " Atualização disponível: baixe em https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: já está injetado " ;
NEED_32_BIT = L " Textractor: arquitetura errada: apenas o Textractor x86 pode injetar neste processo " ;
NEED_64_BIT = L " Textractor: arquitetura errada: apenas o Textractor x64 pode injetar neste processo " ;
INJECT_FAILED = L " Textractor: não pode injetar " ;
LAUNCH_FAILED = L " Textractor: não pode iniciar " ;
INVALID_CODE = L " Textractor: código inválido " ;
INVALID_CODEPAGE = L " Textractor: não pode converter o texto (página de código inválida?) " ;
PIPE_CONNECTED = u8 " Textractor: pipe conectado " ;
INSERTING_HOOK = u8 " Textractor: inserindo hook: %s " ;
REMOVING_HOOK = u8 " Textractor: removendo hook: %s " ;
HOOK_FAILED = u8 " Textractor: falha na inserção do hook " ;
TOO_MANY_HOOKS = u8 " Textractor: há hooks de mais: não é possível inserir mais " ;
STARTING_SEARCH = u8 " Textractor: iniciando busca " ;
NOT_ENOUGH_TEXT = u8 " Textractor: não há texto suficiente para uma buscar precisa " ;
HOOK_SEARCH_INITIALIZED = u8 " Textractor: busca inicializada com %zd hooks " ;
HOOK_SEARCH_FINISHED = u8 " Textractor: busca por hooks finalizada, %d resultados encontrados " ;
FUNC_MISSING = u8 " Textractor: função não encontrada " ;
MODULE_MISSING = u8 " Textractor: módulo não presente " ;
SEND_ERROR = u8 " Textractor: ERRO no envio (provavelmente um H-code incorreto) " ;
READ_ERROR = u8 " Textractor: ERRO na leitura (provavelmente um R-code incorreto) " ;
COULD_NOT_FIND = u8 " Textractor: não foi possível encontrar texto " ;
TOO_MANY_TRANS_REQUESTS = L " Foram feitos pedidos de tradução demais: recusa na feitura de mais pedidos " ;
TRANSLATION_ERROR = L " Erro enquanto traduzindo " ;
EXTRA_WINDOW_INFO = u8R " (Clique com o botão direito para mudar as opções
Clique e arraste nas beiradas da janela para mover , ou no canto inferior direito para redimessionar ) " ;
TOPMOST = u8 " Sempre em cima " ;
SHOW_ORIGINAL = u8 " Texto original " ;
SHOW_ORIGINAL_INFO = u8R " (Texto original não será mostrado
Apenas funciona se essa extensão for usada diretamente após uma extensão de tradução ) " ;
SIZE_LOCK = u8 " Travar o Tamanho " ;
BG_COLOR = u8 " Cor de fundo " ;
TEXT_COLOR = u8 " Cor do Texto " ;
FONT = u8 " Fonte " ;
REGEX_FILTER = u8 " Fíltro regex " ;
INVALID_REGEX = u8 " Regex inválido " ;
CURRENT_FILTER = u8 " Atualmente filtrando: %1 " ;
REPLACER_INSTRUCTIONS = LR " (Este arquivo apenas faz algo quando a extensão " Replacer " está sendo utilizada.
Comandos de substituição devem ser formatos da seguinte maneira :
| ORIG | texto_original | BECOMES | texto_substituido | END |
Todo texto fora de um comando de substituição é ignorado .
Espaços contidos no texto original serão ignorados , mas o texto substituído pode conter espaços , novas línhas , etc .
Esse arquívo deve ser codifícado em ( UTF - 16 little endian ) . ) " ;
THREAD_LINKER = u8 " Ligador de Threads " ;
LINK = u8 " Ligar " ;
THREAD_LINK_FROM = u8 " Número do thread para ligar de " ;
THREAD_LINK_TO = u8 " Número do thread para ligar para " ;
# endif // PORTUGUESE
# ifdef THAI
NATIVE_LANGUAGE = " Thai " ;
ATTACH = u8 " เชื่อมเกม " ;
LAUNCH = u8 " เริ่มเกม " ;
DETACH = u8 " ยกเลิกการเชื่อม " ;
ADD_HOOK = u8 " เพิ่มตัวเกี่ยว " ;
SAVE_HOOKS = u8 " บันทึกตัวเกี่ยว " ;
SETTINGS = u8 " ตั่งค่า " ;
EXTENSIONS = u8 " ส่วนขยาย " ;
SELECT_PROCESS = u8 " เลือก process " ;
ATTACH_INFO = u8R " (ถ้าไม่สามารถเลือก process ที่ต้องการจะเชื่อม, ลองเปิดโปรแกรมโดยให้สิทธิผู้ดูแลระบบ) " ;
FROM_COMPUTER = u8 " เลือกจากเครื่องของคุณ " ;
PROCESSES = u8 " Process(ระบบดำเนินการ) (*.exe) " ;
SAVE_SETTINGS = u8 " บันทึกการตั่งค่า " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (เพื่อที่จะเพิ่มส่วนขยาย คลิกขวาที่ตารางส่วนขยาย หรือ ลากและวางส่วนขยายจากคอมพิวเตอร์ของคุณ, ถ้าหากต้องการเรียงส่วนขยาย ลากและวางข้อมูลภายในตารางเพื่อเรียง ส่วนขยายมีลำดับการแสดงผลจากบนลงล่าง) " ;
USE_JP_LOCALE = u8 " ต้องการรันในระบบปฏิบัติการญีั่ปุุ่นหรือไม่? " ;
DEFAULT_CODEPAGE = u8 " หน้าโปรแกรมเดิม " ;
FLUSH_DELAY = u8 " ช่่วงระหว่างการล้างข้อมูล " ;
MAX_BUFFER_SIZE = u8 " ขนาดที่พักข้อมูลสูงสุด " ;
CONSOLE = L " แผงควบคุม " ;
CLIPBOARD = L " ข้อมูลชั่วคราว " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( ได้ถูกพัฒนาโดย: Artikash (email: akashmozumdar@gmail.com)
ห น ้ า เ ว ็ บ ไ ซ ต ์ ห ล ั ก : https : //github.com/Artikash/Textractor
ว ี ด ี โ อ ส อ น ว ิ ถ ี ใ ช ้ : https : //tinyurl.com/textractor-tutorial
ถ ้ า ห า ก พ บ เ จ อ ป ั ญ ห า ส า ม า ร ถ ต ิ ด ต ่ อ ม า ไ ด ้ ร ว ม ไ ป ถ ึ ง ก า ร แ น ะ น ำ ฟ ั ง ก ์ ช ั ้ น ท ี ่ อ ย า ก ใ ห ้ ม ี ห ร ื อ ค ำ ถ า ม เ ก ี ่ ย ว ก ั บ โ ป ร แ ก ร ม Textractor ส า ม า ร ถ ต ิ ด ต ่ อ
ผ ่ า น ห น ้ า เ ว ็ บ ไ ซ ต ์ ห ล ั ก ผ ่ า น ท า ง ห น ้ า Issue ห ร ื อ ท า ง อ ี เ ม ล ล ์
Source code ส า ม า ร ถ ห า ไ ด ้ จ า ก ส ่ ว น ข อ ง GPLv3 ท ี ่ ห น ้ า ห ล ั ก ข อ ง เ ว ็ บ ไ ซ ต ์ ) " ;
UPDATE_AVAILABLE = L " มีอัพเดทใหม่ : สามารถดาวน์โหลดได้จาก https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: ได้ถูกเชื่อมแล้ว " ;
NEED_32_BIT = L " ระบบปฏิบัติการ Textractor ไม่ถูกต้อง : เฉพาะ Textractor x86 เท่านั่นสามารถเชื่อม Process นี้ได้ " ;
NEED_64_BIT = L " ระบบปฏิบัติการ Textractor ไม่ถูกต้อง : เฉพาะ Textractor x64 เท่านั่นสามารถเชื่อม Process นี้ได้ " ;
INJECT_FAILED = L " Textractor: ไม่สามารถเชื่อมได้ " ;
LAUNCH_FAILED = L " Textractor: ไม่สามารถเริ่มได้ " ;
INVALID_CODE = L " Textractor: รหัสไม่ถูกต้อง " ;
INVALID_CODEPAGE = L " Textractor: ไม่สามารถปรับตัวอักษรได้ (Codepage ไม่ถูกต้อง?) " ;
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: ไม่พบ module " ;
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: ไม่สามารถหาข้อมูลตัวอักษรได้ " ;
TOO_MANY_TRANS_REQUESTS = L " มีการเรียกขอมากเกินกำหนด : ปฏิเสธที่จะทำการขอคำแปลต่อ " ;
TRANSLATION_ERROR = L " เกิดข้อผิดพลาดระหว่างการแปลภาษา " ;
EXTRA_WINDOW_INFO = u8R " (คลิกขวาเพื่อที่จะตั่งค่า
ค ล ิ ก แ ล ะ ล า ก ท า ง ข ว า บ น ข อ ง ห น ้ า ต ่ า ง เ พ ื ่ อ ค ว บ ค ุ ม ห น ้ า ต ่ า ง ห ร ื อ ข ว า ล ่ า ง เ พ ื ่ อ ท ี ่ จ ะ ป ร ั บ ข น า ด ) " ;
BG_COLOR = u8 " สีพื่นหลัง " ;
TEXT_COLOR = u8 " สีตัวอักษร " ;
TOPMOST = u8 " หน้าต่างอยู่บนโปรแกรมอื่น " ;
SHOW_ORIGINAL = u8 " ข้อความดังเดิมก่อนแปลภาษา " ;
SIZE_LOCK = u8 " ปรับให้ไม่สามารถเปลี่ยนขนาดได้ " ;
FONT = u8 " ฟ้อนต์ " ;
# endif // THAI
# ifdef KOREAN
NATIVE_LANGUAGE = " Korean " ;
ATTACH = u8 " 게임에 부착 " ;
LAUNCH = u8 " 게임 실행 " ;
DETACH = u8 " 게임에서 탈착 " ;
FORGET = u8 " 게임 저장정보 삭제 " ;
ADD_HOOK = u8 " 후킹주소 추가 " ;
REMOVE_HOOKS = u8 " 후킹주소 삭제 " ;
SAVE_HOOKS = u8 " 후킹주소 저장 " ;
SEARCH_FOR_HOOKS = u8 " 후킹주소 찾기 " ;
SETTINGS = u8 " 설정 " ;
EXTENSIONS = u8 " 확장기능 " ;
SELECT_PROCESS = u8 " 프로세스 선택 " ;
ATTACH_INFO = u8R " (부착하려는 게임이 보이지 않는다면, 관리자 권한으로 실행해보세요. 프로세스 id를 입력 할 수도 있습니다.) " ;
SELECT_PROCESS_INFO = u8 " 직접 프로세스파일 이름을 타이핑한다면, 정확한 경로를 입력하세요 " ;
FROM_COMPUTER = u8 " 컴퓨터로부터 선택 " ;
PROCESSES = u8 " 프로세스 (*.exe) " ;
SAVE_SETTINGS = u8 " 설정 저장 " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (확장기능을 추가하려면 리스트에서 오른쪽 클릭하거나
폴 더 에 서 드 래 그 하 세 요 .
확 장 기 능 순 서 를 변 경 하 려 면 리 스 트 에 서 드 래 그 합 니 다 .
( 확 장 기 능 은 위 부 터 순 서 대 로 작 동 합 니 다 . )
확 장 기 능 을 삭 제 하 려 면 delete 를 누 르 세 요 . ) " ;
ADD_EXTENSION = u8 " 확장기능 추가 " ;
INVALID_EXTENSION = u8 " %1 은 유효하지 않은 확장기능입니다. " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " 다른버전의 동일한 확장기능이 존재합니다. 덮어씌우시겠습니까? " ;
EXTENSION_WRITE_ERROR = u8 " 확장기능을 저장하는데 실패하였습니다. " ;
USE_JP_LOCALE = u8 " 일본어 로케일로 에뮬레이트합니까? " ;
HOOK_SEARCH_UNSTABLE_WARNING = u8 " 후킹주소 찾기는 불안정합니다! 게임의 강제종료에 대비하세요! " ;
SEARCH_CJK = u8 " 한국어/일본어/중국어 찾기 " ;
CODEPAGE = u8 " 코드페이지 " ;
SEARCH_FOR_TEXT = u8 " 특정 텍스트 찾기 " ;
START_HOOK_SEARCH = u8 " 주소찾기 시작 " ;
SAVE_SEARCH_RESULTS = u8 " 찾기결과 저장 " ;
DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " 더블클릭으로 주소 제거 " ;
FILTER_REPETITION = u8 " 반복문 필터 " ;
AUTO_ATTACH = u8 " 자동 부착 " ;
ATTACH_SAVED_ONLY = u8 " 자동 부착 (저장된 게임만) " ;
SHOW_SYSTEM_PROCESSES = u8 " 시스템 프로세스 보기 " ;
DEFAULT_CODEPAGE = u8 " 기본 코드페이지 " ;
FLUSH_DELAY = u8 " 플러시 딜레이 " ;
MAX_BUFFER_SIZE = u8 " 최대 버퍼 크기 " ;
MAX_HISTORY_SIZE = u8 " 최대 히스토리 크기 " ;
CONSOLE = L " 콘솔 " ;
CLIPBOARD = L " 클립보드 " ;
UPDATE_AVAILABLE = L " 업데이트가 있습니다:https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: 이미 부착되어 있습니다 " ;
NEED_32_BIT = L " Textractor: 아키텍쳐 불일치: Textractor x86을 사용해야 합니다 " ;
NEED_64_BIT = L " Textractor: 아키텍쳐 불일치: Textractor x64을 사용해야 합니다 " ;
INJECT_FAILED = L " Textractor: 부착할 수 없습니다 " ;
LAUNCH_FAILED = L " Textractor: 실행할 수 없습니다 " ;
INVALID_CODE = L " Textractor: 유효하지 않은 코드 " ;
INVALID_CODEPAGE = L " Textractor: 텍스트를 변환할 수 없습니다 (유효하지 않은 코드페이지?) " ;
TOO_MANY_TRANS_REQUESTS = L " 너무 많은 번역요청: 요청 거부됨 " ;
TRANSLATION_ERROR = L " 번역 에러 " ;
EXTRA_WINDOW_INFO = u8R " (오른쪽 클릭으로 설정변경
드 래 그 로 창 이 동 이 가 능 하 고 , 오 른 쪽 모 서 리 에 서 크 기 조 절 이 가 능 ) " ;
TOPMOST = u8 " 항상 위 " ;
SHOW_ORIGINAL = u8 " 원문 " ;
SHOW_ORIGINAL_INFO = u8R " (원문이 출력되지 않음
이 확 장 기 능 이 번 역 확 장 기 능 이 후 에 사 용 될 때 만 동 작 함 ) " ;
SIZE_LOCK = u8 " 사이즈 고정 " ;
BG_COLOR = u8 " 배경색 " ;
TEXT_COLOR = u8 " 글씨색 " ;
FONT = u8 " 폰트 " ;
REGEX_FILTER = u8 " 정규식 필터 " ;
INVALID_REGEX = u8 " 유효하지 않은 정규식 " ;
CURRENT_FILTER = u8 " 현재 필터중: %1 " ;
REPLACER_INSTRUCTIONS = LR " (이 파일은 " Replacer " 확장기능이 작동중일때만 사용됨.
Replacement commands는 아 래 형 식 을 따 라 야 함 :
| ORIG | original_text | BECOMES | replacement_text | END |
이 파 일 에 서 replacement command 바 깥 의 텍 스 트 는 무 시 됨 .
original_text의 빈 공 간 은 무 시 되 지 만 , replacement_text는 공 백 과 엔 터 등 을 포 함 가 능 .
이 파 일 은 유 니 코 드 로 저 장 되 어 야 만 함 ( UTF - 16 little endian ) . ) " ;
# endif // KOREAN
# ifdef FRENCH
NATIVE_LANGUAGE = " French " ;
ATTACH = u8 " Attacher le jeu " ;
LAUNCH = u8 " Lancer le jeu " ;
2021-01-15 06:07:23 -07:00
CONFIG = u8 " Configure le jeu " ;
2020-08-12 09:25:45 -06:00
DETACH = u8 " Detacher du jeu " ;
FORGET = u8 " Oublier le jeu " ;
ADD_HOOK = u8 " Ajouter un hook " ;
REMOVE_HOOKS = u8 " Enlever un hook(s) " ;
SAVE_HOOKS = u8 " Sauvegarder un hook(s) " ;
SEARCH_FOR_HOOKS = u8 " Rechercher des hooks " ;
SETTINGS = u8 " Paramètres " ;
EXTENSIONS = u8 " Extensions " ;
SELECT_PROCESS = u8 " Selectionner le processus " ;
ATTACH_INFO = u8R " (Si vous ne voyez pas le processus que vous souhaitez joindre, essayez de l'exécuter avec les droits d'administrateur
Vous pouvez é galement saisir l ' ID de processus ) " ;
SELECT_PROCESS_INFO = u8 " Si vous saisissez manuellement le nom du fichier de processus, veuillez utiliser le chemin exact " ;
2020-09-29 20:34:08 -04:00
FROM_COMPUTER = u8 " Sélectionner depuis l'ordinateur " ;
2020-08-12 09:25:45 -06:00
PROCESSES = u8 " Processus (*.exe) " ;
2020-09-29 20:34:08 -04:00
CODE_INFODUMP = u8R " (Entrez le read code
2020-08-12 09:25:45 -06:00
R { S | Q | V | M } [ null_length < ] [ codepage # ] @ addr
2020-09-29 20:34:08 -04:00
OU
Entrez le hook code
2020-08-12 09:25:45 -06:00
H { A | B | W | H | S | Q | V | M } [ F ] [ null_length < ] [ N ] [ codepage # ] [ padding + ] data_offset [ * deref_offset ] [ : split_offset [ * deref_offset ] ] @ addr [ : module [ : func ] ]
2020-09-29 20:34:08 -04:00
Tous les nombres sauf codepage / null_length sont en hexadécimal
Le codepage par défaut est 932 ( Shift - JIS ) mais cela peut ê tre modifié dans les paramètres
2020-08-12 09:25:45 -06:00
A / B : codepage char little / big endian
W : UTF - 16 char
H : Two hex bytes
S / Q / V / M : codepage / UTF - 16 / UTF - 8 / hex string
F : treat strings as full lines of text
2020-09-29 20:34:08 -04:00
N : n ' utilise pas de contexte
2020-08-12 09:25:45 -06:00
null_length : length of null terminator used for string
padding : length of padding data before string ( C struct { int64_t size ; char string [ 500 ] ; } needs padding = 8 )
2020-09-29 20:34:08 -04:00
Les valeures négatives pour data_offset / split_offset font références aux registres
- 4 pour EAX , - 8 pour ECX , - C pour EDX , - 10 pour EBX , - 14 pour ESP , - 18 pour EBP , - 1 C pour ESI , - 20 pour EDI
- C pour RAX , - 14 pour RBX , - 1 C pour RCX , - 24 pour RDX , and so on for RSP , RBP , RSI , RDI , R8 - R15
2020-08-12 09:25:45 -06:00
* means dereference pointer + deref_offset ) " ;
SAVE_SETTINGS = u8 " Sauvergarder les paramètres " ;
EXTEN_WINDOW_INSTRUCTIONS = u8R " (Pour ajouter une extension, cliquez avec le bouton droit sur la liste des extensions
Vous pouvez é galement faire glisser et déposer le fichier d ' extension depuis votre ordinateur
Pour réorganiser les extensions , faites - les glisser et déposez - les dans la liste
( Les extensions sont utilisées de haut en bas : l ' ordre est IMPORTANT )
Pour supprimer une extension , sélectionnez - la et appuyez sur supprimer ) " ;
ADD_EXTENSION = u8 " Ajouter une extension " ;
INVALID_EXTENSION = u8 " %1 C'est une extension invalide " ;
CONFIRM_EXTENSION_OVERWRITE = u8 " Une autre version de cette extension existe déjà. Voulez-vous la supprimer et la remplacer? " ;
EXTENSION_WRITE_ERROR = u8 " Impossible d'enregistrer l'extension " ;
USE_JP_LOCALE = u8 " Émuler les paramètres régionaux japonais? " ;
FAILED_TO_CREATE_CONFIG_FILE = u8 " Impossible de créer le fichier de configuration \" %1 \" " ;
HOOK_SEARCH_UNSTABLE_WARNING = u8 " La recherche de crochets est instable! Soyez prêt à ce que votre jeu plante! " ;
2020-09-29 20:34:08 -04:00
SEARCH_CJK = u8 " Rechercher pour Chinois/Japonais/Coréen " ;
2020-08-12 09:25:45 -06:00
SEARCH_PATTERN = u8 " Modèle de recherche (tableau d'octets hexadécimaux) " ;
2020-09-29 20:34:08 -04:00
SEARCH_DURATION = u8 " Durée de la recherche (ms) " ;
2020-08-12 09:25:45 -06:00
SEARCH_MODULE = u8 " Recherche sans module " ;
PATTERN_OFFSET = u8 " Décalage par rapport au début du modèle " ;
MAX_HOOK_SEARCH_RECORDS = u8 " Limite du résultat de la recherche " ;
MIN_ADDRESS = u8 " Minimum d'adresses (hex) " ;
MAX_ADDRESS = u8 " Maximum d'adresses (hex) " ;
STRING_OFFSET = u8 " Décalage de la chaîne (hex) " ;
2020-09-29 20:34:08 -04:00
HOOK_SEARCH_FILTER = u8 " Les résultats doivent correspondre à ce regex " ;
2020-08-12 09:25:45 -06:00
TEXT = u8 " Texte " ;
CODEPAGE = u8 " Code de page " ;
SEARCH_FOR_TEXT = u8 " Rechercher un texte spécifique " ;
START_HOOK_SEARCH = u8 " Lancer la recherche de hook " ;
SAVE_SEARCH_RESULTS = u8 " Sauvergarder les résultats de la recherche " ;
TEXT_FILES = u8 " Texte (*.txt) " ;
2020-09-29 20:34:08 -04:00
DOUBLE_CLICK_TO_REMOVE_HOOK = u8 " Double cliquer sur un hook pour l'enlever " ;
2020-08-12 09:25:45 -06:00
FILTER_REPETITION = u8 " Répétition de filtre " ;
AUTO_ATTACH = u8 " Attachement Automatique " ;
2020-09-29 20:34:08 -04:00
ATTACH_SAVED_ONLY = u8 " Attachement Automatique (Sauvergardé seulement) " ;
2020-08-12 09:25:45 -06:00
SHOW_SYSTEM_PROCESSES = u8 " Montrer les processus système " ;
DEFAULT_CODEPAGE = u8 " Page de code de base " ;
FLUSH_DELAY = u8 " Retard de vidage " ;
MAX_BUFFER_SIZE = u8 " Taille maximale du tampon " ;
MAX_HISTORY_SIZE = u8 " Taille d'historique maximale " ;
CONFIG_JP_LOCALE = u8 " Lancement avec les paramètres régionaux JP " ;
CONSOLE = L " Console " ;
CLIPBOARD = L " Presse-papier " ;
ABOUT = L " Textractor " ARCH L " v " VERSION LR " ( Fait par moi: Artikash (email: akashmozumdar@gmail.com)
Page d ' acceuil du projet : https : //github.com/Artikash/Textractor
Vidéo tuto : https : //tinyurl.com/textractor-tutorial
FAQ : https : //github.com/Artikash/Textractor/wiki/FAQ
Veuillez me contacter pour tout problème , demande de fonctionnalité ou question concernant Textractor
Vous pouvez le faire via la page d ' accueil du projet ( section problèmes ) ou par e - mail
Code source disponible sous GPLv3 sur la page d ' accueil du projet
Si vous aimez ce projet , parlez - en à tout le monde : ) ) " ;
CL_OPTIONS = LR " (usage: Textractor [-p{process id| " process name " }]...
example : Textractor - p4466 - p " My Game.exe " tries to inject processes with id 4466 or with name My Game . exe ) " ;
UPDATE_AVAILABLE = L " Mise à jour disponible: téléchargez-la depuis https://github.com/Artikash/Textractor/releases " ;
ALREADY_INJECTED = L " Textractor: déjà injecté " ;
NEED_32_BIT = L " Textractor: incompatibilité d'architecture: seul Textractor x86 peut injecter ce processus " ;
NEED_64_BIT = L " Textractor: incompatibilité d'architecture: seul Textractor x64 peut injecter ce processus " ;
INJECT_FAILED = L " Textractor: ne peut pas injecter " ;
LAUNCH_FAILED = L " Textractor: ne peut pas lancer " ;
INVALID_CODE = L " Textractor: code invalide " ;
INVALID_CODEPAGE = L " Textractor: impossible de convertir le texte (page de code non valide?) " ;
PIPE_CONNECTED = u8 " Textractor: tuyau connecté " ;
INSERTING_HOOK = u8 " Textractor: insertion du hook: %s " ;
REMOVING_HOOK = u8 " Textractor: enlève le hook: %s " ;
HOOK_FAILED = u8 " Textractor: n'a pas réussi à insérer un hook " ;
TOO_MANY_HOOKS = u8 " Textractor: trop de hooks: impossible d'insérer " ;
STARTING_SEARCH = u8 " Textractor: démarrage de la recherche " ;
NOT_ENOUGH_TEXT = u8 " Textractor: pas assez de texte pour effectuer une recherche précise " ;
HOOK_SEARCH_INITIALIZED = u8 " Textractor: la recherche a été initialisé avec %zd hooks " ;
MAKE_GAME_PROCESS_TEXT = u8 " Textractor: veuillez cliquer dans le jeu pour le forcer à traiter le texte lors de la prochaine %d seconds " ;
HOOK_SEARCH_FINISHED = u8 " Textractor: la recherche du hook est finie, %d results found " ;
OUT_OF_RECORDS_RETRY = u8 " Textractor: hors des enregistrements de recherche, veuillez réessayer si les résultats sont médiocres (le nombre d'enregistrements par défaut a augmenté) " ;
FUNC_MISSING = u8 " Textractor: function non présente " ;
MODULE_MISSING = u8 " Textractor: module non présente " ;
GARBAGE_MEMORY = u8 " Textractor: mémoire en constante évolution, inutile à lire " ;
SEND_ERROR = u8 " Textractor: envoyer ERREUR (comme un H-code instable/incorrect) " ;
READ_ERROR = u8 " Textractor: Lire ERREUR (comme un R-code incorrect) " ;
HIJACK_ERROR = u8 " Textractor: ERREUR Hijack " ;
COULD_NOT_FIND = u8 " Textractor: ne peut pas trouver le texte " ;
TRANSLATE_TO = u8 " Traduire à " ;
TRANSLATE_SELECTED_THREAD_ONLY = u8 " Traduire uniquement le thread sélectionné " ;
RATE_LIMIT_ALL_THREADS = u8 " Taux limite tout les threads de texte " ;
RATE_LIMIT_SELECTED_THREAD = u8 " Limite de débit du thread de texte sélectionné " ;
USE_TRANS_CACHE = u8 " Utiliser le cache de traduction " ;
RATE_LIMIT_TOKEN_COUNT = u8 " Nombre de tokens du limiteur de débit " ;
RATE_LIMIT_TOKEN_RESTORE_DELAY = u8 " Délai de restauration du token du limiteur de débit (ms) " ;
TOO_MANY_TRANS_REQUESTS = L " Limite de taux dépassée: refus de faire plus de demande de traduction " ;
TRANSLATION_ERROR = L " Une erreur est survenue pendant la traduction " ;
USE_PREV_SENTENCE_CONTEXT = u8 " Utiliser la phrase précédente comme contexte " ;
API_KEY = u8 " API key " ;
EXTRA_WINDOW_INFO = u8R " (Clic droit pour modifier les paramètres
Cliquez et faites glisser sur les bords de la fenêtre pour vous déplacer ou dans le coin inférieur droit pour redimensionner ) " ;
SENTENCE_TOO_BIG = u8 " Phrase trop grande pour être affichée " ;
MAX_SENTENCE_SIZE = u8 " Taille maximale de la phrase " ;
TOPMOST = u8 " Toujours au dessus " ;
DICTIONARY = u8 " Dictionnaire " ;
DICTIONARY_INSTRUCTIONS = u8R " (Ce fichier est utilisé uniquement pour la fonction " Dictionnaire " de l'extension Extra Window.
Il utilise un format personnalisé spécifique à Textractor et n ' est pas destiné à ê tre é crit manuellement .
Vous devriez rechercher un dictionnaire dans ce format en ligne ( https : //github.com/Artikash/Textractor-Dictionaries/releases est un bon point de dépar).
Alternativement , si vous ê tes programmeur , vous pouvez é crire un script pour convertir un dictionnaire d ' un autre format avec les informations ci - dessous .
Une fois que vous avez un dictionnaire , pour rechercher du texte dans Extra Window , survolez - le . Vous pouvez faire défiler toutes les définitions correspondantes .
Les definitions sont formattés comme ceci : | TERM | Hola < < ignored | TERM | hola | TERM | Bonjour | TERM | bonjour | DEFINITION | hello | END |
Le terme et la définition peuvent inclure du texte enrichi ( https : //doc.qt.io/qt-5/richtext-html-subset.html) qui sera correctement formaté.
Les inflexions sont formatées comme ceci : | ROOT | 1 < < noun | INFLECTS TO | ( \ w * ) s | NAME | plural | END |
Textractor vérifiera si un terme correspond à l ' expression rationnelle d ' inflexion et si c ' est le cas , recherchera récursivement le terme racine .
Le terme racine est généré en remplaçant chaque nombre par le groupe de capture regex correspondant ( 0 é tant remplacé par la correspondance entière ) .
Ce processus peut facilement entraîner des boucles infinies et / ou des débordements de pile . C ' est votre travail d ' é viter cela .
L ' expression regex d ' inflexion utilise la syntaxe unicode QRegularExpression ( https : //doc.qt.io/qt-5/qregularexpression.html).
Textractor affichera le terme racine final ainsi que toutes les inflexions utilisées pour arriver à ce terme racine .
Cependant , le texte d ' un terme après < < est ignoré lors de l ' affichage . Ceci est destiné à stocker des informations sur une partie de la parole .
Ce fichier doit ê tre encodé en UTF - 8. ) " ;
SHOW_ORIGINAL = u8 " Texte Original " ;
SHOW_ORIGINAL_INFO = u8R " (Le texte d'origine ne sera pas affiché
Fonctionne uniquement si cette extension est utilisée directement après une extension de traduction ) " ;
SIZE_LOCK = u8 " Verouiller la taille " ;
OPACITY = u8 " Opacité " ;
2020-09-29 20:34:08 -04:00
BG_COLOR = u8 " Couleur d'arrière-plan " ;
TEXT_COLOR = u8 " Couleur du texte " ;
2020-08-12 09:25:45 -06:00
TEXT_OUTLINE = u8 " Contour du texte " ;
OUTLINE_COLOR = u8 " Couleur du contour " ;
OUTLINE_SIZE = u8 " Taille du contour " ;
OUTLINE_SIZE_INFO = u8 " Taille en pixels (recommandé de rester en dessous de 20% de la taille de la police) " ;
FONT = u8 " Police " ;
LUA_INTRO = u8R " (--[[
ProcessSentence est appelée chaque fois que Textractor reçoit une phrase de texte .
Phrase param : phrase reçue par Textractor ( UTF - 8 ) .
Param sentenceInfo : tableau d ' informations diverses sur la phrase .
Si vous retournez une chaîne , la phrase sera transformée en cette chaîne .
Si vous renvoyez zéro , la phrase ne sera pas modifiée .
Cette extension utilise plusieurs copies de l ' interpréteur Lua pour la sécurité des threads .
Les modifications apportées aux variables globales à partir de ProcessSentence ne sont pas garanties de persister .
Properties in sentenceInfo :
" current select " : 0 unless sentence is in the text thread currently selected by the user .
" process id " : process id that the sentence is coming from . 0 for console and clipboard .
" text number " : number of the current text thread . Counts up one by one as text threads are created . 0 for console , 1 for clipboard .
- - ] ]
function ProcessSentence ( sentence , sentenceInfo )
- - Your code here . . .
end ) " ;
2021-01-15 09:53:57 -07:00
LOAD_SCRIPT = u8 " Charger le script " ;
2020-08-12 09:25:45 -06:00
LUA_ERROR = L " Erreur Lua: %s " ;
REGEX_FILTER = u8 " Filtre regex " ;
INVALID_REGEX = u8 " Regex invalide " ;
CURRENT_FILTER = u8 " En train de filtrer: %1 " ;
REPLACER_INSTRUCTIONS = LR " (Ce fichier ne fait rien lorsque l'extension " Replacer " est utilisée.
Les commandes de remplacement doivent ê tre formatées comme :
| ORIG | original_text | BECOMES | replacement_text | END |
Tout le texte de ce fichier en dehors d ' une commande de remplacement est ignoré .
Un caret ( ^ ) agit comme un caractère générique qui correspond à tout autre caractère unique .
Les espaces dans original_text sont ignorés , mais remplacement_text peut contenir des espaces , des nouvelles lignes , etc .
Ce fichier doit ê tre encodé en Unicode ( UTF - 16 Little Endian ) . ) " ;
THREAD_LINKER = u8 " Lien du thread " ;
LINK = u8 " Lien " ;
THREAD_LINK_FROM = u8 " Nombre du thread du lien depuis " ;
THREAD_LINK_TO = u8 " Nombre du thread du lien a " ;
2020-09-29 20:34:08 -04:00
HEXADECIMAL = u8 " Hexadécimal " ;
2020-08-12 09:25:45 -06:00
# endif // FRENCH
2020-11-02 06:27:21 -07:00
} ;
2020-08-12 09:25:45 -06:00
2021-01-15 06:07:23 -07:00
static auto _ = ( Localize ( ) , 0 ) ;