dawdler-i18n-core
模块介绍
国际化核心模块,提供注解和动态代理实现国际化资源的注入功能。
1. pom中引入依赖
<groupId>club.dawdler</groupId>
<artifactId>dawdler-i18n-core</artifactId>
2. properties文件说明
国际化资源配置文件需要放置在classpath路径下,文件命名规则为基础名称.properties或基础名称_语言代码.properties。
例如:
- messages.properties (默认语言)
- messages_zh.properties (中文)
- messages_en.properties (英文)
- messages_zh_CN.properties (简体中文)
- messages_en_US.properties (美式英语)
配置文件内容示例(messages.properties):
# 欢迎信息
welcome.message=欢迎使用系统
user.login.success=用户登录成功
error.code.404=页面未找到
配置文件内容示例(messages_en.properties):
# Welcome message
welcome.message=Welcome to the system
user.login.success=User login successful
error.code.404=Page not found
3. I18nInjector注解
用于注入I18nOperator,提供国际化资源的获取功能。
I18nInjector注解中的value传入baseName为资源文件的基础名称(如messages)。
参数说明:
- value: 资源文件的基础名称,不包含语言代码和.properties后缀
具体参考:
dawdler-server-plug-i18n 实现dawdler-server端注入功能.
dawdler-client-plug-i18n 实现web端注入功能.
4. I18nOperator接口
提供获取国际化资源的方法:
String get(String key); // 根据key获取当前语言环境下的资源
String get(String key, Locale locale); // 根据key和指定语言环境获取资源
方法说明:
- get(String key): 根据资源键获取当前语言环境下的资源值
- get(String key, Locale locale): 根据资源键和指定语言环境获取资源值
5. 使用示例
5.1 基本使用方式
以下示例在dawdler托管的组件(如@Service、@Controller标注的类)中通过@I18nInjector注入I18nOperator.
@Service("my-service")
public class MyService {
@I18nInjector("messages") // messages为资源文件的基础名称
private I18nOperator i18nOperator;
public void doSomething() {
// 获取当前语言环境下的资源
String message = i18nOperator.get("welcome.message");
// 获取指定语言环境下的资源
String englishMessage = i18nOperator.get("welcome.message", Locale.ENGLISH);
}
}
5.2 在Web环境中的使用
在Web环境中,语言环境会自动从HTTP请求中获取,无需手动设置。
@Controller
public class UserController {
@I18nInjector("messages") // messages为资源文件的基础名称
private I18nOperator i18nOperator;
@RequestMapping(value = "/welcome", method = RequestMethod.GET)
public String welcome() {
// 自动根据请求中的Accept-Language头获取对应语言的资源
String welcomeMessage = i18nOperator.get("welcome.message");
return welcomeMessage;
}
}
5.3 在服务端环境中的使用
@Service
public class UserServiceImpl implements UserService {
@I18nInjector("messages") // messages为资源文件的基础名称
private I18nOperator i18nOperator;
public String getUserWelcomeMessage(String userId) {
// 在服务端环境中,可以指定语言环境
String message = i18nOperator.get("user.login.success");
return message;
}
}