안녕하세요, 이번에는 FVTT에 있는 시스템이나 모듈을 번역하는 방법에 대해 간단히 적어보도록 하겠습니다. 이 포스트는 저처럼 개발에 대해 지식이 별로 없는 분들을 위해 작성되었습니다.


FVTT의 풍부하고 다양한 모듈을 활용하고 싶지만, 언어의 장벽때문에 활용하지 못하는 경험이 있을지도 모르겠습니다. 이럴 때 스스로 번역을 하면 바로 세션에 활용할 수 있게 됩니다. 

이번에는 시스템이나 모듈을 번역하고, 그걸 바로 내 FVTT에 적용해보고, 번역을 해당 프로젝트에 기여하는 방법까지 다루겠습니다. 


이 과정에서 저는 Visual Studio Code 라는 에디터 프로그램을 활용하고 있습니다. 필수는 아니지만, 앞으로 FVTT라는 개발자 친화적 플랫폼을 사용할 예정이신 여러분은 한번 쯤 설치해두시면 두고두고 잘 쓸 수 있으므로 설치를 권장합니다. 

https://code.visualstudio.com/


+ 이 방법으로 컴펜디움은 번역할 수 없습니다. 컴펜디움을 번역하려면 'Babele' 모듈을 사용해야 합니다. 


1. 시스템 or 모듈의 언어 파일을 찾자 

시스템 모듈이나 일반 모듈 모두 구조는 거의 비슷합니다. 

language, lang 등의 폴더 안에 언어 파일이 담겨있습니다. json 형식으로 되어있고요.

그 언어파일만 일단 찾으면 이 다음은 매우매우 쉽습니다. 

이번엔 예시로 크툴루의 부름 7판 (비공식) 시스템 모듈을 통해 살펴보겠습니다. 

https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT


프로젝트 별로 다르지만, 대체로 거의 모든 모듈은 복사/수정이 자유롭습니다. 자세한 사용 범위는 반드시 모듈 별 LICENSE 파일을 살펴봐주세요. 

이 시스템 모듈 역시 복사 및 수정이 자유로운 GNU 라이선스를 사용하고 있습니다. 따라서 우측 상단의 Fork 버튼을 눌러서 레포지토리를 복사해줍시다. 

이 시스템 모듈의 디렉토리를 살펴보면 lang 폴더가 있습니다. 그 아래에 들어가보면... 

이렇게 언어 파일들이 있는 것을 알 수 있을 것입니다. 

이것은 모듈의 현지화를 위해 필요한 json 파일입니다. 

* 토막 지식

개발 용어로 국제화(internationalization, 소프트웨어를 다국어화하는 것)는 'i18n' (i로 시작해서 n으로 끝나는 18글자 단어라는 뜻),
현지화(localization, 외국어로 된 소프트웨어를 현지어로 변환)는 'l10n' (l로 시작해서 n으로 끝나는 10글자 단어라는 뜻) 이라고 부른다고 합니다. 커뮤니티 위키 등을 참고할 때 참고하세요.

각 언어별로 지정된 현지화 코드가 있습니다. 표준을 따라 입력하지 않으면 인식하지 않습니다. https://en.wikipedia.org/wiki/Language_localisation

한국어는 ko이기 때문에, 한국어 파일을 작성할 경우 파일 이름을 반드시 'ko.json' 이라고 입력해주어야 합니다.

기준이 되는 언어 아무거나 골라서 번역해도 되지만 보통 표준은 영어입니다. 따라서 en.json 파일을 열어봅시다. 그 내용물은 대강 이런 식으로 표시될 것입니다. 

왼쪽에 있는 Coc7.title 과 같은 것은 키코드로, 시트에서 해당 키코드가 있는 위치에 대응시켜 오른쪽에 있는 "Call of Cthulhu...~ Unofficial)" 라는 문자를 표시하게 됩니다. 

무슨 말이냐면, ':' 다음에 있는 따옴표로 둘러싸인 부분을 번역하면 된다는 의미입니다. 

주의할 점은, 오타가 생기지 않아야 합니다. 따옴표를 빠뜨렸거나 쉼표를 빠뜨렸거나하면 인식하지 못하게 되니 주의하시길 바랍니다. 

이렇게 한줄한줄 번역해서 저장하면 ko.json 파일이 완성되겠죠. 그 파일을 lang 폴더에 넣으면...

와! 이걸로 번역 끝!


2. 경로 입력

... 인 줄 알았죠? 아직 남았습니다. 

모듈을 시행할 때 '어디에 해당 언어의 언어파일이 들어있습니다' 라고 지정해주는 '이정표' 같은 파일이 하나 있습니다. 거기에 우리의 한글 언어 파일의 경로를 입력해주지 않으면 어느 것이 언어파일인지 모르기 때문에 적용되지 않습니다. 우리 컴퓨터는 그정도로 밥퉁이입니다.

대체로 일반 모듈은 module.json, 시스템 모듈은 system.json 이라는 이름의 파일을 찾으면 됩니다. 

Coc 시스템 모듈은 system.json이라고 되어 있습니다. 열어서 확인해보면 다양한 파라미터들이 역시 써있습니다. 그 중에서 이 부분을 수정해야 합니다. 


이 부분에 한국어를 추가해줘야 합니다. 

