답변:
Text 문서를 살펴보면 String이 아닌 LocalizedStringKey가 초기화 프로그램에 사용된다는 것을 알 수 있습니다.
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
현지화가 매우 간단합니다. 당신이해야 할 일은 :
Localizable.strings를 선택하면 원래 언어 및 방금 추가 한 언어의 파일이 포함되어 있음을 알 수 있습니다. 여기에 번역, 즉 키-현지화 된 텍스트 쌍이 있습니다.
다음과 같은 텍스트가 있으면 앱입니다.
Text("Hello World!")
이제 Localizable.strings에 번역을 추가해야합니다.
귀하의 기본 언어 :
"Hello World!" = "Hello World!";
그리고 당신의 제 2 언어 (이 경우 독일어) :
"Hello World!" = "Hallo Welt!";
미리보기를 현지화 된 언어로 보려면 다음과 같이 미리 정의 할 수 있습니다.
struct ContentViewView_Previews: PreviewProvider {
static var previews: some View {
ForEach(["en", "de"], id: \.self) { id in
ContentView()
.environment(\.locale, .init(identifier: id))
}
}
}
신속한 UI 파일의 경우 현지화 .strings 파일에서 문자열 키를 삽입하면됩니다.
SwiftUI 가져 오기
struct ContentView: View {
var body: some View {
VStack {
Text("selectLanguage")
Text("languagesList")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environment(\.locale, .init(identifier: "en"))
}
}
.strings 파일의 예입니다.
"selectLanguage" = "Select language";
"languagesList" = "Languages list";
결과는 여기
SwiftUI에서 Localazable을 사용하려면 다음과 같이 수행하십시오.
파일에서 LocalizedStringKey를 사용하도록 SwiftUI 가져 오기
//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}
//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";
//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue
VStack {
Text(submitButtonName)
Text(cancelButtonName)
}