1. FTB Quets 모드란

모드팩에 퀘스트를 추가해 주는 모드이다. 내가 해본 모든 1.16.x 모드팩의 퀘스트는 이 FTB Quests 모드로 만들어졌다. 모드 제작자는 LatvianModder.

ㄴ모드팩을 했다면 흔하게 봤을 화면(Create: above and beyond)

위 내용을 사용자의 언어 설정에 따라 다른 언어로 표시하게 만드는 방법에 대해 알아보자.

2. 퀘스트 내용이 저장되는 방식

퀘스트의 데이터는 다음 폴더에 snbt의 확장자로 저장된다.

config\ftbquests\quests\

위 퀘스트(High Aspirations)는 overview.snbt 파일 내에 저장되어 있으며,

{
    title: "High Aspirations"
    icon: "create:andesite_alloy"
    x: -11.5d
    y: 0.0d
    shape: "circle"
    subtitle: "Chapter 1"
    description: [
        ...(생략)
}

파일 내용은 위와 같다.

이제 퀘스트의 제목(High Aspiration)을 한글("원대한 포부")로 바꿔 보자. 물론 저 텍스트를 그대로 한글로 바꿔도 되지만, 그러면 라틴어로 언어설정을 한 경우에도 한글이 보이므로 한국어로 언어 설정을 한 경우에만 번역된 한국어가 보이게 해 보자.

3. 어떻게 바꾸는가?

먼저, snbt 파일의 텍스트 부분을 key로 치환해야 한다. 예를 들어, 위 사례의 맨 윗줄

title: "High Aspirations"

title: "{quest.overview.1.title}"

과 같이 바꾼다. quest.overview.1.title은 내가 임의로 만든 key이다.

그리고 다음과 같이 새로운 언어 파일(en_us.json, ko_kr.json)을 작성한다. 이 파일은

kubejs/assets/kubejs/lang/

폴더 안에 저장한다.

en_us.json은 퀘스트 텍스트의 기본값을 저장하기 위해 필요하다. 이 파일의 내용은 영어 사용자 뿐 아니라 key에 대한 대응값이 존재하지 않는 모든 언어 사용자에게 기본값으로 보여진다.

// en_us.json 
{
    "quest.overview.1.title" : "High Aspirations"
}
// ko_kr.json
{
"quest.overview.1.title" : "원대한 포부"
}

이제 한국어로 설정한 상태에서 퀘스트 페이지에 들어가면,

퀘스트의 제목이 "원대한 포부"로 번역되어 있는 것을 볼 수 있다.

동일한 방법으로 subtitle, description 등 모든 텍스트를 번역할 수 있다.

4. 문제점

모드 파일들의 경우 텍스트가 이미 "key:value" 형태로 만들어져 있고 value(텍스트)는 en_us.json 파일 안에 들어있어서 en_us.json을 토대로 ko_kr.json을 생성해서 수정하기만 하면 손쉽게 한글화를 할 수 있는것과 다르게,

대부분의 모드팩 제작자는 퀘스트 내용을 snbt 파일 내에 하드코드하고 있다. snbt 파일에 키를 집어넣고 텍스트 내용을 en_us.json으로 분리하는 방식을 사용하지 않고 있다.

때문에 한글화를 위해서는 snbt에 있는 영어 내용을 삭제하고 한글로 대체하거나,

(영어 하드코딩 -> 한글 하드코딩으로 교체하는 것)

그것이 싫다면 위에서 설명한 방법대로 snbt의 텍스트 부분을 key로 바꾸고 새로운 언어 파일(en_us.json, ko_kr.json)을 만들어야 한다.

두 방법 모두 모드팩 원본을 수정해야 하기 때문에, 모드팩이 업데이트 될 때 비슷한 과정을 또 거쳐야 되어 아주 불편하다는 단점이 있다.

5. 제 의견

퀘스트의 description에는 모드팩 제작자의 의도, 진행 팁, 뉴비를 위한 안내 등이 비교적 긴 텍스트로 들어가기 때문에 한글화의 이득이 크다고 생각한다.

오히려 모드의 아이템 이름같은 건 그냥 영어로 해도 큰 상관이 없다.

그러나 대부분 snbt 파일의 제작이 번역을 배제한 채로 만들어져서 아쉽다.

모드팩 제작자들이 snbt 파일을 하드코딩된 형태로 만드는 것이 아니라 key값만 집어넣고 텍스트는 en_us.json으로 빼주면 로컬라이제이션이 훨씬 쉬워질 것 같다.

+ Recent posts