Internationalisierung in Ihren Projekten

stimmen
44

Wie haben Sie Internationalisierung (i18n) in konkrete Projekte umgesetzt Sie gearbeitet haben?

Ich habe ein Interesse an der Herstellung von Software kulturübergreifenden , nachdem ich den berühmten Beitrag von Joel, lesen Sie das absolute Minimum Jeder Software - Entwickler absolut positiv wissen müssen über Unicode und Zeichensätze (keine Ausreden!) . Allerdings habe ich noch in der Lage diesen Vorteil in einem realen Projekt zu nehmen, außer dafür , dass ich Unicode - Strings verwendet , wo möglich. Aber machen Sie alle Ihre Strings Unicode und sicherzustellen , verstehen Sie , was alles kodieren Sie mit ist arbeiten , ist nur die Spitze des Eisbergs i18n.

Alles, was ich auf dem neuesten Stand gearbeitet habe, wurde von einer kontrollierten Menge von US-Englisch für Gebrauch Menschen gesprochen, oder i18n war einfach nicht etwas, was wir Zeit hatten, die Arbeit an, bevor das Projekt Live schieben. Also ich bin auf der Suche nach irgendwelchen Tipps oder Geschichten Krieg Menschen zu, die Software mehr lokalisiert in der realen Welt Projekte.

Veröffentlicht am 04/08/2008 um 01:08
quelle vom benutzer
In anderen Sprachen...                            


11 antworten

stimmen
48

Es ist schon eine Weile, so ist dies nicht alle Informationen.

Zeichensätze

Unicode ist groß, aber man kann nicht mit zu ignorieren andere Zeichensätze wegzukommen. Der Standardzeichensatz auf Windows XP (Englisch) ist Cp1252. Auf dem Netz wissen Sie nicht, was ein Browser Sie senden (wenn auch hoffentlich wird Ihr Container die meisten dieser handhaben). Und seien Sie nicht überrascht sein, wenn es Fehler in welcher Implementierung Sie verwenden. Zeichensätze können interessante Interaktionen mit Dateinamen haben, wenn sie zwischen den Maschinen zu bewegen.

übersetzen von Strings

Übersetzer sind, allgemein gesprochen, nicht Coder. Wenn Sie eine Quelldatei an einen Übersetzer senden, werden sie es brechen. Strings sollte auf Ressourcendateien extrahiert werden (zB Properties-Dateien in Java oder Ressourcen-DLLs in Visual C ++). Übersetzer sollten Dateien gegeben werden, die schwer zu brechen und Werkzeuge, die ihnen lassen Sie sie nicht brechen.

Übersetzer wissen nicht, wo Strings aus einem Produkt kommen. Es ist schwierig, einen String ohne Kontext zu übersetzen. Wenn Sie keine Anleitung zur Verfügung stellen, wird die Qualität der Übersetzung leiden.

Während zum Thema Kontext können Sie die gleiche Zeichenfolge „foo“ crop up in mehrere Male zu sehen und denken, wäre es effizienter sein, um alle Instanzen in der Benutzeroberfläche auf die gleiche Ressource zu haben. Dies ist eine schlechte Idee. Worte können sehr kontextsensitive sein in einigen Sprachen.

Übersetzen von Strings kostet Geld. Wenn Sie eine neue Version eines Produkts lösen, macht es Sinn, die alten Versionen zu erholen. Haben Sie Werkzeuge, um Strings aus Ihrer alten Ressource-Dateien wiederherzustellen.

String-Verkettung und manuelle Manipulation von Strings sollten minimiert werden. Verwenden Sie das Format Funktionen, soweit anwendbar.

Übersetzer müssen in der Lage sein , Hotkeys zu ändern. Ctrl+ PIst Druck auf Englisch; die Deutschen nutzen Ctrl+ D.

Wenn Sie einen Übersetzungsprozess haben, dass jemand manuell zum Ausschneiden und Einfügen Strings jederzeit erfordert, fragen Sie nach Ärger.

Datum, Uhrzeit, Kalender, Währung, Zahlenformate, Zeitzonen

Diese können alle variieren von Land zu Land. Ein Komma verwendet werden Dezimalstellen zu bezeichnen. Die Zeiten können in 24 Stunden Notation sein. Nicht jeder nutzt den gregorianischen Kalender. Sie müssen eindeutig sein, auch. Wenn Sie darauf achten, Termine als MM / DD / YYYY für die USA und DD / MM / YYYY für das Vereinigte Königreich auf Ihrer Website angezeigt werden, sind die Daten nicht eindeutig, wenn der Benutzer weiß, dass du es getan hast.

