Example.Description = A simple example for localization
Jenkins使用 Localizer库和Maven插件来实现国际化。
其目的是在构建过程中生成与Java .properties
文件组相对应的类,以使代码中的本地化文本可用。
在Jenkins中,Localizer被配置为对名为`Messages.properties`的资源文件(以及针对本地化变体的`Messages_XX.properties`)进行操作。 在Jenkins核心和插件的构建过程中,它从每个`Messages.properties`文件组中生成`Messages`类。
作为示例,请考虑以下资源文件:
src/main/resources/org/example/package/Messages.properties
:
Example.Description = A simple example for localization
src/main/resources/org/example/package/Messages_de.properties
:
Example.Description = Ein einfaches Beispiel f\u00fcr Lokalisierung
第一个文件是_key_“description”的默认本地化(除非有更具体的本地化可用),而第二个文件提供德文本地化。
Localizer将从这些资源文件中生成类似于以下内容的类:
package org.example.package;
public class Messages {
private final static ResourceBundleHolder holder = ResourceBundleHolder.get(Messages.class); (1)
public static String Example_Description() { (2)
return holder.format("Example.Description");
}
public static Localizable _Example_Description() { (3)
return new Localizable(holder, "Example.Description");
}
}
1 | ResourceBundleHolder`是一个包含对本地化 .properties`文件的访问的内部工具类 |
2 | 生成的方法返回+Example.Description+ 属性文件条目的本地化字符串 |
3 | 生成的方法返回+Example.Description+ 属性文件条目的 Localizable 实例 |
生成的方法名称与属性文件中的键相对应(但由于Java标识符约束而不完全匹配。
资源文件中的每个键都会导致产生一对方法:一个返回`String`,另一个返回`Localizable`。
Localizable
是Localizer库提供的一种类型,它允许将消息本地化为特定的区域设置。
然而,这很少需要,因为对 `Messages.Example_Description()`的调用将返回当前语言环境的本地化消息。
如果`Messages.properties`中的值引用占位符,则将使用参数生成静态方法。 请参阅以下示例以获取 `Messages.properties`摘录以及由此生成的一个静态方法。
Messages.properties
内容:
ItemGroupMixIn.may_not_copy_as_it_contains_secrets_and_=May not copy {0} as it contains secrets and {1} has {2}/{3} but not /{4}
生成的源代码:
public static String ItemGroupMixIn_may_not_copy_as_it_contains_secrets_and_(Object arg0, Object arg1, Object arg2, Object arg3, Object arg4) {
return holder.format("ItemGroupMixIn.may_not_copy_as_it_contains_secrets_and_", arg0, arg1, arg2, arg3, arg4);
}
有关本地化消息中参数更高级的用法,请参阅 Advanced Localization.