본인이 자주 쓰는 유틸은
쯔꾸르 MV,MZ AI 번역 툴과 그 외 번역에 유용한 툴들 공유 및 사용법 대충 정리
여기에 써놨다. (이 글에서 번역에 사용할 Translator++는 위 글에 없다.)
딸깍 번역에 대한 부분은
쯔꾸르 딸깍번역이란 대체 무엇이고, 딸깍번역은 대체 어떻게 하는것인가?
여기에 대충 설명해놨으니 필요하면 알아서 보던가 하면 된다.
그리고 아카 손번역챈쪽에 관련 정보가 많이 있으니, 필요하면 그쪽도 확인해보면 좋다.
일단 본문에 들어가기에 앞서,
번역에 대한 몇가지 개인 견해에 대해서 말하고자 한다.
첫째, 가장 중요한 것은 역자 본인이 번역을 하고 싶어서 하는거냐 라는 것이다.
게임번역, 영상번역, 망가번역, 소설번역등
번역 하나만으로도 여러 범주로 나뉘어 있겠지만,
직접 그것을 돈벌이 수단이나 업으로 삼는 게 아니라면,
대부분의 번역은 취미의 영역이고, 자기만족의 일환이다.
따라서 번역이란, 역자의 능력 여하를 막론하고
일단 역자 본인이 취향에 맞아야하고 어느정도 좋아야 하는 작업이라고 생각한다.
번역하는 작품이 취향에 맞지도 않고 하기도 싫으면 그것만큼 고문이 없다.
그러므로 번역을 할 작품은 본인의 취향에 따라 선정하는 것이 좋다.
둘째, 역자의 능력보다 중요한 것은 인내심이다.
번역 경험이 없는 사람들이 보기에
번역을 위해선 언어적 능력과 프로그래밍적 능력을 요구하는 것으로 생각하곤 하는데,
본인의 견해로는, 그렇지 않다. 그러한 지식이나 능력은 부가적인 것이고, 있으면 좋지만 없어도 번역엔 무관하다.
언어적 능력, 뭐 예를들어 일본어를 구사한다던가 영어를 구사한다던가 하는 능력이 있다면,
당연히 번역을 하기에 더 수월할 것이고, 기계번역이 등장하기 이전까지는 그것이 필수적인 요소였다.
그러나, 이미 십몇년 전부터 구글 번역이나 파파고 번역을 통해 최소한의 번역이 이루어졌고,
근 1~2년 사이에 AI번역이 발전하며 이러한 외국어 능력은 필수가 아니게 되었다.
사실 번역에 필요한 언어적 능력이라 함은, 외국어 보단 국어 능력을 더 필요로 한다고 생각한다.
번역의 결과물은 한국어이니, 자연스러운 한국어 구사가 더 중요하기 때문이다.
또한 프로그래밍 능력도 마찬가지이다.
게임의 번역이란게, 결국 한 게임 프로그램 내부의 텍스트나 UI, 대사 등을 번역하는 과정이기 때문에
프로그래밍 능력이 있으면, 정규식을 활용하거나, 자체적으로 AI 번역 툴을 이용한다던가 하여
더 수월할 수도 있겠지만, 이 또한 부가적으로 있으면 좋고 없어도 상관 없는 능력이라고 생각한다.
본인도 딱히 프로그래밍 능력이 있는 것이 아니고, 모르는게 있으면 그냥 찾아보면서 번역을 하는 타입이다.
애초에 게임의 번역은, 번역이 필요한 대사를 찾아서 한국어로 번역만 하면 되는 부분이기 때문에
열심히 개노가다로 찾아서 고치면 어떻게든 번역이 되기 때문이다.
다만, 이는 쯔꾸르나 티라노엔진, 키리키리, 유니티와 같은 야겜의 대다수가 사용하는 메이저 엔진에 해당하고,
Bakin이나 Godot과 같은 마이너한 녀석들은 일단 언팩하는 부분부터, 툴도 잘 없고, 정보가 다른 엔진보다 적어서 난이도가 많이 높다.
이런 녀석들은 일반적인 야겜보다 프로그래밍 능력을 요구하긴 하지만... 개노가다로 계속 파고들면 안될 건 없다고 생각한다.
그리고 이 글에서 설명하고자 하는 번역은, 야겜의 대다수를 차지하는 쯔꾸르 번역에 한정되어 있는데,
쯔꾸르 번역쪽은 번역프로그램도 많고, 정보도 많기 때문에
더더욱이 프로그래밍적 능력, 언어적 능력이 없어도 번역이 가능하다.
결국 가장 중요한 것은 인내심이다.
AI번역을 하던 손번역을 하던, 검수를 동반한 번역은 매우 귀찮고 지루하다.
이러한 귀찮은 과정을 끝까지 해내기 위해서는
인내심이 최우선적으로 필요하다.
귀찮고 좆같아도 이 개노가다를 끝까지 할수만 있다면,
언어적 능력이나 프로그래밍적 능력이 미비해도 충분히 번역이 가능하기 때문이다.
그럼에도 번역이라는 행위에는 엄연한 진입장벽이 존재하는데,
그 이유는 다음과 같다.
1.위에서도 말했듯이 일단 번역을 시작한다는 행위가 귀찮기 때문이다.
너무 당연한 것이다. 나도 번역하는것보다 게임하는게 더 좋다.
딸감이 다양화된 지금 시대에 정 딸치고 싶으면 이 게임을 번역하지 않더라도 많은 딸감이 존재하고,
그리고 내가 굳이 번역을 하는것보다 존버를 하는게 낫지 않을까? 라고 누구나 다 똑같이 생각한다.
2.번역을 하려고 해도 어떻게 시작해야 할지 모르기 때문이다.
번역을 하기로 마음먹었다 한들, 뭘 어떻게 번역해야하는지 난감해지게 된다.
번역에 관련된 정보를 찾으면 꼭 등장하는게 아카라이브의 손번역 챈과 같은 곳인데,
번역의 정보가 파편적으로 분산되어 있고, 역자에 따라 번역 방식이 다르기 때문에
처음 번역에 입문하는 사람들은 일단 이 부분에서 매우 곤란해지게 된다.
그리고 이 서브도 역자커뮤니티가 아니라 야겜을 포함한 딸감커뮤니티에 가깝기 때문에
질문을 해도 답이 나오지 않을 경우가 잦다고 생각한다.
그럼 여기서 의문이 생길 수 있다.
어째서 역자들은 자신의 번역 방식을 공유하지 않는 것일까?
1.존나 귀찮기 때문이다.
가장 큰 이유다. 역자들 입장에선, 이런 번역 과정의 디테일을 글로 적는게 매우 귀찮고
그럴 시간에 그냥 자기 취향의 야겜을 번역하는게 이득이기 때문이다.
2.설명하기 어렵기 때문이다.
역자들이라고 모두가 같은 툴, 같은 번역 방식을 사용하는게 아니다.
누군가는 번역프로그램을, 누군가는 노트패드로, 누군가는 자체적으로 프로그램을 제작해서 번역하기도 한다.
이러한 요소들을 일일히 설명하는게 매우 어렵기 때문이다.
3.정보의 변화가 매우 빠르기 때문이다.
2년전만 해도 쯔꾸르 익스트랙터나 아네모네와 같은 번역툴을 이용하여 번역하며
그러한 번역정보가 공유되었었지만, AI번역의 발전과 여러 번역툴의 개발로 인해
번역 방식이나 번역에 필요한 정보가 계속해서 바뀌거나 갱신되고 있으며
실제로 몇몇 번역 팁들은 지금 시대에 필요없는 정보로 사장되는 경우도 있다.
그런 흐름으로 봤을때, 이러한 글을 작성했다 한들,
얼마 뒤에 이 정보가 옛날에나 먹히던 정보로 바뀔수도 있다고 생각할 수 있기 때문이다.
이 이외에도 여러가지 이유가 있겠지만 대략 이러한 이유로 역자들은 번역 과정을 쓰기 번거로워한다.
본인도 사실 이런 내용을 글로 적는게 매우 귀찮지만
그래도 써놓으면 언젠가 누가 참고 할지 모른다고 생각하여
본인이 번역을 하는 방식에 대하여 설명하고자 한다.
일단, 본인이 생각하는 번역 용어에 대해 분류를 미리 해놓고 가고자 한다.
기계번역, 손번역, AI번역, 부분손번역, 일부검수번역 등
이 커뮤니티 내에서 번역 용어에 따로 정확한 정의가 내려지지 않아있기 때문에 여러모로 섞여서 사용되곤 한다.
역자들마다 견해의 차이가 있겠지만,
본인은 여기서 딱 기계번역, AI번역, 무검수번역(딸깍번역), 손번역 으로 나누어 구별짓는다.
기계번역=구글 번역이나 파파고 번역, 이지트랜스XP를 이용한 EHND 번역 과 같은 연식이 좀 된 번역.
AI번역=챗GPT나 제미니와 같은 대화형 인공지능을 이용하거나, LLM과 같은 로컬 인공지능을 이용한 번역.
검수번역=기계번역이나 AI번역 이후에 어느정도 선에서 미번이나 오류가 나지 않게끔 검수를 해놓은 번역이며,
번역탭에서 따로 검수라는 단어를 붙이지 않아도, AI번역이나 기계번역이라며 글을 올린다면, 검수를 했다고 판단.
무검수번역(딸깍번역)=기계번역이나 AI번역을 통해 일괄 번역만 해놓은 상태로 검수를 하지 않은 번역.
손번역=번역프로그램의 사용 여하를 떠나, 최종적으로 인간이 대부분의 내용을 검수하고 높은 퀄리티로 다듬은 번역.
이것이 내 개인적인 견해이며, 모든 역자가 다 똑같이 생각하는 것이 아니다.
손번역에 대해서는 내가 생각하는 개인적 조건이 있다.
일단 번역의 품질이 높아야한다.
손으로 하나하나 번역했다고 해서 까봤더니, Chicken Burger를 닭백숙으로 번역해버리면
방식이 어찌되었든 그것이 올바른 결과물이라고 생각되지 않기 때문이다.
그리고 가능한 대부분의 내용을 인간이 직접 검수를 해야한다.
이 부분이 AI번역과 손번역의 차이라고 생각된다. 거의 모든 부분을 검수하는 것과, 일부분만 검수하는 것에는 큰 차이가 있기 때문이다.
그리고 AI번역의 단점인, AI 번역 특유의 문맥적 오류나, 환각번역의 문제점이 없고
기계번역의 단점인 팥고물과 같은 기계번역 어투가 없어야 한다고 생각한다.
이러한 부분들을 모두 검수하고 올려야 손번역이라고 떳떳하게 말할 수 있지 않을까 싶다.
아무튼, 손번역의 방식은 크게 두가지로 나뉜다.
1.번역프로그램을 쓰지 않고 노트패드++나 비쥬얼코드와 같은 메모장류 프로그램만 이용하여 직접 번역
어떠한 논란의 여지도 없는 완벽한 손번역이고, 꽤 오래전부터 행해진 번역 방식이며
실제로 이 방식으로 번역하시는 분도 계신다.
본인도 이러한 방식으로 번역을 해본 적이 있으며, 이 방식에는 장단점이 확실하다.
장점으로는, 손으로 직접 번역하는 만큼 해당 역자의 어휘가 일관되게 나타나고, 용어도 통일성이 높다.
역자의 언어적 능력이 뛰어나다면, 읽는 족족 자연스럽게 번역만 하면 된다.
또한 번역프로그램이라고 만능이 아닌지라, 번역프로그램으로 인한 오류나 번역 찌꺼기가 생길수도 있는데, 손으로 번역하면 그런건 일절 없다.
그러나 단점이 너무나 명확한데, 위에서 말했듯, 역자의 어휘나 언어적 능력에 따라 번역의 품질이 매우 달라진다.
거꾸로 말하자면 역자가 언어 능력이 떨어질 경우, 오역이 잦을 수 있다는 것이다.
프로그래밍적 능력도 어느정도 받쳐줘야 한다. 번역프로그램을 이용하면 어느 대사를 번역해야 하는지 알려주는데에 반해
메모장같은걸 써서 어디부터 어디까지가 번역해야 하는 구간이고, 어디를 만지면 안되는지 프로그래밍적 지식으로 얼추 파악 해야 하기 때문이다.
그리고 인간이 육안으로 메모장으로 검수하다보면, 사람이 할 수 있는 온갖 실수가 다 생기게 된다.
미번구간을 실수로 번역하지 않은채 넘어간다거나, 따옴표 하나를 실수로 지워서 게임에 오류가 생겨서
어디에 오류가 생겼는지 하루종일 찾아야 하는 경우도 생긴다.
가장 큰 단점은, 시간을 너무나 많이 잡아먹는 주제에 효율이 심하게 구리다.
번역프로그램의 도움없이 한 문장 한 문장 직접 번역하여 직접 타이핑하고 검수하는 과정은 심한 피로감을 불러일으키기 때문이다.
장점을 상회하는 이러한 단점들로 인해, 본인은 이 방식을 추천하지 않는다.
2.번역프로그램을 이용하여 1차적으로 번역을 한 이후에 모든 내용을 검수하여 번역
이것이 내가 하는 방식의 손번역이다.
번역프로그램을 이용하여 AI번역을 거치고 (기계번역도 가능하긴 하다)
이후에 한 줄 한 줄 모두 원문과 대조하고 검수하여 자연스러운 어휘로 번역하는 방식이다.
여기서 전부 검수하느냐, 아니면 필요한 부분만 검수하냐에 따라
손번역이냐 AI번역(검수)이냐로 갈린다고 생각한다.
어떠한 번역프로그램을 사용하던 손번역이 가능하지만,
본인은 Translator++를 주로 사용하며, 이것을 이용한 번역 방식을 설명하겠다.
Translator++ 공식 다운로드 사이트
Translator++ 제작자 Patreon
일단 무료판은 공식 다운로드 사이트에서 다운로드가 가능하지만,
내가 설명할 번역 방식에는 유료판에서 지원하는 애드온이 필요하므로,
가능하면 어디서 복돌판을 구하던가 (식당시절 한번 올라왔었는데 지금은 잘 모르겠다)
제작자 Patreon 후원해서 유료판을 받던가 해야한다.
본인은 유료판을 사용하여 번역을 하다보니 무료판이나 복돌판으로 번역 하는 것과 다르므로 이 점을 감안해 줬으면 한다.
1.AI번역 관련 초기설정
처음 Translator++를 기동하면 이렇게 화면이 뜬다.
초기 AI번역 설정부터 해야하니 일단 우측 상단의 X를 누른다.
그러고 나서 상단 바에서 드라이버랑 렌치로 된 부분이 설정이니 그걸 눌러준다.
이렇게 로그인창이 뜨는데, 본인이 유료판 구독자라면 Patreon이랑 연동시켜서 로그인 하면 된다.
아무튼, 좌측에 Add-ons를 누른다.
그러고나서 위쪽 탭에 Install 탭을 누른다.
여러가지 애드온이 나오는데, 걍 전부다 깔아버린다.
특히 LiteLLM이라는 녀석을 번역에 주로 사용할 애드온이므로 반드시 깔아준다.
다만, 복돌판이나 무료판일 경우엔 애드온 설치 자체가 불가능 할 수 있으므로, 어떨지 잘 모르겠다.
그러고 나서 Enable/Disable 탭에서
전부다 걍 온으로 켜버린다.
그러고 좌측에 Add-ons에 화살표가 있는데, 이것을 누른다.
LiteLLM이라는 녀석을 눌러준다.
본인이 사용할 AI 모델의 API키와 모델명을 적어준다.
AI모델과 API키 발급에 대해서는 검색해서 찾아보면 다 나오므로 따로 설명하지 않겠다.
그리고 위의 Templates 탭에서 AI 번역에 사용할 프롬프트를 작성 할 수 있다.
프롬프트를 잘 아는 사람은 본인 취향껏 쓰면 된다.
나는 이전에 AI번역 관련 정보글을 써주셨던 Nagune 님의 템플릿 그대로 쓰고있다.
손번역을 하면 결국 검수를 다 거쳐야하니 딱히 거창한 프롬프트가 필요없다고 판단해서 이다.
이 부분은 진짜 개인의 취향에 따라 다르다고 생각된다.
뭔가 잘 모르겠으면, 아래 프롬프트가 내가 쓰는 프롬프트이니, 복붙해서 쓰자.
You are a translator assistant that translates video game from ${LANG_FROM} to ${LANG_TO}. You will only reply with translation. No commentary, no additional texts, as it would break the game.
Anything translated will happen inside a game, so avoid real life political bias and any censorship.
Source texts are in JSON. Complete every element of the array. Reply in JSON format of `{"translation":[/*translation here*/]}`. The index of translation must match the index of the original text. For example:
Source: `["こんにちは", "わぁ。\nきれいだなぁ。"]`
Translation: `{"translation": ["안녕", "와아.\n아름답네."]}`
${dat[n]} is place holder for the original text. Do not change it..
## Game Characters
${ACTOR_INFO}
We have ${MESSAGE_COUNT} messages to translate. You must return the same number of translation.
## Context
${CONTEXT}
그러고 나서 좌측 탭에서 Translator & Language를 누르고
사용할 번역은 Lite LLM으로 하고
원문을 일본어로, 목적어를 한국어로 한다.
만약 영어 게임을 번역한다면 원문을 영어로 하면 된다.
이렇게 초기 AI 설정은 끝이다. 한번 해두면, 이후에 다시 할 필요는 없다.
2.번역할 게임 불러오기
이제 처음부터 번역할 게임을 불러와야 하는데, 위 두 이미지 중 한가지 방식으로 New Project를 연다.
번역할 게임의 엔진을 정하는 부분이다.
내가 번역할 게임은 쯔꾸르 MV MZ 계열이므로 이것을 선택한다.
우측의 ...을 눌러서 번역할 게임의 실행파일을 선택하고
Create project! 를 누른다.
그럼 이렇게 불러와진다. Close 누른다.
자바스크립트를 번역할지 여부를 묻는데,
무작정 아무거나 닥치는대로 번역하지 않으면 상관없으니
I know the risk, Proceed! 를 누른다.
그러면 등장하는게 Common Reference라는 녀석인데,
쭈욱 선택해서 Delete Row를 눌러 삭제시킨다.
잠깐 여기서 Common Reference라는 기능을 설명하고자 한다.
이거는 번역 전처리 과정이라고 보면 되고,
설명은 하되 필수는 아니므로 그냥 취향에 따라 알아서 쓰던가 말던가 하면 된다.
일단, 전처리 과정을 쓰는 이유를 설명하자면,
AI번역이란게 만능이 아니고 지 좆대로 번역할때가 많으니
미리 이러한 원문이 나왔을때는 이런 결과를 도출하라 라고 전처리식을 설정하는 것이다.
사용 방식은,
간단하게 Original Text에 원문을 적고, Initial에 결과로 나올 내용을 적으면 된다.
일단 이 전처리가 왜 필요한지 정확히 이해하려면, AI번역의 단점을 좀 나열할 필요가 있다.
첫째, AI번역은 특문을 지 좆대로 바꾼다.
최신 AI 모델이 되면서 이러한 오류가 줄어들고 있지만, 여전히 특문을 지 좆대로 바꾸는 경향이 있다.
예를 들어, 원문은 「인데 그것을 지 맘대로 "로 바꾸는 경우.
혹은, 。라는 일본식 마침표가 어떤것은 。로, 어떤것은 . 으로 번역한다거나 하는 경우이다.
이는 프롬프트로 교정한다 한들 몇차례인가 발생하며,
프롬프트가 늘어나면 늘어날수록 사용 토큰이 늘어나므로, 전처리로 설정해 두는것이 효율적이다.
예시:
원문 。 결과 도출 .
원문 「 결과 도출 「
둘째, AI번역은 인명 및 지명과 같은 고유명사에 취약하다.
일본어는 같은 한자라도 여러가지 방식으로 발음이 가능한 국가이다.
예를 들어 大翔라는 이름이 있다고 가정하고,
이것이 히로토, 야마토, 다이토, 타이가, 하루토, 등으로도 읽을수 있기 때문에
AI가 같은 이름임에도 히로토와 야마토를 혼재해서 쓸 수 있다.
따라서, 이것을 한가지로 고정시켜놓을때 전처리를 쓸 수 있다.
다만 히라가나나 가타카나식의 이름을 고정시킬땐 주의 할 필요가 있는데,
예를들어 사람 이름이 のえ라서 그거를 노에 라고 고정시켜버리면
あのえきでまちあわせしよう
저 역에서 만나자 라는 문장이
저 노에키에서 만나자 가 되어버리기 때문이다.
따라서, 이러한 부분을 고려해서 사용할 필요가 있다.
참고로, 인명의 경우, 간혹 DL같은 게임 공식 사이트쪽에 프로필이나 이름 읽는법이 적혀져 있을때가 있으니,
그것을 참고하면 더 정확한 번역이 가능하다.
예시: 원문 大翔 결과 도출 다이토
일단, 전처리 설정에 자주 쓰이는 것은 위의 특문, 인명 지명을 포함한 고유명사 정도이며
아래의 내용들은 이와는 별개로 AI의 단점이니 쭈욱 나열하겠다.
셋째, AI번역은 히라가나나 가타카나를 이용한 문장 구성에 취약하다.
간혹 게임 컨셉에서 외국식 일본어를 구사한다거나 하여 가타카나로 문장이 전부 구성되어 있다거나,
이름이 한자가 아닌 히라가나로 표현되어 있다거나 하는 경우가 있다.
이것을 AI가 번역할때 정말 지 좆대로 번역하는 경우가 간혹 존재한다.
가타카나의 경우, アナタノコトガスキデス라는 문장을
진짜 딱딱하게 아나타노 코토가 스키데스 라고 도출한다거나 하는 느낌이다.
물론 요새는 AI모델이 꽤나 발달하여, 이조차도 괜찮게 굴러가면 번역이 잘 되지만,
최신 모델로 번역해도 여전히 병신같이 발음 그대로 도출할때가 있다.
넷째, AI번역은 의성어, 의태어에 취약하다.
야겜이라는게 장르의 특성상
천박한 의성어나 의태어가 자주 등장하는데,
예를들어서 ぢゅっぢゅっ 쥬웃쥬웃 이라거나 じゅぼ 쥬보 와 같은 녀석들이 있다.
보통 펠라같은걸 할때 등장하는 녀석들인데,
AI는 이런게 나오면 병신이 되어버려서
쥬보 쥬보옷 쥬웃 같이 번역해야하는것을 쭙쭙쭙 과 같이 별 이상한 결과를 낼때가 있다.
다섯째, AI번역은 문맥상 알맞지 않은 내용을 도출하기도 하며, 창조에 가까운 의역이나 환각번역을 할때가 있다.
AI번역의 기억력에는 제한이 있다. 따라서 전에 내용과 전혀 다른 내용을 도출하기도 한다.
또한, 전혀 원문과 관계없는 내용을 도출할때도 있으며, 지 맘대로 의역할때도 있다.
すごい 스고이 라는 단어를 갑자기 지 좆대로 대박 쩔어! 라고 번역할수도 있는 것이다.
그리고 맥락 파악을 제대로 못하니, I'm cumming 이라는 문장을 여자가 발언하고 있음에도,
나 싼다아아앗 으로 번역이 될때가 있으며, 여자의 대사라서 오빠 언니가 나와야 하는 상황임에도 형 누나가 나올수 있다.
여섯째, AI번역은 검열 당할 때가 있다.
제미니와 같은 AI들은 아무리 탈옥 프롬프트를 썼다한들
검열당하여 결과물이 전혀 도출되지 않을 때가 있다.
이러한 부분들 때문에 AI번역은 어느정도 검수를 해야할 필요가 있는 것이고,
손번역은 이것들을 전부 다 세세하게 검수를 해야 하는 것이며,
무검수 AI번역들의 신뢰도가 많이 떨어지는 이유이다.
아무튼 이런 것들을 고려해서 전처리 기능을 취향껏 사용하면 된다.
이제 번역의 과정은 다음의 단계로 이뤄진다.
1. 1차적으로 data폴더 쪽의 json파일들을 AI번역.
2. 그것을 검수하여 번역. (번역프로그램에 감지되지 않은 스크립트도 이때 검수)
3. 문제가 없는지 확인하기 위해 번역을 적용시키고 기동.
4. js폴더의 플러그인에서 번역이 필요한 부분만 번역 (필요한 부분이 없다면 안해도 됨).
5. 폰트 변경.
6. 다시 번역을 적용시키고 기동하여 미번구간이나 문제가 없는지 확인.
7. 필요시 이미지번역 (이쪽은 식질의 영역이고 하면 좋지만 못해도 상관 없으므로 이 글에서 다루지 않겠다.)
8. 번역이 잘 되었는지 구동하며 마지막으로 확인.
순서는 대충 저렇게 썼지만,
게임 볼륨이 크고 오류나 미번이 잦으면
몇번이고 반복될 수 있다.
게임 번역의 난이도는 다음과 같은 요소에 따라 달라진다.
1.게임 내 번역해야할 대사량
너무 당연하지만 대사가 몇만줄을 넘기 시작하면, 번역에 드는 시간과 노가다비율이 급격하게 늘어난다.
2.게임 내에 들어있는 플러그인의 갯수 및 스크립트 사용량
플러그인이 많고 파편화가 많이 되어있을수록 번역이 좆같을 확률이 늘어나며, 여기저기 귀찮은 스크립트가 있을 확률이 높아진다.
물론, 번역은 취향에 따라 본인이 알아서 하는게 맞지만
번역 하기전에 이러한 부분들을 대충 고려하여 이 개노가다를 시작할지 안할지를 결정할 수 있다.
아무튼, 일단 첫번째 단계인 1차 AI번역부터 실행한다.
앞서 말했듯이, Data폴더에 있는 json 파일들을 일단 1차적으로 번역할 필요가 있다.
단, 어지간해선 Data폴더에서 번역할 필요가 없는 녀석이 Animations.json 이니, 높은확률로 얘는 번역 안해도 된다.
Translator++에서 일괄번역은 두가지 방법이 존재한다.
위 이미지 처럼 번역할 파일들을 고르고 오른클릭으로 Batch Translation을 하는 것이 있는데,
이 방법은 추천하지 않는다.
일단 Translator++는 일괄번역을 돌렸을때 결과물이 좋지않다.
번역 프로세스가 길면 길수록 오역이나 환각번역도 잦은 편이고,
일괄번역을 통해 AI번역을 하고 싶다면, AIMT 라는 번역기가 훨씬 그쪽에 특화되어있는 대체제라고 생각한다.
혹시나 이러한 일괄번역 형식의 AI번역을 선호할 경우, 이 글 가장 위의 유틸글쪽에 AIMT 무료판을 받을수 있으니 그걸 써보도록 하자.
아무튼, 미리 얘기했지만, 내가 하는 방식은 AI번역을 거친 이후 검수를 하여 손번역까지 하는 부분이며,
Translator++는 단순한 AI번역보다 손번역에 더 특화되어있다.
따라서, 일괄 번역은 추천하지 않는다.
이것이 내가 하는 방식의 1차 번역이다.
번역할 파일 하나 고르고, 대충 10개에서 많아봐야 100개까지 지정하고 위의 이미지 처럼 번역을 돌린다.
그럼 위와 같이 결과가 나온다.
그리고 이녀석들을 다시 오른클릭하여
Translate like this 를 누른다.
그러면 위와같이 몇개의 셀이 변경되었다 이런 메세지가 뜨는데,
이것은 해당 게임의 다른 json파일들에 있는 동일한 유형의 텍스트를 똑같이 변경시키는 기능이다.
예를들어, 戻る라는 단어를 돌아가기 라고 번역했고
여기에다가 해당 기능을 사용하면
이 파일 외에 다른 json파일들에 있는 戻る도 전부다 돌아가기로 번역처리 되는것이다.
(참고로, Translator++는 한 json파일에 있는 단어나 문장이 동일하거나
중복되는 부분은 전부 겹쳐서 나온다.)
아무튼, 좀 번거럽더라도 이렇게 분할적으로 번역을 하는게 나중을 생각하면 훨씬 낫다.
이렇게 번역할때 주의할 부분은
이렇게 자세히 보면
좌측 번호에 +가 있는애랑 없는애가 있다.
+가 들어가 있으면 예를들어 뭐 선택지라던지 같은, 뭔가 다른 스크립트랑 연결되어있을 확률이 높고,
없으면 그냥 대사 텍스트일 확률이 높다.
대부분 그냥 번역해도 무방한 녀석들이다. (가끔 문제가 생길수 있지만 어지간해선 괜찮다.)
그 다음, 파란 녀석들이다.
얘들은 제작자가 노트 혹은 코멘트로 적어놓은 애들일 확률이 높다.
어지간해선 안해도 되는 녀석들이라고 생각되지만
어쩌다 가끔 해야될 때가 있다.
노란녀석들은 자주 안보이는데, 번역하면 리스크가 있을수 있는 녀석들이다. variable같은 녀석들이 여기에 해당된다.
빨간 녀석들은 어지간해선 절대 건드리지 말자. 시스템과 연관되어 괜히 바꿨다가 치명적일수 있다.
아무튼 이렇게 골라서 번역하면 위의 이미지와 같이 번역이 진행된다.
AI번역은, 위의 이미지처럼 뭔가 번역이 괜찮긴한데
자세히 보면 AI번역이 티가 난다.
ちゅっちゅっちゅ 츄웃츄웃츄웃을 쪽쪽쪽 으로 번역한다던가
「お兄さん」을 특문을 지맘대로 바꿔서 '오빠' 라고 번역한다던가
精子懇願するようにしゃぶり尽くせ라는 구간도
정자를 애원하듯 빨아보라고 명령조로 얘기하는것인데
정자를 간청하듯 이라는 희안한 워딩을 쓰는것이다.
따라서, 이렇게 어색한 부분들을 자연스럽게 바꾸기 위하여,
나는 좌측의 원문을 확인하면서 우측의 내용을 바꾼다.
여기서는 내 방식이 그렇다는 것이지,
다른 모두가 이렇게 해야하는것은 아니다.
이미 번역된 내용을 자연스럽게 다듬는 것만으로도 많이 좋아진다.
이런 느낌으로 수정하면 된다.
그리고 이것과 별개로, Dtext나 addlog, namepop 같은,
이런 저런 스크립트들이 이 translator++에 인식이 안된 애들이 있을때가 있다.
그런 녀석들이 있을땐 알아서 노트패드같은거 켜고 직접 번역하거나 하면 되고,
가끔 걔네들중에 전각 공백으로 써야 제대로 표현되는 애들이 있다. 그거는 몇번 시행착오 해보면 알게되니, 그럴땐 전각공백 넣으면 된다.
참고로 json파일마다 번역이 어느정도 되었는지 좌측에 퍼센트로 나오니 이것도 유용하게 참고가 된다.
그리고 이 프로그램에서 ctrl+f 누르고 단어 일괄변경 기능이 있으니 알아서 쓰도록 하자.
아무튼 이렇게 이것저것 다 번역했다면,
위의 주사기 버튼을 눌러서 번역을 적용시키는데,
그대로 원래있던 게임에 번역을 적용시키는게 아니라,
따로 복사본을 만들어서 적용하게 되어있다.
복사본을 만들 폴더를 대충 편한곳에 새폴더 만들어서 적용하고,
Apply Translation을 누르면
지금까지 번역한 녀석들을 적용시킨 게임이 생성된다.
이것을 사용하여 게임 생성시키고 실행해서 대충 잘굴러가는지, 미번은 없는지, 오류 안나는지 이런걸 확인하면 된다.
다음에 번역할 것은 plugins.js 파일이다.
이 파일을 번역할때 주의할 점은,
data파일쪽과 달리 여기는 번역해야 할 녀석과 번역하면 안되는 녀석이 잘 구분이 안갈수 있다는 것이다.
이쪽 파일은 주로 시스템의 음량 설정이나
업적플러그인이나 에로스테 플러그인,
세이브 플러그인등
여러가지 플러그인과 관련된 내용이 여기에 있어서
아무거나 막 만지면 안된다.
이러한 플러그인 관련된 내용은 좀 복잡해서
[RPG MV/MZ 완전 번역 강좌]
이쪽을 참고할수도 있고,
개인적으론 그냥 Notepad++같은거 열고 확인하는게 더 수월할때가 많았다.
이 방식으로 하려면, 이 글 최상단에 있는 유틸 글쪽에서
MVMZLineMaker를 받아서 js폴더와 data 폴더가 있는 곳에 두고 실행한다.
그럼 이렇게 이미지처럼 정렬이 완료된다. 이제 plugins.js 파일을
메모장 계열 프로그램으로 열고 검수하여 수정할 차례이다.
위 이미지에 빨간 상자 쳐놓은게 번역해야 될 녀석들이다.
경험상 무슨 무슨 text라고 써있으면 그 구간은 번역해도 되는애들일 확률이 높고
이런것도 대충 만지작 거리다보면 딱 봐도 괜찮아 보이는 애들이랑 그렇지 않은 애들이 어느정도 눈에 익게 된다.
사실 가장 안전한 방법은 그냥 게임 해보고 미번이 나오는데
그 미번이 plugins.js 파일에 등장하면
걔만 골라서 번역하면 되고, 바꿔놓고 기동해서 오류 안나는지 확인해보면 된다. 어렵게 생각할 필요가 없다.
그리고 가끔가다가 plugins 폴더 내부에 있는 플러그인을 직접 번역해야 될때도 있다.
보통 카지노 플러그인이나, 날짜 혹은 시간 플러그인, 회상 플러그인 등이 이에 해당되는데,
이것도 직접 확인하고 바꿔보고 그러면 된다.
여담으로 처음 게임 시작하고 캐릭터 이름 쓰는 플러그인에 관해서는 이 글 가장 위에 있는 유틸모음쪽에 있으니 그거 쓰면된다.
아무튼 이 과정을 통해 번역하고 검수하는 것을 몇차례고 본인이 만족할때까지 하면 된다.
그리고 이제 폰트를 변경해줘야 하는데
폰트를 바꾸는 이유는 두가지이다.
첫째는, 기본폰트가 보기 좆같아서 그렇다.
이게 가장 크다. 그냥 쯔꾸르 기본한글폰트가 많이 좀 구려보인다.
둘째는, 폰트 크기가 클때, 크기가 작은 폰트를 쓰면 문장이 글자박스 밖으로 안나가기 때문이다.
사실 이거는 폰트 크기 조절하면 되는데, 폰트 자체가 작고 괜찮으면 폰트크기를 굳이 안바꿔도 되기 때문이다.
간혹 plugins.js쪽에서 폰트를 바꿔야 할 경우가 있지만,
대부분의 경우 MV라면 font 폴더에 원하는 폰트를 넣고,
gamefont.css를 열고
src: url("mplus-1m-regular.ttf"); 여기서 "" 이 사이에 본인이 원하는 폰트를 기재하면 된다.
src: url("Cafe24Dongdong-v2.0.ttf"); 뭐 대충 이런 느낌이다.
MZ라면 시스템 쪽에 폰트 내용이 있다.
이것도 마찬가지로 바꿀 폰트를 font폴더에 넣고
system.json 파일을 열어서 "fontSize":26,"mainFontFilename":"mplus-1m-regular.woff" 이거랑
"numberFontFilename":"mplus-2p-bold-sub.woff"
이런거를 바꿔주면 된다.
"fontSize":26,"mainFontFilename":"Cafe24Dongdong-v2.0.ttf"
이런 느낌으로.
이 방식 외에도
폰트폴더에 있는 모든 폰트 이름 그대로 파일만 바꿔쳐서 적용시키는 방법도 있다.
근데 이렇게 폰트를 바꿔도 간혹 게임 내 폰트가 그대로인 경우가 있는데,
이럴때는 plugins.js 쪽에 폰트관련 플러그인이 있어서, 여기서 찾아서 폰트를 바꿔야 할 수 있다.
아무튼, 이렇게 폰트까지 바꾸면
1차적으로 번역 -> 일부 검수하여 번역 or 전부 검수하여 손번역 -> 기동하여 확인
-> plugins.js이나 플러그인 쪽에서 필요한 부분 번역 -> 기동하여 확인
폰트 변경-> 마무리로 확인
이런 느낌으로 얼추 다 끝이 나게 된다.
그리고 이와 별개로, 게임 제목 (그 게임 창 상단)에 닉을 박는 역자들이 있는데,
이에는 세가지 이유가 있다.
1.개고생한 역자가 본인이 노력을 알아주면 했어서 에고표출
2.프랜차이즈처럼 역자 이름보고 믿고 하거나 좆같으면 거르기 쉬워서
3.시간 지나서 버전이 올랐을때 어떤 역자가 했는지 알아야 알려주기 쉬워서
이러한 이유로 번역을 하면 닉을 박는 역자들이 생긴다. 이건 순전히 역자 취향에 따라 갈린다.
아무튼, 게임 제목은 Translator++의 경우, system.json 파일의 가장 상단에 위치해있으니 그거 바꾸면 되고,
노트패드같은 메모장류를 이용하면, system.json 파일 열고 ctrl+f 누르고 gametitle을 찾아서 바꾸면 된다.
또한, index.html파일과 package.json 는 게임 기동 초반에 게임 타이틀이 뜰때 관여하는데,
위의 system.json 파일처럼 동일한 제목란이 있으니
이것을 알아서 바꾸면 된다.
아무튼, 본인이 번역하는 방식을 얼추 설명해놨고
이미 얘기했듯이, 역자들 마다 번역 방식이 다르고
뭐가 더 낫다를 논하기가 어렵지만,
일단 본인은 이렇게 번역한다 라는 것이다.
AI번역이 생기고 translator++를 이용할때나,
이전에 기계번역과 쯔꾸루 익스트랙터를 쓸때나,
손번역을 하게되면 그 과정은 대부분 비슷했고, 개노가다 하는것은 그때나 지금이나 마찬가지였다.
글을 읽어보면 알겠지만, 본인은 프로그래밍적인 정규식이나 전후처리는 잘 쓰지 않고
거의 박치기수준으로 번역에 노가다로 때려박는 것을 선호한다.
따라서, 나의 이런 투박한 방식의 번역 설명이
얼마나 누군가에게 도움이 될지는 잘 모르겠으나,
쯔꾸르 번역에 있어서 하고자 하면 못할 것은 없다고 생각하는 바이며,
죽어라 때려박으면 무조건 할수 있는게 번역이다. 어렵게 생각할 것이 없는 것이다.
따라서 많은 사람이 번역에 장벽을 느끼지 않고 한번쯤은 편하게 시도해봤으면 한다.
끝.
