วิธีการปรับใช้การแปลใน Swift UI


10

ใครช่วยฉันได้บ้าง ฉันไม่พบรายละเอียดของการแปลใน Swift UI ทุกคนสามารถให้คำแนะนำหรือยกตัวอย่างวิธีการแปลเป็นภาษาท้องถิ่นได้ดีขึ้นText()หรือไม่

คำตอบ:


15

เมื่อคุณดูเอกสารสำหรับ Text คุณจะเห็นว่ามันใช้ LocalizedStringKey ไม่ใช่ String ใน initializer:

init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)

มันทำให้การแปลตรงไปตรงมามาก สิ่งที่คุณต้องทำคือ:

  • สร้างไฟล์ประเภทไฟล์ Strings ใหม่เรียกว่า Localizable
  • เลือกไฟล์ใหม่และไปที่ File Inspector ในแผงด้านขวามือและคลิก Localize ...
  • ไปที่ไฟล์โครงการของคุณไปที่ส่วนการแปลและเพิ่มภาษาอื่นลงในรายการ - Xcode จะสร้างไฟล์การแปลสำหรับคุณ

เมื่อคุณเลือก 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))
        }
    }
}

ขอบคุณมันมีประโยชน์! แต่ฉันมีปัญหาบางอย่างเพราะมันเพิ่มหลายภาษาแล้ว
Oleh H

ฉันทำตามคำแนะนำเหล่านี้เพื่อจดหมายและมันไม่ทำงาน ฉันใช้ iOS 10.15.1 Beta และ Xcode 11.1 คำแนะนำใด ๆ ที่ยอมรับอย่างยินดี สำหรับตอนนี้ฉันจะถือว่าผิดพลาดในซอฟต์แวร์รุ่นเบต้าและไม่เสียเวลาอีกต่อไปในเรื่องนี้
Joseph Beuys 'Mum

ปัญหาอะไรกันแน่
LuLuGaGa

1
ฉันพบปัญหา @LuLuGaGa มันกลายเป็นว่าฉันไม่ได้ทำตามคำแนะนำในจดหมายดังที่ฉันบอกว่าฉันมี ไฟล์สตริงการแปลท้องถิ่นของฉันอยู่ในโฟลเดอร์ย่อย วางไว้ที่ระดับโครงการและใช้งานได้ดี
Joseph Beuys 'Mum

1
ได้ค้นพบ (ฉันคิดว่า) ว่าการเรียกไฟล์สตริงสิ่งอื่นนอกเหนือจากLocalizableหมายความว่ามันจะไม่ทำงาน
Joseph Beuys 'Mum

3

สำหรับไฟล์ 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";

ผลลัพธ์อยู่ ที่นี่


0

ในการแปลแอพของคุณคุณต้อง:

  1. องค์ประกอบที่ใช้ SwiftUI ที่ชอบ: ข้อความ ( "ดี") นิสัยดีกลายเป็นกุญแจสำคัญใน Localizable.strings
  2. ในกรณีที่ข้อความที่ไม่ได้อยู่ในองค์ประกอบ SwiftUI ต้องการใช้NSLocalizedString
  3. เลือกแอปเป้าหมายของคุณ
  4. ส่งออกรองรับหลายภาษา: แก้ไข -> ส่งออกสำหรับรองรับหลายภาษา ...
  5. มอบไฟล์ที่ส่งออกไปยังนักแปล
  6. นำเข้าการแปล: แก้ไข -> นำเข้า Localisations ...

0

ในการใช้ 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)
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.