다른 언어들처럼 마찬가지로 형식을 따라서 입력해주면 됩니다. 다음 줄을 "languages": [ 다음에 추가합시다.

{
    "lang":"ko",
    "name":"Korean",
    "path":"lang/ko.json"
},
    

이렇게 저장해주면 끝! 

한국어가 무사히 추가됩니다. 


3. 번역 적용하기

기왕 번역했으니 번역이 잘 되었는지 확인해봐야겠지요? 

그런데, 어떻게 확인해볼까요? 

깃허브를 이용하는 방법과 로컬에서 해보는 방법 두 가지를 소개하겠습니다. 편한 방식을 선택해주세요.


3-1 깃허브를 이용하기

깃허브를 이용해서 복제한 모듈을 만들어 적용하는 방법입니다. 

이 방법을 사용하면 3-2 처럼 업데이트 시 번역이 날아가지 않습니다. 

우선 위의 1,2 순서대로 따라갔으면, 내 레포지토리에 번역한 파일이 들어있는 모듈이 생성되었을 것입니다. 여기서 다운로드 링크만 살짝 바꿔주면 됩니다.


2에서 수정했던 module.json 파일이나 system.json 파일을 펼칩시다. 

대부분 가장 하단에 쓰는 편인데, "download" 와 "manifest" 부분을 찾습니다. 

크툴루의 부름 7판 시스템 모듈에서는 다음과 같이 써있습니다.

 "manifest": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT/releases/latest/download/system.json",
  "download": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT/releases/latest/download/system.zip"

이 부분을 복사한 우리의 레포지토리에 맞게 수정해주면 됩니다. 

다음과 같이 수정하면 됩니다. 

 "manifest": "https://github.com/(깃허브 사용자 이름)/CoC7-FoundryVTT/releases/latest/download/system.json",
  "download": "https://github.com/(깃허브 사용자 이름)/CoC7-FoundryVTT/releases/latest/download/system.zip"

이쯤되면 눈치채셨겠지만, 깃허브 사용자 이름만 바뀌었습니다.

모듈마다 시스템마다 링크 양식은 조금씩 다를 수 있지만, 기본적으로 사용자 이름 부분과 브랜치 이름, 릴리즈 태그 이름 등 원래 레포지토리랑 다른 부분만 현재 내 레포지토리에 맞게 변경해주면 됩니다. 


다음으로 릴리즈 해봅시다. 현재 상태를 새로운 버전으로 릴리즈하기 위해서는 태그가 필요합니다. 

프로젝트 페이지 우측에 보면 'Releases' 라는 메뉴가 보입니다. 그것을 클릭하면 릴리즈를 볼 수 있는 페이지가 나옵니다. 

해당페이지에서 'Draft a new release'  버튼을 클릭합니다. 

버튼을 누르면 릴리즈 내용을 설정하는 페이지가 나옵니다. 

Choose a tag 버튼을 눌러 태그를 설정해봅시다. 

태그 목록에 나오는 태그들은 이전 버전들에 관한 태그입니다. 우리는 번역이 추가된, 새로운 버전의 태그가 필요하므로 빈 칸에 임의의 문자를 적어줍시다. 

원래는 버전명을 적어주어야 하지만, 어차피 나만 사용할 모듈이면 아무렇게나 설정해도 상관없습니다. 임의로 'test1' 이라고 설정해봅시다.

릴리즈 제목을 쓰고... 이대로 릴리즈합시다. 

그럼 새로운 릴리즈가 완성되었습니다. 와! 

다운로드 링크가 릴리즈 태그를 요구하는 경우가 있습니다. 그 경우 릴리즈 하기 전에 릴리즈할 태그 이름을 다운로드 링크에 먼저 수정해둔 다음, 그 태그대로 릴리즈하셔야 합니다. 


이제 위에서 manifest 옆에 적었던 링크를 복사해서 파운드리를 켭시다. 

Coc 모듈은 시스템 모듈이므로, 시스템 창에 들어가 시스템 설치 > 매니페스트 URL 에 복붙한 후 설치를 누르면 우리가 수정한 번역 모듈 다운로드 완료입니다! 들어가보면 정상적으로 적용되어 있을 것입니다.


3-1-2 내 번역 제출하기 (Pull request)

번역한 것을 나만 보지 않고 원본 프로젝트에 제출해서 기여할 수도 있습니다. 

2. 경로입력 단계까지 마친 상태에서 프로젝트 메인 페이지를 열어보면 상단에 Contribute 라는 버튼이 생깁니다. 해당 버튼을 누르고, 초록색의 'Open pull request' 버튼을 누릅니다.

그러면 내가 무엇을 수정했는지 수정 이력과 함께 Create Pull request 라는 초록색 버튼이 뜹니다. 해당 버튼을 눌러줍시다. 

그러면 Pull request 를 작성하는 페이지가 뜹니다. 

내가 뭘 고쳤는지 영어로 잘 설명하고 제출하면 됩니다. 

해당 Pull request 가 받아들여지면, 프로젝트의 기여자가 됩니다. 다음 모듈 업데이트 때 자신의 번역을 다른 사람들도 이용할 수 있게 될 것입니다. 


3-2 로컬에서 적용해보기

굳이 업로드하지 않고 간단하게 내 컴퓨터에서만 확인해도 됩니다. 

시스템 모듈인 경우, Data/systems/ 폴더 아래 각 시스템별 폴더를 살핍시다. 

일반 모듈인 경우, Data/modules/ 폴더 아래 각 모듈별 폴더를 살핍시다.

우리가 번역한 모듈의 폴더로 들어가서 lang/en.json 파일을 찾읍시다. 

그 파일의 내용을 편집하여, 우리가 번역한 파일의 내용으로 바꿔넣고 저장합시다. 게임으로 돌아가 새로고침하면 모듈이 번역되어 표시됩니다. 

단, 이 방법은 모듈이 업데이트되면 번역이 통째로 사라지니 주의하십시오.

업데이트 해도 사라지게 하고 싶지 않으면 한글 번역 파일을 다른 저장공간에 백업해두세요. 아니면 위에 서술한 다른 방법을 이용하셔도 좋습니다. 





대충 사는 중

크로넬님의 창작활동을 응원하고 싶으세요?