besonders Währung

Die Locale-Funktionen in den Klassenbibliotheken zur Verfügung gestellt werden Sie das lokale Währungssymbol, aber man kann nicht nur ein Pfund (Sterling) oder Euro-Symbol vor einem Wert halten, die einen Preis in US-Dollar gibt.

Benutzeroberflächen

Layout sollte dynamisch sein. Nicht nur sind Strings wahrscheinlich in der Länge auf Übersetzung verdoppeln, wird die gesamte UI muß invertiert werden (hebräisch; Arabisch), so dass die Kontrollen von rechts nach links laufen. Und das ist, bevor wir nach Asien erhalten.

Tests vor Übersetzung

  • Verwenden Sie statische Analyse des Codes Probleme zu lokalisieren. Als absolutes Minimum, setzen die Werkzeuge in die IDE gebaut. (Eclipse-User gehen Fenster> Einstellungen> Java> Compiler> Fehler / Warnungen und prüfen, ob nicht-externalisiert Saiten.)
  • Rauch-Test durch Übersetzung zu simulieren. Es ist nicht schwierig, eine Ressource-Datei zu analysieren und Strings mit einer pseudo-übersetzte Version ersetzen, die die Länge verdoppelt und fügen flippige Zeichen. Sie müssen keine Sprache sprechen ein Fremdbetriebssystem zu verwenden. Moderne Systeme sollten Sie in als Fremd Benutzer mit übersetzten Strings und ausländischen locale lassen log. Wenn Sie mit Ihrem Betriebssystem vertraut sind, können Sie herausfinden, was das tut, was ohne ein einziges Wort der Sprache zu kennen.
  • Tastaturbelegungen und Zeichensatz Referenzen sind sehr nützlich.
  • Virtualisierung wäre hier sehr nützlich.

Nicht-technische Probleme

Manchmal muss man sich auf kulturelle Unterschiede empfindlich sein (Vergehen oder Unverständnis zur Folge haben). Ein Fehler, den man oft sehen, ist die Verwendung von Fahnen als visuelle Cue eine Website Sprache oder Geographie wählen. Sofern Sie Ihre Software sollen in der globalen Politik Seiten erklären, ist dies eine schlechte Idee. Wenn Sie die Option für Englisch mit St. George Flagge Französisch und angeboten wurden (die Flagge von England ist ein rotes Kreuz auf weißem Feld), das in Verwirrung für viele englische Muttersprachler führen könnten - ähnliche Probleme annehmen wird mit fremden Sprachen und Ländern entstehen . Icons müssen für kulturelle Relevanz geprüft werden. Was macht einen Daumen-up oder ein grünes Häkchen bedeuten? Sprache sollte relativ neutral sein - Benutzer in einer bestimmten Weise Adressierung kann in einer Region akzeptabel sein, aber als grob in einer anderen.

Ressourcen

C ++ und Java - Programmierer kann die ICU Website nützlich finden: http://www.icu-project.org/

Beantwortet am 04/08/2008 um 18:58
quelle vom benutzer

stimmen
15

