스카이림 번역보관소


1. 번역 안되는 스크립트 번역법 #1 (변수와 스트링값이 같은 경우. 예: Skyrim Unbound)

2. 번역 안되는 스크립트 번역법 #2 (esp에서 스트링값이 지정된 경우. 예: Apocalypse)

3. 번역 안되는 스크립트 번역법 #3 (String Property 구문에서 바로 스트링값이 지정된 경우. 예: iNeed)



한글번역이 안되는 스크립트는 크게 위의 3가지 경우로 나뉩니다.

그중 1번은 번역할 스크립트(pex) 파일을 열어보면 변수와 스트링값이 같은 일부 줄(보라색 자물쇠 줄)을 제외하고는 번역할 스트링이 있는데(주황색 줄), 2번은 아예 전체 혹은 대부분이 자물쇠 표시만 있고 번역할 스트링이 보이지 않습니다. (예: 아포칼립스 모드) 특히 번역할 스크립트가 MCM인 경우 Interface/Translations 폴더 안에 모드.txt (mcm txt)가 있지도 않아서 번역이 불가능한데, 이런 모드는 esp 자체에서 스크립트의 속성(Property) 값으로 스트링값이 지정되어 있습니다. 이런 경우 esp를 TesVTranslator로 열어봐도 번역할 스트링이 보이지 않고, CK툴에서는 한글번역이 불가능하므로 번역가능하도록 수정작업을 해줘야 합니다.


이때 스크립트 소스(psc)가 있는지 없는지에 따라 작업방식이 2가지로 나뉩니다.


  • 참고 : TesVTranslator 모드 번역시 주의점 (http://renn.tistory.com/494)
  • 필요 : 수정할 스크립트 소스(.psc), Notepad++ , TesVTranslator , SKSE & SkyUI의 스크립트 소스(.psc) (bsa 추출 필요)(번역법 #1 하단에서 다운로드)
  • 예시 모드 : Viewable Faction Ranks, Apocalypse
  • 수정할 파일 : ViewableFactionRanksBothDLC.esp, wb_mcmquest_script.psc




[1. PSC 없는 경우]


스크립트 소스(psc)도 없고 MCM.txt도 없는 경우입니다. (예: Viewable Faction Ranks 모드)

이 모드의 MCM 스크립트(pex)를 TesVTranslator로 열어보면 번역할 부분이 거의 보이지 않고, 번역법 #1처럼 변수와 스트링값이 같은 경우도 아닙니다.

이런 모드의 경우 esp를 CK툴로 Active 상태에서 열고 MCM 스크립트 속성(Property)에 지정된 스트링값을 수정하면 번역가능한 MCM.txt를 뽑을 수 있습니다.




Object Window의 Character -> Quest -> 모드 MCM 더블클릭 -> Scripts 탭 선택 -> 

MCM 스크립트 선택 후 Properties 버튼 클릭 -> 속성창에서 Type이 String인 항목 확인


위 스샷에서 붉게 표시된 String 항목들이 바로 수정할 부분들입니다. (Array 변수일 경우 Type이 String[]일 수도 있습니다)




이 항목을 각각 클릭해서 위 스샷처럼 스트링값(String Value) 앞에 $를 붙이면 됩니다.

이렇게 $를 붙이면 번역이 가능한 MCM.txt를 뽑을 수 있게 됩니다.


이때 스트링값이 다른 모드와 겹치지 않도록 해당 모드만의 고유한 이름으로 붙이는 것이 좋습니다. txt로 출력하는 스트링값이 다른 모드와 겹칠 경우 간섭이 일어나 게임상에서 의도하지 않은 번역으로 출력될 수 있습니다. 위의 예시에서는 $VFR 을 붙였습니다.


이렇게 String 타입을 모두 수정한 다음에는 esp를 저장한 뒤, Interface/Traslations 폴더 안에 esp이름_English.txt 파일을 새로 만들어 줍니다. (예시 모드의 경우 ViewableFactionRanksBothDLC_English.txt) 이때 MCM.txt 파일의 인코딩은 UTF16 LE with BOM이어야 게임상에서 제대로 출력됩니다.




txt 내용은 esp에서 지정해준 스트링값Tab키로 간격띄움역문 구조로 만들면 됩니다.

(주의: 번역문이 길어 줄을 나눌 경우 엔터 대신 \n을 입력해야 합니다)



아포칼립스 모드도 이렇게 esp 스트링값에 $를 붙인 뒤 MCM.txt를 뽑는 방식으로 번역할 수 있습니다.



단 아포칼립스처럼 모더가 psc를 제공하는 경우에는 esp를 직접 수정하지 않고 psc를 수정한 뒤 컴파일하는 방식이 더 편리합니다.




[2. PSC 있는 경우]


스크립트 소스(psc)는 있고 MCM.txt가 없는 경우입니다. (예: Apocalypse 모드)

아포칼립스처럼 모더가 psc를 제공하는 경우에는 psc 내용을 수정한 뒤 컴파일하면 번역가능한 pex를 만들 수 있습니다.




Notepad++로 psc를 열면 String Property 변수 Auto로 쓰여진 부분이 있습니다. 

만약 String Property 변수 = "스트링값" Auto라면 스크립트 내에서 바로 스트링값이 지정된 경우지만, 아포칼립스처럼 변수 Auto만으로 끝나면 스크립트와 연결된 esp에서 대신 속성값이 지정됩니다. 이것을 스크립트 내부에서 바로 지정하도록 바꿔주면 됩니다. (esp에서 지정한 값보다 스크립트 내부의 값이 우선합니다)


String Property 변수 = "스트링값" Auto 방식으로 바꾸면 이것도 한글번역이 제대로 출력되지 않습니다. (예: iNeed) 제대로 출력되게 하려면 String Property 변수 Auto는 그대로 놔둔 채 다른 곳에서 변수의 스트링값을 지정해주어야 합니다.


아포칼립스의 경우 아래 부분을 삽입하면 됩니다.


int function GetVersion()

return 스크립트 버전 ;

endFunction


event OnVersionUpdate(int a_version)

if (a_version >= 스크립트 버전 && CurrentVersion < 스크립트 버전)

refreshPages()

endif

endEvent


event OnConfigInit()

refreshPages()

endEvent


function refreshPages()

변수1 = "스트링값1" ;반드시 큰따옴표로 묶어야 합니다

변수2 = "스트링값2"

변수3 = "스트링값3"

endFunction





psc를 수정한 뒤에는 CK툴로 esp를 열어 MCM 스크립트를 찾아간 뒤 Edit Source로 컴파일하면 됩니다. (컴파일 방법은 번역법 #1 참고)

컴파일된 스크립트.pex를 TesVTranslator로 열어보면 번역가능한 주황색 줄이 생겨나 있습니다. 이 부분을 번역하고 저장하면 게임상에서 제대로 출력됩니다.