0

Es gibt viele Ebenen für die Anpassung von Programmen.Methoden zur modularen Anpassung von Sprachnachrichten?

Zuerst natürlich macht es sprechen Sie Ihre Sprache durch Erstellen von i18n Nachrichten, wo Werkzeuge wie Gettext und Xgettext einen guten Job machen.

Eine andere kommt, wenn Sie benötigen ändern Sie die Bedeutung von einigen Nachrichten, um den Zweck Ihres Projekts zu entsprechen.

Die Frage ist: ist es möglich, benutzerdefinierte Nachrichten in einer separaten Datei zusätzlich zur Standardübersetzung zu halten und haben die Standard-Tools verstehen, dass benutzerdefinierte Nachrichten Vorrang haben?

Dies würde dazu beitragen, dass diese Nachrichten nicht in das öffentliche Repository übertragen werden und beim Aktualisieren nicht durch den Textbaustein überschrieben werden.

bearbeiten: da nicht zu viele Leute sich um Lokalisierung kümmern Ich denke, es ist angemessen, Antworten für jede Plattform zu sammeln, aber ich bin im Moment daran interessiert, diese Python/Django zu implementieren.

Antwort

1

In Java werden diese lokalisierten Zeichenfolgen von ResourceBundles verarbeitet. ResourceBundles haben ein Konzept von Varianten. Zum Beispiel könnten Sie eine englische Basisressource haben, genannt messages_en.propertie s. Dann könnten Sie für eine bestimmte Variante von Englisch mit message_en_US.properties oder message_en_UK.properties anpassen.

US und UK sind ISO-Ländercodes, Sie können jedoch auch eigene benutzerdefinierte Varianten einrichten, die nur die Zeichenfolgen enthalten, die Sie anpassen möchten. Zum Beispiel:

#messages_en.properties 
button.click=Click 
label.go=Go 

#messages_en_ZZ.properties 
button.click=Click Me 

Durch das Gebietsschema auf en_ZZ Einstellung, würde Ihre Anwendung in messages_en_ZZ.properties suchen Sie zuerst, ob die angepasste Zeichenfolge existiert, um zu sehen, und dann zu messages_en.properties für Ihre vorformulierten Übersetzungen zurückgreifen. [Mehr Informationen zu Resource Laden Vorrang] [1]

[1]: http://java.sun.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader)

1

denke ich mächtig i18n Einrichtungen (siehe here Qt) erfüllen könnten Ihre Bedürfnisse - natürlich sind sie auch in Python verfügbar, dank der üblichen, gesegneten PyQt! -)

Verwandte Themen