* 본 문서는 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 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. 함수 예
{
// TODO: 번역 전처리를 한다.
if (RemoveSpace(cszInJapanese, szOutJapanese, nBufSize) == TRUE)
return TRUE;
// 작업 성공시 TRUE, 실패시 FALSE 반환
return FALSE;
}
{
// TODO: 번역 후처리를 한다.
// 특별한 처리를 하지 않더라도 문자열을 복사해 돌려주어야 한다.
lstrcpyA(szOutKorean, cszInKorean);
// 작업 성공시 TRUE, 실패시 FALSE 반환
return TRUE;
}