194 lines
5.4 KiB
JavaScript
194 lines
5.4 KiB
JavaScript
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",
|
||
"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 + 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 = 4
|
||
//产生剔除重复值的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) => {
|
||
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(); |