为本地化准备一个Java源文件

查看可用的开发人员指南索引

本指南解释了如何在Jenkins核心中准备Java源文件或本地化插件。必威国际有限公司

步骤1:识别信息

首先,我们需要确定应该翻译的可本地化字符串。通常情况下,任何用户界面上显示的所有内容都应该国际化(即准备以用户语言进行本地化)。

从历史上看,从记录器写入Jenkins服务器日志文件的日志消息没有翻译,但也可以翻译。必威国际有限公司

让我们考虑下面这个示例HelloWorldBuilder

HelloWorldBuilder.java(摘录)
公共FormValidation doCheckName (@QueryParameter字符串值)抛出IOExceptionServletException {如果(value.length () = =0返回FormValidation.error (请设置一个名称);(1)如果(value.length () <4返回FormValidation.warning (名字是不是太短了?);(2)返回FormValidation.ok ();}……/** *这个人类可读的名称在配置屏幕中使用。*/公共字符串getDisplayName () {返回世界问好(3)@Override公共布尔配置(StaplerRequest req, JSONObject formData)抛出FormException {//保存全局配置信息//将其设置为properties并调用save()。useFrench = formData.getBoolean (useFrench);(4)^也可以使用req。bindJSON(这个,formData);//当有很多字段时更容易;需要设置*方法,如setusfrench)save ();返回超级.configure(点播,formData);}
1 这个字符串应该被国际化,因为它被用作表单验证响应。
2 这个字符串也应该国际化,因为它是另一个表单验证响应。
3. 这是UI上构建步骤的显示名称,也应该国际化。
4 这是表单配置选项的内部标识符,不能国际化。

第二步:准备Messages.properties文件

看到IDE配置为插件,使这和下面的步骤更容易。

默认语言(通常是英语)的本地化字符串,除非它们在同一组件中重用,否则通常会添加到Messages.properties文件与使用它的类在同一个包中。

不要引用其他组件(例如核心组件)消息类。他们通常不认为他们的本地化消息是稳定的API,所以如果他们改变消息,你的插件可能会崩溃。

使用默认的Maven项目布局HelloWorldBuilder类存储在源文件中src / main / java 必威国际有限公司/ org/jenkinsci/plugins/example/HelloWorldBuilder.java会使用资源文件中的本地化字符串吗src / main /资源/ org/jen必威国际有限公司kinsci/plugins/example/Messages.properties(基本上,在同一个包中)。如果该文件不存在,则创建该文件。

现在,让我们为上面标识的可本地化字符串添加条目:

Messages.properties
HelloWorldBuilder。没有名字=Please set a name(1)HelloWorldBuilder。短= \(2)名字是不是太短了?(3)#上面这一行的Unicode变体:(4)这个名字是不是太短了?(5)HelloWorldBuilder。DisplayName =世界问好
1 这将设置键的值HelloWorldBuilder。没有名字.虽然密钥可以自由选择,但通常最好指明在哪里使用它,因为多个文件可能共享同一个密钥Messages.properties文件。这也是IntelliJ IDEA和NetBeans的订书机插件生成的格式。
2 换行符通常对很长的值很有用,例如使用说明,可以用反斜杠转义。请确保不要在后面添加空格。
3. 在属性文件中,单引号需要用另一个单引号转义。另外,这里也可以使用Unicode撇号。
4 性格是注释。
5 .properties文件的文件编码是ISO-8859-1(拉丁文1),所以不在这个字符集中的字符需要使用它们的Unicode码位指定,例如。\ u2019撇号。

步骤3:构建项目一次

将新条目添加到任意Messages.properties文件(或重命名现有的文件),需要重新构建项目,以便本地化人员可以从中生成源代码。虽然我们可以在源代码中引用它们,但我们只得到一次自动完成消息类已生成。

步骤4:参考消息字符串

在代码生成运行之后,我们可以将对生成类的引用添加到源代码中。例子:

HelloWorldBuilder.java(摘录)
公共FormValidation doCheckName (@QueryParameter字符串值)抛出IOExceptionServletException {如果(value.length () = =0返回FormValidation.error (Messages.HelloWorldBuilder_NoName ());如果(value.length () <4返回FormValidation.warning (Messages.HelloWorldBuilder_ShortName ());返回FormValidation.ok ();}

如果你的IDE没有提供自动完成,即使在构建项目一次后,确保本地化器的输出文件夹,目标/生成的源代码/定位器,并将其识别为包含生成的源代码的目录。

参考文献