Swifter {Swift Developer}

메뉴

 

iOS 앱 다국어 처리

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

한국인구는 약 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

카테고리:   Swift 3.0, Xcode

댓글

죄송하지만 댓글은 닫혀 있습니다.