Wenn Sie bauen nativen Android und iOS apps Sie die Schnittstelle haben könnte:
public interface ILocalization {
string GetLocalizedString(string key);
}
Und in den Android- und iOS-Projekte, die Sie eine Klasse, die die Schnittstelle implementiert, Android:
public class LocalizationAndroid : ILocalization
{
public Activity context;
public LocalizationAndroid(Activity _context) {
context = _context;
}
public string GetLocalizedString(string key)
{
var resourceId = (int)typeof(Resource.String).GetField(key).GetValue(null);
return context.GetString(resourceId);
}
}
iOS:
public class LocalizationIOS : ILocalization
{
public string GetLocalizedString(string key)
{
return NSBundle.MainBundle.LocalizedString(key, null);
}
}
Und dann übergeben Sie eine Instanz der Klasse (in Ihrer Sicht instanziiert) an das Ansichtsmodell, um die Zeichenfolgen zu erhalten. Die Zeichenfolgen müssen an der Datei Localizable.strings für das iOS-Projekt und an der Datei Strings.xml für das Android-Projekt platziert werden.
Auf der Ansichtsmodell würden Sie haben:
public class MyViewModel
{
public ILocalization LocalizationObject;
private List<Thing> _items;
public MyViewModel(ILocalization _localizationObject)
{
LocalizationObject = _localizationObject;
_items.Add(new Thing(LocalizationObject.GetLocalizedString("Open")));
_items.Add(new Thing(LocalizationObject.GetLocalizedString("Closed")));
}
}
Diese, in Anbetracht der Tatsache, dass Sie die beiden Strings „Öffnen“ und „geschlossen“ für die „Open“ und „Geschlossen“ Tasten auf den Strings hinzugefügt .xml (Android) und Localizable.strings (iOS).
https://developer.xamarin.com/guides/xamarin-forms/advanced/localization/ – Jason
Das bedeutet, dass Sie Ihre Strings über Projekte (Android/IOS, usw.) dupliziert haben müssen. Wenn Sie Ihre Gebietsschemas nur an einem Ort (Ihrem PCL) haben möchten, können Sie diese Bibliothek verwenden: https://github.com/xleon/I18N-Portable – xleon