Pliki charakterystyczne dla ustawień narodowych

Odpowiednim sposobem łączenia w pakiety tłumaczeń w językach narodowych są fragmenty. Przyjrzyjmy się bliżej strukturze katalogów używanej do instalowania plików charakterystycznych dla ustawień narodowych. Ta struktura katalogów jest używana bez względu na to, czy przetłumaczone pliki są spakowane we fragmencie czy dostarczone w oryginalnym module dodatkowym.

Istnieją trzy mechanizmy wyszukiwania plików charakterystycznych dla ustawień narodowych w module dodatkowym.  

Istotne jest, aby zrozumieć, który mechanizm jest używany do uzyskania dostępu do pliku, który ma zostać przetłumaczony, aby wiedzieć, jak nazwać plik i gdzie go umieścić w systemie plików związanym z modułem dodatkowym.

Mechanizm jądra platformy

Jądro platformy definiuje strukturę katalogów zawierającą podkatalogi ustawień narodowych z plikami różniącymi się w zależności od języka. Przetłumaczone pliki są umieszczane w katalogu modułu dodatkowego o nazwie nl. Na przykład poniższe drzewo instalacji pokazuje prosty moduł dodatkowy (bez kodu) zawierający tłumaczenia w językach narodowych pliku about.properties. Różne tłumaczenia są prezentowane raczej jako pochodzące z fragmentu modułu dodatkowego niż z samego modułu. To jest typowe rozwiązanie w przypadku dostarczania tłumaczeń niezależnie od podstawowego produktu, ale podkatalog nl można umieścić również w module dodatkowym.

acmeweb/
  eclipse/
    plugins/
      com.example.acme.acmewebsupport_1.0.0/
        plugin.xml
        about.properties    (domyślne ustawienia narodowe)
      com.example.acme.fragmentofacmewebsupport_1.0.0/
        fragment.xml   (fragment serwisu com.example.acme.acmewebsupport 1.0.0)
        nl/
          fr/
            about.properties  (francuskie ustawienia narodowe)
            CA/
              about.properties  (francuskie kanadyjskie ustawienia narodowe)
            FR/
              EURO/
                about.properties (francuskie ustawienia z euro)
          en/
            about.properties  (angielskie ustawienia narodowe))
            CA/
              about.properties  (angielskie kanadyjskie ustawienia narodowe)
            US/
              about.properties (angielskie amerykańskie ustawienia narodowe)
         de/
            about.properties (niemieckie ustawienia narodowe) 

Pliki do tłumaczenia nie są przechowywane w plikach JAR. Każdy plik powinien mieć taką samą nazwę, ale powinien znajdować się w podkatalogach katalogu nl w katalogu głównym fragmentu (lub modułu dodatkowego).

W momencie uruchamiania program uzyska dostęp jedynie do najbardziej charakterystycznego pliku. Ścieżki do plików są przeszukiwane jako część mechanizmów Platform.find, IPluginDescriptor.find oraz Plugin.find. Załóżmy na przykład, że domyślnym ustawieniem narodowym jest en_CA i moduł dodatkowy szuka pliku about.properties w następujący sposób:

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

Ta metoda zwróci odpowiedni adres URL do pierwszej lokalizacji pliku about.properties wyszukanej według następującej kolejności:

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

Ten mechanizm jest używany przez moduły dodatkowe do wyszukiwania dobrze znanych nazw plików wewnątrz innych modułów dodatkowych. Obejmuje to następujące dobrze znane nazwy plików:

(Uwaga:  Na liście wyraźnie brakuje plików plugin.properties i fragment.properties. Są one traktowane w nieco inny sposób opisany poniżej.

Pakunki zasobów Java

W przypadku innych plików używana jest standardowa obsługa Java pakunków zasobów właściwości. Przetłumaczone pliki są umieszczane w pliku JAR, w którym każdy z plików właściwości jest nazwany odpowiednio do ustawień narodowych, na przykład "message_en_CA.properties". Te pliki znajdują się w podkatalogach konkretnych pakietów i mogą się pojawiać w module dodatkowym lub w jednym z jego fragmentów. Tłumaczony plik właściwości może być podzielony na części, ponieważ wyszukiwanie kluczy uzyskuje dostęp do dobrze zdefiniowanego łańcucha plików właściwości.

Mechanizm pliku plugin.properties

Ten mechanizm używany do tłumaczenia plików plugin.properties korzysta z konwencji nazewnictwa pakunków zasobów Java. Te pliki muszą być umieszczone w katalogu głównym modułu dodatkowego lub katalogu głównym fragmentu tego modułu. Te same reguły dotyczą tłumaczenia pliku MANIFEST.MF.

Definiowanie fragmentów dla języków narodowych

Kształt fragmentów dla języków narodowych zmienił się trochę od wersji 2.1. Wcześniej wszystkie pliki z tłumaczeniami (również pliki plugin.properties) były udostępniane w pliku JAR. To była pewna niespójność, ponieważ plik plugin.properties był udostępniany w katalogu głównym modułu dodatkowego.
Aby dostosować fragmenty dla języków narodowych do nowego modelu, należy usunąć pliki plugin.properties z tłumaczeniami z pliku JAR i umieścić je w katalogu głównym fragmentu jako elementy równorzędne pliku fragment.xml. Nowy kształt fragmentów dla języków narodowych pakietu org.eclipse.ui.workbench może wyglądać na przykład tak:

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