티스토리 뷰
LocalizedStringKey
Swift UI에서 Localization을 위한, 새로운 struct가 나왔다. !!!! 바로 LocalizedStringKey!!!
let goal: LocalizedStringKey = "goal"
let text = Text(goal)
짜잔.
이게 무슨 의미가 있냐면.....
기존에 LocalizedString을 쓰려면 이렇게 했어야 했다.
UILabel(string: NSLocalizedString(key: "abcd"))
저렇게 NSLocalizedString( 을 모든 뷰에서 쓰는게 싫어서, extension String으로 따로 처리하곤 했었다.
이제는 굳이 저렇게 안해줘도 된다는 점이 큰 의의이다.
요약: String을 받던 UILabel과 달리, Text는 LocalizedKeyString을 받는다.
Localize 하는 방법
1. Localizable.strings 파일을 만든다
File > New File > Strings File
이름을 Localizable.strings로 안해주면 에러가 난다!!
2. 파일을 선택하고, 우측 패널에서 Localize...버튼을 눌러준다.
3. 프로젝트 세팅에서,
Localization에서 Base, English 두개가 디폴트로 있는데, + 버튼을 눌러서 자신이 원하는 언어를 추가해준다.
그럼 이렇게, Localizible.strings안에 영어랑, 한국어가 생긴다.
언어별로 세팅해주면 된다.
SwiftUI 프리뷰에서 보고 싶으면, 설정을 이런식으로 해주면 된다.
Group {
CallToStaffScene()
.environment(\.locale, .init(identifier: "en"))
CallToStaffScene()
.environment(\.locale, .init(identifier: "ko"))
}
String 중간에 변수를 써야 한다면
let value = 40
struct ContentView: View {
var body: some View {
Text("bookings: \(value)")
.fontWeight(.bold)
}
}
이런식으로, Text 중간에 Variable을 써야 할 수 있다. 그런 상황에서는
"bookings: %lld" = "Buchungen: %lld";
처럼 써줘야 한다.
String : %@
Integer: %lld
참고 링크
https://swiftwithmajid.com/2019/10/16/localization-in-swiftui/
'macOS, iOS' 카테고리의 다른 글
[iOS] @EnvironmentObject 써서 view들 사이의 data 공유하기 (0) | 2020.01.07 |
---|---|
[iOS] SwiftUI에서 UIView를 wrapping 해서 사용하는 법 (0) | 2020.01.07 |
[iOS] SwiftUI의 Preview Size, Device 종류 바꾸기 (0) | 2020.01.06 |
[iOS] SFSymbol dmg 파일 (0) | 2020.01.06 |
[iOS] SwiftUI Resume 단축키 (0) | 2020.01.06 |