片段是包裝國家語言翻譯最方便的方式。讓我們更仔細看安裝國家語言翻譯檔案的目錄結構。無論翻譯後的檔案是被包裝成片段或在原始外掛程式中傳送皆使用這個目錄結構。
在外掛程式中尋找語言環境特定檔案有兩個機制。
要了解使用哪一個機制來存取任何提供的檔案是非常重要的,而這些檔案必須已翻譯, 這樣您才可以知道檔案命名方式以及檔案被放置在相對於外掛程式的檔案系統的哪一個地方。
平台基核為不同語言環境的檔案定義使用語言環境特有子目錄的目錄結構。 已翻譯的檔案放置在外掛程式下稱為 nl 的目錄中。舉例來說, 下列安裝樹狀結構顯示一般的外掛程式(無程式碼)以及特定的語言環境翻譯的 about.properties 檔案。 所顯示的不同翻譯是來自外掛程式片段,而不是來自外掛程式本身。 隨附的翻譯通常與基礎是分開的,但是您還是可以在外掛程式本身下放置 nl 子目錄。
acmeweb/ eclipse/ plugins/ com.example.acme.acmewebsupport_1.0.0/ plugin.xml about.properties (預設語言環境) com.example.acme.fragmentofacmewebsupport_1.0.0/ fragment.xml (com.example.acme.acmewebsupport 1.0.0 的片段) nl/ fr/ about.properties (法文語言環境) CA/ about.properties (加拿大法文語言環境) FR/ EURO/ about.properties(法國法郎歐元) en/ about.properties (英文語言環境) CA/ about.properties (加拿大英文語言環境) US/ about.properties(美式英文語言環境) de/ about.properties(德文語言環境)
將要翻譯的檔案不包含在 JAR 檔中。每一個檔案應該有相同的檔案名稱,但是 放置在片段的(或外掛程式的)根目錄下的 nl 子目錄中。
只有在執行時期時存取大部分特定的檔案。搜尋的檔案路徑為 IPluginDescriptor.find 和 Plugin.find 機制的一部份。例如,假設預設語言環境為 en_CA,則外掛程式搜尋下列 about.properties:
somePlugin.find("$nl$/about.properties");
方法將傳回依據下列次序尋找第一個到 about.properties 地方所對應的 URL:
com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties ... <any other fragments> 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
外掛程式使用這個機制來搜尋其他外掛程式中知名的檔案名稱。這包括下列知名的檔案名稱:
(附註:plugin.properties 和 fragment.xml 並未出現在此清單中。 就歷史因素而言,這些檔案被視為 Java Properties Resource Bundle 並使用其他機制。)
標準 Java 為其他檔案處理所使用的 Property Resource Bundle。在 JAR 檔案中包含翻譯的檔案,每一個 properties 檔案有一個語言環境特定名稱,例如 "message_en_CA.properties"。檔案位於特定套件的子目錄並可能出現在外掛程式本身或其中之一的片段中。每一個已翻譯的 properties 檔可能是一部份,因為查閱索引鍵存取已完整定義 properties 檔的鏈。.
如上述附註所言,使用這個技術來存取 plugin.properties 和 fragment.xml。