2010-11-20 3 views
0

Grails verwendet Java-Eigenschaften-Dateien auch.Wie man Java-Eigenschaftendateien menschenlesbar hält

Ich kann Google Translate verwenden, um eine erste Übersetzung meiner Datei message.properties zu erstellen, sogar in Sprachen wie Chinesisch. Ich kann die tatsächlichen chinesischen Zeichen in meiner neuen messages_zh_CN.properties Datei sehen, wenn ich es in Netbeans oder Notepad ++ ansehe.

Aber sobald die Datei in Svn geht, wenn es ausgecheckt ist, sind die chinesischen Zeichen nicht mehr sichtbar. Alles, was Sie sehen können, ist die ISO 8859-1-Codierung. Zum Beispiel:

default.paginate.prev =\u4e0a\u4e00\u9875 
default.paginate.next =\u4e0b\u4e00\u6b65 
default.boolean.true =\u771f 
default.boolean.false =\u5047 

Es funktioniert immer noch, sobald die App ausgeführt wird. Und Google Translate ist eine großartige Abkürzung für eine Übersetzung. Danach muss die Eigenschaftendatei zur Bearbeitung an einen Muttersprachler gesendet werden.

Wie kann ich die Eigenschaftsdatei in ISO 8859-1 wieder für Menschen lesbar machen? Wie folgt aus:

default.paginate.prev =上一页 
default.paginate.next =下一步 
default.boolean.true =真 
default.boolean.false =假 

Antwort

1

Ich denke, Ihre Diagnose ist falsch.

Die \ uXXXX-Syntax wird von einem Editor zum Bearbeiten von Eigenschaften verwendet, um Nicht-ASCII-Sequenzen zu speichern, damit sie über Codierungsschemas und Plattformen hinweg robust sind, und ich denke, dass dies hier passiert ist.

Bitte verfolgen Sie Ihre Schritte, um zu sehen, welcher Editor in diesem Formular speichert und dann entweder diesen Editor (und andere \ uXXXX bewusst) oder bleiben Sie weg von ihm. Vielleicht möchten Sie Ihren muttersprachlichen Übersetzern sagen, dass sie denselben Editor verwenden sollen, den Sie auswählen.

+0

Es scheint in diesem Fall nicht wie ein Editor, es ist Standard Grails Verhalten. – mfloryan

0

Ich habe nichts mit SVN zu tun - ich glaube nicht. Es gibt eine Konfigurationsoption in Grails, die dieses Verhalten vorgibt. In der Config.groovy Datei finden Sie die folgende Zeile:

// enabled native2ascii conversion of i18n properties files 
grails.enable.native2ascii = true 

Das bedeutet, dass der native2ascii Befehl an die Eigenschaften angewendet wird, Datei und konvertiert sie in das Unicode-Notation. Sie können diese Option auf false setzen, wenn Sie den ursprünglichen Zeichensatz in der Muttersprache beibehalten möchten. Sie können Ihre Datei auch immer mit dem Befehl native2ascii -reverse umkehren.

+0

Der 'native2ascii'-Befehl wird nicht auf die Quelleigenschaftendateien angewendet, sondern auf die Zieldateien (bei der Ausführung von' grails run-app' oder 'grails war'). - Die Quelldateien bleiben unverändert. – robbbert

0

ich für Thorbjørn Ravn Andersen ‚s Antwort gehen würde: Die .properties Datei in einem speziellen Editor bearbeitet wurde, die Unicode-Zeichen im ASCII-Notation (\ uXXXX) speichert automatisch.

Alexander Pogrebnyak hat solch einen Editor erwähnt, und sie sind ziemlich häufig in der "Java-Welt".

mfloryan erwähnten das native2ascii Werkzeug (das kommt mit dem JDK), welche die Umwandlung unter der Haube der Fall ist.


Jetzt sind einige Hintergrund auf, dass alle:

Java ‚s i18n Mechanismen sind auf der PropertyResourceBundle Klasse meist zugrunde, die ApiDoc heißt es:

eine Property Instanz Constructing von einem InputStream erfordert , dass der Eingangsstrom in ISO- 8859-1. In diesem Fall Zeichen , die nicht in ISO-8859-1-Codierung dargestellt werden kann, muss durch Unicode Escapes dargestellt

Somit kann, wie dieses Problem zu umgehen (!), In der Java-Welt, können Sie entweder die Verwendung JDK native2ascii, um die .properties Dateien zu transformieren, oder alternativ verwenden Sie einen spezialisierten Editor, der "Unicode Escapes" speichert, aber können Sie die tatsächlichen Unicode-Zeichen bearbeiten.

Im Frühling Rahmen Im Gegensatz dazu sind die i18n Mechanismen, die standardmäßig basierend auf ResourceBundleMessageSource Klasse Spring, die vollständig Unicode-fähig ist. Grails 'i18n-Mechanismen sind Spring-basiert.

Grails Standardeinstellung grails.enable.native2ascii = true sollte gemischte Frühjahr/Grails und Java-Umgebungen ermöglichen. - Sie werden weder brauchen das native2ascii Werkzeug noch einen speziellen .properties Dateien Editor, wenn Sie nicht Java eigene ResourceBundle.getBundle("foo").getKey("bar") verwenden, und wenn Sie nicht mit „klassischen Java“ JSTL oder JSF-Tags arbeiten.

Mit Grails und Spring können Sie Unicode .properties Dateien so verwenden, wie sie sind.