Soubory v místním jazyce

Praktickým způsobem, jak zabalit překlady do národních jazyků, jsou fragmenty.  Podívejme se blíže na adresářovou strukturu používanou pro instalaci souborů s překladem do místních jazyků.  Tato adresářová struktura se používá nezávisle na tom, zda jsou přeložené soubory zabalené ve fragmentu nebo dodávané v původním modulu plug-in.

Existují tři mechanizmy pro vyhledání souborů v místním jazyce uvnitř modulu plug-in.  

Je důležité porozumět tomu, který mechanizmus se používá pro přístup k libovolnému souboru určenému k přeložení, abyste věděli, jak jej pojmenovat a kam jej vzhledem k modulu plug-in v systému souborů umístit.

Mechanizmus jádra platformy

Jádro platformy definuje adresářovou strukturu, která pro soubory v různých jazycích užívá podadresáře jednotlivých jazyků.  Přeložené soubory jsou umístěny v adresáři nazvaném nl v příslušném modulu plug-in.  Například následující instalační strom ukazuje triviální modul plug-in (bez kódu) s překlady souboru about.properties v různých jazycích.  Jednotlivé překlady jsou zobrazeny, jakoby pocházely z fragmentu modulu plug-in, spíše než ze samotného modulu plug-in.  To je obvyklé, když jsou překlady dodávány samostatně, nikoli se základní verzí, ale podadresář nl můžete umístit i do samotného modulu plug-in.

acmeweb/
  eclipse/
    plugins/
      com.example.acme.acmewebsupport_1.0.0/
        plugin.xml
        about.properties    (výchozí národní prostředí)
      com.example.acme.fragmentofacmewebsupport_1.0.0/
        fragment.xml   (fragment com.example.acme.acmewebsupport 1.0.0)
        nl/
          fr/
            about.properties  (francouzské národní prostředí)
            CA/
              about.properties  (kanadsko-francouzské národní prostředí)
            FR/
              EURO/
                about.properties (francouzština Francie Euro)
          en/
            about.properties  (anglické národní prostředí)
            CA/
              about.properties  (kanadsko-anglické národní prostředí)
            US/
              about.properties (US anglické národní prostředí)
         de/
            about.properties (německé národní prostředí) 

Soubory, které mají být přeloženy, se nenacházejí v souborech JAR.  Každý soubor by měl mít přesně stejný název souboru, ale měl by být umístěn v podadresářích podadresáře nl v kořenovém adresáři příslušného fragmentu (nebo modulu plug-in).

Za běhu programu se přistupuje pouze k nejspecifičtějšímu souboru.  Cesty k souborům se prohledávají jako součást mechanizmů Platform.find, IPluginDescriptor.find a Plugin.find.  Předpokládejme například, že výchozí národní prostředí je en_CA a plug-in hledá about.properties následovně:

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

Tato metoda vrací URL odpovídající prvnímu místu, kde je nalezen about.properties, podle následujícího pořadí:

com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties
 ... 		<jakékoli jiné fragmenty>
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

Tento mechanizmus používají moduly plug-in k vyhledávání dobře známých názvů souborů v ostatních modulech plug-in.  Sem patří následující známé názvy souborů:

(Poznámka:  V tomto seznamu evidentně chybí plugin.properties a fragment.properties. S těmi se pracuje poněkud odlišným způsobem, popsaným níže.)

Balíky prostředků Java

Pro ostatní soubory se používá standardní manipulace s balíky prostředků vlastností v prostředí Java.  Přeložené soubory se nacházejí v souboru JAR a každý soubor vlastností má název udávající konkrétní jazyk, jako např. "message_en_CA.properties".  Soubory jsou v podadresářích jednotlivých balíčků a mohou se objevit v samotném modulu plug-in nebo v některém z jeho fragmentů.  Přeložené soubory vlastností mohou být dílčí, protože vyhledávání klíčů přistupuje k dobře definovanému řetězu souborů vlastností.

Mechanizmus plugin.properties

Mechanizmus používaný k překladu souborů plugin.properties používá pravidla pojmenování balíků prostředků Java. Soubory se však musí nacházet v kořenovém adresáři modulu plug-in nebo v kořenovém adresáři některého jeho fragmentu. Stejná pravidla platí pro překlad souboru MANIFEST.MF.

Definování fragmentů NL

Od verze 2.1 se tvar fragmentů NL poněkud změnil. Dříve byly všechny soubory vlastností (včetně plugin.properties) poskytovány v jar. To bylo nekonzistentní, protože soubor plugin.properties byl poskytován v kořenovém adresáři modulu plug-in.
Chcete-li svůj fragment NL přizpůsobit novému modelu, odeberte soubory překladu plugin.properties z jar a umístěte je do kořenového adresáře daného fragmentu na stejné úrovni jako fragment.xml. Například nový tvar fragmentu NL pro org.eclipse.ui.workbench je následující:

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