4. NGUI 다국어 지원하기 (Localization) – 1

NGUI 다국어 지원하기 (Localization) – 1

 

3장에서 아틀라스와 폰트를 생성하는 방법을 알아보았습니다.
예제에서 생성한 폰트에는 한글 폰트가 추가되었기 때문에 레이블 위젯을 통해서 한글 출력이 가능해졌습니다.

최근에는 많은 게임들이 한국시장뿐 아니라 해외시장에도 진출을 합니다. 해외시장에 대응하려면 해당 국가의 언어출력이 원활해야합니다.
이를 위해서 NGUI는 다국어지원을 위한 기능을 제공합니다.

이번 장에서는 NGUI의 Localization 기능을 이용해서 다국어를 지원하는 방법에 대해서 살펴보겠습니다.

 

4.1 Localization.txt 파일 만들기

NGUI의 Localization 기능을 이용할 때 해야 할 첫 번째 작업은 폰트를 만드는 작업입니다.
이 과정은 3장에서 진행을 했습니다. 생성된 폰트에는 영어와 한국어가 포함되어 있기 때문에 예제에서는 영어와 한국어를 각각 지원하는 예제를 만들어 보도록 하겠습니다.
(일본어 / 중국어 등 다른 언어를 지원해야 하는 경우에는 해당 언어가 포함된 폰트파일을 생성하면 됩니다.)

폰트를 생성하고 다음에 해야할 과정은 Localization.txt 텍스트 파일을 생성하는 과정입니다.
NGUI는 Localization.txt 텍스트 파일내의 내용을 읽어서 유니티의 PlayerPref 라고하는 일종의 파일에 정보를 저장해 두었다가 읽어오는 방식으로 구현되어 있습니다.
따라서 Localization.txt 파일을 생성하고 이 텍스트 파일안에 NGUI가 요구하는 방식으로 내용을 넣어서 읽어오도록 해야합니다.

먼저 주의해야할 점은 “Localization.txt” 텍스트 파일을 생성할 때 이름의 대소문자를 구별하기 때문에 이름에 주의해야합니다.

윈도우 키를 누르고 검색창에 notepad라고 입력한 뒤에 엔터를 눌러 메모장을 엽니다.

find notepad

 

메모장을 열고 아래와 같이 내용을 입력합니다.

type information in text file
Localization.txt 텍스트 파일을 만드는 규칙은 다음과 같습니다.
먼저 제일 첫 줄에 지원할 언어를 모두 정의합니다. 예제에서는 영어와 한국어를 지원하려고 하기 때문에 영어는 English, 한국어는 Korean이라고 정의했습니다.

언어를 지정할 때는 제일 처음에 “KEY”라고 적어주고 각각 “,” 콤마를 이용해서 구분합니다.
콤마를 이용해서 각 내용을 구분할 때는 “스페이스”를 넣지 않습니다. 그런뒤에 엔터로 줄 바꿈을 합니다.

이제 다국어를 지원해야하는 부분을 정의합니다. 제일 앞에 키워드를 정의합니다. 인사말을 보여주려고 “Greeting”이라고 키워드를 정했습니다. 그리고 각각 영어 / 한국어 순서대로 값을 넣었습니다.
엔터로 줄바꿈을 합니다.

그리고 이번에는 Name이라는 키워드를 적고 콤마로 구분해서 각각 값을 입력했습니다.
이런식으로 맨 위에 지원할 언어를 정의한 뒤에 줄마다 키워드를 제일 앞에 넣고, 위에서 정의한 언어의 순서대로 값을 입력해주면 됩니다.

 

 

이제 텍스트 파일을 저장하는 데 파일이름을 Localization.txt 라고 정하고 아래 그림과 같이 인코딩을 UTF-8로 지정합니다. UTF-8로 지정하지 않고 저장하는 경우에 한국어 등 아시아권 언어를 제대로 불러오지 못하는 문제가 발생할 수 있기 때문에 주의합니다.

저장 경로는 작업 중인 유니티 프로젝트안에 Assets/Resources 폴더 안에 넣어 줍니다.
이 부분도 중요합니다. NGUI의 다국어 지원 기능은 경로도 민감하기 때문에 꼭 Resources 폴더안에 넣어줍니다.

save localization file

 

저장을 하고 유니티 프로젝트 뷰를 확인하면 Resources 폴더안에 Localization.txt 파일이 저장되어 있는 것을 확인할 수 있습니다.

localization file saved in resource folder

 

NGUI는 이 Localization 파일을 토대로 다국어를 지원합니다. 다음 장에서 이 텍스트 파일을 이용해서 다국어 지원을 설정하는 방법에 대해서 살펴보겠습니다.

 

내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, C++/C#, 1인 기업에 관심이 많습니다.

3 Responses

  1. 김홍열 댓글:

    좋은 글 감사합니다!

  2. 드렁 댓글:

    안녕하세요, 글 잘 보았습니다. 다국어 지원쪽 공부중인데.. 혹시 질문하나 드려도 될까요?
    리소스 폴더에 넣는것을 보면 내부적으로는 resouces.load를 이용하지 않을까 싶은데, 혹시 언어 텍스트가 대용량인 경우에 메모리 문제가 없을까요?
    감사합니다.

    • RonnieJ 댓글:

      Resources 폴더는 실제 사용 여부에 관계 없이 빌드에 포함되는 특별한 폴더(Special Folder) 입니다.
      그래서 말씀하신대로 폰트 텍스처 용량이 크다면 메모리에 부담을 줄 수도 있습니다. 하지만 게임에서 꼭 필요한 폰트라면 어떻게든 써야겠지요.
      Packed Font 라는 기법이 있습니다. 아래 다른 분 블로그 링크를 남겨두니 참고해보세요.
      http://www.wolfpack.pe.kr/910
      (Packed Font는 R,G,B,A 채널 별로 폰트를 저장하는 최적화 기법입니다.)

      다른 텍스처 최적화/폰트 최적화 기법도 같이 찾아보시면 도움이 될 것 같네요.
      배너 클릭은 저에게 큰 힘이 됩니다~ 블로그 방문 감사드려요~ 🙂

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off