iOS앱이 여러 나라의 사용자에게 알맞은 글로벌 서비스를 제공하기 위해서는 지역화(Localization)라는 과정을 거쳐야 합니다. 또한 지역화(Localization)를 진행하기 위해서는 국제화(Internationalization)라는 과정을 먼저 거쳐야 합니다.
국제화(Internationalization)란?
국제화란 각 나라의 문화정보에 맞게 앱을 적용하는 과정을 말합니다. (문화정보란 언어, 통화, 날짜 포맷, 숫자 포맷 등을 말합니다.)
지역화(Localization)란?
지역화란 사용자의 언어와 지역 포맷 설정을 기반으로 앱에 적절한 데이터를 제공하는 과정을 말합니다. (쉽게 말해 지역화는 디바이스의 지역과 언어 설정을 고려해 그에 리소스의 사본을 만들거나, 텍스트를 다른 언어로 번역하기 위해 문자열 테이블 등을 만드는 과정을 말합니다.)
Just Do It!
먼저 간단한 예제를 통해 Localization은 어떻게 이루어지는지 살펴볼까요? 아래 그림의 ‘Mathpresso’ 텍스트를 한국어와 일본어를 지원하도록 해볼게요. (IBOutlet을 통해스토리보드의 UILabel을 코드로 연결해두었습니다.)
새로운 strings 파일을 생성합니다. 이름은 ‘Localizable’로 만들어주어야 합니다.
2. 위에서 지역화 정의에서 지역화는 ‘문자열 테이블'을 만드는 거라고 했죠?새로 만든 Localizable.strings 파일에 아래 그림과 같이 문자열 테이블을 만들거에요. 문자열 테이블은 사용할 키 값과 실제 보여질 텍스트를 입력할겁니다. (주의할점은 끝에 꼭 세미콜론을 붙여줘야 됩니다.)
"mathrpresso"="Mathpresso_English";
“mathpresso”라는 키 값을 통해 “Mathpresso_English”를 표현할거에요.
3. ViewController로 가서 아까 연결했던 레이블에 텍스트에 지역화를 적용해봅시다.
기존의 Mathpresso가 아닌 “Mathpresso_English”로 잘 나오네요. 이제 한글과 일본어도 적용해볼까요? 한번 Localizable.strings를 만들어두면 이후에 언어들은 Xcode기능을 사용하여 더 쉽게 추가할 수 있습니다.
4. 프로젝트 설정 > Localizations > Language의 +버튼을 통해 지원할 언어를 선택합니다. 저희는 Korean과 Japanese를 선택 하면 되겠죠? 팝업이 뜨면 체크 후 Finish!
Finish를 누른 후에는 아래 사진과 같이 Korean과 Japanese에 대한 Localizable이 자동으로 생긴 것을 확인할 수 있습니다.
5. 하지만 아직 내용은 기존의 Base와 같죠. 이제 이 부분을 원하는 텍스트로 각각 언어에 맞게 수정해줍니다.
이제 다 끝났습니다! 이제 확인을 해야겠죠? 하지만 어떻게 확인하냐구요? Xcode의 시뮬레이터에는 Application Language나 Region을 가상으로 구현해볼 수 있는 기능이 있습니다.
6. Run버튼 옆에 Scheme을 클릭 후 Edit Scheme 창을 띄우면 Run 항목에서 Application Language와 Application Region을 선택할 수 있습니다.
7. Korean과 Japanese로 선택한 후 실행시켜봅시다.
짠 🤩 글로벌앱 만들기 완료(?)
콴다 iOS앱의 Localization은 어떨까?
언어 변경에 따른 튜토리얼 Lottie
일본은 아직 Beta 서비스 중이기 때문에 한국과 다르게 같은 앱이지만 일본 상황에 맞도록 UI 및 여러 리소스를 지역화해서 서비스합니다.
이 외에도 Localization을 통해 여러 부분을 각 나라에 맞게 서비스하고 있습니다.
Android & iOS 지역화 협업 in Qanda
많은 서비스들이 iOS와 Android 플랫폼을 모두 지원하는데요. 두 플랫폼의 서비스가 동시에 지역화를 진행할 때, Android에서도 문자열 테이블을 따로 만들고 iOS에서도 문자열 테이블을 따로 만들게 되면 낭비겠죠!? 뿐만 아니라 서로 번역된 언어가 달라질 수도 있잖아요? 그렇다고 이 단어는 어떻게 번역했냐고 계속 물어보기엔…커뮤니케이션 비용이 너무 크겠죠?
그래서…!!! 저희 콴다에서는 구글신(God)이 만든 구글 스프레드 시트를 공유해서 문자열 테이블을 공유해서 사용하고 파이썬 코드를 통해 자동으로 문자열 테이블을 Localizable.strings파일로 만들어서 사용합니다. 이렇게 되면 항상 Android와 iOS 모두 하나의 문자열 텍스트로 통일해서 사용할 수 있습니다! (매스프레소 개발자분들 존경합니다.👏)
이 외에도 콴다의 iOS앱은 런타임 중 언어 변경을 지원하기 위해 이전에 David가 포스팅했던 ReSwift의 State에 언어에 관한 정보를 담아두고 사용하고 있습니다.🤓
이상으로 이번 글로벌 출시(일본)를 진행하면서 콴다 iOS앱에서 경험한 Localization을 간단하게 살펴보았습니다. 일본을 시작으로 Global로 뻗어나가는 콴다를 많이 응원해주시고 지켜봐주세요! 감사합니다.
(포스팅에 대한 피드백 및 궁금한 사항은 myssun0325@mathpresso.com으로연락 주세요)