일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MapKit
- CoreLocation
- ViewModifier
- ios
- format형식
- Alert
- pod install
- programmers
- 코딩테스트
- Appearance변경
- image
- alamofire
- ios15
- Java
- NotificationCenter
- 백준
- autolayout
- android
- UIStackView
- cocoapods
- snapkit
- kakaomap
- segue
- EventKit
- UserDefaults
- AsyncImage
- SwiftUI_Preview_Provider
- swiftUI
- Kotlin
- SWIFT
- Today
- Total
감자주먹밥
[IOS] Localization - 어플 현지화, 나라 별 언어 대응 본문
Localization
어플을 개발하고 출시했을 때 여러 나라의 언어를 대응해서 다양한 국가에 사용경험을 주기 위해서는 앱 현지화가 필수다.
국가마다 사용하는 언어를 대응해 개발하려면 Localizable을 사용하면 된다.
SwiftUI도 UIKit과 비슷하게 설정할 수 있다.
Localization 설정
Project > Info > Localizations 를 보면 언어를 추가할 수 있는 항목이 있다.
기본으로 English가 Base로 설정되어 있고 한국어만 추가하고 한국어-영어 대응 해보기.
Strings File을 추가 이름은 꼭 Localizable로 해야된다.
파일을 생성 후 들어가서 오른쪽 인스펙터를 보면 Localize... 버튼이 활성화 되어 있다.
내가 추가한 언어의 Localization을 할 수 있게 추가하고 체크해준다.
체크까지 하면 String File안에 추가한 언어별로 내부파일이 추가되어 있다.
각 파일에 맞는 언어로 대응을 해주면 된다. 작성 포맷은 "키값" = "표시될 언어값"; 이다. 세미콜론은 잊지 말기! Base는 영어기 때문에 영어를 키값으로 하고 작성해주면 된다.
//Localizable English
"Translate" = "Translate";
"Bookmark" = "Bookmark";
//Localizable Korean
"Translate" = "번역";
"Bookmark" = "즐겨찾기";
이렇게 StringFile을 다 작성하면 이제 실제 코드에 텍스트를 대응해주면 된다.
NSLocalizedString 메서드를 사용해서 키 값에 대응되는 텍스트를 기기언어에 맞춰 뽑아낼 수 있다.
tableName, bundle, value는 따로 설정은 안하지만 하나하나 알아보면..
- key -> Localizable에 작성한 대응할 텍스트 키 값
- tableName -> Localizable로 만든 파일을 테이블로 보고 파일 이름을 넣어주면 된다. 기본값은 nil인데 nil일 땐 Localizable이 기본값으로 들어간다
- (그래서 StringFile 만들때 Localizable로 하라고 했던 것, 만약 파일 이름이 다른거라고 해도, tableName 파라미터에 파일 이름을 적어주면 대응 가능)
- bundle -> Localizable StringFile이 있는 번들 선택. 기본이 main
- value -> 테이블에서 키값을 찾을 수 없을 때 반환되는 string값.
- comment -> 주석 같은거다.
NSLocalizedString("Translate", comment: "번역"),
간단하게는 키값만 사용하면 바로 적용이 된다.
만약 텍스트에 특정 변수를 같이 쓰고 싶다면 아래처럼 value에 문자열 보간 처리를 해주고, String format으로 arg를 넣어주면 된다.
// Localizable file
"argTest" = "%d arg test";
// 사용
let str = NSLocalizedString("argTest", comment: "test")
String(format: str, 10)
에러
validation failed: Couldn't parse property list because the input data was in an invalid format
다음과 같은 에러가 뜬다면 작성 포맷이 맞지 않는 것이니 세미콜론을 빠뜨리진 않았는지 확인해보면 된다.
'IOS > UIKit' 카테고리의 다른 글
[IOS] EventKit 달력, 미리알림 이벤트 관리 (0) | 2023.04.05 |
---|---|
[IOS] 영화 앱 - Swift Concurrency 직접 적용하기 (0) | 2023.03.23 |
[XCode] Signing Certificate 오류 (Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days.) (0) | 2022.12.08 |
UIKit with SwiftUI 화면전환 (0) | 2022.12.08 |
[IOS] CollectionView - CompositionalLayout 사용 (0) | 2022.12.06 |