iOS 앱 다국어 처리

2016-12-01
27 Views

다국어는 글로벌로 앱을 출시하고자 한다면 필수적이며 이를 통해 사용자를 늘릴 수 있는 기회도 된다.

한국인구는 약 5000만명이지만 영어권 인구는 17억정도라고 하니 영어하나만 대응해도 시장규모는 34배로 확대된다는 것이다.

필자는 iOS앱 개발시 다국어 처리를 크게 3가지에 집중한다.

1. Localizable.strings 생성하기

앱에서 표시되는 문구를 언어별로 분리 설정하는 것으로 개발중인 프로젝트에 신규파일을 추가하고 “String File”을 선택한 다음 [Localizable.strings]파일 하나를 프로젝트에 추가한다음 추가한 파일을 선택한 다음 [Localize…]버튼을 눌러 Base를 선택한다.언어를 추가하고 싶다면 Project에서 Info파트에서 “Localizations”항목아래에 있는 [+]버튼을 눌러 언어를 추가할 수 있다.

localize1

localize2

이렇게 구성하면 기기 설정언어가 한국어일 경우 Base가 기본 사용된다. Localizable.strings(Korean)파일을 만들고 다른 Localizable.string(Korean)파일을 만들고 다른 Localizable.string(Base)파일에 작성한다.

strings파일 형식은 아래와 같다.

그외 String(format:_, arguments:_) 을 합쳐 표시할 문자에 변수값을 넣을수도 있다.

  • String: %@
  • Int: %d
  • Double: %f

사용하고 싶을 때 NSLocalizedString을 사용한다.

예제

앱내 텍스트 관련 정의

iOS기기의 언어 설정이 한국어라면 “버전”으로 표시되고 영어로 되어 있다면 Version이라고 표시된다.

날짜 표기 관련 정의

한국어권과 영어권에서 날짜 표기 방법은 다르다. 예로 UIDatePicker의 locale문자열은 Localizable.string을 통해 처리하는 방법을 소개한다.

이미지 처리관련 정의

이미지도 Assets.xcaseets에 대한 한국어용, 영어용, 중국어용등에 대한 이미지들을 따로 준비해둔다고 가정한다면,  Localizable.strings를 통해 호출하는 이미지를 다르게 할 수 있다.

2. InfoPlist.strings 만들기

앱내 설정등의 화면에서 아이콘명을 한국어, 영어, 중국어등으로 바꾸고 싶은 경우 이 방법을 이용한다. 사용방법은 Localizable.strings와 같지만 아래와 같이 순서대로 이행하자.

Project – Info – Localizations에서 Korean(ko)를 추가하고 InfoPlist.strings을 생성한 후 Localizations를 클릭후 Korean을 확인한다.다음으로 생성한 InfoPlist.strings파일에서 CFBundleDisplayName=”앱이름”;을 추가한다.

InfoPlist.strings(Korean)

InfoPlist.strings(English)

단, 위와 같이 사용할 경우 Info.plist에서 설정을 “Privacy – Camera Usage Description”과 “Privacy – Photo Library Usage Description”을 설정해두어야 한다. 주의해야 할 점은 InfoPlist.strings를 설정했다고 해서 Info.plist를 설정하지 않으면 앱심사를 통과할 수 없다.

3. 엡에서 언어설정 구분

설정파일에서 할 수 없는 부분은 기기의 언어설정을 체크하고 이를 통해 다양하게 처리하는 것이 가능하다.

isKorean() 또는 isEnglish()로 나누어 구분하기 때문에 다른 언어도 쉽게 대응한다. 단, 다른 언어를 추가지원시 로직 변경이 발생하게 되므로 좀 번거롭기는 하다. 그래서 되도록이면 Localizable.strings와 InfoPlist.strings만 잘 설계해서 사용하는 것을 추천한다.

 

Facebook Comments

You may be interested

모바일 앱 아키텍처
Swift
shares2 views
Swift
shares2 views

모바일 앱 아키텍처

MJ Kim - 4월 22, 2017

이 내용은 나름대로 개발해본 내용을 토대로 정리해본 모바일 앱 아키텍처에 대한 내용이다. 이를 정리한 이유는 오래된 아키텍처부터 최근 아키텍처까지 정리해보고…

시간차를 얻는 Date Extension
Swift 3.0
shares5 views
Swift 3.0
shares5 views

시간차를 얻는 Date Extension

MJ Kim - 4월 12, 2017

사용자가 남길 내용에 대한 시간표시를 할 때 일정한 시간차를 표현해주는 경우가 있어 이에 대한 Date Extention을 정리해 보았다. [crayon-58faeccdda793314114249/]  

Swift 3.1에서 없어진 문법 정리
Swift 3.0
shares32 views
Swift 3.0
shares32 views

Swift 3.1에서 없어진 문법 정리

MJ Kim - 3월 31, 2017

Swift언어는 무엇인가 나올때마다 없어지는 것들이 있어, Swift 3.1에서 컴파일할 수 없게 된 문법내용을 정리했다. switch문을 사용하여 enum에서 protocol을 여러가지 패턴으로…