본문 바로가기

쓰기

* 본 문서는 MultiPlugin 2 에서부터 지원하는 필터 플러그인 추가규격을 설명한 문서입니다.
   본 규격은 아랄트랜스 0.2의 기본 규격은 아니지만 기본 규격의 확장판 정도로 생각하면 되겠습니다.
   아랄트랜스 0.2의 플러그인 규격은 http://aralgood.com/zbxe/23098 에서 참조하실 수 있습니다.
(2008.10.12 추가)
* 2008.10.08 아랄트랜스 업데이트로 본 규격은 아랄트랜스 정식 규격의 일부로 편입되었습니다.
1. 폴더

필터 플러그인은 아랄트랜스 설치폴더 내 Filter  폴더에 설치되어야 합니다.


2. DLL 함수 익스포트(Export) 규격

먼저, 필터는 다음과 같은 아랄트랜스 0.2 의 기본 플러그인 함수를 익스포트 하고 있어야 합니다.

BOOL __stdcall OnPluginInit(HWND hSettingWnd, LPSTR cszSettingStringBuffer)

BOOL __stdcall OnPluginOption()

BOOL __stdcall OnPluginClose()

그리고, 필터 플러그인만의 다음과 같은 추가 함수를 익스포트 하여야 합니다.

BOOL __stdcall PreTranslate(LPCSTR cszInJapanese, LPSTR szOutJapanese, int nBufSize)
BOOL __stdcall PostTranslate(LPCSTR cszInKorean, LPSTR szOutKorean, int nBufSize)


3. 익스포트 함수 설명

아랄트랜스 0.2의 기본 플러그인 함수에 대한 설명은 아랄트랜스 0.2 플러그인 규격을 참조하세요.

a. PreTranslate
PreTranslate는 실제 번역이 시작되기 전에 전처리를 할 때 발생합니다.
인자는 다음과 같습니다.
   - LPCSTR cszInJapanese : 번역 전 일본어 원문입니다.
   - LPSTR szOutJapanese : 필터링 이후 문장을 출력하는 버퍼입니다.
   - int nBufSize : szOutJapanese 버퍼의 크기입니다.

리턴값은 다음과 같습니다.
  - TRUE : 필터링이 성공하였음을 뜻합니다. 실제 원문을 그대로 돌려주는 경우에라도 TRUE 를 넘겨주어야 합니다.
  - FALSE : 필터링이 실패하였음을 뜻합니다. FALSE 가 리턴되면 MultiPlugin 은 전체 필터-번역 플러그인 체인이 실패한 것으로 간주하고 아랄트랜스 측에 "번역 실패" 를 리턴합니다.

주의점은 다음과 같습니다.
  - 원문을 굳이 필터링하지 않더라도 최소한 원문을 버퍼에 복사해주고 TRUE 를 리턴해주어야 번역이 제대로 실행됩니다.

b. PostTranslate

PostTranslate는 실제 번역이 끝나고 후처리를 할 때 발생합니다.
인자는 다음과 같습니다.
   - LPCSTR cszInKorean: 번역된 한국어 원문입니다.
   - LPSTR szOutKorean : 필터링 이후 문장을 출력하는 버퍼입니다.
   - int nBufSize : szOutKorean 버퍼의 크기입니다.

리턴값은 다음과 같습니다.
  - TRUE : 필터링이 성공하였음을 뜻합니다. 실제 원문을 그대로 돌려주는 경우에라도 TRUE 를 넘겨주어야 합니다.
  - FALSE : 필터링이 실패하였음을 뜻합니다. FALSE 가 리턴되면 MultiPlugin 은 전체 필터-번역 플러그인 체인이 실패한 것으로 간주하고 아랄트랜스 측에 "번역 실패" 를 리턴합니다.

주의점은 다음과 같습니다.
  - 원문을 굳이 필터링하지 않더라도 최소한 원문을 버퍼에 복사해주고 TRUE 를 리턴해주어야 번역이 제대로 실행됩니다.

4. 함수 예

BOOL  __stdcall PreTranslate(LPCSTR cszInJapanese, LPSTR szOutJapanese, int nBufSize)
{
    // TODO: 번역 전처리를 한다.
    if (RemoveSpace(cszInJapanese, szOutJapanese, nBufSize) == TRUE)
        return TRUE; 
    // 작업 성공시 TRUE, 실패시 FALSE 반환
    return FALSE;
}
BOOL  __stdcall PostTranslate(LPCSTR cszInKorean, LPSTR szOutKorean, int nBufSize)
{
    // TODO: 번역 후처리를 한다.
    // 특별한 처리를 하지 않더라도 문자열을 복사해 돌려주어야 한다.
    lstrcpyA(szOutKorean, cszInKorean);
 
    // 작업 성공시 TRUE, 실패시 FALSE 반환
    return TRUE;
}

 

