UDN
Search public documentation:

LocalizationReferenceKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 언리얼스크립트 > 로컬리제이션 참고서

로컬리제이션 참고서


개요


이 문서는 Unreal Engine 3의 로컬리제이션(현지화) 시스템에 대한 참고서입니다.

현지화된 텍스트


현지화된 텍스트 파일

파일 포맷 및 문자열과 바이너리 데이터 작업에 관한 정보는 현지화된 텍스트 파일 페이지를 참고하십시오.

디렉토리 경로

엔진은 구성 가능한 것으로 지정된 경로 중에서 (Core.System.LocalizationPaths, 기본 설정 "Engine\Localization") 현지화된 텍스트 파일을 찾습니다.리소스를 현지화할 때, 엔진은 제일 먼저 현재 구성된 언어 현지화 파일을 살펴봅니다. 해당 리소스의 현지화 버전을 찾는데 실패하면, 국제어(영어) 현지화 파일(.INT)에서 엔트리를 찾습니다.

내보내기

UnrealEd에서 Full Loc Export... 를 사용하는 것 외에 exportloc 커맨드렛을 사용할 수도 있습니다.

exportloc 커맨드렛은 UnrealScript 패키지의 현지화된 문자열을 현지화된 텍스트 파일로 내보내기 합니다.

gamename.exe exportloc

활성 언어 설정

게임 프로젝트의 Engine 구성 파일 에서 Language 변수를 현지화 디렉토리와 상호 관련된 지정 언어로 설정함으로써 언어를 변경할 수 있습니다.

한 예로, 다음은 언어를 일본어로 설정하는 방법입니다.

[Engine.Engine]
...
Language=JPN
...

LocImage1.jpg

테스트하기

현지화를 테스트하기 위해서는 XXX라는 거짓 언어를 만듭니다. 모든 글자들을 X로 대체합니다. 이렇게하면 현지화된 텍스트 중에서 누락된 것을 찾아내기가 아주 쉽습니다.

번역 작업의 흐름

번역가들은 콘텐츠(바이너리)가 아닌 현지화 파일(텍스트)을 가지고 작업합니다. 외부 팀에 의해 재저장된 콘텐츠의 수용을 조심하십시오. 이 콘텐츠 패키지들에 어떤 속성, 해킹 등이 적용될지 알 수 없는 일입니다!

현지화가 요구되는 새 객체가 만들어지면, 에디터 내에서 Full Loc Export... 를 수행합니다. 이 데이터는 내보내기 될 때 이미 메모리에 있게 되므로 기존의 현지화 데이터를 덮어쓰지 않습니다.

Gears of War 에 대한 저희의 작업 흐름은, 번역가들에게 지난 번의 업데이트 이후 어떤 현지화 객체 또는 객체의 속성이 새로 만들어졌는지 (다시 내보내기 되었는지) 설명하기 위해서, 국제 언어(영어)의 각 현지화된 텍스트 (.INT)를 비롯하여 해당 파일의 업데이트된 diff 을 제공하는 것이었습니다. 번역가들은 이 새 문자열들을 그들의 언어 버전 파일에 보급하는 역할을 했습니다.

다른 방법으로, 만일 현지화 팀의 diff 처리 능력에 대한 신뢰도가 낮은 경우에는, 에디터를 열어 내보내기 하기 전에 엔진의 언어를 대상 언어로 설정함으로써 각 언어의 현지화된 텍스트를 별도로 다시 내보내기 할 수 있습니다.

이렇게하면 변역가에게 INT 파일을 직접 보낼 수 있습니다. Gears of War 의 경우, 현지화 파일과 워터마크된 빌드가 현지화 팀에게 제공되어 게임 내에서 콘텐츠를 테스트할 수 있었습니다. 저희는 위에서 설명한 이유에서 현지화 파일에 행해진 변경만 수용했습니다.

현지화 파일을 Excel 같이 좀더 편집하기 좋은 것으로 만들기 위한 부가 단계는 없습니다. 저희는 현지화 팀이 그들이 내부적으로 필요로하는 포맷으로 데이터를 가다듬도록 맡겨두고 있습니다.

현지화된 콘텐츠


텍스처

참고: 현지화 텍스처의 스트리밍은 엔진에서 기본으로 지원되지 않습니다. 쿡된 텍스처 파일에 오프셋된 텍스처는 seekfree 패키지에 저장되기 때문입니다.

오디오

오디오의 현지화에는 다소의 설정이 요구됩니다. 가장 쉬운 과정은 (저희가 권장하는 방법이기도 합니다) 사운드큐를 모두 나누어 'MyGame\Content\Sounds' 안의 패키지에 넣은 다음, 현지화된 오디오 웨이브 패키지를 3글자의 언어 코드로 명명된 하위 폴더에 넣는 것입니다.

그러면 다음과 같은 결과가 나타나게 됩니다.

MyGame\
  Content\
    Sounds\
     MainCharacterVO_cue.upk
     EnemyVO_cue.upk
     INT\
       MainCharacterVO.upk
       EnemyVO.upk
     JPN\
       MainCharacterVO_JPN.upk
       EnemyVO_JPN.upk

현지화된 사운드큐가 로드될 때는 선택된 언어에 대한 사운드 웨이브를 로드하게 됩니다. 이것은 사운드큐에 행해진 변경이 단 한 번의 편집으로 모든 언어에 균일하게 적용된다는 것을 의미합니다.

사운드큐가 알려진 언어 코드와 일치하는 3글자의 하위폴더에 들어있는 사운드 웨이브를 참조하거나 부제를 가지고 있을 경우, 그것은 현지화된 것으로 판정됩니다. 위에서 보여드린 것과 같은 폴더의 짜임새를 사용한다면, 모든 것이 기대한대로 현지화 됩니다. 아래의 사례 연구는 보다 구체적인 예를 보여 드립니다.

영화

어떤 비디오들은 그들이 등장하는 시간과 함께, 'Subtitles' 현지화 텍스트 파일에 있는 키에 부합하기 위해 상응하는 .txt 파일을 가지고 있습니다. .txt 파일은 단지 자막용으로 오디오가 재생되는 것과는 아무런 관계가 없습니다. 이 파일들은 반드시 적절한 타이밍과 함께 수작업으로 만들어져야 합니다 (첫 줄은 나머지 줄들이 시작/정지 시간을 결정하는데 사용하는 초당 틱의 수).

영화 속의 오디오를 위해서는, Bink 영화를 만들어 모든 언어들을 채널의 집합으로서 영화에 혼합해 넣습니다. 여기서 할 일은 front left, front center 및 front right 트랙을 현지화된 오디오에 다시 맵한 다음 모든 언어에 공통인 rear와 subwoofer 트랙을 가지도록 하는 것입니다.

FBinkMovieAudio::SetSoundTracks() 함수는 다음과 같이 스피커에 맵되는 채널의 배열을 반환합니다.

  INT FRA ITA
Front Left 0 6 9
Front Right 1 7 10
Front Center 2 8 11
Subwoofer 3 3 3
Rear Left 4 4 4
Rear Right 5 5 5

UnrealEd의 현지화


에디터 콘트롤의 현지화에 대한 내용은 UnrealEd 현지화 하기 페이지를 참고하십시오.

사례 연구: Gears of War의 현지화


Gears of War 에서는 각 캐릭터의 오디오가 다음 3가지 카테고리로 분류되었습니다.

  1. Dialog -- 고유의 스크립트된 상황에서 말해지는 대화의 대사인 사운드
  2. Chatter -- 스크립트 되지 않은 게임플레이 상황의 결과로서 플레이어가 말하는 대사. 예를 들면 총이 고장나 낙담하는 소리, 적을 쓰러뜨렸을 때의 의기양양한 소리 등.
  3. Efforts -- 대화 없는 게임플레이 사운드(투덜대는 소리, 고함, 아파하는 소리 등)

각 카테고리가 한 사운드 패키지에 해당합니다. 따라서 Gears의 주인공인 마르쿠스는 Marcus_Dialog.upk, Marcus_Chatter.upk 및 Marcus_Efforts.upk 등의 3가지 패키지를 가지고 있습니다. Effort 패키지에는 대화 소리가 없으므로 Dialog와 Chatter 패키지에만 현지화가 필요합니다. 뜻이 분명한 대화를 전달하지 않는 캐릭터에는 Effort 패키지만 있으므로 현지화되지 않습니다.

