168 lines
4.7 KiB
JavaScript
168 lines
4.7 KiB
JavaScript
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, '<')
|
||
// .replace(/>/g, '>');
|
||
// 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(); |