iOS 앱 다국어 처리

2016-12-01
49 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

Gif 애니메이션으로 로딩 구현하기
Swift 3.0
shares5 views
Swift 3.0
shares5 views

Gif 애니메이션으로 로딩 구현하기

MJ Kim - 5월 24, 2017

이번에는 MBProgressHUD 라이브러리와 FLAAnimatedImage 라이브러리를 사용하여 gif 애니메이션을 사용하는 방법을 정리해본다. Cocoapods를 사용하여 라이브러리를 추가해도 되고 Carthage를 사용해서 추가해도 된다.…

Bluetooth기반 iOS기기로 통신하기
Swift 3.0
shares4 views
Swift 3.0
shares4 views

Bluetooth기반 iOS기기로 통신하기

MJ Kim - 5월 23, 2017

제 블로그에 관심이 있는 분이 블루투스를 사용한 방법을 알려달라고 하셔서 좀더 이해하기 쉬운 방법을 고민해서 한가지 팁을 공유합니다. 블루투스(Bluetooth)로 1대1로…

Apple지도 및 구글지도 앱을 여는 방법
Swift 3.0
shares6 views
Swift 3.0
shares6 views

Apple지도 및 구글지도 앱을 여는 방법

MJ Kim - 5월 16, 2017

지도 중심에 핀을 넣기 특정 지점에서 특정지점 루트를 표시하기  Apple 지도 앱 지도 중심에 핀세워서 위치 표시 [crayon-59253ae424801974990960/] 경로 표시…