[英]SwiftUI How to Navigate to Multiple Possible Views Depending on Conditional?
[英]How to localize multiple Views in SwiftUI
我是 SwiftUI 的新手,我的應用程序還需要功能翻譯語言,所以我先創建了一個示例應用程序,然后再將此功能合並到我的其他項目中。 因此,正如您在下面的代碼中看到的那樣,我可以通過單擊按鈕來更改語言,並且它可以完美運行,但我不知道這將如何與多個視圖一起使用。 我希望將所有這些本地化並希望刪除冗余。
import SwiftUI
struct ContentView: View {
@State var title = ""
var body: some View {
VStack{
Text(title)
.padding()
Button {
title = "welcomeTitle".localizableString("en")
} label: {
Text("EN")
}
Button {
title = "welcomeTitle".localizableString("ja")
} label: {
Text("JA")
}
}
.onAppear {
// title = "welcomeTitle".localizableString("en")
if(Bundle.main.preferredLocalizations.first == "ja"){
title = "welcomeTitle".localizableString("ja")
}
else{
title = "welcomeTitle".localizableString("en")
}
}
}
}
extension String {
func localizableString(_ name: String) -> String {
let path = Bundle.main.path(forResource: name, ofType: "lproj")
let bundle = Bundle(path: path!)
return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
見此之前
然后是一個方便的擴展:
extension String {
var localized: String {
return NSLocalizedString(self, comment: "")
}
}
//For your button
Button {
//action
} label: {
Text("welcomeTitle".localized)
}
在您的 Localizable.strings 文件 English 中,添加以下內容: "welcomeTitle" = "welcomeTitle EN";
在您的 Localizable.strings 文件日語中,添加以下內容: "welcomeTitle" = "welcomeTitle JA";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.