HJ_Client/deduplicateLanguage/replaceLanguageTW.js
DESKTOP-15R5JU0\legu 62fef0360c init
2023-11-17 14:13:11 +08:00

209 lines
6.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require('fs');
let iKey = "tw"
var languageSrcPath = __dirname + "/language/src/" + iKey + "/"
var languageDistPath = __dirname + "/language/dist/" + iKey + "/"
var languageFilterKeyPath = __dirname + "/language/fliterkey/filterkey.json"
var languageFullKeyPath = __dirname + "/language/fliterkey/fullkeys.json"
var languagecpkeyPath = __dirname + "/language/fliterkey/cpkeys.json"
var languageMap = {}
var pathInfor = []
var dirtyKeyJson = null
var cpKeyJson = null
var isChinese = (temp) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g")
if (reg.test(temp)) {
return true
} else {
return false
}
}
var beautifyJson = (str) => {
// try {
// // 设置缩进为2个空格
// str = JSON.stringify(JSON.parse(str), null, 2);
// str = str
// .replace(/&/g, '&')
// .replace(/</g, '&lt;')
// .replace(/>/g, '&gt;');
// return str.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
// var cls = 'number';
// if (/^"/.test(match)) {
// if (/:$/.test(match)) {
// cls = 'key';
// } else {
// cls = 'string';
// }
// } else if (/true|false/.test(match)) {
// cls = 'boolean';
// } else if (/null/.test(match)) {
// cls = 'null';
// }
// return match;
// });
// } catch (e) {
// alert("异常信息:" + e);
// }
return str
}
var initLaguage = () => {
languageMap['en'] = 'en.json'
languageMap['ja'] = 'ja.json'
languageMap['kr'] = 'kr.json'
languageMap['tw'] = 'tw.json'
languageMap['zh'] = 'zh.json'
languageMap['zh_test'] = 'zh_test.json'
pathInfor = [{
name: languageSrcPath + languageMap[iKey],
content: ''
}, //最新即将被翻译过要替换的src(被翻译过的)
{
name: languageDistPath + languageMap[iKey],
content: ''
}, //被翻译的语言zh完整的
]
}
var replaceValue = () => {
var scrJson = JSON.parse(pathInfor[0].content) //被翻译的json
var distJson = JSON.parse(pathInfor[1].content) //需要更新替换json
//多key-多value, 源文件 CP方发过来的
let srcMap = {}
for (const key in scrJson) {
if (Object.prototype.hasOwnProperty.call(scrJson, key)) {
srcMap[key] = scrJson[key]
}
}
//唯一key-value
let distMap = {}
for (const key in distJson) {
if (Object.prototype.hasOwnProperty.call(distJson, key)) {
distMap[key] = distJson[key]
}
}
for (const key in srcMap) {
if (dirtyKeyJson && distMap[key] && srcMap[key] && !dirtyKeyJson[key]) distMap[key] = srcMap[key]
}
//补充字段
var fillValue = (keysArray) => {
var value = null
for (let index = 0; index < keysArray.length; index++) {
const keyE = keysArray[index];
var key_value = srcMap[keyE] || distMap[keyE]
if (key_value && !value) {
value = key_value;
index = -1
}
if (value) {
distMap[keyE] = value
fullkeys[keyE] = {}
}
}
}
var fillSameKey =(keysArray, value)=>{
for (let index = 0; index < keysArray.length; index++) {
const keyE = keysArray[index];
distMap[keyE] = value
fullkeys[keyE] = {}
}
}
if (fullkeys && cpKeyJson) {
for (const keyF in fullkeys) {
if (Object.hasOwnProperty.call(fullkeys, keyF)) {
const fulleleArray = fullkeys[keyF];
for (let index = 0; index < fulleleArray.length; index++) {
const keyE = fulleleArray[index];
if (!distMap[keyE]) {
fillValue(fulleleArray)
break;
} else {
if(cpKeyJson[keyE]) fillSameKey(fulleleArray, scrJson[keyE])
}
}
}
}
}
//产生要替换的Json文件
var jsMapstr = JSON.stringify(distMap)
fs.writeFile(languageDistPath + languageMap[iKey], (jsMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
console.log('文件写入成功!');
})
}
var readLanguae = (name, cb) => {
fs.readFile(name, 'utf8', function (err, dataStr) {
if (err) {
console.log(err); // 打印失败的结果
return
}
cb && cb(dataStr)
})
}
var count = 0
var readJson = (iKey, cb) => {
readLanguae(pathInfor[count].name, (jsondatastr) => {
pathInfor[count].content = jsondatastr
count = count + 1
if (count >= 2) {
cb && cb()
} else {
readJson(iKey, cb)
}
})
}
var readFullKey = (cb) => {
readLanguae(languageFullKeyPath, (fullkeysstr) => {
let fullkeyJson = JSON.parse(fullkeysstr)
if (fullkeysstr) fullkeys = {}
for (const key in fullkeyJson) {
if (Object.hasOwnProperty.call(fullkeyJson, key)) {
const keysArray = fullkeyJson[key] || [];
for (let index = 0; index < keysArray.length; index++) {
const elementkey = keysArray[index];
fullkeys[elementkey] = keysArray
}
}
}
cb && cb()
})
}
var readDirtyKey = (cb) => {
readLanguae(languagecpkeyPath, (dataStr) => {
cpKeyJson = JSON.parse(dataStr)
readLanguae(languageFilterKeyPath, (dataStr) => {
dirtyKeyJson = JSON.parse(dataStr)
cb && cb()
})
})
}
var main = () => {
initLaguage()
readFullKey(() => {
readDirtyKey(() => {
readJson(iKey, () => {
replaceValue()
})
})
})
}
main();