plugin.xml中のストリングの外部化

Ymir Eclipseプラグインを開発しているのだが、そこでハマったことがあったのでメモする。

Eclipseプラグインのplugin.xml中のストリングを外部化するには、plugin.xml中に「%」で始まるキー文字列を埋め込んでおき、対応するプロパティをplugin.propertiesに記述すれば良い。

例えば以下のようなウィザード

<wizard
  category="org.eclipse.jdt.ui.java"
  class="org.seasar.ymir.eclipse.wizards.NewProjectWizard"
  finalPerspective="org.eclipse.jdt.ui.JavaPerspective"
  icon="icons/newYmirProject.gif"
  id="org.seasar.ymir.eclipse.wizards.NewProjectWizard"
  name="Ymir Project"
  project="true">

の名前を外部化するには、name属性の値を「%」で始まるキー文字列に置き換えて、

  ...
  name="%newWizard.name"
  ...

対応するプロパティをplugin.propertiesに追加する。

plugin.properties:

newWizard.name=Ymir Project

ところがEclipse3.3ではこれだけでは駄目で、META-INF/MANIFEST.MFに以下のキーを追加しておく必要がある。

Bundle-Localization: plugin

遠い昔にEclipseプラグインを作った時にはこんなものは不要だったので、1時間ばかりハマった。

参考ページ: http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-plugindev1/index.html#N101E4

なおPDEのプラグインマニフェストエディタのOverviewページで右クリックすると表示されるメニュー項目「Externalize Strings...」を使ってストリングを外部化すれば、自動的に上記キーがMANIFEST.MFに追加されるようである。