Java EclipseRCP独立插件

Java EclipseRCP独立插件,java,eclipse,eclipse-plugin,internationalization,rcp,Java,Eclipse,Eclipse Plugin,Internationalization,Rcp,没有教程提供一个具体的例子来说明如何在一个已使用的实例中创建国际化插件片段。我需要对plugin.xml和源代码文件进行翻译。试着把我的脑袋绕到翻译的方向,以及i18n的外观的方向 一,。该片段如何应用于多插件企业应用程序,更重要的是,所有这些插件如何将其字符串外部化到片段中适当的文件夹中 二,。外部罐子呢?该机制如何为外部资源提供翻译支持 三,。有可能成为远大目标,是否有可能提供独立翻译的视图或透视图?不一定是在运行时,因为我知道捆绑包不能动态切换。我们使用它来让人们翻译现有的资源。构建过程将

没有教程提供一个具体的例子来说明如何在一个已使用的实例中创建国际化插件片段。我需要对plugin.xml和源代码文件进行翻译。试着把我的脑袋绕到翻译的方向,以及i18n的外观的方向

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

二,。外部罐子呢?该机制如何为外部资源提供翻译支持

三,。有可能成为远大目标,是否有可能提供独立翻译的
视图
透视图
?不一定是在运行时,因为我知道捆绑包不能动态切换。

我们使用它来让人们翻译现有的资源。构建过程将所需的语言片段添加到人工制品中。每个插件定义自己的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服务器实例允许翻译。

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

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

  • 我猜您指的是您自己制作的非eclipse Java JAR,是吗?如果是这样的话,这是一个完全不同的过程,最适合于带有Java标记的单独问题。甲骨文有一个很好的例子。但是请记住,您只需要翻译用户接触到的内容。因此,对Eclipse插件进行重构以保持所有用户可见字符串可能是一个好主意

  • 您是指视图/透视图的名称吗?如果是,是的。您还可以翻译plugin.xml中提供的信息。看

  • 编辑:

    在第3条中,我指的是选择要翻译的视图(例如,通过视图菜单),然后重新启动应用程序,然后只有所述视图应该翻译

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

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

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

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


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

    通过
    外部jar
    我参考了我自己构建的jar。很多业务逻辑都包含在其中一个客户端jar,但如果不翻译这些资源,i18n是无用的。因此:1.您可以使用Messages/.properties机制来启用国际化2.与babel服务器(和构建过程)结合使用您可以创建片段。那么还有什么问题吗?JAR问题已经解决了,因为我将与访问器类和消息包一起构建包。Babel是仅用于翻译Eclipse.org项目,还是我可以用它翻译我自己的项目?好的,您可以用它来翻译包,无论它们是否是您是否来自org.eclipse名称空间。不过,您需要自己的babel服务器实例。在nr.3中,我指的是选择要翻译的
    视图
    (例如,通过视图菜单),然后重新启动应用程序,然后只有所述视图应该翻译。@GGrec编辑了我的答案,以响应注释有趣的想法,即每个视图都有自定义区域设置的想法。