Länderspezifische Dateien

Ü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.

Plattformkernmechanismus

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.)

Java-Ressourcenpakete

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.

Der Mechanismus plugin.properties

Der Mechanismus, der zur Übersetzung von Dateien des Typs 'plugin.properties' eingesetzt wird, verwendet die Namenskonvention der Java-Ressourcenpakete. Allerdings müssen sich die Dateien im Stammverzeichnis des Plug-ins bzw. im Stammverzeichnis eines Fragments dieses Plug-ins befinden. Die gleichen Regeln gelten für die Übersetzung von MANIFEST.MF.

NL-Fragmente definieren

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