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

194 lines
5.4 KiB
JavaScript
Raw Permalink 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 + "/../assets/resources/il8n/"
var languageDistPath = __dirname + "/language/dist/"
var languageMap = {}
var languageKeyToValueMap = {}
var keyMapPrefex = '_keyMap.json'
var keyValueFilePrefex = '_keyValue.json'
//判断是否是数字
// var canNumber = (str) => {
// var reg = /^[0-9]+$/;
// if (reg.test(str)) {
// return true;
// }
// return false;
// }
var isChinese =(temp) =>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g")
if(reg.test(temp)){
return true
}else{
return false
}
}
var initLaguage = () => {
languageMap['en'] = 'en.json'
languageMap['ja'] = 'ja.json'
languageMap['kr'] = 'kr.json'
languageMap['tw'] = 'tw.json'
languageMap['zh'] = 'zh.json'
}
var lg = [
// "en",
// "ja",
// "kr",
// "tw",
"ja"
]
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 generateLanguageJson = (jsstr, iKey, cb) => {
let distPath = languageDistPath + iKey + "/"
if (!fs.existsSync(distPath)) {
fs.mkdirSync(distPath);
}
var keyMap = {}
var jsObk = JSON.parse(jsstr)
for (const key in jsObk) {
if (Object.prototype.hasOwnProperty.call(jsObk, key)) {
const value = jsObk[key];
var __vNan = Number(value)
// if (!canNumber(value) && isNaN(__vNan)) {
// languageKeyToValueMap[value] = languageKeyToValueMap[value] || []
// languageKeyToValueMap[value].push(key)
// if (!keyMap[value])
// keyMap[value] = key
// }
if (isChinese(value)) {
languageKeyToValueMap[value] = languageKeyToValueMap[value] || []
languageKeyToValueMap[value].push(key)
if (!keyMap[value])
keyMap[value] = key
}
}
}
var resultMap = {}
for (const key in keyMap) {
if (Object.prototype.hasOwnProperty.call(keyMap, key)) {
const value = keyMap[key];
resultMap[value] = key
}
}
let index = 0
let allCount = lg.length
//产生剔除重复值的Json文件
var jsMapstr = JSON.stringify(resultMap)
fs.writeFile(distPath + iKey + keyValueFilePrefex, beautifyJson(jsMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
index = index + 1
if (index >= allCount) {
cb && cb()
}
})
//提交给CP方的
let cpPath = distPath + "cp/"
if (!fs.existsSync(cpPath)) {
fs.mkdirSync(cpPath);
}
fs.writeFile(cpPath + languageMap[iKey], beautifyJson(jsMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
index = index + 1
if (index >= allCount) {
cb && cb()
}
})
// 产生Key值
var keyMapstr = JSON.stringify(languageKeyToValueMap)
fs.writeFile(distPath + iKey + keyMapPrefex, beautifyJson(keyMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
index = index + 1
if (index >= allCount) {
cb && cb()
}
})
//用来替换更新的源文件
fs.writeFile(distPath + languageMap[iKey], beautifyJson(jsstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
index = index + 1
if (index >= allCount) {
cb && cb()
}
})
}
var readLanguae = (iKey, cb) => {
fs.readFile(languageSrcPath + languageMap[iKey], 'utf8', function (err, dataStr) {
if (err) {
console.log(err); // 打印失败的结果
return
}
cb && cb(dataStr)
})
}
var actionFile = (index, fb) => {
if (index >= lg.length) {
return
}
readLanguae(lg[index], (jsondatastr) => {
generateLanguageJson(jsondatastr, lg[index], () => {
console.log("success: ", lg[index])
actionFile(index + 1)
})
})
}
var main = () => {
initLaguage()
actionFile(0)
}
main();