Localization
- L10N(Localization / L과 N사이 10글자)
- 국제화를 하기 위해선 지역화를 해야함
- 시장에 맞춘 지역화(현지화)의 필요성 대두
Internationalization
- I18N(Internationalization / I와 N사이 18글자)
- Apple 사용자의 70% 이상이 미국외 지역으로 추정
- Apple은 앱스토어를 통해 국제화를 하고자 함
- 브랜드는 국제적으로! 판매상품은 지역적으로!
- 국제화는 애플의 역할, 지역화는 개발자의 영역임
국제화 및 지역화를 위한 코드를 작성 시 고려해야할 사항들
- User Facing Text : string Formatter를 사용하여 텍스트 지역화
- 날짜, 통화, 숫자 : Date Formatter, Number Formatter를 사용하여 형식 변환
- 단수/ 복수형 : String Catalog를 통해 지역별 단수/ 복수형 문법 적용
- Device 종류 : String Catalog를 통해 기기 종류 별 텍스트 조정
- 여성형/ 남성형 문법 : 지역별 성별 또는 대명사 별 문법 적용
- 텍스트 방향 : Leading, Trailing을 사용하여 지역별 텍스트 방향 자동 조정
- Dynamic Type : 언어별 글자의 특징에 맞추어 세로, 가로 공백 및 줄 바꿈 규칙 적용
- 사운드, 이미지, asset : 소리, 이미지, 색상을 지역별로 설정 가능
Locale
- 데이터 서식을 지정하는 데 사용할 언어적, 문화적, 기술적 규칙에 대한 정보
- Language, Region을 포함
- 사용자 지정 Language와 Region 설정을 통해 정해짐
- String의 initalize시 파라미터로도 사용됨
Language
- Locale에 해당하는 언어를 나타냄
- Locale 인스턴스에서 언어 정보를 얻으려면 languageCode 속성을 사용할 수 있음
Locale API
- 기본 설정에 있는 사용자 지정 언어 및 지역 설정을 갖음
Locale.preferredLanguages
Bundle API
- 현재 실행 중인 앱의 언어를 갖음
사용자 지정 언어와 bundle의 언어를 모두 고려한 경우
// 사용자 지정 -> bundle 언어 순서로 언얼 목록 반환
Bundle.main.preferredLocalizations.first
외부 서버의 다른 설정 지원 언어가 있는 경우
// 외부 서버의 다른 설정 지원 언어를 최우선 순위를 준 경우
let availableLanguages = Server.requestAvailableLanguages()
Bundle.preferredLocalizations(from: availableLanguages).first
Region
- 장소 표시와 연결된 지리적 지역
- 통화 단위, 날짜, 시간 형식을 결정
Localization 성능 향상 방법
exportlocalization
- -> 필요한 부분만 현지화 담당자에게 전달 가능해짐
- 🍎 Apple Developer - Export Localization
importlocalization
- -> 지역화된 정보만 받아서 업데이트
- 🍎 Apple Developer - Import Localization
asset에서 직접 Localization 설정 가능
Xcode 15 이상부턴 String Catalogs 사용을 권장
참고 자료 > TODO: 추후 정리하기
🍎 Apple Article - String Catalog
🍎 WWDC - Discover String Catalog
🍎 WWDC - Unlock the power of grammatical agreement
🍎 Apple Developer - Term of Address
참고 링크
728x90
'학습활동' 카테고리의 다른 글
User Notifications (0) | 2023.09.25 |
---|---|
OAuth(Open Authorization) (0) | 2023.09.21 |
Frame / Bounds (0) | 2023.08.29 |
animateKeyframes / addKeyframe 실습 (0) | 2023.08.28 |
Animate Method (0) | 2023.08.28 |