Locale-specifieke bestanden

Fragmenten vormen een gemakkelijke manier om vertalingen in te pakken.  Hieronder kunt u de directorystructuur die wordt gebruikt voor het installeren van locale-specifieke vertalingsbestanden bekijken.  Deze directorystructuur wordt gebruikt, onafhankelijk van of de vertaalde bestanden in een fragment zijn ingepakt of dat deze in de oorspronkelijke plugin worden geleverd.

De locale-specifieke bestanden kunnen met behulp van drie verschillende mechanismen in een plugin worden gevonden.   

Het is belangrijk te begrijpen welk mechanisme wordt gebruikt om toegang te krijgen tot een bepaald bestand dat vertaald moet worden, zodat u weet hoe het bestand moet worden genoemd en waar het in relatie tot de plugin moet worden geplaatst in het bestandssysteem.

Platformcore-mechanisme

De platformcore definieert een directorystructuur die locale-specifieke subdirectory's gebruikt voor bestanden die voor wat betreft locale van elkaar verschillen.  De vertaalde bestanden worden in de directory nl onder de plugin geplaatst.  De volgende installatie-boomstructuur toont een gewone plugin (zonder codes) met locale-specifieke vertalingen van het about.properties-bestand.  De verschillende vertalingen worden afgebeeld als afkomstig van een pluginfragment in plaats van afkomstig van de plugin zelf.  Dit gebeurt bij vertalingen die afzonderlijk van de basis zijn geleverd, maar u kunt de subdirectory nl ook onder de plugin zelf plaatsen.

acmeweb/
  eclipse/
    plugins/
      com.example.acme.acmewebsupport_1.0.0/
        plugin.xml
        about.properties    (standaardlocale)
      com.example.acme.fragmentofacmewebsupport_1.0.0/
        fragment.xml   (een fragment van com.example.acme.acmewebsupport 1.0.0)
        nl/
          fr/
            about.properties  (Franse locale)
            CA/
              about.properties  (Frans-Canadese locale)
            FR/
              EURO/
                about.properties (Frans in Frankrijk)
          en/
            about.properties  (Engelse locale)
            CA/
              about.properties  (Canadees-Engels)
            US/
              about.properties (Amerikaans-Engels)
         de/
            about.properties (Duitse locale) 

De bestanden die moeten worden vertaald, bevinden zich niet in JAR-bestanden.  Elk bestand moet precies dezelfde bestandsnaam hebben maar de bestanden moeten zich in subdirectory's bevinden onder de subdirectory nl in de hoofddirectory van het fragment (of van de plugin).

Alleen het meest specifieke bestand wordt tijdens de uitvoering geopend.  De bestandspaden worden doorzocht als onderdeel van de mechanismen Platform.find, IPluginDescriptor.find en Plugin.find.  Stel bijvoorbeeld dat de standaardlocale en_CA is en een plugin op zoek is naar het bestand about.properties:

somePlugin.find("$nl$/about.properties");

De methode verzendt een URL die overeenkomt met de eerste plaats waar about.properties wordt aangetroffen volgens de volgende volgorde:

com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties
 ...  		<eventuele andere fragmenten>
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

Dit mechanisme wordt gebruikt door de plugins om te zoeken naar bekende bestandsnamen in andere plugins.  Hieronder vallen de volgende bekende bestandsnamen:

(Opmerking:  opmerkelijk is dat plugin.properties en fragment.properties ontbreken op deze lijst. Deze worden enigszins anders behandeld en worden hieronder besproken.)

Java-resourcebundels

De Java-standaard voor het afhandelen van eigenschappenresource-bundels wordt gebruikt voor andere bestanden.  De vertaalde bestanden bevinden zich in een JAR-bestand waarbij elk eigenschappenbestand een locale-specifieke naam heeft, bijvoorbeeld "message_en_CA.properties".  De bestanden bevinden zich in pakket-specifieke subdirectory's en kunnen in de plugin zelf verschijnen of in een van de fragmenten.  Elk vertaald eigenschappenbestand kan partieel zijn, omdat het opzoeken van sleutels een nauwkeurig gedefinieerde reeks van eigenschappenbestanden vereist.

Het plugin.properties-mechanisme

Het mechanisme dat wordt gebruikt voor het vertalen van de plugin.properties-bestanden gebruikt de naamgeving van Java-resourcebundels. De bestanden moeten zich in de hoofddirectory van de plugin of in de hoofddirectory van een fragment van deze plugin bevinden. Dezelfde regels zijn van toepassing op de vertalingen van MANIFEST.MF.

NL-fragmenten definiëren

De vorm van NL-fragmenten is sinds 2.1 enigszins gewijzigd. Eerder werden alle vertalingsbestanden (inclusief plugin.properties) geleverd in een jar. Dit was onlogisch omdat het plugin.properties-bestand geleverd wordt in de hoofddirectory van de plugin.
Om uw NL-fragment aan het nieuwe model aan te passen, kunt u de plugin.properties-vertalingsbestanden verwijderen uit de jar en deze in de hoofddirectory van het fragment plaatsen als items op hetzelfde niveau als fragment.xml. De nieuwe vorm van het NL-fragment van org.eclipse.ui.workbench:

  org.eclipse.ui.workbench.nl/
     fragment.xml
     plugin_fr.properties
     plugin_pt_BR.properties
     ...
     nl1.jar