language agnostic - Internationalisierung in Ihren Projekten

Translate

Wie haben Sie Internationalisierung (i18n) in konkreten Projekten implementiert, an denen Sie gearbeitet haben?

Nachdem ich den berühmten Beitrag von Joel gelesen hatte, interessierte ich mich dafür, Software interkulturell zu machen.Das absolute Minimum Jeder Softwareentwickler muss unbedingt über Unicode und Zeichensätze Bescheid wissen (keine Ausreden!). Ich habe jedoch noch nicht in der Lage, dies in einem realen Projekt zu nutzen, außer sicherzustellen, dass ich, wo möglich, Unicode-Zeichenfolgen verwendet habe. Aber alle Ihre Zeichenfolgen Unicode zu machen und sicherzustellen, dass Sie verstehen, in welcher Codierung sich alles befindet, mit dem Sie arbeiten, ist nur die Spitze des i18n-Eisbergs.

Alles, woran ich bisher gearbeitet habe, wurde von einer kontrollierten Gruppe von US-Englisch sprechenden Personen verwendet, oder wir hatten einfach keine Zeit, daran zu arbeiten, bevor wir das Projekt live vorantrieben. Daher suche ich nach Tipps oder Kriegsgeschichten, die Menschen haben, um Software in realen Projekten lokaler zu machen.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Es ist eine Weile her, daher ist dies nicht umfassend.

Zeichensätze

Unicode ist großartig, aber Sie können nicht davonkommen, andere Zeichensätze zu ignorieren. Der Standardzeichensatz unter Windows XP (Englisch) ist Cp1252. Im Web wissen Sie nicht, was ein Browser Ihnen sendet (obwohl Ihr Container hoffentlich das meiste davon erledigt). Und wundern Sie sich nicht, wenn die von Ihnen verwendete Implementierung Fehler enthält. Zeichensätze können interessante Interaktionen mit Dateinamen haben, wenn sie zwischen Maschinen wechseln.

Strings übersetzen

Übersetzer sind im Allgemeinen keine Programmierer. Wenn Sie eine Quelldatei an einen Übersetzer senden, wird diese beschädigt. Zeichenfolgen sollten in Ressourcendateien extrahiert werden (z. B. Eigenschaftendateien in Java oder Ressourcen-DLLs in Visual C ++). Übersetzer sollten schwer zu beschädigende Dateien und Tools erhalten, mit denen sie nicht beschädigt werden können.

Übersetzer wissen nicht, woher Zeichenfolgen in einem Produkt stammen. Es ist schwierig, eine Zeichenfolge ohne Kontext zu übersetzen. Wenn Sie keine Anleitung geben, leidet die Qualität der Übersetzung.

Beim Thema Kontext wird möglicherweise dieselbe Zeichenfolge "foo" mehrmals angezeigt, und es wäre effizienter, wenn alle Instanzen in der Benutzeroberfläche auf dieselbe Ressource verweisen. Das ist eine schlechte Idee. Wörter können in einigen Sprachen sehr kontextsensitiv sein.

Das Übersetzen von Strings kostet Geld. Wenn Sie eine neue Version eines Produkts veröffentlichen, ist es sinnvoll, die alten Versionen wiederherzustellen. Verfügen Sie über Tools zum Wiederherstellen von Zeichenfolgen aus Ihren alten Ressourcendateien.

Die Verkettung von Zeichenfolgen und die manuelle Manipulation von Zeichenfolgen sollten minimiert werden. Verwenden Sie gegebenenfalls die Formatierungsfunktionen.

Übersetzer müssen in der Lage sein, Hotkeys zu ändern.Strg+Pist in englischer Sprache gedruckt; die Deutschen benutzenStrg+D.

Wenn Sie einen Übersetzungsprozess haben, bei dem jemand Zeichenfolgen jederzeit manuell ausschneiden und einfügen muss, fragen Sie nach Problemen.

Daten, Zeiten, Kalender, Währung, Zahlenformate, Zeitzonen

Diese können alle von Land zu Land variieren. Ein Komma kann verwendet werden, um Dezimalstellen zu kennzeichnen. Die Zeiten können in 24-Stunden-Notation angegeben werden. Nicht jeder benutzt den Gregorianischen Kalender. Sie müssen auch eindeutig sein. Wenn Sie darauf achten, dass die Daten auf Ihrer Website als MM / TT / JJJJ für die USA und TT / MM / JJJJ für Großbritannien angezeigt werden, sind die Daten nicht eindeutig, es sei denn, der Benutzer weiß, dass Sie dies getan haben.

