You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

298 lines
5.7 KiB
Go

package lang
import (
"joybuywork/internal/repository/mtype"
"joybuywork/internal/utils/verify"
"encoding/json"
"fmt"
"os"
"strings"
"testing"
)
var aa = map[string]string{
"德语": "de",
"英语": "en",
"西班牙语": "es",
"法语": "fr",
"印尼语": "id",
"意大利语": "it",
"日语": "ja",
"韩语": "ko",
"葡萄牙语": "pt",
"俄语": "ru",
"泰语": "th",
"土耳其语": "tr",
"中文": "zh",
"繁体中文": "zh-TW",
"越南语": "vi",
"匈牙利语": "hu",
"荷兰语": "nl",
"波兰语": "pl",
"罗马尼亚语": "ro",
}
func TestName(t *testing.T) {
var data = `德语: Herzlichen Glückwunsch!
西班牙语: ¡Felicidades!
法语: Félicitations !
印尼语: Selamat!
意大利语: Congratulazioni!
日语: おめでとうございます!
韩语: 축하합니다!
葡萄牙语: Parabéns!
俄语: Поздравляю!
泰语: ขอแสดงความยินดี!
土耳其语: Tebrikler!
繁体中文: 恭喜!
越南语: Chúc mừng!
匈牙利语: Gratulálok!`
entrys, err := os.ReadDir("./")
if err != nil {
return
}
var langData = make(map[string]map[string]string)
for _, entry := range entrys {
if !strings.HasSuffix(entry.Name(), ".json") {
continue
}
mark, _ := strings.CutSuffix(entry.Name(), ".json")
_, ok := mtype.MarkToLangType[mark]
if !ok {
continue
}
var ddd = make(map[string]string)
var b []byte
b, err = os.ReadFile(entry.Name())
if err != nil {
return
}
_ = json.Unmarshal(b, &ddd)
langData[mark] = ddd
}
ak := "congrats"
var arr = strings.Split(data, "\n")
for _, v := range arr {
key, val, _ := strings.Cut(v, ":")
mark := aa[strings.TrimSpace(key)]
if _, ok := langData[mark][ak]; !ok {
file, _ := os.OpenFile(mark+".json", os.O_RDWR|os.O_TRUNC, 0666)
langData[mark][ak] = strings.TrimSpace(val)
adata, _ := json.Marshal(langData[mark])
file.Write(adata)
file.Close()
fmt.Printf("%s: %s->%s \n", key, ak, langData[mark][ak])
}
}
}
func TestRemoveKey(t *testing.T) {
entrys, err := os.ReadDir("./")
if err != nil {
return
}
var keys = []string{"help_wait"}
var langData = make(map[string]map[string]string)
for _, entry := range entrys {
if !strings.HasSuffix(entry.Name(), ".json") {
continue
}
mark, _ := strings.CutSuffix(entry.Name(), ".json")
_, ok := mtype.MarkToLangType[mark]
if !ok {
continue
}
var ddd = make(map[string]string)
var b []byte
b, err = os.ReadFile(entry.Name())
if err != nil {
return
}
_ = json.Unmarshal(b, &ddd)
for _, key := range keys {
delete(ddd, key)
}
langData[mark] = ddd
}
for mark, data := range langData {
if verify.InArray(mark, "en", "zh", "ar") {
continue
}
file, _ := os.OpenFile(mark+".json", os.O_RDWR|os.O_TRUNC, 0666)
adata, _ := json.Marshal(data)
file.Write(adata)
file.Close()
}
}
func TestCopyKey(t *testing.T) {
entrys, err := os.ReadDir("./")
if err != nil {
return
}
var key = map[string]string{
"help_fail": "distribution_failed",
}
var langData = make(map[string]map[string]string)
for _, entry := range entrys {
if !strings.HasSuffix(entry.Name(), ".json") {
continue
}
mark, _ := strings.CutSuffix(entry.Name(), ".json")
_, ok := mtype.MarkToLangType[mark]
if !ok {
continue
}
var ddd = make(map[string]string)
var b []byte
b, err = os.ReadFile(entry.Name())
if err != nil {
return
}
_ = json.Unmarshal(b, &ddd)
for cp, to := range key {
_, ok1 := ddd[cp]
if !ok1 {
t.Logf("[%s]没有[%s]", mark, cp)
continue
}
ddd[to] = ddd[cp]
}
langData[mark] = ddd
}
for mark, data := range langData {
if verify.InArray(mark, "en", "zh", "ar", "zh-TW") {
continue
}
file, _ := os.OpenFile(mark+".json", os.O_RDWR|os.O_TRUNC, 0666)
adata, _ := json.Marshal(data)
file.Write(adata)
file.Close()
}
}
func TestCopyCampaignKey(t *testing.T) {
entrys, err := os.ReadDir("./")
if err != nil {
return
}
var key = map[string]string{
"next_week_do": "next_week_do",
"week_do_1": "week_do_1",
"week_do_2": "week_do_2",
"week_do_3": "week_do_3",
"week_do_4": "week_do_4",
"week_do_5": "week_do_5",
"week_do_6": "week_do_6",
"week_do_7": "week_do_7",
}
var langData = make(map[string]map[string]string)
for _, entry := range entrys {
if !strings.HasSuffix(entry.Name(), ".json") {
continue
}
mark, _ := strings.CutSuffix(entry.Name(), ".json")
_, ok := mtype.MarkToLangType[mark]
if !ok {
continue
}
var ddd = make(map[string]string)
var b []byte
b, err = os.ReadFile(entry.Name())
if err != nil {
return
}
_ = json.Unmarshal(b, &ddd)
var source = make(map[string]string)
var sb []byte
sb, err = os.ReadFile(fmt.Sprintf("../campaign/lang/%s.json", mark))
if err != nil {
return
}
_ = json.Unmarshal(sb, &source)
for cp, to := range key {
_, ok1 := source[cp]
if !ok1 {
t.Logf("[%s]没有[%s]", mark, cp)
continue
}
ddd[to] = source[cp]
}
langData[mark] = ddd
}
for mark, data := range langData {
file, _ := os.OpenFile(mark+".json", os.O_RDWR|os.O_TRUNC, 0666)
adata, _ := json.Marshal(data)
file.Write(adata)
file.Close()
}
}
func TestUpdateKey(t *testing.T) {
var fname = "./es.json"
b, err := os.ReadFile(fname)
if err != nil {
t.Log(err)
return
}
var ddd = make(map[string]string)
_ = json.Unmarshal(b, &ddd)
val := "Girar"
key := []string{"spin", "lottery"}
var do bool
for _, v := range key {
old, ok := ddd[v]
if !ok || old == val {
continue
}
ddd[v] = val
do = true
fmt.Printf("%s: %s->%s \n", v, old, val)
}
if !do {
t.Log("not done ")
return
}
file, _ := os.OpenFile(fname, os.O_RDWR|os.O_TRUNC, 0666)
adata, _ := json.Marshal(ddd)
file.Write(adata)
file.Close()
}