각각의 도구는 기본적으로 독립되어 있지만 대체로 순차적으로 사용하게 되는 도구입니다. 프로그램을 실행하면, 아래와 같이 초기 화면에서 각각의 도구를 실행할 수 있는 버튼이 만들어져 있습니다.
한글 패치 모드의 새 버전이 출시된 경우, 이 도구를 사용하여
2.3.6 버전의 한글화 모드를 2.4.5 버전으로 가져온다고 가정하고 도구의 사용법을 설명하겠습니다. 편의를 위해 다음과 같이 약속합니다.
프로그램에서 [한글 모드 업그레이드] 박스 안의 [시작하기] 버튼을 클릭하면 아래와 같은 창이 출력됩니다.
총 세 개의 경로를 선택해야 하는데,
모든 선택이 끝나면 다음과 같이 표시되어 있을 겁니다.
이제 하단의 [위 설정대로 업그레이드 시작] 버튼을 클릭하면 작업이 시작됩니다. 꽤 오랜 시간이 걸릴 수 있습니다. 창 하단의 상태표시줄에 현재 진행중인 파일 이름이 출력되니 참고하시면 됩니다. 이 과정에서 다음과 같은 작업이 이루어집니다.
비프음과 함께 작업이 완료되면, 다음의 사항을 확인해야 합니다.
작업 폴더인 D:\WORK\CK2MOD\2.4.5\Localisation 에 가서, 파일이 제대로 생성되었는지를 확인합니다. 2.4.5 라면 총 76개의 파일이 만들어져 있어야 하겠죠.
이 프로그램의 실행 파일이 있는 폴더에 가 보시면, missing.txt 라는 파일이 생성되어 있을 것입니다. 이 파일은 한글화 메시지를 통합하는 도중 다음과 같은 항목이 존재할 때에, 해당 내용을 영문으로 변경하고 그 메시지를 이 로그에 출력해 줍니다. 따라서 작업자는 이 파일을 이용하여 추가로 번역이 필요한 내용의 목록을 받아볼 수 있습니다. 이 로그는 다음 번 같은 작업을 할 때 그대로 덮어씌워지므로, 작업자는 이 파일을 이름을 변경하는 등의 작업을 통해 즉시 별도로 보관하거나 게시하여야 합니다.
이제 missing.txt 파일의 내용을 검토하여야 합니다. 검토 결과에 따라서 위 작업을 한 번 더 진행하여야 할 수도 있습니다. 자세한 내용은 아래 3) 을 참고하십시오.
missing.txt 파일에 저장되는 항목은 다음과 같습니다.
v2_40c.csv (Missing) - EVTOPTA_HL_1250;It's my own business.;;;;;;;;;;;;x;
z_henrik.csv (Change from v1_06.csv) - experimenter;Direct Leader;;;;;;;;;;;;x;
공통적으로, 가장 앞에는 새 버전에서의 해당 메시지의 위치가 기록되며, 그 다음에는 그것이 새 버전에서 새로 추가된 것인지(Missing), 아니면 기존과 위치가 달라진 것인지(Change from) 를 명시합니다. 그 뒤에는 메시지 ID 와 번역을 위한 영문 메시지를 기록합니다.
위에서 Change_from 은 이전 버전과 비교하여 저장된 위치가 달라진 경우라고 설명드렸습니다.
위치가 달라진 것이 왜 중요한가 하면, 위치가 변경되었다는 것은 메시지가 변경되었을 가능성이 높다는 것을 의미하기 때문입니다. 예를 들면 위 예에서, v1_.06.csv 라는 파일에 존재하던 메시지가 갑자기 새 버전에서 추가된 z_henrik.csv 파일로 이동되었는데, 이건 아무런 이유 없이 이동된 게 아니라, 메시지의 내용이 변경되었기 때문에 로컬라이즈의 편의를 위해 기존 내용을 주석처리하고 새로운 파일로 옮겨서 다시 적은 것이기 때문입니다.
따라서, 메시지의 위치가 변경되었다면 바뀐 메시지의 영문 내용과 지난 버전 한글 패치 모드의 같은 항목 내용을 비교하여 변경 여부를 수작업으로 확인하여야 합니다.
만약 수작업으로 확인 결과 파일의 위치는 변경되었지만 번역이 같아 그대로 사용할 수 있는 경우 (이런 경우도 있습니다), 프로그램과 같은 폴더 내에 force_korean.txt 이라는 이름의 텍스트 파일을 생성하고 그 안에 메시지 ID 만 한 줄에 하나씩 기록해 주면 됩니다. 예를 들면, 아래는 필자가 2.3.6 언어 파일을 2.4.4 언어 파일로 옮기면서 사용한 force_korean.txt 파일의 내용입니다. (이 내용의 수작업 비교는 냐옹구름 님께서 수고해주셨습니다.)
alert_available_targetted_decision_instant alert_available_targetted_decision_delayed COMBATVIEW_TOTALTROOPS COMBATVIEW_FLANK_MORALE COMBATVIEW_MORALE FIND_PROVINCE HINT_DIPLO_VIEW_TITLE EVTDESC107104 EVTDESC107009 EVTDESC107300 EVTDESC107301 EVTDESC107326 EVTDESC107334 EVTDESC107325 EVTDESC107310
위와 같이, 파일의 위치가 변경되었지만 번역이 같아 그대로 사용할 수 있는 항목의 "메시지 ID" 만 한 줄에 하나씩 입력해줍니다. 그리고 위의 변환 작업을 다시 수행하면 됩니다. 이렇게 강제로 한글 메시지를 적용한 경우 다시 생성된 로그에는 그렇게 강제 적용된 내용은 들어 있지 않으므로 나머지만 재번역 작업에 넘기면 되는 거죠.
출력된 로그를 보다 보면 다음과 같은 세 개의 텍스트를 볼 수 있습니다: [SUB_A7], [SUB_A4], [SUB_A3].
이들 텍스트는 원래 언어 파일에 존재하던 제어 문자를 이와 같은 일반 텍스트로 변환한 것입니다. 이 작업이 필요한 이유는, 원래 이들 제어 문자는 한글과 함께 쓰일 수 없는 문자들이기 때문입니다.
예를 들어, 언어 파일을 텍스트 에디터로 열어 보면 정체를 알 수 없는 "쬨" 같은 문자들이 보이는데, 이런 문자들은 모두 기존의 한글 사이에 제어 문자가 들어가서 글자가 깨진 것들입니다. 이런 문자들이 번역 및 저장 과정에서 한번이라도 잘못되면 그 부분의 글자가 이상하게 저장될 수 있고, 그 결과 게임 화면에 이상한 문자가 나타난다거나 하는 문제가 발생할 수 있습니다. 따라서 일단 번역 단계에서는 이들 제어문자를 없앤 상태로 인터넷에 게시하는 등의 조치를 해야 합니다.
이 로그는 번역에 도움을 주기 위해서 생성되는 로그이므로, 이와 같은 제어문자를 모두 위와 같은 기호로 변경하여 로그로 출력하고 있습니다. 번역이 완료된 후, 해당 텍스트는 이 프로그램이 제공하는 도구를 통해 원래의 제어 문자로 되돌릴 수 있습니다.
예를 들면, 역사적인 작위 타이틀의 경우에는 언어 파일에 별도로 내용이 있는 경우가 있습니다. 예를 들면 로타링기아나 신성로마제국 같은 경우입니다.
이 프로그램은 변환 과정에서 b_, c_, d_, k_, e_ 로 시작하는 작위 타이틀 이름, PROV+숫자 형태의 프로빈스 이름은 자동으로 강제로 영문화해버립니다. 이는 직결식 한글 폰트에서 맵 폰트를 제대로 표현할 수 없기 때문으로, 맵에 출력될 가능성이 있는 각종 고유명사들은 모두 영문화를 해야 합니다. 예를 들면,
이런 것들은 별도로 지정을 해 주어야만 한글화에서 배제됩니다. 프로그램과 같은 폴더에 force_english.txt 라는 파일을 생성한 후, 여기에 해당하는 메시지 ID 들을 한 줄에 하나씩 입력합니다. 예를 들면 아래와 같습니다.
altaic arabic baltic byzantine celtic central_germanic dravidian_group east_african
만약 force_korean.txt 나 force_english.txt 파일에 새로운 내용을 추가했다면, 위 작업을 다시 한 번 해 줍니다. 그러면 로그에는 강제로 한글화되었거나 강제로 영문화된 내용은 모두 빠지고 그 외의 Missing/Change from 항목만이 남아 있을 것입니다.
이제 로그의 남은 나머지 내용들을 적당히 잘라서 한글화 작업실 등에 게시하고 번역을 개시하면 되는 겁니다. 쉽죠?
앞에서 만든 로그를 통해 번역을 했습니다. 이제 번역 텍스트를 원본에 적용을 해야 하죠. 그런데, 앞서 로그에서 변환해 두었던 제어 문자들 - [SUB_A7], [SUB_A4], [SUB_A3] - 을 다시 원래대로 되돌려야만, 텍스트에서 글자색도 바꾸고 할 거 아닙니까. 이 기능을 하는 것이 제어 문자 복구 도구입니다. 메인 메뉴 창의 두 번째 박스에 존재하는 [변경/누락 로그 치환자를 복원] 기능 말이죠.
이 도구의 사용 방법은 매우 심플합니다. 그냥 [시작하기] 를 클릭하면 바로 파일의 위치를 묻는 창이 뜹니다. 번역물을 저장해 둔 텍스트 파일을 선택하면 바로 변환이 끝납니다. 변환된 파일은 원본을 손상하지 않도록, 원래의 파일에 .restored.txt 라는 이름이 추가되어 같은 폴더 내에 저장됩니다.
변환된 파일은 제어 문자가 원래대로 되돌아가 있으므로, 일반 텍스트 에디터로 열면 깨진 문자를 보게 되며, 이를 잘못 작업하면 제어문자가 모두 깨질 수 있습니다. 따라서 작업이 끝난 이후에 뭔가 수정 등을 해야 한다면 아크로에디터 등의 검증된 텍스트 에디터를 사용해 주시기 바랍니다.
앞에서도 말씀드렸다시피, 서유럽 고대 문자는 직결식 한글 하에서 출력이 불가능하므로, 이들은 모두 현대식 알파벳으로 변환되어야 합니다. 이 작업을 하는 도구가 바로 메인 화면 세 번째 도구인 [서유럽(고)문자 변환] 도구입니다.
이 도구는 이미 한글이 포함되어 있는 파일에 대해서는 절대로 사용하면 안 됩니다. 오직 1바이트 문자만 포함되어 있는 파일에 대해서만 사용하십시오.
한글화 과정에서 이 파일로 처리해야 하는 파일들은 다음과 같습니다. 이들은 모두 화면에 출력되는 문자를 가지고 있는 파일들로, 한글화 패치 제작 시 꼭 한글패치 모드에 포함되어야 합니다.
history/wars 폴더에 저장된 전쟁 데이터 파일은 이 도구가 아니라 처음에 말씀드린 한글화 업그레이드 도구로 한글화 된 전쟁 이름을 업그레이드 해 주어야 합니다.
메인 화면에서 [시작하기] 버튼을 클릭하면 다음과 같은 설정 창이 출력됩니다.
위와 같이 설정을 완료했으면 [위 설정대로 변환 시작] 버튼을 클릭합니다. 이 기능은 해당 폴더 내의 모든 .TXT 파일에 대해서 작업을 수행합니다.
작업이 끝났으면, 변환된 파일이 저장된 폴더로 이동하여 파일이 잘 저장되었는지 확인합니다. 특히 history 폴더 이하에 대해서는 아래와 같은 추가적인 작업이 필요합니다.
여기가 짜증납니다. 뭐가 문젠가 하면, characters 폴더에는 이 게임에 고정으로 등장하는 캐릭터들에 대한 정보가 문화별로 저장되어 있고, provinces 폴더에는 각 프로빈스들의 역사 데이터가 저장되어 있는데, 이들 파일 중에는 서유럽 고대 문자가 포함되지 않았거나, 포함되어 있더라도 주석 내에 포함되어 있어 게임 데이터에 전혀 영향을 안 끼치는 녀석들이 있습니다. 그런 파일은 굳이 모드에 따로 포함할 필요가 없으니 찾아서 제거해 줘야죠.
여기에는 폴더 단위로 파일을 비교할 수 있는 별도의 도구가 필요합니다. 저는 WinMerge 라는 프로그램을 사용하는데, 이 프로그램을 사용해서 변환된 파일과 원본을 비교하여 서로 같은(identical) 파일들은 결과 폴더에서 지워줍니다.
(이에 대해서는 굳이 여기서 작성하진 않겠습니다.)
영문판에서 플레이하던 세이브 파일을 한글판으로 가져와서 사용할 수 있습니다. 단, 영문판에 존재하던 서유럽어 고대문자들 때문에 이걸 그대로 로드하면 한글판에서 깨져 보일 수 있습니다. 따라서, 이 도구를 사용하여 서유럽어 고대 문자를 모두 변환한 후에 한글판에서 읽어들여야 합니다.
가장 많이 쓰게 될 기능이죠. 일반 사용자의 경우 모드 파일을 만들거나 수정하기 위해서는 사실상 이 기능만 줄창 사용하면 됩니다. 사실 nonononame 님께서 만드신 컨버터가 더 성능이 좋아요. 빠르고.
이 도구를 사용해야 하는 파일은,
사용 방법은 동일합니다. [시작하기] 버튼을 누르면 아래와 같은 창이 뜹니다.
설정이 끝났으면 [위 설정대로 변환 시작] 을 클릭하면 됩니다. 시간이 꽤 걸립니다. 흑.
변환이 완료되면, 변환된 파일이 저장된 폴더에 가서 파일이 제대로 저장되어 있는지 확인합니다. 실제 모드의 localisation 폴더에는 이 변환된 파일들이 들어가야 합니다.
위에 설명드린 4개의 도구가 모더를 위한 도구였다면, 이 도구는 플레이어를 위한 도구입니다.
Crusader Kings 2는 플레이어가 선택하여 플레이한 가문의 연대기를 일반 텍스트 파일로 내보내 주는 기능을 가지고 있습니다. 사용하기에 따라서는 상당히 유용한 기능인데, 문제는 이렇게 출력되는 한글이 보통의 한글이 아닌 직결식 한글이라는 겁니다. 일반 에디터에서는 한글 대신 이상한 문자가 출력되죠.
따라서, 이 직결식 한글 문자를 사람이 읽을 수 있는 2바이트 한글로 되돌려 주는 기능이 필요합니다. 이 기능은 그 역할을 하는 기능입니다.
사용 방법은 매우 단순합니다. 초기 화면에서 [직결식 한글 되돌리기] 박스의 [시작하기] 버튼을 클릭하면 바로 변환할 파일을 선택하는 박스가 출력됩니다. 여기서 연대기 파일(보통 내 문서\Paradox Interactive\Crusader Kings II 아래에, 한글 모드를 사용한다면 KoreanSingleByte 폴더 이하 chronicles 폴더 내에 들어 있습니다)을 선택해 주면 자동으로 변환을 합니다. 치환자 복원 도구에서처럼, 원래의 파일에 .restored.txt 라는 이름이 추가되어 같은 폴더 내에 저장됩니다.
연대기 파일의 복원을 목적으로 제작된 기능이어서, 여기서 되돌릴 수 있는 직결식 한글은 실제로 본 게임에서 사용되는 형식인 Revision (르나니 님 폰트) 으로 제한됩니다.
첫댓글 ㄷㄷㄷ 한글로 써있는데 왜 ㄷㄷ 멋집니다!
이 글은 제가 그동안 2.4.4 의 한글화 패치 업그레이드 작업을 진행하면서 짜서 사용한 도구 프로그램을 공개하고, 또 이후에 같은 작업을 하실 분을 위해서 그 사용 방법을 적은 글입니다. 따라서 일반 사용자의 경우 이 프로그램을 사용할 일이 전혀 없고, 모딩을 하려는 사용자의 경우에도 잘 해야 4번째 도구 하나 정도 사용할 일이 있을 것입니다. (게다가 단지 그것만이라면 nonononame 님의 컨버터가 더 속도가 빠릅니다.)
오오오 기술혁신. 위대한 기술자가 수도 유로파에 나타났습니다.
어설픈 코더일 뿐입니다. ㅠㅠ
와...
대단합니다.
역시 능력자.
그러니까.. 그냥 어설픈 아마추어 코더일 뿐이예요...;;;
@tacitus 에이 겸손하시긴 ㅋ
삭제된 댓글 입니다.
EU4는 XML 형식인걸로 알고 있는데요. CK2는 ; 로 구분하는 CSV 형식이고, 이 프로그램의 버전업 기능은 거기에 맞춰져 있어서 EU4에 그대로 적용은 못할겁니다. 거기다가 EU4는 UTF-8 인코딩을 쓰고 있어서 인코딩도 맞지 않고요..
아름답네요 ㅋㅋㅋ 그간 즐거웠습니당 >ㅆ<
냐옹님도 고생많으셨습니다. :-)
존경스럽습니다. 전 그냥 카만히 짜저 있을게여
헌데, 다른 역설사게임(다키스트 아워라든가 그런거)도 가능하나요
이 프로그램은 제가 작업한 CK2에 최적화되어 있는 프로그램입니다. (애초에 작업하면서 필요에 맞추어서 제작한 거니까요.) 다만 인코딩과 파일 형식이 CK2와 동일하다면 사용할 수 있을 수는 있습니다.
그리고 3/4번 기능은 그냥 일반 텍스트 파일을 가정한 것이라서 인코딩이 동일하고 같은 용도로 쓴다면 게임에 관계 없이 쓸 수 있을 겁니다.
삭제된 댓글 입니다.
아직 테스트 중입니다. 2.5.2 때 최종 테스트 한번 더 하고 올리려 했는데 (매뉴얼 작업도 아직 하지 않았습니다) 급하게 필요하신가요?
급하게 필요하신거면 오늘 집에가서 패키징해서 (매뉴얼 작업은 힘듭니다) 따로 올려드리겠습니다.
@xode ......원본파일 무시하고 메시지 직접비교하는 기능이 필요하신거군요.
혹시 구 버전 원문 언어 파일은 갖고 계신가요?
@xode 일단 임시로 올려드리겠습니다. 도움말 같은 거 하나도 안 되어 있는데... 잠깐 챗을 해야겠네요. 설명드릴 게 있습니다.
@xode nightly build 올려뒀습니다. 받으시고 1:1 대화 좀 걸어주세요.
저 혹시 1바이트화된 한글 csv파일을 2바이트로 되돌되는 기능은 추가할 수 없을까요?
그러면 좀 더 편리한 작업을 할 수 있지 않을까 해서
그게.. 특성상 일단 직결식 한글로 변환된 메시지를 2바이트 한글로 되돌리는 기능은 그 작업의 무결성을 보장할 수가 없습니다.
현재 연대기 파일 보기와 같이 순수하게 한글 영문 숫자만 존재하는 경우라면 그래도 괜찮습니다만 (그리고 100% 완벽하지 않아도 읽는데 지장이 없죠. 그래서 변환 기능을 제공하고 있습니다) 각종 특수 문자들이 돌아다니는 언어 파일의 경우 해당 특수 문자들로 인하여 어떤 문제가 발생할지 자신할 수가 없어요. 그래서 변환된 언어 파일의 역변환 기능은 제공하지 않고 있습니다.
만약 테스트용의 기능으로라도 한번 만들어 본다면 만들 수도 있겠습니다만... 앞에서 말씀드린 것처럼 100% 완벽한 변환을 자신할 수가 없습니다.
@tacitus 그런 문제가 있는 줄 몰랐습니다. 크.. 아쉽네요.
답변 해주셔서 감사합니다.
참고) YML 등 다른 문서에서 TXT로 복붙한 뒤 서유럽 문자를 제거할 때
1. 인코딩이 유니코드나 유니코드(big endian)일 경우
모든 서유럽 문자는 정상적으로 변환되지만, 문서 맨 앞에 외계어가 추가되고 P R O V 1 2 : 0 " S j ae l l a n d " 처럼 모든 문자 사이에 공백이 추가됩니다. 이후 모두 바꾸기 기능을 이용해 공백을 없애고 다시 추가하고 하면 정상적으로 바꿀 수는 있습니다. 또한 provence 처럼 "prov" 가 들어가는 내용은 모두 prov가 PRVO 대문자로 바뀝니다.
2. 인코딩이 UTF-8일 경우
문서 맨 앞에 외계어가 추가되지만, 유니코드 때처럼 공백이 생긴다거나 prov가 대문자가 되는 문제는 없습니다.
단, æ(ae)와 Ø(O에 빗금이 그어진, 공직합 기호와 유사한 문자, 발음은 oe-외) 등 몇가지 문자가 정상적으로 변환되지 않고 외계어로 나타납니다.
그러나 그 수가 몇개 되지 않아서(유로파4 프로빈스명 중에는 3개), 비교 기능이 있는 문서 편집기로 빠르게 수정할 수 있습니다.
이후 이 툴을 이용해 서유럽 문자를 제거하실 분은 참고하세요. UTF-8쪽이 훨씬 편하긴 하네요.
@벤장라자 이 프로그램은 기본적으로 CP949/ANSI 인코딩을 가정하고 짜여진 프로그램입니다.
따라서 인풋이 유니코드나 UTF-8 인 경우 당연히 문제가 생깁니다.
방법이 없는 건 아닌데, 제가 EU4 의 파일이 어떤 상태인지 모르기 때문에 확실히 말씀드리긴 어렵군요.
@tacitus 아, txt는 메모장으로만 만들어야 한다는 멍청한 생각을 갖고 있었네요. -.-;; 메모장 ANSI 기본 인코딩으로 저장하면 서유럽문자가 깨져서...
다른 문서편집기를 이용해 949 ANSI로 저장한 뒤 돌려보니
다른 건 아무런 오류 없이 정상적으로 다 나오는데, 두번째 댓글에서 쓴 æ나 Ø는 깨지는 것이 아니라 서유럽문자 그대로 나오네요.
서유럽 문자 지우는 게 목적이면 UTF-8로 저장한 뒤 돌리는 게 더 편할 것 같습니다. 어차피 비교 기능도 있고...
아무튼 말씀 고맙습니다.
@벤장라자 949 ANSI 말고, Western European (Windows) 또는 ISO-8859-1 로 저장한 후에 한번 해 보십시오.
@tacitus 말씀하신 대로 하니 정상적으로 됐습니다. 고맙습니다.
감사합니다. 서유럽 고문자 때문에 계속 찾게 되네요. 이런 툴이 있어서 얼마나 다행인지 몰라요