繁体   English   中英

Eclipse RCP Internationalization独立插件

[英]Eclipse RCP Internationalization separate plugin

没有教程提供了如何创建国际化插件片段的具体示例。 我需要翻译到plugin.xml和源代码文件。 试着把头转过去翻译的地方,以及i18n门面的去处。

1.该片段如何应用于多插件企业应用程序,更重要的是,所有这些插件如何将其字符串外部化到片段中的相应文件夹中?

2. 外部JAR怎么样? 该机制如何为外部资源提供翻译支持?

3.由于存在长期风险,是否有可能提供独立的viewperspective翻译? 不一定是在运行时,因为我知道bundle无法动态切换。

有一些帮助, 本文列出了该过程。 它基于Eclipse 2.0(!),但基本思想仍然正确。 Vogella的这篇教程是一篇更好的文章

  1. 对于您需要翻译的每个插件,您将创建一个插件片段。 该片段与一个主机插件相关联,因此您需要多个片段。 每个片段可以包含多种语言。 语言由文件夹结构分隔,如第一篇文章中的步骤5所述

  2. 我猜你指的是你自己制作的非日食Java罐子,是吗? 如果是这样,那是一个完全不同的过程,最适合使用Java标记的单独问题。 Oracle有一个可能有用指南 但请记住,您只需要翻译用户所接触的内容。 因此,将所有用户可见字符串保留在Eclipse插件中的重构可能是个好主意。

  3. 你指的是视图/透视的名称吗? 如果是的话,是的。 您也可以翻译plugin.xml中提供的信息。 参见Vogellas的文章,第3章

编辑:

At nr.3 I was referring to choosing which View to translate (eg via a view menu), then restart the app, then only the said view should translate

嗯..我想到了一种理论上可行的方法,但我不确定它是最好的选择。 所以翻译是基于语言环境。 并且根据区域设置选择一定的翻译。 如果不存在适当的翻译,则将选择默认值。

因此,如果您的“视图”菜单要将应用程序的区域设置更改为“us-en-v1”,并且您只有一个视图具有区域设置“us-en-v1”的翻译,则这意味着特定的视图将被翻译,但应用程序的其余部分将使用默认值(可能是他们默认返回到最接近的翻译,不记得确切)。

然后,对于每个视图,您将创建一个新的翻译并为每个视图使用唯一的区域设置。

这应该有效,但它会滥用翻译的工作方式,因此可能会导致问题。

我曾经做过类似的事情,一个应用程序使用相同的语言,但不同的客户有不同的词汇。 因此,我们使用i18n通过定义我们自己的语言环境使应用程序使用正确的术语。

我们使用http://babel.eclipse.org/babel/让人们翻译现有的资源。 构建过程将所需的语言片段添加到人工制品中。 每个插件都定义了自己的Messages.properties / Messages.java文件。 我猜,你对外部罐子做的不多。

例如:

public final class MyMessages {
  // a string member as you reference it later in the code 
  public static String login_window_user_label;

  // static initializer which initalizes the fields in this class
  static {
    NLS.initializeMessages("mymessages", MyMessages.class);
  }
}

并且(通常在同一个包中)你有一个属性文件,在这种情况下,

mymessages.properties

其中包括字符串:

login_window_user_label = Enter username to login to {0}

在您执行的代码中:

String userNameLabel = NLS.bind(MyMessages.login_window_user_label, Environment.getName());

这就是我们如何使我们的捆绑“可翻译”。 构建生成语言片段,babel服务器实例允许翻译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM