[카테고리:] 한글화

Weblate에 새 프로젝트 생성

프로젝트 생성

화면 상단의 ‘+’아이콘 -> 새로운 번역 프로젝트 추가를 누르면 프로젝트 생성 창이 뜹니다.

와 같이 작성하면, 프로젝트 정보란에 아래와 같이 표시됩니다.

파일 추가

Weblate는 A 언어->B 언어로 번역하는 데 도움을 주는 도구가 아니라 A-> B, C, D, E 등 불특정 ‘다수’의 언어로 번역하는 데 사용하는 도구이기에

  • A 언어가 담긴 파일
  • B, C, D, E, … 등 언어를 번역할 때 쓰일 최초의 파일

이 필요하고, 파일의 이름이든, 폴더의 이름이든 파일의 경로에서 각 언어을 구분할 수 있어야 합니다.

폴더 별 언어 구분

파일별 구분

그리고, Weblate에서는 번역 파일을 파일 단위로 관리하지 않고 ‘구성요소'(컴포넌트) 단위로 관리합니다. 이는 아래 단계들에서 다시 살펴볼 예정입니다.

본격적으로 번역할 파일을 추가하기 전에 용어집을 먼저 추가하는 것이 좋습니다.

경우에 따라 자동으로 만들어진 용어집을 사용할 수 있지만, 직접 만들어주면 버전관리할 때 큰 도움이 됩니다.

용어집 추가

‘구성 요소’ -> ‘새로운 번역 구성 요소 추가’를 누르고 ‘처음부터 시작’ 탭을 누릅니다.

내용은

  • 구성 요소 이름: 프로젝트 이름 그대로 쓰는 것을 추천
  • URL 슬러그: ‘glossary’를 추천
  • ‘Use as a glossary’: 체크
  • 프로젝트: 그대로
  • 원본 언어: 번역하고자 하는 원문의 언어
  • 파일 유형: TermBase eXchange file 추천 (다른 파일 형식은 Weblate의 단어집 기능을 온전하게 쓰지 못합니다)

로 작성하고 ‘계속’을 누릅니다.

‘구성 요소 업데이트 중’에서 넘어가지 않으면

‘이전의 구성 요소로 돌아가기’를 두번 누르면 방금 만든 용어집을 볼 수 있습니다.

이 이후로는

번역할 파일 개수가 적다면

  • 문서 번역
  • 처음부터 시작

번역할 파일 개수가 많다면

  • 번역 파일 올리기
  • 버전 관리

를 선택해서 파일을 추가하면 됩니다.

구성 요소 생성

프로젝트 페이지 -> 구성 요소 탭 -> 새로운 번역 구성 요소 추가로 구성 요소를 추가할 수 있습니다.

버전 관리를 제외하고 나머지 3가지 방법은 한 언어에 번역할 파일이 10개 있으면 아래의 작업을 번역할 파일별로 10번 반복해야합니다.

처음부터 시작

(작성중 4순위)

문서 번역

(작성중 3순위)

번역 파일 올리기(ZIP)

같은 내용을 담은 원문과 번역문 파일을 압축합니다. 위에서 설명한 대로 번역 파일은 (폴더 이름으로 구분 하던, 파일 이름으로 구분하던) 경로명에 언어 코드가 있어야 합니다.

  • ui.zip
    • de
      • ui.json
    • en
      • ui.json
    • fr
      • ui.json
    • ko
      • ui.json

만약 원문만 있는 경우

  • ui.zip
    • en
      • ui.json

과 같이 압축하시면 됩니다.

그리고 이 파일을 업로드 하면 ‘구성 요소 이름’과 ‘URL 슬러그’가 자동으로 ZIP 파일 이름으로 변경되는데 그대로 두셔도 좋고, 바꾸셔도 좋습니다.

원본 언어는 다른 언어 번역은 다 없에도 남아 있을 마지막 언어를 지정하시면 됩니다. 기본적으로 원문(또는 영어)로 선택하시면 됩니다.

가져올 번역 파일 선택에서 파일 유형 ‘~’, 파일 마스크 ‘~’ 가 자동으로 지정된 경우도 있으면 제대로 되었는지 확인하고 아니라면 ‘수동으로 구성 지정’을 선택합니다.

