У меня есть проект в Xamarin, который нацелен на Android, iOS и Windows Phone. Я использовал core (библиотека PCL) для обмена общим кодом между различными платформами. Я добавил файлы ресурсов (ресурс .net).Resx в моей основной библиотеке и прочитал специфическую для культуры строку, которую я использовал в следующем фрагменте кода в одном из моих ViewModel:
public string GetString()
{
// CommonResources is the name of my resource file
ResourceManager resManager = new ResourceManager(typeof(CommonResources));
return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture);
}
"LoginLabel" - это мой ключ ресурса, и его значение - "Вход" (на английском языке) и "inloggen" на голландском языке.
Я создал два файла ресурсов CommonResources для английского и голландского в моем проекте PCL.
CommonResources.resx
CommonResources.nl-NL.resx
в Android-телефоне, iOS и Windows-телефоне я устанавливаю культуру следующим образом:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Это отлично подходит для Android и телефона с Windows.
Но для iOS он не работает. Он всегда возвращает строку ресурса из английского файла. Культура правильно настроена и отображается в режиме отладки. но каким-то образом он не может загрузить строку ресурса из ресурса голландского языка.
Итак, вопрос в том, можно ли локализовать строку (.Net) с помощью PCL для всей платформы? у кого есть идея? Спасибо заранее.