fix: 多语言翻译值转化key进行查询

This commit is contained in:
TsMask
2024-03-25 12:01:08 +08:00
parent 5a5f486031
commit 8332fc432a
7 changed files with 56 additions and 20 deletions

View File

@@ -3,6 +3,7 @@ package i18n
import (
"fmt"
"regexp"
"strings"
systemService "nms_cxy/src/modules/system/service"
)
@@ -70,6 +71,26 @@ func UpdateKeyValue(language, key, value string) bool {
return false
}
// TFindKeyPrefix 翻译值查找键 值前缀匹配
func TFindKeyPrefix(language, keyPrefix, value string) string {
key := value
if value == "" {
return key
}
arr, ok := localeMap[language]
if !ok || len(arr) == 0 {
arr = LoadLocaleData(language)
}
for _, v := range arr {
if strings.HasPrefix(v.Key, keyPrefix) && strings.HasPrefix(v.Value, value) {
key = v.Key
break
}
}
return key
}
// TKey 翻译键
func TKey(language, key string) string {
value := key

View File

@@ -38,12 +38,17 @@ type SysDictDataController struct {
//
// GET /list
func (s *SysDictDataController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.sysDictDataService.SelectDictDataPage(querys)
rows := data["rows"].([]model.SysDictData)
// 闭包函数处理多语言
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)
// 多语言值转key查询
if v, ok := querys["dictLabel"]; ok && v != "" {
querys["dictLabel"] = i18n.TFindKeyPrefix(language, "dictData", v.(string))
}
data := s.sysDictDataService.SelectDictDataPage(querys)
rows := data["rows"].([]model.SysDictData)
// 闭包函数处理多语言
converI18n := func(language string, arr *[]model.SysDictData) {
for i := range *arr {
if strings.Contains((*arr)[i].DictType, "i18n") {

View File

@@ -36,12 +36,17 @@ type SysDictTypeController struct {
//
// GET /list
func (s *SysDictTypeController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.sysDictTypeService.SelectDictTypePage(querys)
rows := data["rows"].([]model.SysDictType)
// 闭包函数处理多语言
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)
// 多语言值转key查询
if v, ok := querys["dictName"]; ok && v != "" {
querys["dictName"] = i18n.TFindKeyPrefix(language, "dictType", v.(string))
}
data := s.sysDictTypeService.SelectDictTypePage(querys)
rows := data["rows"].([]model.SysDictType)
// 闭包函数处理多语言
converI18n := func(language string, arr *[]model.SysDictType) {
for i := range *arr {
(*arr)[i].DictName = i18n.TKey(language, (*arr)[i].DictName)

View File

@@ -35,12 +35,17 @@ type SysLogOperateController struct {
//
// GET /list
func (s *SysLogOperateController) List(c *gin.Context) {
querys := ctx.QueryMap(c)
data := s.SysLogOperateService.SelectSysLogOperatePage(querys)
rows := data["rows"].([]model.SysLogOperate)
// 闭包函数处理多语言
language := ctx.AcceptLanguage(c)
querys := ctx.QueryMap(c)
// 多语言值转key查询
if v, ok := querys["title"]; ok && v != "" {
querys["title"] = i18n.TFindKeyPrefix(language, "log.operate.title", v.(string))
}
data := s.SysLogOperateService.SelectSysLogOperatePage(querys)
rows := data["rows"].([]model.SysLogOperate)
// 闭包函数处理多语言
converI18n := func(language string, arr *[]model.SysLogOperate) {
for i := range *arr {
(*arr)[i].Title = i18n.TKey(language, (*arr)[i].Title)

View File

@@ -69,7 +69,7 @@ func (r *SysDictDataImpl) SelectDictDataPage(query map[string]any) map[string]an
}
if v, ok := query["dictLabel"]; ok && v != "" {
conditions = append(conditions, "dict_label like concat(?, '%')")
params = append(params, v)
params = append(params, strings.TrimSpace(v.(string)))
}
if v, ok := query["status"]; ok && v != "" {
conditions = append(conditions, "status = ?")

View File

@@ -62,11 +62,11 @@ func (r *SysDictTypeImpl) SelectDictTypePage(query map[string]any) map[string]an
var params []any
if v, ok := query["dictName"]; ok && v != "" {
conditions = append(conditions, "dict_name like concat(?, '%')")
params = append(params, v)
params = append(params, strings.TrimSpace(v.(string)))
}
if v, ok := query["dictType"]; ok && v != "" {
conditions = append(conditions, "dict_type like concat(?, '%')")
params = append(params, v)
params = append(params, strings.TrimSpace(v.(string)))
}
if v, ok := query["status"]; ok && v != "" {
conditions = append(conditions, "status = ?")

View File

@@ -69,7 +69,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any) map[st
var params []any
if v, ok := query["title"]; ok && v != "" {
conditions = append(conditions, "title like concat(?, '%')")
params = append(params, v)
params = append(params, strings.TrimSpace(v.(string)))
}
if v, ok := query["businessType"]; ok && v != "" {
conditions = append(conditions, "business_type = ?")
@@ -77,7 +77,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any) map[st
}
if v, ok := query["operName"]; ok && v != "" {
conditions = append(conditions, "oper_name like concat(?, '%')")
params = append(params, v)
params = append(params, strings.TrimSpace(v.(string)))
}
if v, ok := query["status"]; ok && v != "" {
conditions = append(conditions, "status = ?")