Mehrere Sprachen in einer Xamarin-Forms App?
Servus,
ich bin derzeit dabei eine App für meinen Alltag zu entwickeln (rein organisatorische Dinge und ein kleines Wiki für berufsspezifische Dinge). Da nun ein guter Freund (aus England) ebenfalls Interesse an dieser App hat, würde ich gerne die Texte für ihn in Englisch darstellen.
Meine Idee war es eine Datei mit den ganzen Texten zu hinterlegen (Deutsch & Englisch). Je nach getroffener Auswahl würde dann die jeweilige Datei gelesen werden. Problem ist nun wie lade ich diese Texte dann in die Ausgabe und wie kann ich sie schnell ändern? Oder gibt es vielleicht auch einen einfacheren Weg?
Die App selber wird nur auf dem privaten Gerät installiert und hat keine Internetanbindung. Alles notwendige muss also lokal sein.
Ich würde mich über die Lösung wie man das macht echt freuen. Ein Ratschlag, wonach ich genau recherchieren muss würde auch reichen. Bei meinen bisherigen Suchen finde ich nur Ergebnisse zu dem ändern der Sprache in meiner IDE.
Danke
1 Antwort
Dafür kannst du dir Ressourcendateien anlegen. Eine für jede Sprache.
- Language.resx (default)
- Language.en.resx
- Language.es.resx
- usw. ...
In diesen Dateien werden die Texte nach Key-Value-Muster eingetragen. Der Key muss über alle Dateien hinweg immer gleich sein, der Value entspricht der jeweiligen Übersetzung.
In den XAML-Dateien kannst du dann auf diese Keys zugreifen.
<ContentPage ... xmlns:resource="clr-namespace:YourProjectName.Resources">
<Label Text="{x:Static resource:Language.SomeKey}" />
</ContentPage>
Die Sprache musst du bei App-Start einmal ermitteln und setzen.
var deviceLanguage = CultureInfo.InstalledUICulture; // or CultureInfo.CurrentUICulture
Thread.CurrentThread.CurrentUICulture = deviceLanguage;
AppResources.Culture = deviceLanguage;
Hier oder hier findest du dazu noch einmal Step-for-Step-Tutorials.