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

168 lines
4.7 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/fliterkey/"
var languageMap = {}
var keyMapPrefex = 'filterkey.json'
var fullkeyPrefex = 'fullkeys.json'
var cpkeyPrefex = 'cpkeys.json'
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",
"zh"
]
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 + "/"
if (!fs.existsSync(distPath)) {
fs.mkdirSync(distPath);
}
var keyMap = {}
var jsObk = JSON.parse(jsstr)
var cpKeyMap = {}
for (const key in jsObk) {
if (Object.prototype.hasOwnProperty.call(jsObk, key)) {
const value = jsObk[key];
if (!isChinese(value)) {
keyMap[key] = value
} else {
if (!cpKeyMap[value])
cpKeyMap[value] = key
}
}
}
//产生 dirty key
var jsMapstr = JSON.stringify(keyMap)
fs.writeFile(languageDistPath + keyMapPrefex, (jsMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
console.log('文件写入成功!');
})
//重复key
var languageKeyToValueMap = {}
var keyMap = {}
var jsObk = JSON.parse(jsstr)
for (const key in jsObk) {
if (Object.prototype.hasOwnProperty.call(jsObk, key)) {
const value = jsObk[key];
if (isChinese(value)) {
languageKeyToValueMap[value] = languageKeyToValueMap[value] || []
languageKeyToValueMap[value].push(key)
if (!keyMap[value])
keyMap[value] = key
}
}
}
var keyMapstr = JSON.stringify(languageKeyToValueMap)
fs.writeFile(distPath + fullkeyPrefex, beautifyJson(keyMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
})
//保存CPkey
var resultMap = {}
for (const key in cpKeyMap) {
if (Object.prototype.hasOwnProperty.call(cpKeyMap, key)) {
const value = cpKeyMap[key];
resultMap[value] = key
}
}
//产生剔除重复值的Json文件
var jsMapstr = JSON.stringify(resultMap)
fs.writeFile(distPath + cpkeyPrefex, beautifyJson(jsMapstr), function (err) {
// 写入成功后err的值就是null且在该文件夹下生成一个02文件
if (err) {
return console.log('文件写入失败!' + err.message);
}
})
}
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();