我在Eclipse RCP应用程序中有一个贡献视图。该视图具有本地化名称%view.name,其plugin.properties文件上的翻译为“我的视图部件”。

我正在研究Eclipse的源代码以了解国际化的工作方式。到目前为止,我还无法找到从属性文件读取的值并将其分配为视图名称的时间。

如果从资源阅读部分开始,我会看到ManifestLocalization类会读取属性文件,但是找不到在何处使用它。

如果我从名称分配开始,我看到TableReader类获得了视图部件的名称,但是它已经本地化了。我还看到Eclipse在某个时候将这个plugin.xml转换为一些序列化的对象。也许是出于性能方面的考虑?

所以我的问题是,这个“%view.name”字符串什么时候转换为“我的视图部分”

最佳答案

在月食中至少有两种支持本地化的机制:NLS和org.eclipse.core.runtime.registry.IConfigurationElement。您感兴趣的部分出现在IConfigurationElement中。

调用IConfigurationElement.getAttribute(String key)时,ResourceTranslator.getResourceString()方法使用OSGi清单中的Bundle-Localization标头查找正确的属性文件(通常是plugin${locale}.properties)并在属性文件中输入。

您可以通过调用getAttributeAsIs(String key)方法来获取plugin.xml文件中的实际内容。

10-07 19:39
查看更多