# easy-i18n **Repository Path**: basic-management/easy-i18n ## Basic Information - **Project Name**: easy-i18n - **Description**: 快速、灵活、开箱即用。以springboot为基座的后端国际化模块,致力于帮助开发者便捷实现后端项目国际化。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-10-15 - **Last Updated**: 2024-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy-i18n #### 简介 | Intro 开箱即用的国际化处理框架 #### 软件架构 软件架构说明 #### 使用说明 1. 引入maven依赖 [Latest Version: 1.0.0.beta] ```xml org.yookiee.support easy-i18n Latest Version ``` 2. 配置文件 - yaml配置文件 ```yaml spring: main: # 需要开启此项配置,否则不生效 allow-bean-definition-overriding: true easy-i18n: # 可用值为: local-本地(需要配置classpath: locale/language.properties),redis-等待更新 datasource: local # 系统默认时区和语言 defaultConfig: timezone: Asia/Shanghai language: zh_CN ``` - properties配置 配置recources/easy-locale/locale.properties key命名规则: easy-i18n.作用域(scope).模块(module).标签(label).代码(code) ```properties easy-i18n.java.userSex.#man={ "zh_CN": "男", "en": "man","ja_JP": "男" } ``` 2. 使用示例 - 先定义一个实体 ```java @Data @NoArgsConstructor @AllArgsConstructor @Builder(toBuilder = true) public class UserModel implements Serializable { private String nickName; private String sex; private String region; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") private Date time; } ``` - 使用自动模式转换 ```java @Controller @RequestMapping("/easy-i18n") public class UserController { /** * 返回json类型的数据格式 * @return */ @I18NTrans @PostMapping("/byAuto") @ResponseBody public UserModel getUserInfo() { return UserModel.builder() .nickName("这是用户的别名") .sex("${userSex.#man}") .region("${userRegion.#china}") .time(new Date()) .build(); } /** * 返回简单类型的数据格式 * @return */ @I18NTrans @GetMapping("/getSimpleTranslation") @ResponseBody public String getSimpleTranslation() { return "用户的性别是: ${userSex.#man}"; } } ``` - 使用手动模式转换 手动模式下,会优先使用手动指定的语言类型进行翻译 ```java @Controller @RequestMapping("/test") public class UserController { @Resource I18NManualToolKit i18NManualToolKit; @PostMapping("/byManual") @ResponseBody public UserModel getUserInfoByManual() { //手动对表达式进行翻译 return UserModel.builder() .nickName("这是用户的别名") .sex(i18NManualToolKit.translate("${userSex.#man}", "en")) .region("${userRegion.#china}") .time(new Date()) .build(); } } ``` - 前端发起请求 header头: | key | required | value | remark | |:-----------:|:--------:|:----------------:|:------------------------------------------------:| | X-LANG | false | en | 参照properties配置文件中value的字段名 | | X-TIME-ZONE | true | America/New_York | 参照EasyTimeZone枚举中的timezone,目前只处理了枚举中的数据,如需扩展请自定义 | #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request