I have a project in Xamarin which targets Android, iOS and windows phone. I used core (PCL library) to share common code between different platform. I added Resource files (.net resource) .Resx in my core library and to read the culture specific string i used following code snippet in one of my 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" is my resource key and its value is "Sign in" (in english) and "inloggen" in dutch.
I created two resource files CommonResources for English and dutch in my PCL project.
CommonResources.resx
CommonResources.nl-NL.resx
in android, iOS and windows phone, I set culture as follow:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
This works fine for Android and windows phone.
But for iOS it does not work. It always return resource string from English file. The culture is properly set and it display in debug mode. but somehow it is not able to load the resource string from the dutch resource.
So the question is, it is possible to localize string(.Net way) using PCL for all platform? anyone has any idea? Thanks in advance.