代码之家  ›  专栏  ›  技术社区  ›  Mario Ortegón

Eclipse代码中的本地化在哪里完成?

  •  3
  • Mario Ortegón  · 技术社区  · 16 年前

    我在Eclipse RCP应用程序中有一个贡献视图。此视图具有本地化名称%view.name,并在plugin.properties文件上转换为“My view Part”。

    如果我从资源读取部分开始,我会看到类ManifestLocalization读取属性文件,但我找不到它的使用位置。

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

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

    2 回复  |  直到 16 年前
        1
  •  3
  •   jamesh    16 年前

    eclipse中至少有两种支持本地化的机制:NLS和 org.eclipse.core.runtime.registry.IConfigurationElement .你感兴趣的部分发生在 IConfigurationElement .

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

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

        2
  •  0
  •   Jordan Liggitt    16 年前

    这可能因Eclipse的特定版本而异,但看起来翻译是在ResourceTranslator.getResourceString(Bundle、String、ResourceBundle)中进行的

    对于视图部分的贡献,当插件清单作为ExtensionRegistry.addContribution()的一部分加载时,就会发生这种情况。

    翻译版本被缓存是正确的。如果你在我提到的方法中设置断点,你会注意到它们只在工作区首次初始化时才会触发。为了使它们再次启动,您必须清除工作区的配置区域。

    推荐文章