본문 바로가기

학습활동

Localization

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시 파라미터로도 사용됨

📒 - String Localization

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

importlocalization

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

참고 링크

https://developer.apple.com/videos/play/wwdc2019/403/

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