본문 바로가기

GFX

로컬라이징 문자 변환시 변수와 상수를 한번에 처리하는 방법


의외로 모르시는 분들이 많아서 간단한 로컬라이징 팁을 하나 말하려 합니다.



스케일폼을 쓰면(스케일폼이 아니더라도) 번역 맵 문서를 만들곤 합니다.

스케일폼 폰트 문서에도 나와 있듯이 로컬라이징 맵과 각언어별 값을 표시해두죠...



간단하게 "레벨"을 예를 들면 다음과 같습니다.


map ID1580

korean "레벨"

english "Level"



이렇게 해놓고 UI에는 ID1580 이라고 넣어놓으면 게임이 실행될 때 자동으로 해당언어로 번역이 되는 것이죠.

뭐 새로울 것은 없습니다. 그냥 하면 되지요...



그런데 문제는 변수와 상수가 섞인 값의 경우입니다.


보통 레벨을 뿌리려면 "레벨" 이란 단어만이 아닌


"레벨. 17"


이렇게 "레벨" 라는 상수값과 "17" 이라는 변수값이 합쳐져서 뿌려져야 합니다.


그냥 "ID1580 + 17" 이라고 쓰면 될거 같지만 그러면 번역이 안됩니다.(적어도 스케일폼에서는요...)



몇몇 분들을 보니 대체로 두가지 방법으로 처리하더군요.



1. 텍스트필드를 두개를 만들어놓고선 각자 뿌린다. 로컬라이징에 따라 크기가 변할 수 있으니 코드로 텍스트필드의 위치를 제어해야 한다.


2. 클라이언트로 부터 합쳐진 글자를 받는다. 다만 나중에 "레벨" 이라는 글자 대신 이미지 등이 쓰이는 등 디자인이 바뀌면 클라에게 요청해서 값을 바꿔야 한다.


다 단점이 있지요...




그럼 이제 팁을 드리겠습니다. 클라에게는 "17" 이라는 변수값만 받으면 됩니다.



textField.text = "ID1580";

textField.text = textField.text + " " + 17;



끝났습니다. 너무 간단하죠?


원리 또한 간단합니다.


첫번째 코드에서 "ID1580" 을 넣는 순간 스케일폼에 의해 번역된 값이 생기죠.

그럼 두번째 코드에서 그 값을 레벨 값과 합쳐서 다시 넣는 겁니다.