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

144 lines
4.3 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 = "zh"
var languageSrcPath = __dirname + "/language/src/" + iKey + "/"
var languageDistPath = __dirname + "/language/dist/" + iKey + "/"
var keyMapPrefex = '_keyMap.json'
var languageMap = {}
var pathInfor = []
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完整的
{name: languageDistPath + iKey + keyMapPrefex, content : ''} //要被翻译的key map(被翻译过的, 与0对应)
]
}
var replaceValue = ()=>{
var scrJson = JSON.parse(pathInfor[0].content) //被翻译的json
var distJson = JSON.parse(pathInfor[1].content) //需要更新替换json
var keyValueJson = JSON.parse(pathInfor[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[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 >= 3) {
cb && cb()
} else {
readJson(iKey, cb)
}
})
}
var main = () => {
initLaguage()
readJson(iKey, ()=>{
replaceValue()
})
}
main();