Einige lustige Sachen:

  1. Mit einer PHP und MySQL-Anwendung, die gut mit Deutsch und Französisch funktioniert, muss aber jetzt Russisch und Chinesisch unterstützen. Ich denke, dass ich diese über bewegen .net, wie PHP-Unicode-Unterstützung ist - meiner Meinung nach - nicht wirklich gut. Sicher, Jonglieren um mit utf8_de / kodieren oder die mbstring-Funktionen macht Spaß. Fast so viel Spaß wie mit Freddy Krüger besuchen Sie in der Nacht ...

  2. Die Erkenntnis, dass einige Sprachen VIEL mehr Ausführlich sind als andere. Deutsch ist viel ausführlicher als Englisch in der Regel, und zu sehen, wie die deutsche Version die Benutzeroberfläche zerstört, weil zu wenig Platz zugewiesen wurde, war nicht lustig. Einige Produkte gewannen etwas Ruhm für ihre kreativen Möglichkeiten, um daran zu arbeiten, mit Oblivion „Schw.Tr.d.Le.En.W.“ wobei denkwürdige :-)

  3. Herumspielen mit Datumsformate, Woohoo! Ja, es gibt tatsächlich Menschen in der Welt, die Datumsformate verwenden, wo der Tag in der Mitte geht. Sooooo viel Spaß versuchen, herauszufinden, was 07.02.2008 soll bedeuten, nur weil einige Anwender glauben könnte, es 2. Juli sein könnte ... Aber dann wieder, euch über den Teich kann das gleiche über die Nutzer glauben, die setzen Monat in der Mitte :-P, vor allem, weil in Englisch, die 2. Juli viel besser als 2.em Juli klingt, etwas, das neccessarily nicht auf andere Sprachen gilt (dh in deutscher Sprache, würden Sie nie Juli 2 sagen, aber immer Zweiten Juli). Ich benutze 2008-02-07 wann immer möglich. Es ist klar, dass es bedeutet, 7. Februar und es sortiert richtig, aber dd / mm vs. mm / dd kann ein wirklich schwieriges Problem sein.

  4. Anoter Spaßsache, Zahlenformate ! 10.000,50 vs 10,000.50 vs. 10 000,50 vs. 10'000,50 ... Das ist mein größter Alptraum gerade jetzt, mit einem multikulturellen environent zu unterstützen , aber keine Möglichkeit, die zuverlässig die Benutzer , welches Zahlenformat wissen wird benutzen.

  5. Formell oder informell. In einer Sprache, gibt es zwei Möglichkeiten, die Menschen, eine formale Art und Weise und eine informelle Art und Weise zu lösen. In Englisch, sagen Sie einfach „You“, aber in deutscher Sprache haben Sie zwischen dem formalen „Sie“ und der informellen „Du“, das gleiche für Französisch Tu / Vous zu entscheiden. Es ist in der Regel eine sichere Wette, die formale Art und Weise zu wählen, aber dies leicht übersehen wird.

  6. Kalender. In Europa ist der erste Tag der Woche Montag, während in den USA Sonntag ist es. Kalender Widgets sind nett. einen Kalender mit Sonntag auf der linken Seite und Samstag auf der rechten Seite zu einem europäischen Benutzer zeigt nicht so schön ist, es verwirrt sie.

Beantwortet am 04/08/2008 um 01:35
quelle vom benutzer

stimmen
8

Ich arbeitete an einem Projekt für meine früheren Arbeitgeber, die .NET verwendet, und es gab einen in .resx Format baute wir verwenden. Wir hatten im Grunde eine Datei, die alle Übersetzungen in der RESX-Datei hatte, und dann mehr Dateien mit verschiedenen Übersetzungen. Die Folge davon ist, dass Sie sehr fleißig darum, sicherzustellen sein, dass alle Strings in der Anwendung sichtbar sind in der .resx gespeichert und jederzeit ein geändert Sie alle Sprachen aktualisieren müssen Sie unterstützen.

Wenn Sie faul und nicht benachrichtigen die Verantwortlichen von Übersetzungen, oder Sie einbetten Strings ohne Ihr Lokalisierungssystem durchläuft, wird es ein Alptraum sein, um zu versuchen und es später zu beheben. Und falls die Lokalisierung ein nachträglicher Einfall ist, wird es sehr schwierig sein, an Ort und Stelle zu setzen. Unterm Strich, wenn Sie in einem Standard-Ort gespeichert außen nicht alle sichtbaren Strings haben, wird es sehr schwierig sein, alle zu finden, die zu lokalisierenden müssen.

Ein weiterer Hinweis, vermeidet sehr streng sichtbare Strings direkt verketten, wie

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 oft die Worte anders bestellen, und Verketten von Strings direkt einen neuen Build müssen zu beheben, aber wenn Sie irgendeine Art von String-Ersatzmechanismus wie oben verwendet, können Sie Ihre RESX-Datei (oder was auch immer Lokalisierung ändern Dateien, die Sie verwenden) für die spezifische Sprache, die die Wörter neu zu ordnen muss.

Beantwortet am 04/08/2008 um 01:23
quelle vom benutzer

stimmen
5

Ich höre gerade einen Podcast von Scott Hanselman heute Morgen, wo er über die Internationalisierung spricht, vor allem der wirklich kniffligen Dinge, wie Türkisch (mit ihm vier Ich ist) und Thai. Außerdem hatte Jeff Atwood einen Beitrag :