중요한 옵션

  • 파일 유형: 업로드한 원문 파일의 형식. 확장자를 보고 선택하시면 됩니다.
  • 파일 마스크: 경로명(폴더 이름+파일명)에서 어디가 언어 코드인지를 Weblate에 알려줍니다.
    이것 때문에 번역할 원문 파일이 1개 (한 언어) 뿐이라도 경로명에 언어코드가 들어가야 합니다.
  • 새 번역 템플릿: 번역할 언어를 추가할 때 어떤 파일을 복사해서 사용할 것인지 정하는 곳입니다.

업로드한 번역 파일(ZIP)이

  • ui.zip
    • de
      • ui.json
    • en
      • ui.json
    • fr
      • ui.json
    • ko
      • ui.json

이면

일본어를 추가할 때

  • de
    • ui.json
  • en
    • ui.json
  • fr
    • ui.json
  • ko
    • ui.json
  • ja
    • ui.json

과 같이 만들텐데 ‘ja/ui.json’ 파일을 만들 때 어느 파일을 복사할 것인지 정하는 곳입니다.

보통 영어 원문을 지정(이 경우 en/ui.json)합니다.

파일 형식이 GetText(*.po)인 경우 po는 원문 정의, pot가 번역문 정의이기에 pot 파일을 지정하시면 됩니다.

위 3개를 지정하고, 저장을 누르면 아래와 같이 새로운 ‘구성 요소’가 만들어집니다.

버전 관리

대량의 파일을 추가한다면, 위의 3개 방법으로는 파일 별로 반복해서 작업해야합니다.

버전 관리를 통해 원문을 관리하면 대량의 파일을 한번에 추가하고, 새로운 원문 파일이 생겼을 때 ‘구성 요소’를 자동으로 추가해줍니다.

GitHub 계정 연동

프로젝트 -> 관리 -> API 접근에서

SSH 키를 전체 복사하여

GitHub 계정 아이콘 클릭 -> Settings의

SSH and GPG keys -> New SSH Key를 클릭합니다

Weblate에서 복사한 SSH 키를 여기에 붙여넣고 Title을 채운 뒤 ‘Add SSH Key’를 누릅니다.

이렇게 하면 개인 계정의 비공개 레포지토리나 레포지토리에 번역한 파일 반양 등의 작업을 할 수 있습니다.

용어집을 만들 때 저장소 활용하기

추가 기능은 프로젝트 단위가 아닌 컴포넌트 단위로 적용되고, 저장소에서 자동으로 번역할 파일을 불러오는 ‘구성 요소 발견’ 추가 기능을 사용할 때 추가 기능을 등록할 컴포넌트에서 사용하는 저장소를 기준으로 합니다.

따라서, 용어집을 만들 때 GitHub를 활용하여 만들어야합니다. 기존에 이미 만들어 둔 저장소가 있으면 지우고 계속하세요.

