Lokalisierung
In diesem Leitfaden werden die Konzepte der Internationalisierung und Lokalisierung sowie Links zu Anweisungen zur Erstellung mobiler Xamarin-Anwendungen mit diesen Konzepten vorgestellt.
Wenn Sie direkt mit den technischen Details der Lokalisierung von Xamarin-Apps beginnen möchten, beginnen Sie mit einem der folgenden plattformspezifischen Artikel:
- Xamarin.Forms plattformübergreifende Lokalisierung mithilfe von RESX-Dateien.
- Xamarin.iOS native Plattformlokalisierung.
- Lokalisierung der nativen Xamarin.Android-Plattform .
i18n und L10n
Die Internationalisierung ist der Prozess, mit dem Ihr Code verschiedene Sprachen anzeigen und seine Anzeige für verschiedene Gebietsschemas (z. B. Zahlen- und Datumsformatierung) anpassen kann. Dies wird auch als Globalisierung bezeichnet.
Lokalisierung ist der folgende Schritt: Erstellen von Ressourcen (z. B. Zeichenfolgen und Bilder) für jede Sprache und Bündeln mit der Internationalisierungs-App.
Die Internationalisierung wird oft auf i18n gekürzt – Kurzschrift für 18 Buchstaben zwischen "i" und "n". Die Lokalisierung wird entsprechend auf L10n gekürzt – für 10 Buchstaben zwischen "L" und "n".
Überblick
In diesem Dokument werden die Konzepte vorgestellt, die mit der Internationalisierung und Lokalisierung verbunden sind und wie sie im Allgemeinen auf die Entwicklung mobiler Anwendungen angewendet werden. Beim Entwerfen und Erstellen einer Anwendung können Sie dinge, die Sie zuvor hartcodiert haben, aber die für die Lokalisierung parametrisiert werden müssen, umfassen:
- Bildschirmlayouts und Text,
- Symbole, Grafiken und Farben,
- Video- und Audiodateien,
- Dynamischer Text und Textformatierung (z. B. Zahlen, Währung und Datumsangaben),
- Layoutänderungen für Sprachen von rechts nach links (RTL) und
- Datensortierung.
Unabhängig davon, auf welche mobilen Plattformen Ihre App auf diese Tipps ausgerichtet ist, können Sie eine qualitativ hochwertige lokalisierte App erstellen.
Entwurfsaspekte
Die Architektur einer Anwendung, sodass es möglich ist, den Inhalt zu lokalisieren, wird als Internationalisierung bezeichnet. Die ordnungsgemäße Internationalisierung ist mehr als nur die Möglichkeit, unterschiedliche Sprachzeichenfolgen zur Laufzeit zu laden – eine gut gestaltete App sollte es ermöglichen, dass alle Ressourcen basierend auf Sprache und Gebietsschema (einschließlich Bildern, Sounds und Videos) geändert werden können und die Formatierung und das Layout anpassen können, um mit unterschiedlichen Zeichenfolgen umzugehen.
In diesem Abschnitt werden einige Entwurfsüberlegungen erläutert, die beim Erstellen einer internationalisierten Anwendung berücksichtigt werden müssen.
Layouts und Zeichenfolgenlänge
Chinesische und japanische Zeichenfolgen können sehr kurz sein – manchmal kann ein oder zwei Zeichen für eine Eingabefeldbezeichnung sinnvoll genug sein.
Deutsche Zeichenfolgen (z. B.) können sehr lang sein; manchmal wird ein relativ kurzes Wort in Englisch sehr lang in anderen Sprachen – entweder abgeschnitten oder unerwartet umgebrochen.
Vergleichen Sie die Zeichenfolgenlängen für einige Elemente auf dem iOS-Startbildschirm in Englisch, Deutsch und Japanisch:
Beachten Sie, dass Einstellungen in Englisch (8 Zeichen) 13 Zeichen für die deutsche Übersetzung erfordert, aber nur 2 Zeichen in Japanisch.
Layouts, bei denen die Anzeigebeschriftung und das Eingabefeld nebeneinander angeordnet sind, sind schwer zu bearbeiten, wenn die Länge der Beschriftung stark variieren kann. Häufig ist ein Layout, in dem die Beschriftung über einem Feld angezeigt wird, einfacher zu lokalisieren, da die volle Bildschirmbreite sowohl für die Beschriftung als auch für die Eingabe verfügbar ist.
Wenn Sie feste Layouts (insbesondere nebeneinander angeordnete Elemente) erstellen, können Sie in der Regel mindestens 50 % mehr Breite als die englischen Zeichenfolgen für Beschriftungen und Text benötigen. Dadurch wird nicht jedes Problem gelöst, sondern ein Puffer bereitgestellt, der in vielen Fällen funktioniert.
Eingabeüberprüfung
Achten Sie beim Schreiben von Validierungsregeln auf Annahmen. Es mag gültig sein, dass eine Textfeldeingabe mindestens drei Zeichen in Englisch erfordert, da ein einzelner Buchstabe nur selten Bedeutung hat. In Chinesisch und Japanisch kann jedoch ein einzelnes Zeichen eine gültige Eingabe sein, und eine Überprüfungsmeldung "mindestens 3 Zeichen ist erforderlich" ist für diese Sprachen nicht sinnvoll.
Andere scheinbar einfache Aufgaben wie das Überprüfen einer E-Mail-Adresse oder Website-URL werden mit den Zeichen nicht auf die ASCII-Teilmenge beschränkt.
Schreiben Sie Ihre Gültigkeitsprüfungsregeln unter Berücksichtigung der Internationalisierung – wählen Sie entweder die am wenigsten restriktiven Regeln aus, oder schreiben Sie die Logik so, dass sie für jede Sprache anders funktioniert.
Bilder und Farben
Nicht jedes Bild muss sich basierend auf der Sprachauswahl eines Benutzers ändern. Viele Symbole oder Fotos sind für alle Benutzer geeignet, unabhängig davon, welche Sprache sie sprechen. Einige Ressourcen sind jedoch sinnvoll zu lokalisieren, z. B.:
- Bilder, die Personen oder bestimmte Orte darstellen – Ihre App ist möglicherweise relevanter für Benutzer, wenn sie lokale Personen/Standorte anzeigt.
- Symbole – Einige Symbolografien können kulturspezifisch sein, und Sie können Ihre App einfacher verwenden, indem Sie die Bilder lokalisieren, um das lokale Verständnis widerzuspiegeln.
- Farben – Einige Kulturen verstehen Farben anders – Rot bedeutet möglicherweise Warnungen in einer Region, aber viel Glück in einem anderen. Überprüfen Sie beim Entwerfen Ihrer App mit nativen Lautsprechern, ob Sie einen Mechanismus zum Lokalisieren von Farben erstellen sollten.
Videos und Sound
Videos und Sound stellen beim Lokalisieren einer Anwendung besondere Herausforderungen dar, da das Übersetzen von Zeichenfolgen relativ einfach ist, kann das Aufzeichnen mehrerer Voiceovertitel oder Videoclips sowohl teuer als auch schwierig sein.
Mehrere Kopien von Video- und Audiodateien können auch die Größe Ihrer Anwendung erheblich erhöhen (insbesondere, wenn Sie eine große Anzahl von Sprachen lokalisieren oder viele Mediendateien haben). Möglicherweise sollten Sie nur die erforderlichen Sprachressourcen herunterladen, nachdem der Benutzer Ihre App installiert hat. Dies kann aber auch zu einer schlechten Benutzererfahrung in langsamen Netzwerken führen.
Es gibt oft mehrere Möglichkeiten, Lokalisierungsprobleme zu lösen – das Wichtigste ist, sie vorab zu berücksichtigen und sicherzustellen, dass Ihre Anwendung darauf ausgelegt ist, sie zu erledigen.
Datumsangaben, Uhrzeiten, Zahlen und Währungen
Wenn Sie .NET-Formatierungsfunktionen verwenden, denken Sie daran, die Kultur anzugeben, damit Dezimaltrennzeichen richtig analysiert werden (und keine Konvertierungsausnahmen ausgelöst werden). Beispielsweise sind je nach Gebietsschema sowohl 1,99 als auch 1,99 gültige Dezimaldarstellungen.
Wenn die Daten aus einer bekannten Quelle stammen (d. h. aus Ihrem eigenen Code oder einem von Ihnen gesteuerten Webdienst), können Sie einen Kulturbezeichner hartcodieren, der der Formatierung entspricht, z. B. "InvariantCulture", die für die englische Standardformatierung verwendet wird.
double.Parse("1,999.99", CultureInfo.InvariantCulture);
Wenn die Daten vom App-Benutzer eingegeben werden, analysieren Sie sie mithilfe einer CultureInfo-Instanz, die ihr Gebietsschema widerspiegelt:
double.Parse("1 999,99", CultureInfo.CreateSpecificCulture("fr-FR"));
Weitere Informationen finden Sie in den MSDN-Artikeln " Analysieren numerischer Zeichenfolgen " und "Analysieren von Datums- und Uhrzeitzeichenfolgen ".
Sprachen von rechts nach links (RTL)
Einige Sprachen, z. B. Arabisch, Hebräisch und Urdu (z. B.), werden von rechts nach links gelesen. Anwendungen, die diese Sprachen unterstützen, sollten Bildschirmdesigns verwenden, die sich für Leseprogramme von rechts nach links anpassen, z. B.:
- Text sollte rechtsbündig ausgerichtet sein.
- Bezeichnungen sollten rechts neben Eingabefeldern angezeigt werden.
- Die Platzierung der Standardschaltfläche wird in der Regel umgekehrt.
- Auch hierarchische Navigationswischen und Animationen (und andere Navigationsmetaphern und Animationen), die richtung für den Kontext verwenden, sollten umgekehrt werden.
Sowohl iOS als auch Android unterstützen das Layout von rechts nach links und das Rendern von Schriftarten mit integrierten Features, die dazu beitragen, die oben genannten Anpassungen vorzunehmen. Xamarin.Forms unterstützt derzeit nicht automatisch das RTL-Rendering.
Sortieren
Verschiedene Sprachen definieren die Sortierreihenfolge ihrer Alphabete unterschiedlich, auch wenn sie denselben Zeichensatz verwenden.
Im Detail des Zeichenfolgenvergleichs in bewährten Methoden für die Verwendung von Zeichenfolgen im .NET Framework finden Sie ein Beispiel, in dem sich die Sprache (CultureInfo) auf die Sortierreihenfolge auswirkt.
Es ist unwahrscheinlich, dass die integrierten Datenbankfunktionen auf den mobilen Plattformen die sprachspezifische Sortierreihenfolge unterstützen, sodass Sie möglicherweise zusätzlichen Code in Ihrer Geschäftslogik implementieren müssen.
Textsuche
Stellen Sie sicher, dass Sie Ihren Suchalgorithmus mit mehreren Sprachen schreiben und testen. Zu berücksichtigende Punkte:
- AutoVervollständigen – wenn Sie eine AutoVervollständigen-Funktion erstellt haben, stellen Sie sicher, dass vorschläge für die Sprache des Benutzers relevant sind.
- Abgleich von Abfrage mit Daten – werden Suchabfragen, die in einer bestimmten Sprache eingegeben wurden, nur für Inhalte ausgeführt, die in dieser Sprache oder für alle Inhalte in Ihrer App geschrieben wurden?
- Wortstammerkennung – Wenn Ihre Suche für die Suche nach ähnlichen Wörtern, Wortwurzeln und anderen Suchoptimierungen erstellt wurde, werden diese Optimierungen für alle sprachen entwickelt, die Sie unterstützen?
- Sortieren – Stellen Sie sicher, dass die Ergebnisse richtig sortiert sind (siehe oben).
Daten aus externen Quellen
Viele Anwendungen laden Daten aus externen Quellen, von Twitter- und RSS-Feeds auf Wetter, Nachrichten oder Aktienkurse herunter. Wenn Sie dies für einen Benutzer anzeigen, müssen Sie die Möglichkeit berücksichtigen, dass Sie einen Bildschirm mit irrelevanten oder unlesbaren Informationen für sie anzeigen.
Es gibt einige Strategien, die Sie verwenden können, um sicherzustellen, dass Ihre App Daten anzeigt, die für den Benutzer relevant sind:
- Unterschiedliche Quellen – Ihre Anwendung kann die Daten aus einer anderen Quelle je nach Sprache oder Gebietsschema des Benutzers herunterladen. Gebietsschemanachrichten, Wetter- und Aktienkurse sind möglicherweise sinnvoller als etwas, das aus einem Nordamerika n-Feed heruntergeladen wurde.
- Lokalisierte Anzeige – wenn Sie einen Twitter- oder Fotofeed anzeigen, sollten Sie die Metadaten (z. B. die zeitaufgenommene Zeit) in seiner eigenen Sprache anzeigen, auch wenn der Inhalt selbst wieder Standard in der Originalsprache vorhanden ist.
- Übersetzung – Sie könnten eine Übersetzungsoption in Ihre App erstellen, um eine maschinelle Übersetzung eingehender Daten durchzuführen. Dies könnte automatisch oder nach Ermessen des Benutzers erfolgen – achten Sie einfach darauf, den Benutzer zu benachrichtigen, wenn dies stattfindet, da maschinelle Übersetzungen niemals perfekt sind!
Dies kann sich auch auf externe Links zu Audiospuren oder Videos auswirken – beim Entwerfen Ihrer Anwendung sollten Sie sicherstellen, dass sie übersetzte Inhalte für die Beschaffung planen oder sicherstellen, dass Die Benutzer angemessen über die Benutzeroberfläche informiert werden, wenn Inhalte nicht in ihrer Sprache präsentiert werden.
Nicht über übersetzen
Einige Zeichenfolgen in Ihrer App müssen möglicherweise nicht übersetzt werden, oder sie benötigen mindestens besondere Aufmerksamkeit durch den Übersetzer. Dazu können beispielsweise folgende Aufgaben gehören:
- URLs – wenn Sie eine URL auflisten, muss sie möglicherweise von Sprache angepasst werden. Beispielsweise erfordert facebook.com keine Übersetzung, die sprache automatisch auf der Standard-Website erkannt wird. Andere Websites weisen gebietsschemaspezifische Inhalte auf, und Sie können eine andere URL anbieten, z. B. yahoo.com im Vergleich zu yahoo.fr oder yahoo.it.
- Telefonnummern – insbesondere mit unterschiedlichen Ländervorwahlen oder Nummern für Anrufer, die eine bestimmte Sprache sprechen.
- Kontaktdetails – Adressen und andere Informationen können je nach Sprache oder Gebietsschema variieren.
- Marken- und Produktnamen – einige Zeichenfolgen müssen nicht übersetzt werden, da sie immer in derselben Sprache geschrieben sind.
Achten Sie schließlich darauf, detaillierte Anweisungen für den Übersetzer einzufügen, wenn bestimmte Zeichenfolgen eine spezielle Behandlung erfordern.
Formatierter Text
Kein Problem mit mobilen Apps, da Zeichenfolgen in der Regel nicht reich formatiert sind. Wenn Rich-Text (z. B. Fett- oder Kursivformatierung) in Ihrer App erforderlich ist, stellen Sie sicher, dass der Übersetzer weiß, wie die Formatierung eingegeben werden kann, speichern die Zeichenfolgendateien sie richtig und werden ordnungsgemäß formatiert, bevor sie dem Benutzer angezeigt wird (dh nicht versehentlich zulassen, dass die Formatierungscodes selbst dem Benutzer angezeigt werden).
Übersetzung Tipps
Das Übersetzen der von einer Anwendung verwendeten Zeichenfolgen wird als Teil des Lokalisierungsprozesses betrachtet. In der Regel wird diese Aufgabe an einen Übersetzungsdienst ausgelagert und von mehrsprachigen Mitarbeitern durchgeführt, die Ihre Anwendung oder Ihr Unternehmen möglicherweise nicht kennen.
Die folgenden Tipps helfen Ihnen beim Erstellen von Zeichenfolgen, die einfacher übersetzt werden können, und somit die Qualität Ihrer lokalisierten Apps zu verbessern.
Lokalisieren vollständiger Zeichenfolgen und nicht von Wörtern
Manchmal verwenden Entwickler den Ansatz, einzelne Wörter oder Sätze "Codeausschnitte" anzugeben, damit sie sie in der gesamten Anwendung wiederverwenden können. For example, for the text "You have 5 messages." they might specify the following strings for translation
Schlecht:
"You have"
"no"
"message"
"messages"
und versuchen Sie dann, den richtigen Ausdruck im Code mit Zeichenfolgenverkettung zu erstellen:
Schlecht:
"You have" + " " + numMsgs + " " + "messages"
"You have" + " no " + "messages"
Dies wird davon abgeraten, da es nicht notwendigerweise für alle Sprachen funktioniert und für den Übersetzer schwierig sein wird, den Kontext der einzelnen kurzen Segmente zu verstehen. Sie führt auch zur erneuten Verwendung übersetzter Zeichenfolgen, die später Probleme verursachen können, wenn sie in verschiedenen Kontexten verwendet werden (und dann aktualisiert werden).
Erneute Sortierung von Parametern zulassen
Für einige Programmiersprachen ist eine zusätzliche Syntax erforderlich, um die Reihenfolge von Parametern in einer Zeichenfolge anzugeben, .NET unterstützt jedoch bereits das Konzept nummerierte Platzhalter.
Gut:
"a {0} b {1} cde {3}"
kann wie folgt übersetzt werden (wobei die Position und Reihenfolge der Platzhalter geändert wird)
"{2} {3} f g h {0}"
und die Token werden als beabsichtigter Übersetzer bestellt. Achten Sie darauf, beim Senden der Zeichenfolge an einen Übersetzer eine Erklärung darüber einzufügen, was jeder Platzhalter enthält.
Verwenden mehrerer Zeichenfolgen für Karte inalität
Vermeiden Sie Zeichenfolgen wie "You have {0} message/s."
verwenden Sie bestimmte Zeichenfolgen für jeden Zustand, um eine bessere Benutzererfahrung zu bieten:
Gut:
"You have no messages."
"You have 1 message."
"You have 2 messages."
"You have {0} messages."
Sie müssen Code in Ihrer App schreiben, um die angezeigte Zahl auszuwerten und die entsprechende Zeichenfolge auszuwählen. Einige Plattformen (einschließlich iOS und Android) verfügen über integrierte Features, um automatisch die beste Pluralzeichenfolge basierend auf den Einstellungen für die aktuelle Sprache/das aktuelle Gebietsschema auszuwählen.
Zulassen des Geschlechts
Lateinische Sprachen verwenden manchmal unterschiedliche Wörter je nach Geschlecht des Themas. Wenn Ihre App über das Geschlecht weiß, sollten Sie die übersetzten Zeichenfolgen zulassen, um dies widerzuspiegeln.
Es gibt auch in Englisch den offensichtlicheren Fall, in dem Zeichenfolgen auf eine bestimmte Person oder einen Bestimmten Benutzer Ihrer App verweisen. Einige Websites zeigen z. B. Nachrichten an, sodass Sie Zeichenfolgen für ein männliches, weibliches und nicht binäres oder unbekanntes Geschlecht benötigen:For example, some sites show messages like "Bob commented on his post"
so you need strings for both a male, female, and non-binary or unknown gender:
Gut:
"{0} commented on his post"
"{0} commented on her post"
"{0} commented on their post"
Zeichenfolgen nicht wiederverwenden
Oder genauer gesagt, verwenden Sie Zeichenfolgen nicht wieder, nur weil sie ähnlich sind, wenn die Zeichenfolge selbst einen anderen Zweck oder eine andere Bedeutung hat.
Beispiel: Stellen Sie sich vor, Sie haben einen Ein/Aus-Schalter in Ihrer App, und das Schaltersteuerelement benötigt den Text für "Ein" und "Aus", um lokalisiert zu werden. Sie zeigen auch den Wert dieser Einstellung an anderer Stelle in der App in einer Textbeschriftung an. Sie sollten unterschiedliche Zeichenfolgen für die Anzeige des Schalters im Vergleich zum Status des Schalters verwenden (auch wenn sie dieselbe Zeichenfolge in Ihrer Standardsprache sind) – z. B.:
- "Ein" – auf dem Schalter selbst angezeigt
- "Aus" – auf dem Schalter selbst angezeigt
- "Ein" – in einer Bezeichnung angezeigt
- "Aus" – in einer Beschriftung angezeigt
Dies bietet maximale Flexibilität für den Übersetzer:
- Aus Entwurfsgründen verwendet der Schalter selbst vielleicht Kleinbuchstaben "ein" und "aus", aber die Anzeigebezeichnung verwendet Großbuchstaben "Ein" und "Aus".
- Einige Sprachen benötigen möglicherweise den Umschalterwert, damit er in das Benutzeroberflächensteuerelement passt, während das vollständige (übersetzte) Wort in der Beschriftung angezeigt werden kann.
- Alternativ kann für einige Sprachen das Rendern Ihres Schalters "I" und "O" für die kulturelle Vertrautheit verwenden, aber Sie möchten möglicherweise dennoch, dass die Bezeichnung "Ein" oder "Aus" lautet.
Übersetzungsdienste
Maschinelle Übersetzung
Um Übersetzungsfeatures in Ihre App zu integrieren, berücksichtigen Sie die Azure Übersetzer Text-API.
Zu Testzwecken können Sie eines der vielen Onlineübersetzungstools verwenden, um während der Entwicklung einige lokalisierten Text in Ihre App einzuschließen:
Es sind viele andere verfügbar. Die Qualität der maschinellen Übersetzung gilt in der Regel nicht als gut genug, um eine Anwendung freizugeben, ohne zuerst von professionellen Übersetzern oder Muttersprachlern überprüft und getestet zu werden.
Professionelle Übersetzung
Es gibt auch professionelle Übersetzungsdienste, die Ihre Zeichenfolgen übernehmen und an ihre eigenen Übersetzer verteilen, und Ihnen die fertigen Übersetzungen für eine Gebühr zur Verfügung stellen.
Einer der bekanntesten Dienste ist LionBridge. Die meisten professionellen Dienste unterstützen alle gängigen Dateitypen, einschließlich Zeichenfolgen, XML, RESX und POT/PO.
Zusammenfassung
In diesem Artikel wurden einige der Konzepte vorgestellt, mit denen Sie vertraut sein sollten, bevor Sie Ihre App internationalisieren und dann Ihre Ressourcen lokalisieren. Außerdem wurde erläutert, wie Sie die Spracheinstellungen für jede Plattform ändern.
Diese Konzepte können auf die verschiedenen plattformspezifischen und plattformübergreifenden Internationalisierungstechniken angewendet werden, die mit Xamarin möglich sind.
Lesen Sie die technischen Details für die Plattform, an der Sie interessiert sind:
- Xamarin.Forms plattformübergreifende Lokalisierung mithilfe von RESX-Dateien.
- Xamarin.iOS native Plattformlokalisierung.
- Lokalisierung der nativen Xamarin.Android-Plattform .