片段是包裝國家語言翻譯最方便的方式。讓我們更仔細看安裝國家語言翻譯檔案的目錄結構。無論翻譯後的檔案是被包裝成片段或在程式外掛程式中傳送皆使用這個目錄結構。
在外掛程式中尋找語言環境特定檔案有三個機制。
要瞭解使用哪一個機制來存取任何提供的檔案是非常重要的,而這些檔案必須已翻譯, 這樣您才可以知道檔案命名方式以及檔案被放置在相對於外掛程式的檔案系統的哪一個地方。
平台核心為不同語言環境的檔案定義使用語言環境特有子目錄的目錄結構。 已翻譯的檔案放置在外掛程式下稱為 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 子目錄中。
執行時期只存取最特定的檔案。 檔案路徑會作為 Platform.find、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.properties 很明顯地並未出現在這份清單中。在下列說明中它們的處理方式略有不同。)
標準 Java 為其他檔案處理所使用的內容資源軟體組。 在 JAR 檔案中包含翻譯的檔案,每一個內容檔案有一個語言環境特定名稱, 例如 "message_en_CA.properties"。 檔案位於特定套件的子目錄並可能出現在外掛程式本身或其中之一的片段中。 每一個已翻譯的內容檔可能是一部分,因為查閱索引鍵存取已完整定義內容檔的鏈。
NL 片段的形態從 2.1 以來已經有稍微改善。以前,所有的轉換檔案(包括 plugin.properties)都以 jar 來提供。因為 plugin.properties 檔位在外掛程式的根目錄,所以就會不一致。
如果要調整您的 NL 片段適合新模型,請從 jar 中移除 plugin.properties 轉換檔,然後將檔案放在與 fragment.xml 同層級之片段的根目錄。例如,org.eclipse.ui.workbench 的 NL 片段新形式如下:
org.eclipse.ui.workbench.nl/ fragment.xml plugin_fr.properties plugin_pt_BR.properties ... nl1.jar