Besonders Währung

Mit den in den Klassenbibliotheken bereitgestellten Gebietsschemafunktionen erhalten Sie das Symbol für die lokale Währung. Sie können jedoch nicht einfach ein Pfund- (Pfund) oder Euro-Symbol vor einen Wert setzen, der einen Preis in Dollar angibt.

Benutzeroberflächen

Das Layout sollte dynamisch sein. Es ist nicht nur wahrscheinlich, dass sich die Länge von Zeichenfolgen bei der Übersetzung verdoppelt, sondern die gesamte Benutzeroberfläche muss möglicherweise invertiert werden (Hebräisch; Arabisch), damit die Steuerelemente von rechts nach links ausgeführt werden. Und das ist, bevor wir nach Asien kommen.

Testen vor der Übersetzung

  • Verwenden Sie die statische Analyse Ihres Codes, um Probleme zu lokalisieren. Nutzen Sie mindestens die in Ihrer IDE integrierten Tools. (Eclipse-Benutzer können unter Fenster> Einstellungen> Java> Compiler> Fehler / Warnungen nach nicht ausgelagerten Zeichenfolgen suchen.)
  • Rauchtest durch Simulation der Übersetzung. Es ist nicht schwierig, eine Ressourcendatei zu analysieren und Zeichenfolgen durch eine pseudoübersetzte Version zu ersetzen, die die Länge verdoppelt und funky Zeichen einfügt. Sie müssen keine Sprache sprechen, um ein fremdes Betriebssystem zu verwenden. In modernen Systemen sollten Sie sich als ausländischer Benutzer mit übersetzten Zeichenfolgen und fremdem Gebietsschema anmelden können. Wenn Sie mit Ihrem Betriebssystem vertraut sind, können Sie herausfinden, was was tut, ohne ein einziges Wort der Sprache zu kennen.
  • Tastaturkarten und Zeichensatzreferenzen sind sehr nützlich.
  • Virtualisierung wäre hier sehr nützlich.

Nichttechnische Probleme

Manchmal muss man sensibel auf kulturelle Unterschiede reagieren (dies kann zu Beleidigungen oder Unverständnis führen). Ein Fehler, den Sie häufig sehen, ist die Verwendung von Flags als visueller Hinweis für die Auswahl einer Website-Sprache oder -Geografie. Dies ist eine schlechte Idee, es sei denn, Sie möchten, dass Ihre Software Seiten in der globalen Politik deklariert. Wenn Sie Franzose waren und die Option Englisch mit der Flagge von St. George angeboten haben (die Flagge von England ist ein rotes Kreuz auf einem weißen Feld), kann dies bei vielen englischsprachigen Personen zu Verwirrung führen. Nehmen Sie an, dass ähnliche Probleme bei Fremdsprachen und Ländern auftreten . Symbole müssen auf kulturelle Relevanz überprüft werden. Was bedeutet ein Daumen hoch oder ein grünes Häkchen? Die Sprache sollte relativ neutral sein - die Ansprache von Benutzern auf eine bestimmte Art und Weise kann in einer Region akzeptabel sein, in einer anderen jedoch als unhöflich angesehen werden.

Ressourcen

C ++ - und Java-Programmierer finden die ICU-Website möglicherweise hilfreich:http://www.icu-project.org/

Quelle
Translate

