Übersetzungen in Landessprachen werden häufig in Fragmente gepackt. Daher soll jetzt die Verzeichnisstruktur, die für Dateien mit länderspezifischen Übersetzungen verwendet wird, genauer vorgestellt werden. Diese Verzeichnisstruktur wird unabhängig davon verwendet, ob die übersetzten Dateien in ein Fragment gepackt oder im Original-Plug-in zur Verfügung gestellt werden.
Für die Suche nach länderspezifischen Dateien in einem Plug-in gibt es drei Möglichkeiten:
Um die Datei korrekt benennen und in die richtige relative Position des Dateisystems für das Plug-in stellen zu können, müssen Sie den Mechanismus kennen, der für den Zugriff auf Dateien verwendet wird, die übersetzt sein müssen.
Der Plattformkern definiert eine Verzeichnisstruktur, die länderspezifische Unterverzeichnisse für Dateien definiert, die sich in ihrer Ländereinstellung unterscheiden. Übersetzte Dateien werden im Plug-in in ein Verzeichnis namens nl gestellt. Die folgende Installationsbaumstruktur zeigt beispielsweise ein triviales Plug-in (ohne Code) mit länderspezifischen Übersetzungen seiner Datei about.properties. Für die verschiedenen Übersetzungen wird angezeigt, dass sie aus einem Plug-in-Fragment, und nicht aus dem Plug-in selbst stammen. Dieses Verfahren wird häufig eingesetzt, wenn die Übersetzungen getrennt von der Basis ausgeliefert werden sollen. Das Unterverzeichnis nl könnte allerdings auch direkt in das Plug-in gestellt werden.
acmeweb/ eclipse/ plugins/ com.example.acme.acmewebsupport_1.0.0/ plugin.xml about.properties (Standardländereinstellung) com.example.acme.fragmentofacmewebsupport_1.0.0/ fragment.xml (Fragment von com.example.acme.acmewebsupport 1.0.0) nl/ fr/ about.properties (Ländereinstellung für Französisch) CA/ about.properties (Ländereinstellung für kanadisches Französisch) FR/ EURO/ about.properties (Französisch Frankreich Euros) en/ about.properties (Ländereinstellung für Englisch) CA/ about.properties (Ländereinstellung für kanadisches Englisch) US/ about.properties (Ländereinstellung für US-amerikansisches Englisch) de/ about.properties (Ländereinstellung für Deutsch)
Die zu übersetzenden Dateien sind in den JAR-Dateien nicht enthalten. Jede Datei sollte exakt denselben Dateinamen besitzen, sich jedoch im Stammverzeichnis des Fragments (oder des Plug-ins) in einem separaten Unterverzeichnis des Verzeichnisses nl befinden.
Zur Laufzeit wird nur auf die am allerspezifischste Datei zugegriffen. Die Dateipfade werden als Teil der Mechanismen Platform.find, IPluginDescriptor.findundPlugin.finddurchsucht. Als Beispielfall wird angenommen, dass die Standardländereinstellung en_CA lautet. Dann sucht ein Plug-in folgendermaßen nach der Datei about.properties:
somePlugin.find("$nl$/about.properties");
Die Methode gibt eine URL für die erste Stelle zurück, an der die Datei about.properties gefunden wurde (gemäß der folgenden Reihenfolge):
com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties ... <beliebiges anderes Fragment> com.example.acme.acmewebsupport_1.0.0/nl/en/about.properties com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/about.properties ... com.example.acme.acmewebsupport_1.0.0/about.properties com.example.acme.fragmentofacmewebsupport_1.0.0/about.properties
Dieser Mechanismus wird von Plug-ins für die Suche nach allgemein bekannten Dateinamen in anderen Plug-ins verwendet. Hierzu gehören die folgenden allgemein bekannten Dateinamen:
(Hinweis: Es fällt auf, dass die Dateien plugin.properties und fragment.properties in dieser Liste nicht enthalten sind. Sie werden, wie unten beschrieben, etwas anders behandelt.)
Die standardmäßige Java-Behandlung von Eigenschaftsressourcenpaketen wird auch für andere Dateien verwendet. Übersetzte Dateien sind in einer JAR-Datei enthalten, wobei jede Eigenschaftsdatei einen länderspezifischen Namen, z.B. "message_en_CA.properties" hat. Die Dateien befinden sich in paketspezifischen Unterverzeichnissen und können im Plug-in selbst oder in einem seiner Fragmente erscheinen. Jede übersetzte Eigenschaftsdatei kann partiell sein, da die Schlüsselsuchfunktion auf eine klar strukturierte Kette von Eigenschaftsdateien zugreift.
Seit der Version 2.1 hat sich die Form der NL-Fragmente geringfügig weiterentwickelt.
Zuvor wurden alle Übersetzungsdateien (einschließlich der Datei plugin.properties) in einer JAR-Datei bereitgestellt.
Das war allerdings nicht konsistent, da die Datei "plugin.properties" im Stammverzeichnis des Plug-ins bereitgestellt wurde.
Um Ihr NL-Fragment an das neue Modell anzupassen, entfernen Sie die Übersetzungsdateien vom Typ 'plugin.properties' aus der JAR-Datei und stellen sie als der Datei "fragment.xml" gleichgestelltes Element in das Stammverzeichnis des Fragments.
Die neue Form des NL-Fragments für org.eclipse.ui.workbench ist beispielsweise:
org.eclipse.ui.workbench.nl/ fragment.xml plugin_fr.properties plugin_pt_BR.properties ... nl1.jar