多语言/国际化工具 Translator
简化您的多语言应用开发 —— Translator
,精心设计的接口,在 Spring
的国际化功能(MessageSource
)基础上升级,使用更简单、便捷。
配置
在您的 resources
目录下添加 language/zh_CN/loginpage.properties
i18n.page.button.login=您好,{}!
使用
@Autowried
private Translator translator;
// 返回:您好,shoulder!
// 若以上配置未完成,返回 welcome, shoulder
public String genHelloTip() {
String msg = "i18n.page.button.login";
String userName = "shoulder";
// 无需传入语言,默认从上下文中取 AppContext.getLocaleOrDefault()
return translator.getMessageOrDefault(msg, "welcome, {}", userName);
}
亮点
-
去除资源文件命名限制:命名无须为
messages_
,Shoulder
允许您更自由地命名以更方便的按模块管理您的多语言文件。 -
语言自动识别:根据当前用户设置或系统默认值自动选择合适的语言环境([_运行上下文_appcontext]),实现上下文感知,高度个性化的翻译。
-
简化的方法签名:提供
getMessageOrDefault
方法,允许指定默认值,避免因找不到翻译而中断程序。 -
链式调用友好:默认值和参数化的翻译方法,支持直接使用或结合参数动态生成消息。
-
智能默认处理:当特定翻译不可用时,立即回退到提供的默认消息,保证应用流畅运行。
-
改良的资源文件目录:让多语言资源文件的管理更轻松。
NOTE: .去除资源文件命名限制
无资源文件命名限制, Spring
/ JDK
要求翻译文件命名必须为 messages_
,—— 这陈旧的规则完全没必要,Shoulder
允许您更自由地命名以更方便的按模块管理您的多语言文件,如 user.properties
dictionary.properties
,这在大型的项目中更加容易开发、管理和维护。
使用场景
-
在用户界面显示动态文本,确保不同地区用户看到的是其本地语言。
-
实现多语言邮件、通知模板,提升用户体验。
通过 Translator
,开发者可以快速实现国际化功能,减少样板代码,使应用更加国际化,满足全球用户的需要。立即探索,让您的应用跨越语言障碍!
测试时确保 i18nKey 存在和有效性,避免 NoSuchMessageException 。
|
多个资源文件加载优先级
Shoulder
对多语言的底层支持完全由 Spring
实现,故参考 Spring
ReloadableResourceBundleMessageSource
的资源文件加载顺序即可:
默认会根据传入 Locale
,按以下顺序尝试加载
-
资源名_语言_地区_变种
-
资源名_语言_地区
-
资源名_语言
-
使用当前操作系统语言再次尝试加载一轮(
spring.messages.fallback-to-system-locale=true
) -
资源名_语言_地区_变种
-
资源名_语言_地区
-
资源名_语言
-
使用不带语言标识加载一次【Shoulder】
翻译建议
|