|
@@ -258,6 +258,7 @@ func DayNewTranslateContent() (err error) {
|
|
|
count := 0
|
|
|
contentMap := make(map[string]string, 0)
|
|
|
contentEnMap := make(map[string]string)
|
|
|
+ var ups []interface{}
|
|
|
for _, v := range list {
|
|
|
//如果单条翻译的字符数超过1000,则直接翻译,否则批量翻译
|
|
|
if len(v.Content) > 1000 {
|
|
@@ -267,7 +268,8 @@ func DayNewTranslateContent() (err error) {
|
|
|
return
|
|
|
}
|
|
|
needChangeIds += strconv.Itoa(int(v.Id)) + ","
|
|
|
- multi += ` WHEN `+strconv.Itoa(int(v.Id))+` THEN "`+ en +`"`
|
|
|
+ multi += ` WHEN `+strconv.Itoa(int(v.Id))+` THEN ?`
|
|
|
+ ups = append(ups, en)
|
|
|
}else{
|
|
|
if count >= 50 { //待翻译的条数不能超过50; 单条翻译字符数不能超过1000字符
|
|
|
contentEnMap, err = batchTranslateHandler(contentMap)
|
|
@@ -277,12 +279,13 @@ func DayNewTranslateContent() (err error) {
|
|
|
// 拼接更新sql
|
|
|
for rk, rv := range contentEnMap {
|
|
|
needChangeIds += rk + ","
|
|
|
- multi += ` WHEN `+rk+` THEN "`+ rv +`"`
|
|
|
+ multi += ` WHEN `+rk+` THEN ?`
|
|
|
+ ups = append(ups, rv)
|
|
|
}
|
|
|
contentMap = make(map[string]string, 0)
|
|
|
count = 0
|
|
|
}
|
|
|
- contentMap[strconv.Itoa(int(v.Id))] = v.Content
|
|
|
+ contentMap[strconv.Itoa(int(v.Id))] = dealPunctuationToEn(v.Content)
|
|
|
count += 1
|
|
|
}
|
|
|
}
|
|
@@ -295,13 +298,14 @@ func DayNewTranslateContent() (err error) {
|
|
|
// 拼接更新sql
|
|
|
for rk, rv := range contentEnMap {
|
|
|
needChangeIds += rk + ","
|
|
|
- multi += ` WHEN `+rk+` THEN "`+ rv +`"`
|
|
|
+ multi += ` WHEN `+rk+` THEN ?`
|
|
|
+ ups = append(ups, rv)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if needChangeIds != "" {
|
|
|
needChangeIds = strings.Trim(needChangeIds, ",")
|
|
|
- err = day_new.MultiUpdateContentEn(multi, needChangeIds)
|
|
|
+ err = day_new.MultiUpdateContentEn(multi, needChangeIds, ups)
|
|
|
if err != nil {
|
|
|
err = errors.New(fmt.Sprintf("更新翻译后的内容失败 err: %v", err))
|
|
|
return
|
|
@@ -319,5 +323,46 @@ func batchTranslateHandler(contentMap map[string]string) (contentEnMap map[strin
|
|
|
}
|
|
|
//json转为map数据结构
|
|
|
err = json.Unmarshal([]byte(en), &contentEnMap)
|
|
|
+ for k, v := range contentEnMap {
|
|
|
+ contentEnMap[k] = strings.ReplaceAll(v,`{quot}`, `"`)
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+var punctuationMap = map[rune]rune{
|
|
|
+
|
|
|
+ 8216: 34, // '
|
|
|
+
|
|
|
+ 8217: 34, // '
|
|
|
+
|
|
|
+ 8220: 34, // " //把“符号转换成
|
|
|
+
|
|
|
+ 8221: 34, // " //把”符号转换成
|
|
|
+
|
|
|
+ 12298: 34, // " //把《 符号转换成
|
|
|
+
|
|
|
+ 12299: 34, // " //把 》符号转换成
|
|
|
+
|
|
|
+ 12304: 91, // [ //把【 符号转换成
|
|
|
+
|
|
|
+ 12305: 93, // ] //把 】符号转换成
|
|
|
+
|
|
|
+ 12302: 91, // [ //把『符号转换成
|
|
|
+
|
|
|
+ 12303: 93, // ] //把 』符号转换成
|
|
|
+}
|
|
|
+
|
|
|
+func dealPunctuationToEn(text string) string {
|
|
|
+ text = strings.Map(func(r rune) rune {
|
|
|
+
|
|
|
+ if v, ok := punctuationMap[r]; ok {
|
|
|
+ return v
|
|
|
+
|
|
|
+ }
|
|
|
+ return r
|
|
|
+
|
|
|
+ }, text)
|
|
|
+ text = strings.ReplaceAll(text,`"`,`{quot}`)
|
|
|
+ return text
|
|
|
+}
|
|
|
+
|