3

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

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

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

3.冒着长镜头的风险,是否可以提供a viewor的独立翻译perspective?不一定在运行时,因为我知道捆绑包不能动态切换。

4

2 回答 2

5

有一些可用的帮助,本文列出了该过程。它基于 Eclipse 2.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-en-v1”语言环境的翻译,这意味着特定视图将被翻译,但应用程序的其余部分将使用默认值(可能是它们默认返回最接近的翻译,不记得确切)。

然后为每个视图创建一个新的翻译并为每个视图使用一个独特的语言环境。

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

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

于 2013-08-15T08:21:41.557 回答
2

我们正在使用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 服务器实例允许翻译。

于 2013-08-14T14:23:01.960 回答