这是一个很好用的golang代码文件,可以帮助将ICU这种多语言的替代符号,直接转换成中文原版的文字。前提是已经从语言res文件中将中文预先提取出来。
这是替换后的样子,简洁明了,修改也非常容易。
注意:因为golang默认是uft8的,需要将文件另存为utf8编码,替换后的文件,还需要手动转存为gb2312编码才能正确使用。
下面是实现这个功能的golang代码文件:
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
spath := "E:/HDW2/hdw21-4/Tools/hdwgo/luaicu/files/NpcScript05.lua"
spath2 := "E:/HDW2/hdw21-4/Tools/hdwgo/luaicu/files/new/NpcScript05.lua"
file, err := os.Open(spath)
if err != nil {
fmt.Println("无法打开文件:", err)
return
}
defer file.Close()
filedata, err := io.ReadAll(file)
if err != nil {
fmt.Println("file error")
return
}
filestr := string(filedata)
strlt := strings.Split(filestr, "\r\n")
strlen := len(strlt)
lualt := make([]string, 0)
for i := 0; i < strlen; i++ {
linestr := strlt[i]
linestr2 := strings.TrimSpace(linestr)
linestr2 = strings.ReplaceAll(linestr2, " ", "")
linestr2 = strings.ReplaceAll(linestr2, "\t", "")
if (strings.HasPrefix(linestr2, "--MISSCRIPT_") || strings.HasPrefix(linestr2, "MISSCRIPT_") || strings.HasPrefix(linestr2, "BIRTH_BIRTH") || strings.HasPrefix(linestr2, "CALCULATE_") || strings.HasPrefix(linestr2, "HELP_MONSTERHELP")) && strings.Contains(linestr2, "_LUA_") && strings.Contains(linestr2, "=") {
lualt = append(lualt, linestr)
}
}
xinlt := make(map[string]string, 0)
lualen := len(lualt)
for i := 0; i < lualen; i++ {
luastr := lualt[i]
luastr2 := strings.TrimSpace(luastr)
lt2 := strings.Split(luastr2, "=")
keystr := strings.TrimSpace(lt2[0])
valstr := strings.TrimSpace(lt2[1])
if strings.HasPrefix(keystr, "--") {
keystr = strings.Replace(keystr, "--", "", 1)
keystr = strings.TrimSpace(keystr)
}
xinlt[keystr] = valstr
rtstr := luastr + "\r\n"
filestr = strings.Replace(filestr, rtstr, "", -1)
}
for k, v := range xinlt {
filestr = strings.Replace(filestr, k, v, -1)
}
fileName := spath2
dstFile, err := os.Create(fileName)
if err != nil {
fmt.Println(err.Error())
return
}
defer dstFile.Close()
dstFile.WriteString(filestr)
fmt.Println("run ok")
}