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