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

141 lines
4.2 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');
var languageSrcPath = __dirname + "/language/src/"
var languageDistPath = __dirname + "/language/dist/"
var keyMapPrefex = '_keyMap.json'
var languageMap = []
var pathInfor = []
var count = 0
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.push({name: 'en', file: 'en.json'})
languageMap.push({name: 'ja', file: 'ja.json'})
languageMap.push({name: 'kr', file: 'kr.json'})
languageMap.push({name: 'tw', file: 'tw.json'})
languageMap.push({name: 'zh', file: 'zh.json'})
}
var replaceValue = (ikeyIndex) => {
let languageJson = pathInfor[ikeyIndex]
var scrJson = JSON.parse(languageJson[0].content) //被翻译的json
var distJson = JSON.parse(languageJson[1].content) //需要更新替换json
var keyValueJson = JSON.parse(languageJson[2].content) //key-map
//多key-多value, 源文件
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]
}
}
//key集合
let keyValueMap = {}
for (const key in keyValueJson) {
if (Object.prototype.hasOwnProperty.call(keyValueJson, key)) {
keyValueMap[key] = keyValueJson[key]
}
}
for (const key in srcMap) {
let getMultKey = (keyV) => {
for (const key in keyValueMap) {
if (Object.prototype.hasOwnProperty.call(keyValueMap, key)) {
let keysArrays = keyValueMap[key]
if (keysArrays.indexOf(keyV) >= 0) {
return keyValueMap[key]
}
}
}
return []
}
let newValue = srcMap[key]
let keysArray = getMultKey(key)
for (let index = 0; index < keysArray.length; index++) {
distMap[keysArray[index]] = newValue
}
}
//产生要替换的Json文件
var jsMapstr = JSON.stringify(distMap)
fs.writeFile(languageDistPath + languageMap[ikeyIndex].name, beautifyJson(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
}
console.log(dataStr); // 打印成功的结果
cb && cb(dataStr)
})
}
var readJson = (icount, cb) => {
let iKey = languageMap[count].name
let path = __dirname + "/language/src/" + iKey + "/"
readLanguae(path, (jsondatastr) => {
pathInfor[count] = {}
pathInfor[count].name = path
pathInfor[count].content = jsondatastr
if (icount >= 5) {
cb && cb()
} else {
readJson(count + 1, cb)
}
})
}
var main = () => {
initLaguage()
readJson(0, () => {
replaceValue()
})
}
main();