10

如何在我的 Eclipse 插件的 plugin.xml 中外部化字符串?

右键单击插件项目 > PDE 工具 > 外部化字符串不会显示我的插件。

我现在正在尝试手动执行此操作。我在 plugin.properties 中添加了条目,并将 plugin.xml 中的等效字符串替换为 % 符号,后跟字符串键。但这似乎不起作用。我在这里想念什么?

4

2 回答 2

20

我终于想出了如何手动外部化插件。

事实证明,Eclipse 以这种方式将 plugin.xml 外部化:

  • 在插件清单 (META-INF/MANIFEST.MF) 中,添加以下行

    Bundle-Localization: plugin
    

    您打算将外部化字符串存储在一个名为“plugin.properties”的文件中(原来这是缺少的部分)。

  • 在 plugin.properties 中添加外部化字符串键值对。

  • 将 plugin.xml 中的实际字符串替换为 plugin.properties 中的键(以 % 为前缀)。

于 2009-03-13T23:24:21.710 回答
3

如果您的工作集中有插件项目,则应该可以使用Externalize Strings向导来帮助外部化 Manifest 和 plugin.xml 文件中的字符串。
外部化清单文件提取可翻译的字符串并将它们存储在属性文件中以支持多语言。

该向导位于 PDE 项目的 MANIFEST.MF 或 plugin.xml 文件的上下文菜单中的 PDE 工具菜单下

替代文字
(来源:eclipse.org

请注意,存在一些与检测and元素的所有非外部化属性/值<extension-point><extension>显示 extension(-point) 的非外部化名称相关的错误,这些错误仅在 3.4 或最近的 3.5M4 中解决。

但是,如果“Externalize Strings”菜单根本没有出现在您的插件项目上,可能是它的“项目性质”以某种方式损坏,可能是您以前的 Java 项目没有正确转换为 PDE 项目

所以有两个建议:

  • 尝试全新安装 eclipse3.5M4
  • 导入您的插件项目并检查其性质

然后告诉我们该菜单是否仍然不可用。


正如您在自己的答案中提到的,外部化过程由字符串声明

Bundle-Localization: plugin

在 MANIFEST.MF 文件中,如此消息中所述。

已创建错误,但是:

  • 本地化不是特定于 PDE 的东西,而是 OSGI 规范
  • 该行并不总是在清单中:

    在 3.3 之前,我们通过创建 plugin.xml 然后转换它来创建所有清单。转换器总是将“Bundle-Localization:plugin”添加到 Manifest,因为如果插件没有 Manifest,这是默认位置。
    如果插件没有翻译文件,则此标头是不必要的膨胀。
    在 3.3 中,我们通过直接创建 Manifest 来创建插件项目,这意味着我们决定只创建项目创建所需的头文件。

  • 对于那些创建了外部化 < 3.2 的捆绑包,然后在 3.3 中运行时无法看到它们的人来说,这可能是一个问题。

于 2009-03-13T23:06:54.123 回答