2017-01-12 99 views
11

başına ben 2 hedefleri ile bir uygulamayı var. Uygulamadaki dize kaynakları, kod ve storyboard dosyasının tümüne dağılmıştır. Artık her iki hedef için de tamamen farklı dizeler dizisine ihtiyacım var (her iki hedef için de olsa İngilizce olsa da). Bu bağlantıyı takip dize başına Localized.strings 2 farklı versiyonlarını oluşturmak mümkün oldu - Alternative strings for different targets of same App - use NSLocalizedString?Özelleştirme Mainstoryboard.strings hedefe

Ama hedef başına Mainstoryboard.strings dosyayı ayırmak için bu tür benzer bir yaklaşım bulamadık. MAinstoryboard.strings dosyasının 2 kopyasını yapmalı ve her bir hedefe atamalı mıyım? Bunu denemedim ama bir şey bana bunun en iyi yaklaşımın olmayacağını söyler.

Elma eğiticiler üzerinde bu konuda Şaşırtıcı bir şey. Baska öneri ?

+0

Benim tahminim koduna göre tüm dizeleri ayarlamanız gerekir olduğunu. Doğru paket yoluna erişerek hedefe bağlı olarak doğru dizeyi alan bir yöntem uygulayın. – hasan83

+0

Zaten koddaki dizeler için bunu yapıyorum. Ama ben storyboard bir sürü dizeleri var ve kod üzerinde onları yerleştirme bir seçenek değildir (büyük bir çalışma) – Dibzmania

+0

Sahte bir yerelleştirme dili eklemek ve bir storyboard başka bir salon yerine, storyboard yerelleştirin. Uygulama başlangıcında cihazı tercih edilen dili kontrol edebilir ve uygulama dilini buna göre sıfırlayabilirsiniz (yalnızca hedeflerden birinde). – hasan83

cevap

3

çözüm olabilir sahte dili eklemek için bir kod parçacığı:

language = Bundle.main.preferredLocalizations[0] 

if target == SOME_TARGET { 

    if language == "en" { 
     language = "fr" // fake language  
    } else if language == "ar" { 
     language = "rs" // another fake language 
    } else { 
     // default app language 
     language = "whatever" // default fake language 
    } 

    UserDefaults.standard.set([language], forKey: "AppleLanguages") 
    UserDefaults.standard.synchronize() 
} else { 
    // do nothing 
} 

önerilen bir başka çözüm. Her dil için iki storyboard yerelleştirme dosyası olması. ve hedefler arasında geçiş yaparken bunları OS X bulucu kullanarak manuel olarak değiştirin. Ama sanırım bu, hikaye tahtasındaki dizeler için yardım etmeyecek.

+0

Önerilen ilk çözümün içine bakma zamanını bulamadım. İkinci çözüm benim için çalışmaz çünkü farklı hedefler için uygulama paketleri üreten bir CI kurulumum var ve manuel müdahale yok. – Dibzmania

1

Ben Yerelleştirme sorunları için bir Github project yapmak yaptı.

iOS bileşenlerimi kullanarak, localizedString öğesini doğrudan Storyboard dosyanızın içine yerleştirebileceksiniz.

Xcode Example