Jawaban:
Ketika Anda melihat dokumentasi untuk Teks, Anda dapat melihat bahwa itu mengambil LocalizedStringKey bukan String ke inisialisasi:
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
Itu membuat pelokalan sangat straightforawar. Yang harus Anda lakukan adalah:
Ketika Anda memilih Anda Localizable.strings Anda akan melihat bahwa itu berisi file untuk bahasa asli dan bahasa yang baru saja Anda tambahkan. Di situlah Anda meletakkan terjemahan Anda, yaitu kunci - pasangan teks terlokalisasi.
Jika Anda memiliki teks seperti ini adalah aplikasi Anda:
Text("Hello World!")
Anda sekarang harus menambahkan ke Localizable.strings terjemahan Anda:
untuk bahasa dasar Anda:
"Hello World!" = "Hello World!";
dan untuk bahasa kedua Anda (dalam hal ini Jerman):
"Hello World!" = "Hallo Welt!";
Untuk melihat pratinjau Anda terlokalisasi, Anda dapat mendefinisikannya seperti ini:
struct ContentViewView_Previews: PreviewProvider {
static var previews: some View {
ForEach(["en", "de"], id: \.self) { id in
ContentView()
.environment(\.locale, .init(identifier: id))
}
}
}
Untuk file UI cepat, Anda hanya perlu memasukkan kunci string dari file .strings pelokalan
impor 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"))
}
}
dan ini adalah contoh dari file .strings
"selectLanguage" = "Select language";
"languagesList" = "Languages list";
hasilnya ada di sini
Untuk melokalkan aplikasi Anda, Anda perlu:
Untuk menggunakan Localazable di SwiftUI, Anda dapat melakukan cara ini:
impor SwiftUI untuk menggunakan LocalizedStringKey di file Anda
//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)
}