언리얼 엔진 4 로 현지화가 준비된 게임을 만드는 것은 다행히도 정말 간단합니다. 한 가지 기본적인 규칙만 따르면 끝입니다.
사용자에게 표시되는 값에 대해서는 String 대신 Text 를 사용하세요.
Text 는 언리얼 엔진 4 에 새로이 도입된 기본 유형으로, 게임의 국제화 및 현지화 관련 부분을 처리해 줌과 동시에 그 모든 것을 간결한 최소한의 패키지에 요약시켜 넣어 줍니다.
블루프린트를 만드는 중이라면 그래프와 오브젝트에 Text 리터럴과 변수를 사용하기만 하면 됩니다. 거기에 입력되는 텍스트는 엔진이 자동으로 찾아 추출하여 번역이 가능하도록 준비해 줍니다.
프로그래머의 경우, 코드에 표시 텍스트 리터럴을 넣을 때마다 NSLOCTEXT 매크로를 사용해 주거나, 클래스/애셋을 만드는 경우 FText UProperty 를 사용해야 합니다.
FText TestHUDText = NSLOCTEXT( "Your Namespace", "Your Key", "Your Text" )
자세한 내용은 이 문서를 참고해 주시기 바랍니다.
끝입니다.
아마도 '와! 정말 간단해 보이는데, 뭔가 함정이 있겠지. 현지화는 힘든 작업인데 말이야.' 라고 생각하실 것입니다. 음, 정말 별로 주의할 점은 없지만, 몇몇 사람들은 Text 와 String 값을 변환하여 이 규칙을 어기려 할 것입니다.
아쉽게도, 그렇게 되면 문제가 생기게 됩니다. String 을 Text 로 변환하면 그 Text 는 문화가 변하지 않는다고, 즉 번역되지 않는다고 간주됩니다. 즉 애초에 표시 텍스트는 Text 값으로 넣어주는 것이 너무나도 중요합니다. Text 를 String 으로 변환하는 것 역시 바람직하지 않습니다. Text 값은 직접 String 에 대한 접근을 도외시하여 실시간 언어 토글과 같은 뛰어난 기능이 가능할 뿐만 아니라 안전한 현지화 작업을 보장해 줍니다.
Text 와 String 사이를 오가며 변환할 이유가 여러가지 있겠지만, 이 작업을 할 때는 특별히 주의하지 않으면 게임 해당 부분에 대한 현지화가 깨지게 됩니다. 약간의 추가적인 처리를 해 주기 위해서 Text 를 String 으로 변환해도 좋은 일반적인 예는 사용자 입력으로, 그 값은 문화가 변하지 않음이 확실하기 때문입니다.
또 한 가지 주의할 점은, 지금까지 현지화 및 국제화 시스템 작업을 하고 있기는 하지만, 엔진 내 모든 API 가 적합한 유형을 사용하도록 변환하지는 못한 상태입니다. 이 부분에 있어 엔진을 개선시켜 나가는 와중에 불편한 부분이 있어도 양해 바라며, 조만간 이에 대해 실전 사례를 안내해 드릴 수 있도록 하겠습니다.
UE4 의 현지화 및 번역에 대해 어찌 생각하시는지 듣고싶습니다. 한글의 경우 네이버 카페, 영문의 경우 저희 포럼에 말씀 남겨주시기 바랍니다!