ใครช่วยฉันได้บ้าง ฉันไม่พบรายละเอียดของการแปลใน Swift UI ทุกคนสามารถให้คำแนะนำหรือยกตัวอย่างวิธีการแปลเป็นภาษาท้องถิ่นได้ดีขึ้นText()
หรือไม่
ใครช่วยฉันได้บ้าง ฉันไม่พบรายละเอียดของการแปลใน Swift UI ทุกคนสามารถให้คำแนะนำหรือยกตัวอย่างวิธีการแปลเป็นภาษาท้องถิ่นได้ดีขึ้นText()
หรือไม่
คำตอบ:
เมื่อคุณดูเอกสารสำหรับ Text คุณจะเห็นว่ามันใช้ LocalizedStringKey ไม่ใช่ String ใน initializer:
init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
มันทำให้การแปลตรงไปตรงมามาก สิ่งที่คุณต้องทำคือ:
เมื่อคุณเลือก Localizable.strings คุณจะเห็นว่ามันมีไฟล์สำหรับภาษาต้นฉบับและภาษาที่คุณเพิ่งเพิ่มเข้าไป นั่นคือสิ่งที่คุณใส่การแปลของคุณเช่นที่สำคัญ - คู่ข้อความที่แปลเป็
หากคุณมีข้อความเช่นนี้เป็นแอปของคุณ:
Text("Hello World!")
คุณต้องเพิ่ม Localizable ของคุณแล้วเพิ่มคำแปลของคุณ:
สำหรับภาษาฐานของคุณ:
"Hello World!" = "Hello World!";
และสำหรับภาษาที่สองของคุณ (ในกรณีนี้คือภาษาเยอรมัน):
"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))
}
}
}
สำหรับไฟล์ swift 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";
ผลลัพธ์อยู่ ที่นี่
ในการแปลแอพของคุณคุณต้อง:
ในการใช้ Localazable ใน SwiftUI คุณสามารถทำสิ่งนี้ได้:
นำเข้า SwiftUI เพื่อใช้ LocalizedStringKey ในไฟล์ของคุณ
//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)
}