조회 수 :
9376
등록일 :
2008.07.26
16:49:41
엮인글 :
https://arallab.hided.net/4367/1e3/trackback
게시글 주소 :
https://arallab.hided.net/board_documents/4367
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일
공지 [SVN] AralTrans 0.3 - All Plugins [6] 아랄 10340   2009-10-23 2011-10-19 00:01
공지 [SVN] AralTrans 0.2 - Full Source [2] 아랄 16054   2008-07-22 2010-10-31 01:18
12 AralTrans v0.3 Renewal Project [1] file 아랄 5901   2011-04-17 2011-04-17 18:42
 
11 [0.2] OnPluginInit에서 MessageBox 출력시 주의! Hide_D 6809   2009-12-11 2010-06-30 16:54
이전 이슈에서도 다룬적이 있습니다만. 플러그인이 로드된 시점에서 이 플러그인의 부모 객체(즉 게임)가 제대로 로드 되지 않았을 수 있으므로, Init단에서 에러 등의 이유로 MessageBox를 사용할 경우 부모 객체를 NULL로 주더라도 Sleep(2000); 과 같이 지...  
10 STL iterator 사용시 주의사항 [1] 아랄 7553   2009-10-04 2010-06-30 16:54
<발생한 문제> map 에서 erase 호출 시 잘못된 메모리 참조가 발생. <원인> stl container의 iterator들은 링크드 리스트로 관리되고 있는데, 이들은 함수나 블럭의 시작/종료 시점에서 constructor/destructor 가 자동으로 호출된다. 하지만 goto문이나 inlin...  
9 한 함수에 후킹 포인트를 2개 이상 잡을 수 없습니다. [3] Hide_D 7695   2009-07-20 2010-06-30 16:54
적는 것을 깜빡 하고 있었는데, ATCode나 기타 방법들을 사용할 때, 한 함수 내에서 후킹 포인트는 단 하나만 잡아야 합니다. 아랄트랜스 0.2에서는 후킹과 동시에 실행파일 원본과 그 원본의 복사본을 준비해 놓고 원본의 후킹포인트를 jmp를 사용해서 번역 ...  
8 [부정확] 플러그인에 쓰레드를 사용할때 [2] Hide_D 7450   2009-01-07 2010-06-30 16:54
제 추측이지만, 아랄트랜스의 플러그인 로드 시간은 (게임의) 프로세스 동작 -> 플러그인 로드 -> (게임의) 윈도우 생성 으로 매우 빠른것으로 보이며, 플러그인의 종료 시간은 (게임의) 윈도우 파괴 -> 플러그인 종료(?) -> (게임의) 프로세스 파괴 로, 윈도...  
7 아랄 컨테이너 창이 hidden상태일 수 있으므로 MessageBox 주의! [2] 아랄 7256   2008-11-07 2010-06-30 16:54
플러그인 인자로 넘겨주는 아랄 컨테이너 창의 핸들. 기본 설정이 트레이로 실행되게끔 되어 있을 시 아랄 컨테이너 창은 화면에 보이지 않는다. 그런데도 아랄 컨테이너 창의 핸들을 부모로 삼아 메세지 창 같은 것을 띄우게 되면 절대 보이지 않으며 게임은...  
6 파일 다이얼로그를 띄운 후 작업폴더가 바뀌는 현상 [3] 아랄 7766   2008-10-28 2010-06-30 16:54
바로가기 생성을 위해 파일 다이얼로그 박스를 띄웠더니 그 후 작업 디렉토리가 바뀌는 현상 발생. 파일 다이얼로그를 띄우기 전/후 안전을 위해 다음의 코드를 추가. // 현재 프로세스의 작업 디렉토리 저장 CString strWorkDir; ::GetCurrentDirectory(MAX_...  
5 [소스] 플러그인 개발을 위한 기본 프레임워크 20080810 file whoami 8610   2008-08-10 2010-06-30 16:54
 
» [문서] MultiPlugin 2 - 필터 플러그인 규격 file whoami 9376   2008-07-26 2010-06-30 16:54
* 본 문서는 MultiPlugin 2 에서부터 지원하는 필터 플러그인 추가규격을 설명한 문서입니다. 본 규격은 아랄트랜스 0.2의 기본 규격은 아니지만 기본 규격의 확장판 정도로 생각하면 되겠습니다. 아랄트랜스 0.2의 플러그인 규격은 http://aralgood.com/zbxe/...  
3 [개발환경구축] AralTrans 프로젝트 소스 다운받기 [3] file 아랄 8165   2008-07-24 2010-06-30 16:54
 
2 [개발환경구축] TortoiseSVN 설치하기 file 아랄 7703   2008-07-24 2010-06-30 16:54
 
1 [문서] 아랄트랜스 0.2 - 플러그인 규격 [5] file 아랄 9922   2008-06-22 2010-06-30 16:54