Swift kullanıcı arayüzünde yerelleştirme nasıl uygulanır?


10

Birisi bana yardım edebilir mi? Swift kullanıcı arayüzünde yerelleştirmenin herhangi bir açıklamasını bulamıyorum. Herkes nasıl tavsiye veya daha iyi örneğin yerelleştirmek için bir örnek verebilir Text()misiniz?

Yanıtlar:


15

Metin belgelerine baktığınızda, başlatıcısına bir String değil LocalizedStringKey aldığını görebilirsiniz:

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

Lokalizasyonu çok düz yapar. Tüm yapman gereken:

  • Dizeler Dosya türünde yeni bir dosya oluşturun, yerelleştirin deyin
  • yeni dosyayı seçin ve sağ taraftaki panelde Dosya Denetçisine naigate edin ve Yerelleştir ... seçeneğini tıklayın.
  • proje dosyanıza Yerelleştirmeler bölümüne gidin ve listeye başka bir dil ekleyin - Xcode sizin için yerelleştirme dosyaları oluşturur

Localizable.strings dosyasını seçtiğinizde, orijinal dil ve az önce eklediğiniz dil için dosyalar içerdiğini göreceksiniz. Çevirilerinizi buraya koyduğunuz yer, yani anahtar - yerelleştirilmiş metin çiftleri.

Bunun gibi bir metniniz uygulamanızsa:

Text("Hello World!")

Şimdi çevirilerinizi Localizable.strings dosyasına eklemelisiniz:

temel diliniz için:

"Hello World!" = "Hello World!";

ve ikinci diliniz için (bu durumda Almanca):

"Hello World!" = "Hallo Welt!";

Önizlemelerinizi yerel olarak görmek için bunları şu şekilde tanımlayabilirsiniz:

struct ContentViewView_Previews: PreviewProvider {

    static var previews: some View {
        ForEach(["en", "de"], id: \.self) { id in
            ContentView()
                .environment(\.locale, .init(identifier: id))
        }
    }
}

Teşekkürler, yardımcı oldu! Ancak bazı sorunlar vardı, çünkü zaten birkaç dil eklenmişti.
Oleh H

Bu talimatları mektuba uyguladım ve işe yaramadı. İOS 10.15.1 Beta ve Xcode 11.1 kullanıyorum. Herhangi bir tavsiye memnuniyetle kabul etti. Şimdilik beta yazılımında bir aksaklık yapacağım ve bu konuda daha fazla zaman kaybetmeyeceğim
Joseph Beuys'un Annesi

Sorun tam olarak neydi?
LuLuGaGa

1
@LuLuGaGa sorununu buldum. Dediğim gibi, mektubun talimatlarını izlemediğimi söyler. Yerelleştirmeler dizesi dosyam bir alt klasördeydi. Proje seviyesine koy ve iyi çalışıyor
Joseph Beuys'un Annesi

1
Ayrıca dizeleri yerelleştirilebilir başka bir şey dosya çağırmak işe yaramaz anlamına gelir keşfettim
Joseph Beuys 'Anne

3

Hızlı kullanıcı arayüzü dosyası için, yerelleştirme .strings dosyasından dize anahtarı eklemeniz yeterlidir

SwiftUI'yi içe aktar

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"))
    }
}

ve bu .strings dosyasından bir örnek

"selectLanguage" = "Select language";
"languagesList" = "Languages list";

sonuç burada


0

Uygulamanızı yerelleştirmek için ihtiyacınız olan:

  1. SwiftUI öğelerini aşağıdaki gibi kullanın: Metin ("Güzel") . Nice, Localizable.strings içinde anahtar olur.
  2. SwiftUI öğesinde metnin bulunmadığı durumlarda NSLocalizedString kullanması gerekir .
  3. Uygulama hedefinizi seçin.
  4. Yerelleştirmeyi dışa aktar: Düzenle -> Yerelleştirme için Dışa Aktar ...
  5. Dışa aktarılan dosyaları çevirmene verin.
  6. Çevirileri içe aktar: Düzenle -> Yerelleştirmeleri İçe Aktar ...

0

SwiftUI'de Localazable'ı kullanmak için şu şekilde yapabilirsiniz:

dosyalarınızda LocalizedStringKey kullanmak için SwiftUI'yi içe aktarın

//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)
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.