Локализация для мобильной кроссплатформенности с использованием xamarin и проблема только с iOS
У меня есть проект в Xamarin, который нацелен на Android, iOS и Windows Phone. Я использовал ядро (библиотека PCL) для обмена общим кодом между различными платформами. Я добавил Resource files (.net resource) .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 Phone я установил следующую культуру:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Это прекрасно работает для Android и Windows Phone.
Но дляIOS это не работает. Он всегда возвращает строку ресурса из английского файла. Культура настроена правильно и отображается в режиме отладки. но почему-то он не может загрузить строку ресурса из голландского ресурса.
Таким образом, вопрос в том, можно ли локализовать строку (.Net способом), используя PCL для всех платформ? У кого-нибудь есть идеи? Заранее спасибо.