15

Android, iOS ve Windows telefonlarını hedefleyen Xamarin'de bir projem var. Farklı platformlar arasında ortak kodu paylaşmak için çekirdek (PCL kütüphanesi) kullandım. "LoginLabel" Benim kaynak anahtar ve değeri xamarin kullanarak mobil çapraz platform için konumlandırma ve yalnızca iOS ile sorun giderme

public string GetString() 
{ 
    // CommonResources is the name of my resource file 
    ResourceManager resManager = new ResourceManager(typeof(CommonResources)); 
    return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture); 
} 

olduğunu

: Benim çekirdek kütüphanede ve benim ViewModel birinde kod parçacığı aşağıdaki kullanılan kültür özgü dize okumak için Kaynak dosyaları (.net kaynak) .Resx eklendi Hollandaca "Giriş" (ingilizce) ve "inloggen" dir.

PCL projemde İngilizce ve Hollandaca için CommonResources iki kaynak dosyası oluşturdum. CommonResources.resx
CommonResources.nl-NL.resx android içinde

, iOS ve Windows telefonu, ben aşağıdaki gibi kültür ayarlayın:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL"); 
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL"); 

Bu Android ve pencereler telefonu için çalışıyor.

Ancak iOS çalışmıyor. Kaynak dizgisini her zaman İngilizce dosyasından döndürür. Kültür uygun şekilde ayarlanmış ve hata ayıklama modunda görüntüleniyor. Ancak bir şekilde kaynak dizgeyi Hollandaca kaynağından yükleyemiyor.

Soru şu ki, tüm platform için PCL kullanarak string (.Net way) lokalize etmek mümkün mü? herhangi bir fikri olan var mı? Şimdiden teşekkürler.

+0

Hollandaca başka bir dil mi? Değilse, beklendiği gibi çalışan diğer diller nelerdir? Varsa, test olarak başka bir dil ekleyebilir misiniz? – chad

+0

Hayır, Hintçe, hollanda dışında başka bir dildir. Sadece İngilizce dışında desteklenen herhangi bir dil için çalışmıyor. – SoftSan

cevap

2

Xamarin projelerimizde yerelleştirme için, Microsoft ve T4 şablonlarından Çok Dilli Uygulama Araç Takımı'nı (detailed here), araç setinden çıktısını Android ve iOS için kullanılabilir biçimlere dönüştürmek için kullandım.

This öğretici, işlem için fantastik bir görünüme sahiptir ve this kod projesine dayanmaktadır.

0

Ya:

  • Aslında iOS'ta CurrentCulture ayarı değiliz.
  • CurrentCulture'ı numaralı A üzerinde ayarlıyorsunuz ve no'lu B no'lu parçacığından alıyorsunuz.

bu deneyin:

public string GetString() 
{ 
    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL"); 
    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL"); 

    // CommonResources is the name of my resource file 
    ResourceManager resManager = new ResourceManager(typeof(CommonResources)); 
    return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture); 
} 
0

gerçek cihazda test musunuz? Simülatörde kültürü değiştirmek mümkün değildir. Dil dosyalarımda benzer bir sorun vardı.

İlgili konular