먼저 GitHub에 원문/기존에 번역되어있는 번역문을 올려둡니다. 예제에서는 아래의 구조를 가지는 저장소를 만들어두었습니다. (https://github.com/dmc31a42/Weblate-New-Project-Tutorial)

  • de
    • equipment.json
    • localization.json
    • tooltip.json
  • en
    • equipment.json
    • localization.json
    • tooltip.json
  • fr
    • equipment.json
    • localization.json
    • tooltip.json

저장소에서 Code -> Clone -> SSH 주소를 복사합니다.

용어집 구성 요소를 만들때 위에서 소개한 방법과 거의 비슷하지만 ‘처음부터 시작’ 탭이 아닌 ‘버전 관리에서’ 탭에서 필요한 내용을 채우고 ‘소스 코드 저장소’ 에 방금 복사한 주소를 넣어줍니다.

계속을 누른 뒤 나오는 ‘새로운 번역 구성 요소 추가’ 창에서

  • 파일 유형: TermBase eXchange file 선택
  • 파일 마스크: ‘*.tbx’ 입력

한 뒤 저장을 누릅니다.

‘커뮤니티 현지화 점검표’가 나오면 정상적으로 용어집이 만들어졌습니다. ‘이전의 구성 요소로 돌아가기’를 누르면 방금 만든 용어집 구성 요소 화면이 나옵니다.

프로젝트에서 저장소 불러오기

방금 만든 용어집 구성 요소에서 ‘관리 -> 추가 기능’ 을 누릅니다.

추가 기능 화면에서 ‘구성 요소 발견’의 ‘설치’를 누릅니다.

구성 요소 발견 추가 기능 설정창에서 아래의 것을 채워야합니다.

번역 파일과 일치하는 정규 표현식

저장소에 업로드된 파일 경로를 기준으로 언어와 컴포넌트 명을 추출하는 정규 표현식을 작성해야합니다.

예시로는

전체 파일 경로가

en/locaization.json

이고, 정규 표현식을 아래와 같이 작성한다면

(?P<language>[^/.]*)/(?P<component>[^/]*)\.json

‘?P<language>’에 해당하는 부분은 en

‘?P<component>’에 해당하는 부분은 localization이 됩니다.

파일 유형

원문, 번역문의 파일 유형을 선택합니다. 보통 확장자로 구분할 수 있습니다.

구성 요소 이름을 커스터마이즈하기

‘번역 파일과 일치하는 정규 표현식’에서

(?P<component>[^/]*)

구문으로 경로명에서 추출한 컴포넌트 이름에 무언가 덧댈 것이 있으면 덧대줍니다. 파일명을 그대로 컴포넌트 이름으로 쓴다면

{{ component }}

로 쓰면 됩니다. 예시로는

  • equipment
  • localization
  • tooltip

가 구성 요소의 이름이 됩니다.

새 번역을 위한 기본 파일 정의하기

‘번역 파일 올리기(ZIP)’에서 설명했던 대로 새로운 언어를 추가할 때 어떤 언어의 파일을 복사해서 추가할 언어에서 사용할 파일로 쓸지 지정해야합니다. 보통 영어 파일을 복사해서 사용합니다.

예시에선

en/{{ component }}.json

와 같이 영문 원문 파일을 지정했습니다. 그러면 localization 구성 요소에서 한국어 (‘ko’)를 추가하면 ‘en/localization.json’ 파일을 복사해서 ‘ko/localization.json’ 파일을 만들고 이 파일을 수정하여 번역하게 됩니다.

보통 원문과 번역문의 파일 확장자가 같으나 GetText (*.po/*.pot) 의 경우 .pot 파일을 지정해야합니다. (.po 파일은 원문만 있을 뿐 번역문은 없는 파일이기 때문)

위의 내용들을 작성하고 저장을 누릅니다. 만약 잘못 작성한 경우 저장을 누른 후 예상되는 결과를 미리 보여주니 결과를 보고 입력했던 값들을 수정하여 원하는 결과를 얻을 수 있습니다.

만약 잘못 작성했다면, 일치하는 구성 요소가 없다고 안내해줍니다.

구성 요소/언어 별로 잘 구분된 것을 확인했으면 ‘나는 위의 일치 항목이 올바른지 확인합니다’를 체크하고 다시 저장을 누릅니다.

‘구성 요소 발견’ 추가 기능이 잘 설정되었다면 설치된 추가 기능에 구성요소 발견을 확인할 수 있습니다.

프로젝트 화면의 구성 요소 탭으로 가면 추가 기능 설정창에서 미리 보았던 구성 요소들이 정상적으로 불러와진 것을 확인할 수 있습니다.

광고

유니티 게임의 한글화와 패치 제작 – 폰트 엔진(플러그인) 소개(미완성)

유니티 게임에서 화면에 나오는 모든 오브젝트는 GameObject로 존재한다. 화면에 표시되는 글자도 마찬가지로 하나의 GameObject로 이루어져있고 GameObject의 컴포넌트인 MonoBehaviour에 글자를 어떻게 출력할지 기술되어있다. 그리고 Text GameObject에서 사용되는 폰트는 별도의 GameObject(또는 MonoBehaviour 단독)로 만들어져있다. 그 외에 Sprite를 Text와 혼용해서 사용하는데 보조를 해주는 것 같이 글자 출력과 관련된 작업을 도와주거나 맡아서 하는 것을 폰트 엔진이라 부른다.

글자가 출력될 때 어떠한 과정을 거치는지, 유니티 엔진에서 통상적으로 사용하는 폰트 엔진은 무엇이 있는지, 해당 폰트 엔진을 사용한 게임을 빌드하면 어떤 결과가 나오는지를 알아보고자 한다.

계속 읽기 “유니티 게임의 한글화와 패치 제작 – 폰트 엔진(플러그인) 소개(미완성)”

유니티 게임의 한글화와 패치 제작 – 유니티 에셋의 Serialization

유니티 엔진이 프로젝트를 빌드하면 에셋들은 일정한 규칙대로 assets 파일들에 합쳐진다. 이때 각 에셋들은 유니티 엔진에 기술된 방법대로 Serialized 된다. 에셋의 Dump를 추출할 수 있고, 이를 수정하는 것이 편리하나 특별한 이유에 의해 에셋의 Raw 파일이 필요할 때가 있다. 에셋의 Raw 형태에서 특정한 변수의 값을 확인, 수정하기 위해서는 유니티 엔진의 Serialization에 대해 알아보도록 한다.

계속 읽기 “유니티 게임의 한글화와 패치 제작 – 유니티 에셋의 Serialization”

유니티 게임의 한글화와 패치 제작 – 언어 파일

유니티 게임을 제작할 때 텍스트를 넣을 때 텍스트를 하드코딩해서 넣을 수 있지만, 외국계 게임의 경우 보통 영어, 프랑스어, 독일어, 스페인어, 러시아어를 한번에 넣어서 배포하기때문에 보통 localization 도구를 사용하여 각 텍스트 Object마다 부여되는 key와 각각의 키와 해당하는 언어에 따라 번역된 문장들을 모아둔 언어 파일을 별도로 만들어 사용하게된다.

여러 유니티 게임에서 사용하는 언어파일이 무엇이 있는지, 어떠한 형태로 저장되어있는지 알아보고, 언어 파일이 어디에 있는지 실제 예를 사용하여 찾아본다음 실제로 그 파일이 맞는지 언어 파일을 수정하여 게임상에서 확인하고, 마지막으로 해당 언어가 한글 폰트 출력을 지원하는지 확인해본다.

본 문서는 많은 사진을 포함하고 있다. 모바일 데이터 환경에서 접속할 때 주의.

계속 읽기 “유니티 게임의 한글화와 패치 제작 – 언어 파일”

유니티 게임의 한글화와 패치 제작 – Unity Asset Bundle Extractor(UABE) 사용법

Unity Asset Bundle Extractor(UABE)는 유니티 게임의 assets을 분석하고, 추출하고, 수정된 에셋을 불러올 수 있는 강력한 도구이다. 최초로 게임 내의 에셋을 분석할 때는 UABE를 사용하고 분석이 완료된 후 자동화된 툴을 제작할 때는 UABE API를 사용하여 에셋을 수정하게된다.

계속 읽기 “유니티 게임의 한글화와 패치 제작 – Unity Asset Bundle Extractor(UABE) 사용법”

유니티 게임의 한글화와 패치 제작 – 유니티 게임의 기본 폴더 구조

유니티 게임을 모딩하기에 앞서서 유니티 엔진으로 개발되어 빌드하고 배포된 게임들의 폴더 구조를 알아보고자 한다. 먼저 일반적인 유니티 폴더 구조를 시각화하고, 각각의 폴더와 파일이 무슨 역할을 하는지 설명한 다음, 모딩을 할 때 어떤 파일들을 보아야할지 정리하고자 한다.

계속 읽기 “유니티 게임의 한글화와 패치 제작 – 유니티 게임의 기본 폴더 구조”

유니티 게임의 한글화와 패치 제작 – 서론

‘슬라임랜처’의 한글패치를 시작으로 ‘엘더스크롤 5 스카이림’ 및 베데스다의 게임 1개의 한글 패치 콘솔 이식, 저와 다른 한분이 동시에 시작하여 다른 분께 병합하여 진행했던 망겜 ‘스틸 디비전’, 두분이서 동시에 시작하여 한 분에게 도움을 드렸지만 다른 한 분이 먼저 완성하였고, 먼저 완성한 분께 이미지 관련으로 도움을 드린 ‘Detention'(‘반교’), 마지막으로 공백 기간이 있기 전에 급히 제작하였고, 패치 제작 방법만 공개한 상태이고, 현재 다른분이 한글화 공개 모집을 진행 중인 ‘Bomber Crew’, 그리고 유니티 게임 한글화, 한글 패치 제작에 관한 강좌 작성 예정 글을 올리고 나서 한글 폰트 주입 방법을 알려드린 ‘My Time at Portia’, 마지막으로 관련 질문을 받았던 ‘Cat Quest’ 까지 많지는 않지만 몇몇 게임들의 한글 패치 제작을 시도해보면서 많은 자료를 찾아보고, 많은 연습을 하여 지금은 어느정도 한글 패치를 제작할 수 있는 수준에 다달았습니다. 여러가지 이유로 한글 패치를 만들어 보고자 하는 예비 왈도분들이 제가 한글 패치를 만들 수 있게 될때까지 걸렸던 많은 시간들을 보내지 않고 적은 노력으로 원하는 바를 이룰 수 있도록 도와드리기 위하여 유니티 엔진으로 제작된 게임의 한글화 방법과 한글 패치 제작에 관한 강좌를 올리고자 합니다. 계속 읽기 “유니티 게임의 한글화와 패치 제작 – 서론”

유니티 게임 한글화, 한글 패치 제작에 관한 강좌 작성 예정

현재 유니티로 제작된 게임의 한글화 방법과 한글 패치 제작 강좌를 업데이트하고 있습니다.


안녕하십니까, 낙원전자입니다.

슬라임 랜처, 봄버 크루를 한글화, 한글 패치를 제작한 경험을 토대로 유니티 게임을 한글화하는 강좌를 작성해보려 합니다. 강좌는 조금씩 시간이 되는 대로 업로드 할 예정입니다. 그 전에 본인이 직접 한글 패치를 만들어 보고 싶은데 방법을 모르겠다 하시는 분 있으시면, 한글 패치 툴을 제작하는 것을 도와드리면서 강좌에 추가할 예시를 더하고자 합니다.

본인이 유니티 게임의 한글 패치를 제작하고 싶은데 방법을 모르겠다 하시는분은 본 글의 댓글로 질문을 남겨주시면 답변해드리겠습니다.

감사합니다.

봄버 크루의 한글화 패치에 관한 선행 조사

안녕하십니까, 낙원전자입니다.

봄버 크루라는 게임을 한글화 하고싶어서 이것저것 건들여보았고, 슬라임 랜처를 한글화하면서 얻는 기술을 접목시켜 제가 슬라임 랜처의 한글패치를 처음 배포했을 때 버전에 따라서 패치를 새로 만들어주어야하는 것이 아니라 패치 프로그램 스스로 업데이트에 적응하여 패치를 할 수 있는 단계까지 왔습니다.

본 패치 프로그램 및 소스 코드만 있더라도 그 누구나 봄버 크루의 한글 패치를 제작할 수 있는 상태입니다.

그래서, 제가 한글화를 들어가기 전에 봄버 크루의 한글화를 팀 단위로 할지, 제가 개인적으로 진행할지에 대해서 선행 수요 조사를 하려고합니다. 참여 의사를 밝히고 싶은 분께선 12월 22일까지 본 글에 댓글을 남겨주시면되며, 참여하려는 분이 많으시면 공동으로, 적으시면 저 혼자 진행하는 것으로 하겠습니다.

감사합니다.

ps. 본 한글화는 제작사와 아무 관련이 없으며, 제가 개인적으로 진행하는 것입니다.

ps2. 현재 패치 프로그램과 소스코드를 보시려는 분께선 이 주소로 가시기 바랍니다 : https://github.com/dmc31a42/BomberCrewKoreanPatcher