Einige lustige Dinge:

  1. Eine PHP- und MySQL-Anwendung, die gut mit Deutsch und Französisch funktioniert, jetzt aber Russisch und Chinesisch unterstützen muss. Ich denke, ich verschiebe dies auf .net, da die Unicode-Unterstützung von PHP meiner Meinung nach nicht wirklich gut ist. Sicher, das Jonglieren mit utf8_de / encode oder den mbstring-Funktionen macht Spaß. Fast so lustig wie Freddy Krüger, der Sie nachts besucht ...

  2. Zu erkennen, dass einige Sprachen viel ausführlicher sind als andere. Deutsch ist viel ausführlicher als Englisch, und es hat keinen Spaß gemacht zu sehen, wie die deutsche Version die Benutzeroberfläche zerstört, weil zu wenig Speicherplatz zugewiesen wurde. Einige Produkte wurden berühmt für ihre kreative Art, dies zu umgehen, mit Oblivions "Schw.Tr.d.Le.En.W." unvergesslich sein :-)

  3. Mit Datumsformaten herumspielen, woohoo! Ja, es gibt tatsächlich Menschen auf der Welt, die Datumsformate verwenden, bei denen der Tag in der Mitte liegt. Es macht sooooo viel Spaß herauszufinden, was der 07.02.2008 bedeuten soll, nur weil einige Benutzer glauben, dass es der 2. Juli sein könnte ... Aber andererseits glaubt ihr vielleicht über Benutzer, die das setzen, dasselbe Monat in der Mitte :-P, vor allem, weil der 2. Juli auf Englisch viel besser klingt als der 2. Juli, was für andere Sprachen nicht unbedingt gilt (dh auf Deutsch würde man nie den 2. Juli sagen, sondern immer den Zweiter Juli). Ich benutze 2008-02-07 wann immer möglich. Es ist klar, dass es den 7. Februar bedeutet und es richtig sortiert, aber dd / mm vs. mm / dd kann ein wirklich kniffliges Problem sein.

  4. Eine weitere lustige Sache,Zahlenformate! 10.000,50 vs 10.000,50 vs. 10 000,50 vs. 10'000,50 ... Dies ist derzeit mein größter Albtraum, da ich eine multikulturelle Umgebung unterstützen muss, aber keine Möglichkeit habe, zuverlässig zu wissen, welches Zahlenformat der Benutzer hat wird benutzen.

  5. Formell oder informell. In einigen Sprachen gibt es zwei Möglichkeiten, Menschen anzusprechen, eine formelle und eine informellere. Auf Englisch sagen Sie nur "Sie", aber auf Deutsch müssen Sie sich zwischen dem formellen "Sie" und dem informellen "Du" entscheiden, das gleiche gilt für Französisch Tu / Vous. Es ist normalerweise eine sichere Sache, den formalen Weg zu wählen, aber dies wird leicht übersehen.

  6. Kalender. In Europa ist der erste Tag der Woche Montag, während es in den USA Sonntag ist. Kalender-Widgets sind nett. Es ist nicht so schön, einem europäischen Benutzer einen Kalender mit Sonntag links und Samstag rechts zu zeigen, es verwirrt ihn.

Quelle
Translate

Ich habe an einem Projekt für meinen früheren Arbeitgeber gearbeitet, das .NET verwendet hat, und es gab ein eingebautes .resx-Format, das wir verwendet haben. Wir hatten im Grunde eine Datei, die alle Übersetzungen in der .resx-Datei hatte, und dann mehrere Dateien mit unterschiedlichen Übersetzungen. Dies hat zur Folge, dass Sie sehr sorgfältig darauf achten müssen, dass alle in der Anwendung sichtbaren Zeichenfolgen in der .resx-Datei gespeichert werden. Bei jeder Änderung müssen Sie alle von Ihnen unterstützten Sprachen aktualisieren.

Wenn Sie faul werden und die für Übersetzungen zuständigen Personen nicht benachrichtigen oder Zeichenfolgen einbetten, ohne Ihr Lokalisierungssystem zu durchlaufen, ist es ein Albtraum, später zu versuchen, das Problem zu beheben. Wenn die Lokalisierung ein nachträglicher Gedanke ist, wird es ebenfalls sehr schwierig sein, sie einzurichten. Fazit: Wenn nicht alle sichtbaren Zeichenfolgen extern an einem Standardspeicherort gespeichert sind, ist es sehr schwierig, alle zu lokalisierenden Zeichenfolgen zu finden.

Ein weiterer Hinweis: Vermeiden Sie unbedingt, sichtbare Zeichenfolgen direkt zu verketten, z

String message = "The " + item + " is on sale!";

Stattdessen müssen Sie so etwas wie verwenden

String message = String.Format("The {0} is on sale!", item);

Der Grund dafür ist, dass verschiedene Sprachen die Wörter häufig unterschiedlich sortieren und das direkte Verketten von Zeichenfolgen einen neuen Build erfordert, um dies zu beheben. Wenn Sie jedoch einen Mechanismus zum Ersetzen von Zeichenfolgen wie oben verwendet haben, können Sie Ihre .resx-Datei (oder eine beliebige Lokalisierung) ändern Dateien, die Sie verwenden) für die spezifische Sprache, in der die Wörter neu angeordnet werden müssen.

