DirTy™의 하루일과/DirTy™의 가당찮은iOS

[IOS] 로컬라이징 localized + localized storyboard

DirTy™ 2015. 9. 9. 16:48

영문 작업 요청이 들어왔다.

보통 윈도우애플리케이션이나 웹쪽 프로젝트는 한/영키를 올려서 하는데 모바일쪽은 설정한

지역 혹은 언어에 따라서 변환해 주면 된다.


스토리보드를 사용할 경우를 보자.

아래와 같이 스토리보드를 클릭한후 인스펙터쪽을 보면 Localization이 보인다.



모두 체크!!!


체크하면 아래와같이 스토리보드 밑으로 3개의 파일이 생성된다.

(Base)는 말 그대로 베이스가 되는 파일이라 그대로 스토리 보드의 UI들이 들어있고.

(English)나(Korean)쪽은 아래와 같이 각 UI에서 사용되는 텍스트들이 자동으로 들어가있다.


/* Class = "UILabel"; text = "로컬라이즈테스트1"; ObjectID = "iDJ-7h-9Bq"; */

"iDJ-7h-9Bq.text" = "Localize테스트1";


/* Class = "UILabel"; text = "로컬라이즈테스트2"; ObjectID = "VBA-SX-pgl"; */

"VBA-SX-pgl.text" = "localize테스트2";


/* Class = "UILabel"; text = "로컬라이즈테스트3"; ObjectID = "DhM-Ds-4QG"; */

"DhM-Ds-4QG.text" = "localize테스트3";


/* Class = "UILabel"; text = "로컬라이즈테스트4"; ObjectID = "t7s-sb-Wak"; */

"t7s-sb-Wak.text" = "localize테스트4";


"keytext" = "englishTest1.";


이부분을 영문으로 변경하면 자동으로 로컬라이징이 된다.





코드쪽에서 사용되는 쪽은 아래와 같이 해보자.


일단 프로젝트에 파일을 추가하자.

아래와같이 Strings File을 추가!



추가된 파일을 클릭하고 인스펙터쪽을 보면 아래와같이 Localize...이라는 게 있다.

이걸 클릭 해보자.



클릭하면 아래와같은 화면이 나온다. 일단 Localize클릭.



클릭후 인스펙터쪽은 보면 base, english, korean 3개의 항목이 생긴다.

베이스는 말그대로 베이스로 처음 만든곳의 언어다.

나의 프로젝트는 한글이 기본에 영어를 추가하였다. korean은 삭제해도 무방...base가 한글이라^^;

일단 모두다 체크마킹을 해보자.



언어를 더 추가하고 싶다면 아래와같이 설정 하는곳에 언어 추가 하는 곳이 있다.



아래와같이 testLocalizing.strins 리소스 파일에 로컬라이징 할수있게끔 추가가 되었다.


사용법은 정말 간단하다.

아래의같이 각 파일에 "key" = "comment"; 이런형식으로 적어준다.

testLocalizing.strings(Base)

testLocalizing.strings(English)

testLocalizing.strings(Korean)

"SELECT" = "선택해 주세요.";

"SELECT" = "Select.";

"SELECT" = "선택해 주세요.";


코드에서 사용시 아래와같은 method로 불러오면 간단히 로컬라이징이 된다.

NSLocalizedString(@"SELECT", @"SELECT");


복잡할것 같았던 로컬라이징이 의외로 간단하여 쉽게 적용 가능하다.