没有教程提供如何创建和使用国际化插件片段的具体示例。我需要plugin.xml文件和源代码文件的翻译。尝试理解翻译放在哪里,以及国际化门面放在哪里。
1. 该片段如何适用于多插件企业应用程序,更重要的是,所有这些插件如何将其字符串外部化到片段中的适当文件夹中?
2. 那么外部JAR文件呢? 机制如何为外部资源提供翻译支持?
3. 冒着很大的风险,是否可以提供view
或perspective
的独立翻译? 不一定是在运行时,因为我知道bundle不能动态切换。
没有教程提供如何创建和使用国际化插件片段的具体示例。我需要plugin.xml文件和源代码文件的翻译。尝试理解翻译放在哪里,以及国际化门面放在哪里。
1. 该片段如何适用于多插件企业应用程序,更重要的是,所有这些插件如何将其字符串外部化到片段中的适当文件夹中?
2. 那么外部JAR文件呢? 机制如何为外部资源提供翻译支持?
3. 冒着很大的风险,是否可以提供view
或perspective
的独立翻译? 不一定是在运行时,因为我知道bundle不能动态切换。
有一些可用的帮助,这篇文章列出了过程。它基于Eclipse 2.0(!),但基本思想仍然是正确的。 甚至更好的文章是Vogella的这个教程
为了翻译每个插件,您需要创建一个插件片段。片段与一个主机插件相关联,因此您需要多个片段。尽管每个片段可以包含几种语言。如第一篇文章中的步骤5所述,语言由文件夹结构分隔。
我猜您是指非Eclipse Java jar,是吗?如果是这样,那就是完全不同的过程,最好适用于带有Java标记的单独问题。Oracle有可能会有所帮助的指南。但请记住,您只需要翻译用户暴露给的内容。因此,重构以将所有用户可见字符串保留到Eclipse插件可能是一个好主意。
您是否指的是视图/透视的名称?如果是,是的。您也可以将在plugin.xml中提供的信息翻译成其他语言。请参阅Vogellas文章第3章
编辑:
在第三点,我是指选择要翻译的View(例如通过视图菜单),然后重新启动应用程序,然后只有所述视图应该翻译
嗯...我想到了一种在理论上可以工作的方法,但我不确定它是否是最佳选择。 因此,翻译基于区域设置。给定语言环境,将选择某个翻译。如果找不到适当的翻译,则会选择默认值。
因此,如果您的View菜单更改了应用程序的语言环境,例如“ us-en-v1”,并且您只有一个View具有针对语言环境“ us-en-v1”的翻译,那么特定的View将被翻译,但应用程序的其余部分将使用默认值(可能是它们默认回到最接近的翻译,不记得确切内容了)。
然后,对于每个视图,您将创建一个新的翻译并使用唯一的区域设置。
这应该可以工作,但它滥用了翻译应该工作的方式,因此可能会导致问题。
曾经我做过类似的事情,一个应用程序在同一语言中使用,但是不同的客户有不同的词汇。因此,我们使用i18n通过定义自己的地区设置来使应用程序使用正确的术语。
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());
View
(例如通过视图菜单),然后重新启动应用程序,然后只有该视图应该被翻译。 - Georgian