[英]Eclipse RCP Internationalization separate plugin
没有教程提供了如何创建国际化插件片段的具体示例。 我需要翻译到plugin.xml和源代码文件。 试着把头转过去翻译的地方,以及i18n门面的去处。
1.该片段如何应用于多插件企业应用程序,更重要的是,所有这些插件如何将其字符串外部化到片段中的相应文件夹中?
2.
外部JAR怎么样?
该机制如何为外部资源提供翻译支持?
3.由于存在长期风险,是否有可能提供独立的view
或perspective
翻译? 不一定是在运行时,因为我知道bundle无法动态切换。
有一些帮助, 本文列出了该过程。 它基于Eclipse 2.0(!),但基本思想仍然正确。 Vogella的这篇教程是一篇更好的文章
对于您需要翻译的每个插件,您将创建一个插件片段。 该片段与一个主机插件相关联,因此您需要多个片段。 每个片段可以包含多种语言。 语言由文件夹结构分隔,如第一篇文章中的步骤5所述
我猜你指的是你自己制作的非日食Java罐子,是吗? 如果是这样,那是一个完全不同的过程,最适合使用Java标记的单独问题。 Oracle有一个可能有用的指南 。 但请记住,您只需要翻译用户所接触的内容。 因此,将所有用户可见字符串保留在Eclipse插件中的重构可能是个好主意。
你指的是视图/透视的名称吗? 如果是的话,是的。 您也可以翻译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.