Beantwortet am 04/08/2008 um 16:04
quelle vom benutzer

stimmen
3

Neben all den vorherigen Tipps, denken Sie daran, dass i18n es nicht nur geht um Worte für ihre Entsprechung auf anderen Sprachen, vor allem für nicht-lateinische Sprachen Alphabete (Koreanisch, Arabisch) zu ändern, die rechts nach links geschrieben, so dass die ganze UI entsprechen müssen, wie

  • Gegenstand 1
  • Punkt 2
  • Punkt 3

sein müsste

arabischer Text 1 -

arabischer Text 2 -

arabischer Text 3 -

(Reversed Aufzählungsliste scheint nicht zu funktionieren: P)

der ein UI Alptraum sein, wenn Ihre Systemänderungen haben dinamically anzuwenden, sobald der Benutzer die Sprache verwendet wird, ändert.

Eine weitere sehr harte Sache ist verschiedene Sprachen zu testen, nicht nur für die Richtigkeit des Wortes, aber da Sprachen wie Koreanisch in der Regel größere Schrift haben Typen für ihre Charaktere kann dies zu einem sprachspezifische Fehlern führt (wie Text auf einer Schaltfläche „SAVE“ größer ist als die Taste selbst für eine Sprache).

Beantwortet am 22/09/2008 um 00:44
quelle vom benutzer

stimmen
2

Einer der witzigen Dinge zu entdecken: kursiv und fett Text makrup nicht mit CJK (Chinesisch / Japanisch / Koreanisch) Zeichen funktionieren. Sie sind einfach nicht mehr gelesen werden. (OK, ich konnte sie nicht wirklich lesen, bevor entweder, vor allem aber bolding schafft nur Tintenflecken)

Beantwortet am 14/10/2008 um 13:39
quelle vom benutzer

stimmen
1

Eine weitere Herausforderung wird sein Eingang akzeptieren von Ihren Benutzern. In vielen Fällen wird dies durch die Eingabeverarbeitung durch das Betriebssystem, wie IME in Windows, die für jeden möglichen Bedarf arbeitet transparent mit gemeinsamen Text-Widgets, aber diese Möglichkeit nicht zur Verfügung gestellt gelockert werden.

Beantwortet am 27/12/2008 um 07:48
quelle vom benutzer

stimmen
1

Ich schlage vor , etwas ähnliches zu verwenden 99translations.com auf Ihre Übersetzungen zu erhalten. Andernfalls werden Sie nicht in der Lage sein zu sagen , was Ihre Übersetzungen auf dem neuesten Stand ist in jeder Sprache.

Beantwortet am 27/12/2008 um 05:05
quelle vom benutzer

stimmen
1

Ich denke, jeder in der Internationalisierung arbeiten, soll mit dem Common Locale Data Repository vertraut sein, die jetzt ein Teilprojekt von Unicode:

Common Locale Data Repository

Diese Leute arbeiten hart daran, eine Standard-Ressource für alle Arten von i18n Fragen zu etablieren: Währung, geographischer Namen, Tonnen von Material. Jedes Projekt, das die eigene Kern lokale Daten gegeben hat beibehalten, dass dieses Projekt existiert, ist ziemlich verrückt, IMHO.

Beantwortet am 18/09/2008 um 20:25
quelle vom benutzer

stimmen
0

Eine Sache, niemand erwähnt hat noch ist Strings mit etwas warying Teil wie in „Das Gerät wird in 5 Tagen arive“ oder „Am Montag etwas passiert.“ wo 5 und Montag wird je nach Zustand ändern. Es ist keine gute Idee, die in zwei und verketten sie zu spalten. Mit nur einem variierenden Teil und eine gute Dokumentation können Sie weg mit ihm, mit zwei unterschiedlichen Teilen wird es einige Sprache sein, die die Reihenfolge von ihnen zu ändern vorzieht.

Beantwortet am 07/10/2008 um 11:56
quelle vom benutzer

stimmen
0

Eine Website, die ich verwenden, hat eine Umrechnungsmethode der Besitzer „wiki + maschinelle Übersetzung“ nennt. Dies ist eine Community-basierte Website so auf die Bedürfnisse der Unternehmen offensichtlich anders.

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

Beantwortet am 10/09/2008 um 16:12
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more