개요
기록소 프로젝트에 Localization을 진행하기로 했다. (이하 현지화 라고 부름)
한국 소비자에 국한하지 않고, 글로벌한 앱을 만들기 위해서는 다국어가 필수라 생각했기 때문이다.
우리 프로젝트는 iOS 16 버전 이상을 지원한다.
그리고 Xcode는 팀원 모두 16.1을 사용하고 있다.
본 편에서는 현지화에 대한 이론과 iOS에서 현지화 하는 방법 2가지(레거시와 최신 버전)에 대해 설명하겠다.
xcode 15 버전을 기준으로 Localization 최신 기술(= String Catalog)가 나왔기 때문이다.
xcode 15 이전 버전

xcode 15 이전에는 Strings File과 Dict를 이용해서 사용해야 했다. (stringsdict 확장자와 strings 확장자임)
위 사진에서 Legacy라고 적힌 부분.

밑에 최신기술에서도 설명하겠지만, 현지화는 키-밸류에 의해 가능하다.
한국 개발자가 UILabel에 label.text = “기록소”
라고 했으면,
위 사진처럼 맵핑해주면 영어가 주 언어인 유저 입장에서 Memorial House로 보이게 된다.
xcode 15 버전 이후
String Catalog라는 것이 새로 나왔다. 확장자는 xcstrings
이다.
기존의 문제점

기존에 stringsdict와 strings을 사용해서 구현했는데,
이렇게 관리하기 위해서 모든 문자열을 코드와 동기화된 상태로 수동으로 유지해야 했고, 종종 현지화 내용을 놓칠 수도 있었다고 한다.
그래서 사용자에게 현지화가 적용 안 된 문자열이 보이는 문제가 있었고, 이를 개선하기 위해 버전부터 문자열 카탈로그가 등장.
또, 위 사진처럼 각각에 대한 걸 다 세팅해줘야 했음
String Catalog의 장점
모든 문자열을 한 곳에서 쉽게 관리 가능 (String Catalog는 하나의 파일로 전체 문자열 테이블을 관리함)
Xcode 에디터에서 모든 컨텐츠가 완전히 현지화 됐는지 확인 가능 (진행률을 나타내줌)
기존에 만들어진 프로젝트라도 자동으로 모든 문자열을 xcstrings에 넣어줌 (억까인게.. UIKit은 안되고 스유만 됨 ㅠ)
MacOS, iOS .. 등등 기기 별로도 설정이 가능함

요런 식으로 진행도도 보여주고,

요런 식으로 키 값을 다 만들고, 밸류에 내가 해당 언어로 어떻게 보일지만 채워주면 된다.
파라미터 설정도 가능하다.
- 문자열의 경우 %@
- 숫자의 경우 %lld
지역화가 가능한 문자열에는 네 가지 구성 요소가 있고, 이걸 잘 써먹으면 된다.
- 키
- 키는 문자열에 대한 고유 식별자이고, 문자열과 동일한 경우가 대부분임 (디폴트가 동일함)
- 런타임에 밸류 찾는데 사용됨
- 밸류
- 옵셔널이고 디폴트는 키임
- 내가 설정한 언어에서 보여질 값을 내가 채우면 됨
- 코멘트
- 문자열이 사용될 위치와 방법에 대한 주석이라 생각하면 됨
- 번역자의 모호함 해결 용도
- 테이블
- 지역화 가능한 문자열은 번역이 저장될 하나 이상의 파일에 해당하는 테이블 안에 속함
- 기본적으로 “Localizable” 파일에 들어가는데, 다르게 정의할 수 있음
레퍼런스
https://developer.apple.com/videos/play/wwdc2023/10155
Discover String Catalogs - WWDC23 - Videos - Apple Developer
Discover how Xcode 15 makes it easy to localize your app by managing all of your strings in one place. We'll show you how to extract,...
developer.apple.com
'📱 iOS > Xcode' 카테고리의 다른 글
[Xcode] 나는 Global App을 만들 테야 - Localization 2편 (1) | 2025.02.01 |
---|---|
[Xcode] 우리의 최종 모듈화 - Multiple Project로 모듈화 공부하기 3편 (0) | 2025.01.19 |
[Xcode] Dynamic Library vs Static Library - Multiple Project로 모듈화 공부하기 2편 (0) | 2025.01.17 |
[Xcode] Library vs Framework - Multiple Project로 모듈화 공부하기 1편 (2) | 2025.01.15 |
[XCTest] 유닛 테스트(Unit Test) 사용후기 (2) | 2024.07.24 |