Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 애니메이션
- Xcode
- 스위프트
- HIG
- collectionview
- uiscrollview
- Human interface guide
- combine
- tableView
- SWIFT
- 리팩토링
- Protocol
- swift documentation
- Clean Code
- ios
- swiftUI
- clean architecture
- Observable
- 클린 코드
- scrollview
- MVVM
- map
- ribs
- rxswift
- uitableview
- UITextView
- Refactoring
- UICollectionView
- RxCocoa
- 리펙토링
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Localization, Localizable, 지역화 테스트 방법 (Programmtically, Storyboard, xib) 본문
iOS 응용 (swift)
[iOS - swift] Localization, Localizable, 지역화 테스트 방법 (Programmtically, Storyboard, xib)
jake-kim 2021. 1. 11. 22:00현재 지역 확인 - Locale
- 아래와 같이 작성하여 regionCode를 획득
Locale.current // en_KR (current)
Locale.current.regionCode // Optional("KR")
- code 리스트
Locale.isoRegionCodes
로컬 = ["AC", "AD", ... 중략 ..., "ZM", "ZW"]
- 앱 점유율 상 높은 Japnan ~ China까지 코드를 알아보면,

public enum CountryType: String {
case korea = "KO"
case japan = "JP"
case USA = "USA"
case UnitedKingdom = "GB"
case Germany = "DE"
case Chnia = "CN"
}
// 문자열 -> enum타입으로 매핑 방법
let countryType = CountryType.init(rawValue: country)
테스트를 위해 현재 지역을 다른 나라로 설정 방법
- 아래 클릭

- Edit Scheme

- Run -> Options -> App Region 선택

- App Region 변경 후 확인


코드로 문자열을 입력하는 경우 Localization 설정 방법
* 원리: key-value 쌍으로 미리 문자열에 대해서 각 나라별로 지정 -> 문자열을 입력할 때 NSLocalizedString객체 값으로 입력
- key - value 쌍으로 만들기: Strings File 추가

- 이름은 "Localizable.strings"로 설정
- "Localize ..."버튼 클릭

- Target -> Localizations에서 "+"버튼 클릭 -> 지역화를 하고싶은 나라 추가


- Localizable파일 확인: Korean파일을 만들어 놓고 공백으로 둘 것 - English에 key-value작성해 두고 Korean파일을 만들어 놓지 않으면 영어로 작성되는점 유의
base가 영어이므로 아래처럼 english에 해당하는 부분은 따로 추가하지 않아도 가능

- 각각 파일에 해당하는 언어의 key - value형식으로 작성 (작성 후 세미콜론을 끝내 적는 것 잊지 말것)

- 문자열을 입력하는 곳에서 String객체가 아닌 NSLocalizedString 객체를 사용하면 지역화 완료
// alertLabel.text = "\(title) 접근 권한이 필요합니다" // 일반적인 String
alertLabel.text = NSLocalizedString("\(title) 접근 권한이 필요합니다", comment: "") // 지역화 객체


- String의 extension을 이용하여 NSLocalizedString객체 쉽게 사용하는 방법
public extension String {
func localized(bundle: Bundle = .main, tableName: String = "Localizable") -> String {
return NSLocalizedString(self, tableName: tableName, value: "\(self)", comment: "")
}
}
// 사용
alertLabel.text = "\(title) 접근 권한이 필요합니다".localized()
Storyboard, xib 파일에서의 Localization
- 지역화를 하고싶은 파일 .storyboard 클릭 -> Localize 클릭

- 코드로 localization하는 부분에서 추가한 지역들의 리스트 노출 확인 -> Localization 하고싶은 지역 클릭

- Localization 옵션에 체크박스로 표시되는데 원하는 지역 모두 선택

- .storyboard파일 하위에 생겨난 것을 확인

- 한국 Localization적용: storyboard는 객체의 키 = "값"으로 자동으로 설정되어 있으며, "값"부분에 채워넣으면 완료


- 파일이 .strings가 아닌 ".storyboard"로 나오는 경우 -> 지역마다 storyboard를 커스텀할 수 있음

시스템팝업을 띄우는 info.plist관련 지역화 방법
- infoPlist.strings 파일을 만든 후 아래 Localize 클릭

- 시스템 팝업에 필요한 "NS-"로 시작하는 접근권한 입력
- 영어버전
/*
InfoPlist.strings
MemoryCam
Created by 김종권 on 2021/01/12.
*/
"NSAppleMusicUsageDescription" = "Uses for music";
"NSCameraUsageDescription" = "Uses the camera for taking profile picture and image detection";
"NSLocationAlwaysAndWhenInUseUsageDescription" = "Uses location for getting user current address";
"NSLocationAlwaysUsageDescription" = "Uses location for getting user current address";
"NSLocationUsageDescription" = "Uses location for getting user current address";
"NSLocationWhenInUseUsageDescription" = "Uses location for getting user current address";
"NSPhotoLibraryUsageDescription" = "Uses photo for taking profile picture and image detection";
- 한글
/*
InfoPlist.strings
MemoryCam
Created by 김종권 on 2021/01/12.
*/
"NSAppleMusicUsageDescription" = "음악 접근 권한이 필요합니다";
"NSCameraUsageDescription" = "카메라 접근 권한이 필요합니다";
... 생략 ...
다른 나라 언어로 한번에 번역하는 팁
- 구글 드라이브 접속 -> Google 스프레드시트 생성

- 국가코드를 아래와 같이 작성 (애플에서 쓰는 국가코드 참고 사이트)
GOOGLETRANSLATE("번역할 문장", "ko", 첫 번째 셀 클릭하여 선택)

- 파란색 오른쪽 하단 네모를 아래까지 드래그

- 응용

- 복사 후 오른쪽마우스 클릭 -> 값만 붙여넣기 (cmd + shift + V)

* 애플 국가코드: www.ibabbleon.com/iOS-Language-Codes-ISO-639.html
* 코드로 Localization 하는 방법 내용 출처: developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] throttle tap 커스텀 (0) | 2021.01.14 |
---|---|
[iOS - swift] popToRootViewController의 completion 인자를 가진 커스텀 함수 만드는 방법 (CATransaction 사용) (0) | 2021.01.12 |
[iOS - swift] Floating Button (Hover 프레임워크) (0) | 2021.01.11 |
[iOS - swift] 포커스 애니메이션 (0) | 2021.01.10 |
[iOS - swift] UIImage파일 관리 방법 (0) | 2021.01.10 |