凡被定位在Eclipse代码做了什么?
-
21-08-2019 - |
题
我在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()
方法使用清单找到的属性正确的属性文件(通常这是plugin${locale}.properties
)和进入了OSGi捆位置的头文件。
您可以通过调用getAttributeAsIs(String key)
方法,而不是得到什么实际上是在plugin.xml文件。
其他提示
此可以根据基于Eclipse的特定版本不同而不同,但是看起来该翻译是在ResourceTranslator.getResourceString(捆绑,字符串的ResourceBundle)
发生有关的视图部分的贡献,当插件清单被加载为ExtensionRegistry.addContribution的一部分发生这种情况()。
你是正确的翻译版本进行缓存。如果设置在我提到的方法断点,你会发现,当第一次初始化工作区,他们只火。为了让他们再次开火,你必须清除工作区的配置区域。