add korean translation

This commit is contained in:
Akash Mozumdar 2019-10-03 15:27:41 -04:00
parent 07bd54d726
commit 822c2ae233
2 changed files with 177 additions and 22 deletions

77
README_KR.md Normal file
View File

@ -0,0 +1,77 @@
# Textractor
![How it looks](screenshot.png)
[Español](README_ES.md) ● [简体中文](README_SC.md) ● [日本語](README_JP.md) ● [Русский](README_RU.md) ● [Bahasa](README_ID.md) ● [Português](README_PT.md) ● [ไทย](README_TH.md)
**Textractor** (a.k.a. NextHooker)는 Windows/Wine에서 작동하는 [ITHVNR](http://www.hongfire.com/forum/showthread.php/438331-ITHVNR-ITH-with-the-VNR-engine)을 기반으로 한 오픈소스 x86/x64 비디오게임 텍스트 후커 입니다.<br>
빠른 사용법의 이해를 위해 [tutorial video](https://tinyurl.com/textractor-tutorial) 를 참고하세요.
[![Donate](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&currency_code=USD)
## 다운로드
[여기](https://github.com/Artikash/Textractor/releases)에서 Textractor 최신버전을 받으실 수 있습니다.<br>
최신버전의 ITHVNR은 [여기](https://drive.google.com/open?id=13aHF4uIXWn-3YML_k2YCDWhtGgn5-tnO)서 받을 수 있습니다.<br>
Textractor 실행오류를 겪는다면 vcredist를 실행해 보시기 바랍니다.
## 특징
- 높은 확장성과 커스터마이즈
- 많은 게임엔진의 자동 후킹이 가능 (몇몇의 VNR로 후킹 불가능한 경우도 포함)
- /H "hook" 코드를 통한 후킹 (많은 AGTH 코드가 지원됨)
- /R "read" 코드를 통해 직접적으로 텍스트 추출이 가능
## 지원
버그나, 후킹에 문제가 있는 게임이나, 기능요청 혹은 제안들을 알려주시기 바랍니다.<br>
특정 게임의 문제해결을 위하여 해당게임을 무료로 받을 수 있는 링크나 [Steam](https://steamcommunity.com/profiles/76561198097566313/)을 통한 제공을 받고 있습니다.
## 확장기능
어떻게 확장기능을 만드는지 [Example Extension project](https://github.com/Artikash/ExampleExtension) 을 확인해 보시기 바랍니다.<br>
확장기능 폴더를 확인해 확장기능들이 어떤 역할들을 하는지 알아보세요.
## 기여
모든 기여자들에게 감사하고 있습니다! 코드베이스에 궁금한 점이 있다면 akashmozumdar@gmail.com 에 이메일 해 주시기 바랍니다.
## 컴파일링
*Textractor*를 컴파일링 하기 전에, Qt version 5.11과 CMake를 포함한 Visual Studio가 있어야 합니다.<br>
그 이후로는, 단순히 Visual Studio를 통해 폴더를 열고 빌드하는 것으로 실행이 가능합니다.
## 프로젝트 아키텍쳐
The host (see GUI/host folder) injects texthook.dll (created from the texthook folder) into the target process and connects to it via 2 pipe files.<br>
Host writes to hostPipe, texthook writes to hookPipe.<br>
texthook waits for the pipe to be connected, then injects a few instructions into any text outputting functions (e.g. TextOut, GetGlyphOutline) that cause their input to be sent through the pipe.<br>
Additional information about hooks is exchanged via shared memory.<br>
The text that the host receives through the pipe is then processed a little before being dispatched back to the GUI.<br>
Finally, the GUI dispatches the text to extensions before displaying it.
## 개발자들
이하의 리스트에서 링크변경이 필요하다면 연락주시기 바랍니다.
- Textractor mainly made by [Me](https://github.com/Artikash) with the help of
- [DoumanAsh](https://github.com/DoumanAsh)
- [Niakr1s](https://github.com/Niakr1s)
- [tinyAdapter](https://github.com/tinyAdapter)
- Spanish translation by [scese250](https://github.com/scese250)
- Turkish translation by niisokusu
- Simplified Chinese translation by [tinyAdapter](https://github.com/tinyAdapter)
- Russian translation by [TokcDK](https://github.com/TokcDK)
- Indonesian translation by [Hawxone](https://github.com/Hawxone)
- Portuguese translation by [TsumiHokiro](https://github.com/TsumiHokiro)
- Thai translation by [azmadoppler](https://github.com/azmadoppler)
- ITHVNR updated by [mireado](https://github.com/mireado), [Eguni](https://github.com/Eguni), and [IJEMIN](https://github.com/IJEMIN)
- ITHVNR originally made by [Stomp](http://www.hongfire.com/forum/member/325894-stomp)
- VNR engine made by [jichi](https://archive.is/prJwr)
- ITH updated by [Andys](https://github.com/AndyScull)
- ITH originally made by [kaosu](http://www.hongfire.com/forum/member/562651-kaosu)
- Locale Emulator library made by [xupefei](https://github.com/xupefei)
- MinHook library made by [TsudaKageyu](https://github.com/TsudaKageyu)
## Special Thanks
- Everybody adding issues!

122
text.cpp
View File

@ -3,6 +3,7 @@
#else
#define ARCH "x86"
#endif
const char* ATTACH = u8"Attach to game";
const char* LAUNCH = u8"Launch game";
const char* DETACH = u8"Detach from game";
@ -424,8 +425,8 @@ I'm currently looking for a new job: email me if you know anyone hiring US softw
EXTRA_WINDOW_INFO = u8R"(Правый клик для изменения настроек
Нажмите и перетащите за края - для перемещения, или за правый-нижний угол - для изменения размера)";
TOPMOST = u8"Поверх всех окон";
SHOW_ORIGINAL = u8"Исходный текст";
SHOW_ORIGINAL_INFO = u8R"(Исходный текст будет скрыт
SHOW_ORIGINAL = u8"Исходный текст";
SHOW_ORIGINAL_INFO = u8R"(Исходный текст будет скрыт
Работает только если это расширение используется после расширения перевода)";
SIZE_LOCK = u8"Фиксированный размер";
BG_COLOR = u8"Цвет заднего фона";
@ -572,8 +573,8 @@ Estou a procura de um novo trabalho: por favor enviê-me uma mensagem de e-mail
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";
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";
@ -596,29 +597,29 @@ Se você gostou desse projeto, divulgue a todos :))";
SELECT_LANGUAGE_MESSAGE = u8"Qual lingua deve o/a %1 traduzir para?";
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
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
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.
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";
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
@ -647,10 +648,10 @@ Esse arquívo deve ser codifícado em (UTF-16 little endian).)";
Textractor
Issue
Source code GPLv3 )";
UPDATE_AVAILABLE = L"มีอัพเดทใหม่ : สามารถดาวน์โหลดได้จาก https://github.com/Artikash/Textractor/releases";
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 นี้ได้";
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: รหัสไม่ถูกต้อง";
@ -682,5 +683,82 @@ Source code สามารถหาได้จากส่วนของ GPLv
FONT = u8"ฟ้อนต์";
#endif // THAI
#ifdef 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: 텍스트를 변환할 수 없습니다 (유효하지 않은 코드페이지?)";
SELECT_LANGUAGE = u8"언어 선택";
SELECT_LANGUAGE_MESSAGE = u8"어떤 언어로 %1 번역하시겠습니까?";
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
return 0;
}();