Mam projekt w Xamarin, który jest przeznaczony dla telefonów z systemem Android, iOS i Windows. Użyłem rdzenia (biblioteki PCL), aby udostępnić wspólny kod między różnymi platformami. I dodaje zasób plików (.net) .Resx zasobów w moim bazowej biblioteki i czytać konkretny ciąg kulturę i używany następujący fragment kodu w jednym z moich ViewModel:Lokalizacja dla mobilnej platformy międzyplatformowej za pomocą xamarin i wydanie tylko iOS.
public string GetString()
{
// CommonResources is the name of my resource file
ResourceManager resManager = new ResourceManager(typeof(CommonResources));
return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture);
}
„LoginLabel” jest moim kluczowym zasobem, a jego wartość to "Zaloguj się" (po angielsku) i "inloggen" w języku holenderskim.
Utworzono dwa pliki zasobów CommonResources dla języka angielskiego i holenderskiego w moim projekcie PCL. CommonResources.resx
CommonResources.nl-NL.resx
w Androidzie, iOS i Windows Phone, ustawić kulturę następująco:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Działa to dobrze dla Android i Windows Phone.
Ale dla iOS to nie działa. Zawsze zwraca ciąg zasobów z pliku w języku angielskim. Kultura jest prawidłowo ustawiona i wyświetlana w trybie debugowania. ale jakoś nie jest w stanie załadować łańcucha zasobów z natywnego zasobu.
Pytanie brzmi, czy możliwe jest zlokalizowanie ciągu (.Net way) przy użyciu PCL dla wszystkich platform? ktoś ma jakiś pomysł? Z góry dzięki.
Czy język holenderski jest jedynym innym językiem? Jeśli nie, to czy inne języki działają zgodnie z oczekiwaniami? Jeśli tak, czy możesz dodać inny język jako test? – chad
Nie, hindi to inny język poza holenderskim. Nie działa dla żadnego obsługiwanego języka, z wyjątkiem angielskiego. – SoftSan