Eclipse RCP国际化独立插件



没有教程提供如何创建和使用国际化插件片段的具体示例。我需要翻译到plugin.xml和源代码文件。我试着思考翻译的去向,以及i18n外观的去向

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

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

3.有可能成为长镜头,是否有可能提供viewperspective的独立翻译?不一定是在运行时,因为我知道捆绑包不能动态切换。

本文列出了一些可用的帮助。它基于Eclipse2.0(!),但基本思想仍然正确。一篇更好的文章是Vogella 的本教程

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

  2. 我猜你指的是你自己制作的非eclipse Java jar,是吗?如果是这样的话,这是一个完全不同的过程,最适合于使用Java标记的单独问题。Oracle有一个指南可能会有所帮助。但请记住,您只需要翻译用户接触到的内容。因此,重构以使所有用户可见的字符串对Eclipse插件来说可能是个好主意。

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

编辑:

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

嗯。。我想了一种理论上可行的方法,但我不确定这是最好的选择。所以翻译是基于语言环境的。在给定的语言环境下,选择一个特定的翻译。如果不存在适当的翻译,将选择默认翻译。

因此,如果您的"视图"菜单将应用程序的区域设置更改为"us-en-v1",并且您只有一个视图具有区域设置"us-ent-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服务器实例允许进行翻译。

最新更新