【问题标题】:Eclipse RCP - Using fragment for providing translationsEclipse RCP - 使用片段提供翻译
【发布时间】:2015-12-08 07:39:31
【问题描述】:

我有一个关于在 Eclipse RCP 中使用 Fragments 的简短问题。目前我正在使用消息机制来翻译我的字符串。 Messages.java 和 *.properties 文件位于我的插件中,一切正常。现在我想为不同的客户使用不同的字符串/翻译。据我所知,插件片段是一个可能的解决方案。我读过无法使用片段覆盖主机插件中的文件。所以我想我必须使用 2 个不同的片段来提供正确的 *.properties 文件。下图显示了我认为必须使用的架构。

配置片段项目后(设置了主机插件并且 *.properties 文件位于与主机中的同名包中),我想通过 Eclipse IDE 启动我的 RCP 应用程序。 2 个运行配置也已配置。使用 OSGI 控制台时,我看到我的片段存在并且已解决。

但我的问题是未使用片段中提供的字符串/翻译。每次我启动应用程序时都会使用一些旧的字符串/翻译(在将属性文件移动到片段之前使用的那个)。

是否有人知道我做错了什么以及我的解决方案是否正确?

提前致谢:)

【问题讨论】:

  • 我不确定,但看起来您使用的是两个相同的片段 - 也许它只是复制和粘贴,但您不能在两个片段中提供两个去语言包(德国)......
  • 您通常会创建一个用于德语支持的片段和另一个用于(可能)意大利语支持的片段...
  • 我通过新建向导创建了这两个插件 - 没有复制和粘贴。我有 2 种不同的产品和 2 种不同的运行配置。根据配置,我添加 Fragment1 或 Fragment2 - 不是同时添加。每个产品都应该有自己的messages.properties 和德语翻译。主机插件本身不提供任何 messages.properties 或德语翻译。
  • 听起来很合理-您有两种具有不同配置的产品...这就是片段的用途!...所以您的问题是片段1和片段2都没有用于任何配置?
  • 是的,片段没有被使用,即使在查看 OSGI 控制台时它们存在:31 ACTIVE _2.0.0.qualifier Fragments=32 32 RESOLVED _2.0.0.qualifier Master=31

标签: java eclipse-rcp osgi-fragment


【解决方案1】:

您必须使用正确的配置运行 eclipse 产品 - 如果您想查看(和测试)您的语言支持,您必须使用正确的信息启动 eclipse!

尝试直接设置语言

-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl de_DE -consoleLog

【讨论】:

  • 不幸的是,这也不起作用。我想知道在将它们移动到片段之前放置在主机插件中的这些字符串/翻译是否被使用。即使我更改片段中的属性,也不会使用字符串。也许 Eclipse 使用了一些缓存机制?
  • 如果你启动eclipse应用程序,你看到安装了什么内容吗?帮助 -> 关于 -> 安装详细信息 -> 插件?你的 Fragment 应该列在那里...
  • Host-Plugin 和 Fragment 已安装
  • 您能展示一下您的 Messages.java 的样子吗?也许问题就在那里
  • 导入 org.eclipse.osgi.util.NLS;公共类消息扩展 NLS { private static final String BUNDLE_NAME = ".ui.internal.messages"; //$NON-NLS-1$ public static String LoginAgent_LoginServerNotAvaliabeErrorText1;公共静态字符串 ... ; static { // 初始化资源包 NLS.initializeMessages(BUNDLE_NAME, Messages.class); } 私人消息() { } }
【解决方案2】:

您是否提供了清单的标头?

Bundle-Localization: plugin

【讨论】:

  • 我已将此添加到我的片段 Manifest.MF 但没有成功 :( 该片段处于“已解决”状态,并且有一个指向我的主机插件的链接,该插件处于“活动”状态。我认为连接很好,但是片段中提供的消息没有使用。也许 Eclipse 缓存了一些数据?使用的消息已从主机移动(!)到片段并更改。但仍然使用旧消息
  • 它必须在主机内部。不在片段中。
  • 很遗憾没有成功。我开始问自己是否可以通过片段将 messages.properties 添加到主机插件中。但是恕我直言,这应该可以通过片段来实现。属性 - 文件位于与主机插件中的名称相同的包内。
  • 你试过here描述的过程吗?绝对可以做到。
猜你喜欢
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多