Quelle
Translate

Ich habe gerade a gehörtPodcast von Scott HanselmanHeute Morgen spricht er über Internationalisierung, insbesondere über die wirklich kniffligen Dinge wie Türkisch (mit vier Ichs) und Thailändisch. Auch Jeff Atwood hatte einePost:

Quelle
Translate

Denken Sie neben all den vorherigen Tipps daran, dass es bei i18n nicht nur darum geht, Wörter für ihre Entsprechung in anderen Sprachen zu ändern, insbesondere bei Alphabeten in nicht-lateinischen Sprachen (Koreanisch, Arabisch), die von rechts nach links geschrieben wurden, sodass die gesamte Benutzeroberfläche angepasst werden muss

  • Gegenstand 1
  • Punkt 2
  • Punkt 3

müsste sein

arabischer Text 1 -

arabischer Text 2 -

arabischer Text 3 -

(Die umgekehrte Aufzählungsliste scheint nicht zu funktionieren: P)

Dies kann ein Albtraum für die Benutzeroberfläche sein, wenn Ihr System Änderungen dynamisch anwenden muss, sobald der Benutzer die verwendete Sprache ändert.

Eine andere sehr schwierige Sache ist es, verschiedene Sprachen zu testen, nicht nur auf die Richtigkeit des Wortes, sondern da Sprachen wie Koreanisch normalerweise eine größere Schriftart für ihre Zeichen haben, kann dies zu sprachspezifischen Fehlern führen (wie "SPEICHERN" von Text auf einer Schaltfläche, die größer als ist die Schaltfläche selbst für eine Sprache).

Quelle
Translate

Eines der lustigsten Dinge, die es zu entdecken gilt: Kursivschrift und Fettdruck funktionieren nicht mit CJK-Zeichen (Chinesisch / Japanisch / Koreanisch). Sie werden einfach unlesbar. (OK, ich konnte sie vorher auch nicht wirklich lesen, aber besonders fett macht nur Tintenflecken)

Quelle
Clyde Lee
Translate

Ich denke, jeder, der in der Internationalisierung arbeitet, sollte mit dem Common Locale Data Repository vertraut sein, das jetzt ein Teilprojekt von Unicode ist:

Common Locale Data Repository

Diese Leute arbeiten hart daran, eine Standardressource für alle Arten von i18n-Themen zu etablieren: Währung, geografische Namen, jede Menge Zeug. Jedes Projekt, das seine eigenen lokalen Kerndaten verwaltet, da dieses Projekt existiert, ist meiner Meinung nach ziemlich verrückt.

Quelle
Translate

Ich schlage vor, so etwas zu verwenden99translations.comum Ihre Übersetzungen zu pflegen. Andernfalls können Sie nicht in jeder Sprache feststellen, welche Ihrer Übersetzungen aktuell sind.

Quelle
Translate

Eine weitere Herausforderung besteht darin, Eingaben Ihrer Benutzer zu akzeptieren. In vielen Fällen wird dies durch die vom Betriebssystem bereitgestellte Eingabeverarbeitung erleichtert, z. B. IME in Windows, das transparent mit gängigen Text-Widgets arbeitet. Diese Funktion ist jedoch nicht für alle möglichen Anforderungen verfügbar.

Quelle
Translate

Eine Website, die ich benutze, hat eine Übersetzungsmethode, die der Eigentümer "Wiki + maschinelle Übersetzung" nennt. Dies ist eine Community-basierte Website, die sich offensichtlich von den Anforderungen von Unternehmen unterscheidet.

http://blog.bookmooch.com/2007/09/23/how-bookmooch-does-its-translations/

Quelle
Novia Lee
Translate

Eine Sache, die noch niemand erwähnt hat, sind Saiten mit einem vorsichtigen Teil wie in "Die Einheit wird in 5 Tagen eintreffen" oder "Am Montag passiert etwas". Dabei ändern sich 5 und Montag je nach Bundesland. Es ist keine gute Idee, diese in zwei Teile zu teilen und sie zu verketten. Mit nur einem unterschiedlichen Teil und einer guten Dokumentation könnten Sie damit durchkommen. Mit zwei unterschiedlichen Teilen wird es eine Sprache geben, die es vorzieht, die Reihenfolge zu ändern.

Quelle