원본(영문) 모드를 사용중에 한글화한 경우 MCM 메뉴만 뜨고 내용이 뜨지 않는 경우가 있습니다.
(혹은 한글화를 설치했다가 영문 모드를 버전업하거나 다른 한글화로 바꾼 경우도 그런 현상이 발생할 수 있습니다. 예: OBIS)
이는 모더가 MCM을 만들 때의 방식에 따라 달라집니다.
1. MCM 스트링을 Interface/Translations 폴더 안의 txt로 따로 뽑는 경우
: 위 문제 생기지 않음
2. MCM 스트링을 MCM 스크립트(pex)에서 바로 출력되게 하는 경우 (Interface/Translations 안에 txt가 없는 경우)
: MCM 페이지 메뉴 제목(TesVTranslator에서 노란 전구로 표시되는 부분)이 세이브파일에 저장되므로,
이 제목 부분이 번역으로 인해 바뀌면 세이브파일에서 인식되지 않아 MCM 내용이 뜨지 않을 수 있습니다.
이 경우 세이브툴로 기존의 세이브파일에서 해당 모드의 MCM 스크립트를 찾아 삭제하면 문제가 해결됩니다.
(단 MCM 설정이 초기화될 수 있습니다)
------- 아래부터는 번역시 참고 ----------
모더가 MCM 소스(scripts/source/xxx.psc)를 배포한 경우
MCM 소스 내용을 1번 방식으로 수정한 후 CK툴로 컴파일해서 번역하면 이런 문제를 원천적으로 방지할 수 있습니다.
(단 모드 업데이트시 한글화 또한 같은 방식으로 지속적인 수정 업데이트가 필요합니다)
소스가 없다면 위의 문제를 피하기 위해 노란 전구 부분은 가급적 번역하지 않는 편이 좋습니다.
1번 방식으로 번역이 수정된 모드 : SkyTweak , Better Vampire , OBIS , CCOR , FLP , Jaxonz Positioner , Jaxonz Smart Looter , SHOT
[소스에서 수정될 부분]
Event OnConfigInit() ; 페이지 제목의 변수 이름 확인. 수정할 부분 없음
Pages = new string[3]
Pages[0] = "menu 1"
Pages[1] = "menu 2"
Pages[2] = "menu 3"
EndEvent
Event OnPageReset(String a_page) ; a_page 부분을 모두 찾아 수정. 스트링을 바로 변수로 지정하지 않도록 하면 해결
If (a_page == "menu 1") ---> If (a_page == Pages[0])
ElseIf (a_page == "menu 2") ---> ElseIf (a_page == Pages[1])
...(반복)
[소스에 삽입/수정될 부분]
Int Function GetVersion() ; MCM 페이지 메뉴에 변경사항이 있을 경우 버전숫자 높임
Return 버전숫자
EndFunction
Event OnConfigInit() ; 이전 버전 MCM의 페이지 메뉴. 업데이트시 일단 불러왔다가 Event OnVersionUpdate 로딩. 첫 설치시 바로 Event OnVersionUpdate 로딩
Pages = new string[3]
Pages[0] = "menu 1"
Pages[1] = "menu 2"
Pages[2] = "menu 3"
EndEvent
Event OnVersionUpdate(Int a_version) ; 최신 버전 MCM의 페이지 메뉴. GetVerion에서 지정한 버전숫자와 동일. MCM 변경 버전이 여러개일 경우 ElseIf로 계속 추가
If (a_version >= 버전숫자 && CurrentVersion < 버전숫자)
Pages = new string[4]
Pages[0] = "$menu 1"
Pages[1] = "$menu 2"
Pages[2] = "$menu 3"
Pages[3] = "$menu 4"
EndIf
EndEvent
※ menu 1, menu 2 등은 MCM 페이지 제목 이름
Event OnPageReset(String a_page) ; a_page 부분을 모두 찾아 수정
If (a_page == "menu 1") ---> If (a_page == "$menu 1" || a_page == "menu 1")
ElseIf (a_page == "menu 2") ---> ElseIf (a_page == "$menu 2" || a_page == "menu 2")
...(반복)
[MCM txt 파일 생성]
Interface/Translations/모드 esp 이름_english.txt
※ 이때 인코딩은 반드시 1200 (UTF-16 LE) BOM
[MCM txt 파일 내용]
$menu 1 메뉴 1
$menu 2 메뉴 2
$menu 3 메뉴 3
$menu 4 메뉴 4
[$원문]Tab띄어쓰기[번역문]의 구조
※ 이때 $원문은 가급적 모드만의 고유한 이름을 사용해야 바닐라나 다른 모드의 간섭을 받지 않습니다.
(예: $Carry Weight처럼 바닐라 기본 스트링의 경우 다른 번역으로 저장해도 바닐라 한글패치대로 출력됨)
참고 : https://github.com/schlangster/skyui/wiki/MCM-Advanced-Features
150318일자로 SkyTweak , Better Vampire , OBIS , CCOR 한글화에는 이 방식이 적용되었습니다. (영문 모드 사용중 한글화해도 MCM이 정상 출력됩니다)