Ho un progetto in Xamarin destinato a telefoni Android, iOS e Windows. Ho usato core (libreria PCL) per condividere codice comune tra diverse piattaforme. Ho aggiunto delle risorse file (risorsa .net) resx nella mia libreria di base e leggere la stringa specifica cultura ho usato seguente frammento di codice in uno dei miei ViewModel:Localizzazione per piattaforma mobile cross utilizzando xamarin e problema con iOS solo
public string GetString()
{
// CommonResources is the name of my resource file
ResourceManager resManager = new ResourceManager(typeof(CommonResources));
return resManager.GetString("LoginLabel",CultureInfo.CurrentCulture);
}
"LoginLabel" è la mia chiave di risorsa e il suo valore è "Accedi" (in inglese) e "inloggen" in olandese.
Ho creato due file di risorse CommonResources per inglese e olandese nel mio progetto PCL. CommonResources.resx
CommonResources.nl-NL.resx
in Android, iOS e Windows Phone, ho impostato la cultura come segue:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
Questo funziona bene per Android e Windows Phone.
Ma per iOS non funziona. Restituisce sempre la stringa di risorse dal file inglese. La cultura è impostata correttamente e viene visualizzata in modalità di debug. ma in qualche modo non è in grado di caricare la stringa di risorse dalla risorsa olandese.
Quindi la domanda è, è possibile localizzare string (.Net way) utilizzando PCL per tutte le piattaforme? qualcuno ha qualche idea? Grazie in anticipo.
L'olandese è l'unica altra lingua? In caso contrario, le altre lingue funzionano come previsto? Se sì, puoi aggiungere un'altra lingua come test? – chad
No, l'hindi è un'altra lingua a parte l'olandese. Non funziona per nessuna lingua supportata tranne che per l'inglese. – SoftSan