簡體   English   中英

如何在 SwiftUI 中本地化多個視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM