多语言(英语、法语、西班牙语、德语、波兰语、阿拉伯语)处理

This commit is contained in:
2026-01-12 09:37:20 +08:00
parent 219caadd45
commit 41f0b72253
113 changed files with 3593 additions and 464 deletions

View File

@ -75,9 +75,4 @@ public interface EventMapper {
List<Integer> eventDeviceNum(@Param("vo") EventNumReq vo);
List<EventVo> selectTableList(@Param("tableName") String tableName, @Param("name") String name, @Param("nameEn") String nameEn);
int updateNameEnById(@Param("id") long id, @Param("tableName") String tableName,@Param("nameEn") String nameEn,@Param("translateName") String translateName);
}

View File

@ -16,11 +16,11 @@ public interface TranslateNameMapper {
List<TranslateName> getDictNation();
TranslateName selectNameEN(@Param("name")String name);
TranslateName selectNameLang(@Param("name")String name);
int insert(@Param("vo")TranslateName vo);
int updateNameEnById(@Param("id") Integer id, @Param("nameEn") String nameEn);
int updateById(@Param("vo") TranslateName vo);
}

View File

@ -1,6 +1,7 @@
package com.ho.flow.service;
import com.ho.business.entity.TranslateName;
import com.ho.business.vo.req.MonitorQuery;
import com.ho.common.tools.entity.SimpleUser;
import com.ho.common.tools.entity.UserDetailRespVO;
@ -97,11 +98,8 @@ public interface EventService {
Map<String,Integer> eventDeviceNum(EventNumReq vo);
/**
* 修改点名称英文
* @return
*/
int updatePointNameEn(String tableName,String name,String nameEn);
TranslateName getNameLanguage(String name);
String getNameByLang(String name,String lang);
String getNameEn(String name);
}

View File

@ -650,7 +650,13 @@ public class EventServiceImpl implements EventService {
//设置为告警数据
snEvent.setIsRecovery(0);
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL);
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
events.add(snEvent);
sendSmsConfigService.sendSms(vo);
} else { //如果告警事件存在且该数据的告警已恢复,则产生告警数据
@ -659,7 +665,13 @@ public class EventServiceImpl implements EventService {
//设置为告警数据
snEvent.setIsRecovery(0);
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL);
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
events.add(snEvent);
sendSmsConfigService.sendSms(vo);
}
@ -683,7 +695,13 @@ public class EventServiceImpl implements EventService {
snEvent.setConfirmTime(new Date());
snEvent.setConfirmMan(FlowConstant.DEFAULT_CONFIRM_MAN);
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL + "恢复");
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
events.add(snEvent);
//确认前一条告警数据
Event beforeEvent = new Event();
@ -763,7 +781,13 @@ public class EventServiceImpl implements EventService {
snEvent.setConfirmMan(FlowConstant.DEFAULT_CONFIRM_MAN);
snEvent.setConfirmTime(updateTime);
snEvent.setDescription(CommonConstant.OutsideEle.SUCCESS);
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
events.add(snEvent);
//确认前一条告警数据
Event beforeEvent = new Event();
@ -953,7 +977,13 @@ public class EventServiceImpl implements EventService {
snEvent.setSignal(sn);
snEvent.setStatus(CommonConstant.STATUS);
snEvent.setDescription(sn + CommonConstant.Heartbeat.SN_FAIL);
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
snEvent.setConfirmStatus(CommonConstant.STATUS);
snEvent.setCreateTime(date);
return snEvent;
@ -981,7 +1011,13 @@ public class EventServiceImpl implements EventService {
snEvent.setSignal(DeviceTypeConstant.OUTSIDE_ELE);
snEvent.setStatus(CommonConstant.STATUS);
snEvent.setDescription(CommonConstant.OutsideEle.FAIL);
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
TranslateName translate = getNameLanguage(snEvent.getDescription());
snEvent.setDescriptionEn(translate.getNameEn());
snEvent.setDescriptionFra(translate.getNameFra());
snEvent.setDescriptionSpa(translate.getNameSpa());
snEvent.setDescriptionDe(translate.getNameDe());
snEvent.setDescriptionPl(translate.getNamePl());
snEvent.setDescriptionAra(translate.getNameAra());
snEvent.setConfirmStatus(CommonConstant.STATUS);
snEvent.setCreateTime(date);
return snEvent;
@ -1169,50 +1205,98 @@ public class EventServiceImpl implements EventService {
}
@Override
public int updatePointNameEn(String tableName,String name,String nameEn) {
int a=0;
//查询所有name_en 为空的数据
List<EventVo> list = eventMapper.selectTableList(tableName,name,nameEn);
for (EventVo vo:list){
if(StringUtil.isNotBlank(vo.getName())){
String translateName = getNameEn(vo.getName());
int resoult=eventMapper.updateNameEnById(vo.getId(),tableName,nameEn,translateName);
a=a+resoult;
}
public String getNameByLang(String name,String lang){
TranslateName translate = getNameLanguage(name);
switch (lang){
case CommonConstant.langTemp.EN_US:
return translate.getNameEn();
case CommonConstant.langTemp.DE_DE:
return translate.getNameDe();
case CommonConstant.langTemp.ES_ES:
return translate.getNameSpa();
case CommonConstant.langTemp.AR_EG:
return translate.getNameAra();
case CommonConstant.langTemp.PL_PL:
return translate.getNamePl();
case CommonConstant.langTemp.FR_FR:
return translate.getNameFra();
case CommonConstant.langTemp.ZH_CN:
return translate.getName();
}
return a;
return null;
}
@Override
public String getNameEn(String name) {
// 查询数据库中有预先翻译的中文字段
public TranslateName getNameLanguage(String name) {
// 英语
String nameEn = null;
TranslateName vo = translateNameMapper.selectNameEN(name);
// 法语
String nameFra = null;
// 西班牙语
String nameSpa = null;
// 德语
String nameDe = null;
// 波兰语
String namePl = null;
// 阿拉伯语
String nameAra = null;
// 查询数据库中 预先翻译的中文字段 语言
TranslateName vo = translateNameMapper.selectNameLang(name);
TranslateName translate = new TranslateName();
boolean flag = false;
if(vo == null){
nameEn = TranslateUtils.translate(name);
nameEn = TranslateUtils.translate(name,CommonConstant.lang.EN);
nameFra = TranslateUtils.translate(name,CommonConstant.lang.FRA);
nameSpa = TranslateUtils.translate(name,CommonConstant.lang.SPA);
nameDe = TranslateUtils.translate(name,CommonConstant.lang.DE);
namePl = TranslateUtils.translate(name,CommonConstant.lang.PL);
nameAra = TranslateUtils.translate(name,CommonConstant.lang.ARA);
// 插入中文预翻译表
TranslateName translate = new TranslateName();
translate.setName(name);
translate.setNameEn(nameEn);
translate.setNameFra(nameFra);
translate.setNameSpa(nameSpa);
translate.setNameDe(nameDe);
translate.setNamePl(namePl);
translate.setNameAra(nameAra);
CompletableFuture.runAsync(()->{
translateNameMapper.insert(translate);
});
return translate;
}else{
if(StringUtil.isEmpty(vo.getNameEn())){
nameEn = TranslateUtils.translate(name);
String finalNameEn = nameEn;
vo.setNameEn(TranslateUtils.translate(name,CommonConstant.lang.EN));
flag = true;
}
if(StringUtil.isEmpty(vo.getNameFra())){
vo.setNameFra(TranslateUtils.translate(name,CommonConstant.lang.FRA));
flag = true;
}
if(StringUtil.isEmpty(vo.getNameSpa())){
vo.setNameSpa(TranslateUtils.translate(name,CommonConstant.lang.SPA));
flag = true;
}
if(StringUtil.isEmpty(vo.getNameDe())){
vo.setNameDe(TranslateUtils.translate(name,CommonConstant.lang.DE));
flag = true;
}
if(StringUtil.isEmpty(vo.getNamePl())){
vo.setNamePl(TranslateUtils.translate(name,CommonConstant.lang.PL));
flag = true;
}
if(StringUtil.isEmpty(vo.getNameAra())){
vo.setNameAra(TranslateUtils.translate(name,CommonConstant.lang.ARA));
flag = true;
}
if(flag){
CompletableFuture.runAsync(()->{
translateNameMapper.updateNameEnById(vo.getId(), finalNameEn);
translateNameMapper.updateById(vo);
});
}else{
nameEn = vo.getNameEn();
}
}
return nameEn;
return vo;
}
}

View File

@ -10,6 +10,21 @@
<when test="record.lang != null and record.lang=='en_US' ">
<include refid="Base_Column_List1"/>
</when>
<when test="record.lang != null and record.lang=='fr_FR' ">
<include refid="Base_Column_List2"/>
</when>
<when test="record.lang != null and record.lang=='es_ES' ">
<include refid="Base_Column_List3"/>
</when>
<when test="record.lang != null and record.lang=='de_DE' ">
<include refid="Base_Column_List4"/>
</when>
<when test="record.lang != null and record.lang=='pl_PL' ">
<include refid="Base_Column_List5"/>
</when>
<when test="record.lang != null and record.lang=='ar_EG' ">
<include refid="Base_Column_List6"/>
</when>
<otherwise>
<include refid="Base_Column_List"/>
</otherwise>
@ -177,6 +192,56 @@
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<sql id="Base_Column_List2">
id
,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id, `signal`,`status`,
value,description_fra description ,confirm_status,
confirm_man,confirm_time,remark,
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<sql id="Base_Column_List3">
id
,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id, `signal`,`status`,
value,description_spa description ,confirm_status,
confirm_man,confirm_time,remark,
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<sql id="Base_Column_List4">
id
,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id, `signal`,`status`,
value,description_de description ,confirm_status,
confirm_man,confirm_time,remark,
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<sql id="Base_Column_List5">
id
,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id, `signal`,`status`,
value,description_pl description ,confirm_status,
confirm_man,confirm_time,remark,
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<sql id="Base_Column_List6">
id
,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id, `signal`,`status`,
value,description_ara description ,confirm_status,
confirm_man,confirm_time,remark,
suggestion,create_time,update_time,
category,type,sub_type,sens_type,is_recovery,before_event_id
</sql>
<select id="selectByPrimaryKey" resultType="com.ho.flow.vo.Event">
@ -343,15 +408,17 @@
id,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id,`signal`,status,
`value`,`description`,description_en,confirm_status,
confirm_man,confirm_time,remark,
`value`,`description`,description_en,
description_fra,description_spa,description_de,description_pl,description_ara,
confirm_status,confirm_man,confirm_time,remark,
suggestion,category,type,sub_type,sens_type,is_recovery,before_event_id
) values(
#{id},#{stationId},#{deptId},#{groupId},
#{eventType},#{eventLevel},#{timeStamp},
#{targetDevice},#{deviceType}, #{deviceTypeId},#{signal},#{status},
#{value},#{description},#{descriptionEn},#{confirmStatus},
#{confirmMan},#{confirmTime},#{remark},
#{value},#{description},#{descriptionEn},
#{descriptionFra},#{descriptionSpa},#{descriptionDe},#{descriptionPl},#{descriptionAra},
#{confirmStatus},#{confirmMan},#{confirmTime},#{remark},
#{suggestion},#{category},#{type},#{subType},#{sensType},#{isRecovery},#{beforeEventId}
)
</insert>
@ -421,8 +488,9 @@
id,station_id,dept_id,group_id,
event_type,event_level,time_stamp,
target_device,device_type, device_type_id,`signal`,status,
`value`,`description`,description_en,confirm_status,
confirm_man,confirm_time,remark,
`value`,`description`,description_en,
description_fra,description_spa,description_de,description_pl,description_ara,
confirm_status,confirm_man,confirm_time,remark,
suggestion,category,type,sub_type,sens_type,is_recovery,before_event_id
)
VALUES
@ -431,8 +499,9 @@
#{item.id},#{item.stationId},#{item.deptId},#{item.groupId},
#{item.eventType},#{item.eventLevel},#{item.timeStamp},
#{item.targetDevice},#{item.deviceType}, #{item.deviceTypeId},#{item.signal},#{item.status},
#{item.value},#{item.description},#{item.descriptionEn},#{item.confirmStatus},
#{item.confirmMan},#{item.confirmTime},#{item.remark},
#{item.value},#{item.description},#{item.descriptionEn},
#{item.descriptionFra},#{item.descriptionSpa},#{item.descriptionDe},#{item.descriptionPl},#{item.descriptionAra},
#{item.confirmStatus},#{item.confirmMan},#{item.confirmTime},#{item.remark},
#{item.suggestion},#{item.category},#{item.type},#{item.subType},#{item.sensType},#{item.isRecovery},#{item.beforeEventId}
)
</foreach>
@ -452,6 +521,21 @@
<if test="event.descriptionEn != null">
description_en = #{event.descriptionEn,jdbcType=VARCHAR},
</if>
<if test="event.descriptionFra != null">
description_fra = #{event.descriptionFra,jdbcType=VARCHAR},
</if>
<if test="event.descriptionSpa != null">
description_spa = #{event.descriptionSpa,jdbcType=VARCHAR},
</if>
<if test="event.descriptionDe != null">
description_de = #{event.descriptionDe,jdbcType=VARCHAR},
</if>
<if test="event.descriptionPl != null">
description_pl = #{event.descriptionPl,jdbcType=VARCHAR},
</if>
<if test="event.descriptionAra != null">
description_ara = #{event.descriptionAra,jdbcType=VARCHAR},
</if>
<if test="event.updateTime != null">
update_time = #{event.updateTime,jdbcType=TIMESTAMP},
</if>
@ -800,13 +884,4 @@
SELECT count(0) faultDevice FROM event where status = 0 and station_id = #{vo.stationId} group by target_device
</select>
<select id="selectTableList" resultType="com.ho.flow.vo.EventVo">
select
id,${name} name
from ${tableName} where (${nameEn} is null or ${nameEn}='') and ${name} is not null
</select>
<update id="updateNameEnById">
update ${tableName} set ${nameEn}=#{translateName} where id = #{id}
</update>
</mapper>

View File

@ -5,26 +5,32 @@
<mapper namespace="com.ho.flow.mapper.TranslateNameMapper">
<sql id="Base_Column_List">
id,`name`,name_en
id,`name`,name_en,name_fra,name_spa,name_de,name_pl,name_ara
</sql>
<select id="getDictNation" resultType="com.ho.business.entity.TranslateName">
select <include refid="Base_Column_List"/> from translate_name
</select>
<select id="selectNameEN" resultType="com.ho.business.entity.TranslateName">
<select id="selectNameLang" resultType="com.ho.business.entity.TranslateName">
select <include refid="Base_Column_List"/> from translate_name where name = #{name} limit 1
</select>
<update id="updateNameEnById">
update translate_name set name_en=#{nameEn} where id = #{id}
<update id="updateById">
update translate_name
set name_en=#{vo.nameEn},name_fra=#{vo.nameFra},
name_spa = #{vo.nameSpa},name_de=#{vo.nameDe},
name_pl = #{vo.namePl},name_ara = #{vo.nameAra}
where id = #{vo.id}
</update>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.ho.business.entity.TranslateName"
useGeneratedKeys="true">
insert into translate_name
( id, name, name_en)
values ( #{vo.id,jdbcType=INTEGER}, #{vo.name,jdbcType=VARCHAR}, #{vo.nameEn,jdbcType=VARCHAR})
( id, name, name_en,name_fra,name_spa,name_de,name_pl,name_ara)
values ( #{vo.id,jdbcType=INTEGER}, #{vo.name,jdbcType=VARCHAR}, #{vo.nameEn,jdbcType=VARCHAR},
#{vo.nameFra,jdbcType=VARCHAR},#{vo.nameSpa,jdbcType=VARCHAR},#{vo.nameDe,jdbcType=VARCHAR},
#{vo.namePl,jdbcType=VARCHAR},#{vo.nameAra,jdbcType=VARCHAR})
</insert>
</mapper>