## 一、功能描述 提供前后端在请求中得国别进行对应语言的渲染 将国际化语言持久化到mysql提供实时管理,缓存到redis 提供服务模块的快速加载 前端通过api加载完成页面国际化;后端通过redis 快速加载,通过字典注解、工具类完成列表查询内容国际化。 ## 二、代码运行截图: ![输入图片说明](https://git.rzdata.net/rzdata/knowledge-image/raw/branch/master/imgs/2024-03-01/KY7jQVf0wAG6wLBu.png) ## 三、使用方法 1. 以嵌入当前工1. 方式引入在当前 springboot 工程引入 组件包 ``` xml 这里输入代码 net.rzdata rz-i18n 0.0.2-SNAPSHOT ``` 3. 组件包扫描包 ``` java @ComponentScan(basePackages = {"org.example","com.blueland"}) @MapperScan(basePackages = {"org.example","com.blueland.common.core.mapper"}) @EnableAutoConfiguration public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } ​ } ``` 4. 增加配置文件 application.yml ``` yml server: port: 8080 servlet: context-path: /crm-internation session: cookie: name: crm-internation ​ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver username: crm password: crm@123 url: jdbc:mysql://192.168.1.13:3308/crm_usm?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 redis: database: 9 host: 192.168.1.169 password: '' tm: secretId: AKID4IXccMhHdjcJm0wqPjndHhspkbDbGeJz secretKey: aw3v5B3h8OPQO7j8JPGsFNHwMXTAcprf ​ logging: level: com.blueland.common.core: debug mybatis-flex: type-aliases-package: com.blueland.common.core.domain ​ ​ knife4j: enable: true openapi: title: 国际化接口文档 group: test1: group-name: 国际化 api-rule: package api-rule-resources: - com.blueland.common.core.controller ``` 5. 创建数据库表: ```sql CREATE TABLE `t_international` ( `id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '唯一ID', `code` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国际化编码', `name` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', `lang` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '语言', `type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标识(前端:front,后端:back)', `tenant_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '租户号', `create_by` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', KEY `idx_code` (`code`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='国际化'; ``` #### 运行截图: 访问接口文档: 请求接口: ![输入图片说明](https://git.rzdata.net/rzdata/knowledge-image/raw/branch/master/imgs/2024-03-01/HOe9boIBB3vxQX7a.png) #### 前端接入: 请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:front #### 后端接入: 输入图片说明 解析code ``` java MessageSendUtil.send(receiveStaffCode, I18nUtils.getTitle("product.gift_send_notice"), CommonConstant.MESSAGE_TYPE_QYWX, I18nUtils.getTitleFormat(ProductI18nConstant.PRODUCT_GIFT_AUDIT_MSG, stockingApply.getCreateName()), CommonConstant.MESSAGE_CREATEBY_CRM, UserUtils.getTenantId(), stockingApply.getApplyCode()); ``` getTitle: ``` java public static String getTitle(String code) { International international = getByCode(code, "back"); return ObjectUtil.isNull(international) ? code : international.getName(); } ``` 从redis获取内容 ``` java private static International getByCode(String code, String type) { return (International)REDIS_UTILS.hget(getRedisKey(), getHashKey(code, type), International.class); } ```![输入图片说明](/imgs/2024-02-26/MB4dmiMkF7TpxPCk.p 输入图片说明 请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:back ### 2. 以接口的方式调用 #### 前端接入: 参考方式1 前端接入 #### 后端接入: 请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:back