我在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文件中的实际内容。