UE3의 사운드 시스템은 사운드 소스(.wav . Unreal에서는 SoundNodeWave)와 사운드의 사용(사운드 큐)을 구분합니다. 웨이브 수준에서 현지화가 수행되므로 이를 사용하는 큐 간에 사운드의 현지화 데이터를 웨이브와 공유합니다. 따라서 저희는 현지화된 사운드 패키지를 웨이브 패키지와 큐 패키지로 다시 나누었습니다. 웨이브 패키지에는 SoundNodeWave 객체, 큐 패키지에는 SoundCue 객체만 포함됩니다. 이를 구분할 때 레벨이나 자산에서 참조하는 사운드 큐에 영향을 미치지 않고 다양한 언어의 웨이브 패키지를 교환할 수 있습니다.

따라서 Gears의 마르쿠스 캐릭터를 예로 들면 캐릭터에 대한 전체 패키지 명세는 다음과 같습니다.

Marcus_Dialog_Cue -- 마르쿠스의 Dialog 대사에 대한 SoundCue 객체만 포함하는 패키지.

Marcus_Dialog -- 마르쿠스의 Dialog 대사에 대한 SoundNodeWave 객체만 영어로 포함하는 패키지.

Marcus_Dialog_jpn -- 위와 같지만 일본어 사용.

.... – 그밖의 언어

Marcus_Chatter_Cue -- 마르쿠스의 (게임플레이) Chatter 대사에 대한 SoundCue 객체.

Marcus_Chatter -- 마르쿠스의 Chatter에 대한 영어 SoundNodeWaves.

Marcus_Chatter_jpn -- 마르쿠스의 Chatter에 대한 일본어 SoundNodeWaves

.....

Marcus_Efforts -- 마르쿠스의 Effort에 대해 SoundCues 및 SoundNodeWaves 모두 포함(현지화되지 않음).

보이지 않는 이면에서 로딩 코드는 기본 영어 버전을 로드하기 전에 엔진의 언어 설정을 살펴보고 패키지의 현지화 버전 로드를 시도합니다. 패키지의 현지화 버전에 대해 기대하는 이름 규칙은 appGetLanguageExt가 반환한 언어 확장자 "_ext"가 맨 뒤에 붙는 것입니다. 현지화 버전이 없거나 엔진 언어 설정이 영어이면("int" 또는 international) 패키지 이름 뒤에 접미어가 붙지 않은 버전이 로드됩니다. 이것은 '부분적으로 현지화된' 언어(자막이 제공되는 언어, SoundNodeWave 패키지의 .ini loc 익스포트를 통해)에서는 가능하지만 완전히 현지화된 오디오에서는 불가능합니다.

언어 코드


언어 이름을 표시하는 데 사용되는 코드는 http://www.loc.gov/standards/iso639-2/englangn.html 사이트를 참고하십시오.

현재 저희가 사용하는 언어 코드는 다음과 같습니다.

INT 아메리카 영어 (나머지 세계의 영어가 아님)
JPN 일본어 (TTS 지원 없음)
DEU 독일어
FRA 유럽 프랑스어 (캐나다 프랑스어가 아님 )
ESM 중미 스페인어 (현대?) (.NET, 음성 인식 지원 없음)
ESN 유럽 스페인어 (이베리아어? 표준 스페인어? 전통 스페인어?)
ITA 이탈리아어
KOR 한국어 (TTS 지원 없음)
CHT 전통 중국어(음성 인식 또는 TTS 지원 없음)
RUS 러시아어 (음성 인식 또는 TTS 지원 없음)
POL 폴란드어 (음성 인식 또는 TTS 지원 없음)
HUN 헝가리어 (음성 인식 또는 TTS 지원 없음)
CZE 체코어 (음성 인식 또는 TTS 지원 없음)
SLO 슬로바키아어 (음성 인식 또는 TTS 지원 없음)