Wir entwickeln eine große Anwendung, die aus vielen kleinen Paketen besteht. Jedes Paket verfügt über einen eigenen Satz von Ressourcendateien für die Lokalisierung.
Was ist der beste Ansatz zum Organisieren und Benennen der Lokalisierungszeichenfolgen?
Hier sind meine bisherigen Gedanken:
Umgang mit Duplikaten
Derselbe Text (z. B. "Postleitzahl") kann in einem bestimmten Paket mehrmals vorkommen. Der Programmierinstinkt (DRY) fordert mich auf, eine einzelne Zeichenfolgenressource zu erstellen, die von allen Vorkommen gemeinsam genutzt wird .
Andererseits möchte ein Übersetzer möglicherweise an einigen Stellen eine lange ("Postleitzahl") und an Stellen mit weniger Platz eine kürzere ("PLZ") Übersetzung auswählen. Oder wir möchten einen Doppelpunkt an einige Vorkommen ("Postleitzahl:") anhängen, an andere jedoch nicht. Oder wir benötigen an einigen Stellen eine andere Groß- / Kleinschreibung ("Postleitzahl"). Alle diese Argumente deuten darauf hin, dass pro Nutzung eine Ressource erstellt wird, auch wenn deren Inhalt identisch ist .
Benennung
Wenn Duplikate eliminiert werden sollen, ist es sinnvoll, die Ressourcen nach Inhalten zu benennen , möglicherweise mit einem Hinweis auf die Art der Verwendung per Präfix. Also wir haben labelOK
= „OK“ , messageFileTooLarge
= „Die Datei überschreitet die maximale Dateigröße.“ , und labelZipCode
= "Postleitzahl" .
Die Benennung nach Inhalten hat den Vorteil, dass Formatargumente auf natürliche Weise behandelt werden: Die Ressource akzeptiert messageFileHas_0_MBWhileMaximumIs_1_MB
eindeutig zwei Formatierungsargumente, die tatsächliche Dateigröße und die maximale Dateigröße.
Wenn wir jedoch Duplikate zulassen, ist die Nennung nach Inhalten allein nicht sinnvoll. Um eindeutige Ressourcennamen zu erhalten, müssen wir den Verwendungsort in den Ressourcennamen aufnehmen. Das funktioniert für grafische Steuerelemente, obwohl die Bezeichner in der Regel etwas lang werden: fileSelectionConfirmationButtonText
= "OK" , customerDetailsTableColumnZipCode
= "Postleitzahl" . Bei nicht visuellen Codedateien wird es jedoch schwieriger. Wie benennen Sie eine bestimmte Verwendung einer Zeichenfolge, wenn Sie nicht wissen, wo sie schließlich angezeigt wird? Nach Codedatei und Funktionsname? Scheint mir eher ungeschickt und spröde.
Alles in allem neige ich dazu, Duplikate zuzulassen, aber ich bemühe mich, ein konsistentes Benennungsschema zu finden, das dies unterstützt.
Edit: Diese Frage hat zwei Aspekte: Wie organisieren Ressourcen (DRY vs. Duplikate) und wie man nennt sie. Bisher haben sich die Antworten auf den ersten Aspekt konzentriert. Ich würde mich über Feedback zu Namenskonventionen freuen!
quelle
Antworten:
Ich würde eine Vervielfältigung akzeptieren, wenn Sie nicht sicher sind, ob die Bedeutung in allen Fällen, in denen eine bestimmte Zeichenfolge verwendet wird, exakt gleich ist.
Auch wenn zwei Bezeichnungen immer dieselbe Zeichenfolge in Englisch (oder Ihrer Muttersprache) enthalten, müssen sie nicht in allen Sprachen gleich sein. Durch das Akzeptieren von Duplikaten erhalten Sie (oder besser gesagt die Übersetzer) die Flexibilität, die Sie benötigen, um mit solchen Situationen umzugehen.
Als Beispiel: Betrachten Sie eine Bezeichnung "Bedingung", die - abhängig vom Kontext - unter vielen anderen möglichen Übersetzungen in "Bedingung" oder "Bedingung" übersetzt werden kann.
quelle
Akzeptiere einige Duplikate.
Sie können einige Mehrfachübersetzungen vermeiden, indem Sie zusätzliche Steuerelemente erstellen. ZB ein
CancelButton
und ein,OKButton
die bereits ihren Text enthalten, und jetzt Abbrechen / OK / OK müssen nur einmal übersetzt werden. Aber das ist fast ein Sonderfall.quelle
So gehen wir in meiner Firma vor:
Namenskonvention: Wir benennen Labels, indem wir ihnen die Klasse / section / form / etc voranstellen. Zum Beispiel
loadFile_loadButton
,loadFile_fileNameLabel
,loadFile_cancel
sind alle Etiketten , die zu einer Datei laden Dialog. Obwohl diese unterstrichene Namenskonvention nicht die häufigste ist, bevorzugen wir sie gegenüber Standardkonventionen, da sie die Lesbarkeit und "Gruppierbarkeit" verbessert: Beachten Sie, wie einfach es ist, im Vergleich zu Labels zu erkennen, zu welchem Element die Labels gehören und was jedes Label darstellt genanntloadFileLoadButton
,loadFileNameLabel
undloadFileCancel
. Vielleicht denken Sie, dass der Unterschied nicht so groß ist, aber wenn Sie Tausende von Labels haben, lohnt sich der zusammengesetzte Effekt.Kopfzeilenkommentare: Zusätzlich zu den vorangestellten Bezeichnungen fügen wir den Ressourcendateien "Kopfzeilenkommentare" hinzu, um die Bezeichnungsgruppierungen eindeutig zu definieren. Auf diese Weise kann jemand, der bestimmte Beschriftungen für eine bestimmte Klasse / einen bestimmten Abschnitt / ein bestimmtes Formular / usw. ändern oder hinzufügen möchte, alle Beschriftungen für dieses bestimmte Element an nur einer Stelle unter einer Überschrift finden und problemlos Beschriftungen hinzufügen oder ändern in dem Wissen, dass sie keine Übersetzungen für andere Elemente unterbrechen (IMHO, dies ist auch ein sehr wichtiger Punkt, warum Sie die Vervielfältigung zulassen müssen).
"Begründete" Duplikate sind wünschenswert: Wie oben erwähnt, werden diese Praktiken definitiv zu doppelten Etiketten führen, aber wir sehen kein Problem damit (mehr darüber, wie dies in Tools of the Trade gehandhabt wird).
Wie bereits erwähnt, kann ein Etikett in einer Sprache auf zwei oder mehr verschiedene Arten in andere Sprachen übersetzt werden, je nachdem, in welchem Kontext sie dargestellt werden. Wenn Sie Labels "vereinheitlichen", fällt es dem Übersetzer sehr schwer, ein einzelnes Label zu erstellen, das allen Kontexten entspricht, in denen es gefunden wird. Wie wir also sehen, hilft das Zulassen "gerechtfertigter" Duplikate, die Qualität der Lokalisierung zu verbessern, solange sie sich nicht im selben Kontext auf dasselbe beziehen (dies ist die Bedeutung von "gerechtfertigt").
Handwerkszeug: Um bei Ihren Übersetzungen so effektiv wie möglich zu sein, können Sie Ihr eigenes Werkzeug erstellen, das nach ähnlichen Labels sucht, die in Ihren Bundles vorhanden sind, und deren Übersetzungen als Standardwerte für neue Labels anbieten, oder Sie können es sogar Verwenden Sie vorhandene Services wie diesen , die Tools wie den gerade erwähnten bereitstellen. So wird das Übersetzen neuer Etiketten zum Kinderspiel (noch mehr, wenn sie mehrmals wiederholt werden), da das Tool standardmäßig mehrere Übersetzungsoptionen für die neuen Etiketten bietet ).
Fazit: Begründete Vervielfältigung und eine kontextbezogene Gruppierung der Bezeichnungen helfen den Übersetzern bei ihrer Arbeit. Große Zeit. Denken Sie nur einmal darüber nach: Der Kontext hilft dem Übersetzer bei der Auswahl der richtigen Übersetzung. Und das Zulassen von "gerechtfertigten" Duplikaten beseitigt den Konflikt, eine Übersetzung auswählen zu müssen, die für einige Kontexte schlecht geeignet ist (die jedoch insgesamt am besten passt).
Ich hoffe das hilft!
quelle
Wenn ich das in der Vergangenheit getan habe, sind wir den Weg der Ressourcendatei mit vollständigen Sätzen gegangen. Wenn genau derselbe Satz wiederholt großartig verwendet würde, aber wenn es nur einzelne Wörter aus einem Satz wären, würden diese Wörter dupliziert.
Wir waren an ein Framework gebunden, in dem die Ressourcendatei nur eine Liste englischer Phrasen und anschließend die Übersetzung enthielt (mit einigen Indexdaten am Ende für eine schnelle Suche).
Bei kleinen Eingabeaufforderungen oder Schaltflächen wie dem Feldnamen "Postleitzahl" oder der Schaltfläche "OK" wird die Zeichenfolge "Postleitzahl" gefolgt von der Übersetzung gespeichert und überall dort verwendet, wo die vollständige Zeichenfolge erforderlich ist. Aber (es sei denn, wir haben eine Zeichenfolge manuell getrennt) würde sie nicht für "Postleitzahl" verwenden, die in einem Satz vorkommt.
Wenn Sie Ihr Postleitzahl-Beispiel verwenden und versuchen, es selbst zu übersetzen, und es in allen Sätzen ersetzen, die es verwenden, erhalten Sie eine sehr, sehr schlechte Übersetzung.
Beispielsweise muss "Postleitzahl muss eingegeben werden", um das wörtliche Äquivalent von "Eingegebene Postleitzahl muss" in eine andere Sprache zu übersetzen. Wenn Sie einen Satz zerlegen, erhalten Sie nicht die Umkehrung von Wörtern, die in einer anderen Sprache erforderlich sind.
Deshalb sehen einige schlecht gemachte Übersetzungen ins Englische so lächerlich aus, dass die Person, die sie macht, nur die einzelnen Wörter übersetzt hat, nicht den ganzen Satz.
Wir fanden es immer am besten, Sätze als Ganzes zu übersetzen, ohne sie zu trennen. Wir hatten Platzhalter für Daten, die eingefügt werden mussten (z. B. "Teilenummer @ 1 ist redundant"), und der Übersetzer konnte den Platzhalter an die Position verschieben, die er für eine gute Übersetzung wollte.
Wir haben jedoch festgestellt, dass das Erlauben von Stellen, die genau denselben Satz oder dieselbe Dateneingabeaufforderung oder dieselbe Schaltflächenbeschriftung usw. verwendeten, für das Teilen von Übersetzungen in Ordnung war. Das war nie ein Problem und sparte dem Übersetzer Zeit und Kosten.
quelle
Dein Denken bei der Namensgebung ist gut.
Ziele
Implementierung
quelle