138 lines
5.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 一、功能描述
提供前后端在请求中得国别进行对应语言的渲染 将国际化语言持久化到mysql提供实时管理缓存到redis 提供服务模块的快速加载 前端通过api加载完成页面国际化后端通过redis 快速加载,通过字典注解、工具类完成列表查询内容国际化。
## 二、代码运行截图:
![输入图片说明](/imgs/2024-02-26/JoOO6kJ0nyi07wY2.png)
## 三、使用方法
1. 以组嵌入当前
1. 方式引入在当前 springboot 工程引入 组件包
``` xml
这里输入代码 <dependency>
<groupId>net.rzdata</groupId>
<artifactId>rz-i18n</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
```
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='国际化';
```
#### 运行截图:![输入图片说明](![输入图片说明](/imgs/2024-02-26/ikb68J8TnjxnFA2y.png) 访问接口文档: ![输入图片说明](/imgs/2024-02-26/JJQNJxHzK0bfeCcd.png)请求接口:
![输入图片说明](/imgs/2024-02-26/cClv3SOuY1urVvZ3.png)
#### 前端接入:
请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:front
![输入图片说明](/imgs/2024-02-26/MB4dmiMkF7TpxPCk.png)
![输入图片说明](/imgs/2024-02-26/cnSNuRM7QVSsljxS.png)
#### 后端接入:
输入图片说明
解析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);
}
```
请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:back
![输入图片说明](/imgs/2024-02-26/t5WiMJ7apx7JQy6B.png)
### 2. 以接口的方式调用
#### 前端接入:
参考方式1 前端接入
#### 后端接入:
请求前端接口:**GET** /crm-internation/international/findLangPackage header: tenantid:MID 参数: type:back
![输入图片说明](/imgs/2024-02-26/t5WiMJ7apx7JQy6B.png)
<!--stackedit_data:
eyJoaXN0b3J5IjpbLTEyMjcxMTI2MDUsMTMzMTgxNjA4MCwxMz
A4MTk1OTI5LC0xMjM5MDg2OTA4LC01MDM2MzI4NzgsMTU4Mzky
MDk3NSw4MDc5MzM3MDUsMTI1NDg0NTM4MiwtNTM1NTg4MTM2LD
E5ODA2MzU5OTEsMTM0MTIzMDk1NF19
-->