Wir lokalisieren den Benutzerschnittstellentext für eine Webanwendung, die auf Java 5 ausgeführt wird, und haben ein Dilemma darüber, wie Nachrichten ausgegeben werden, die in Eigenschaftendateien definiert sind - die von java.util.Properties verwendete Art.Soll ich java.text.MessageFormat für lokalisierte Nachrichten ohne Platzhalter verwenden?
Einige Nachrichten enthalten einen Platzhalter, der mit gefüllt wird. Zum Beispiel:
search.summary = Your search for {0} found {1} items.
Message ist ärgerlich, weil ein Apostroph ein Sonderzeichen, obwohl sie häufig in englischem Text ist. Sie haben zwei für eine wörtliche Apostroph eingeben:
warning.item = This item''s {0} is not valid.
jedoch drei Viertel der 1000-Anwendung oder so Meldungen keine Platzhalter enthalten. Das bedeutet, dass wir ausgeben können sie direkt, Message zu vermeiden, und lassen Sie die einfachen Anführungszeichen allein:
help.url = The web page's URL
Frage: sollten wir Message verwenden für alle Nachrichten, für eine konsistente Syntax oder Message vermeiden, wo wir können, so die meisten Nachrichten brauchen nicht zu entkommen?
Es gibt eindeutig Vor-und Nachteile in beide Richtungen.
Beachten Sie, dass die API-Dokumentation für Message das Problem erkennt und schlägt vor, eine nicht-Lösung:
Die Regeln für Anführungszeichen innerhalb Nachrichtenformat Muster leider verwendet haben etwas verwirrend erwiesen. Insbesondere ist es nicht immer offensichtlich, Localizer, ob einfache Anführungszeichen verdoppelt werden müssen oder nicht. Stellen Sie sicher, Lokalisierer über die Regeln zu informieren, und sagen Sie ihnen (z. B. mit Kommentare in Ressource Bundle Quelle Dateien) welche Zeichenfolgen von MessageFormat verarbeitet werden.
Ist es möglich, dass die Bibliothek zu verwenden, nur wenn ein String formatiert werden? –
scheint dieser Mechanismus tief in den Code eingegraben zu sein. Vielleicht hast du mehr Glück: http://logback.qos.ch/download.html –
In der Tat, ich denke, ich werde nach einer alternativen Implementierung suchen. –