fis-postpackager-tcli18n
Advanced tools
Comparing version 1.0.5 to 1.0.6
109
index.js
@@ -6,2 +6,3 @@ /** | ||
var http = require('http'); | ||
var Promise = require('promise'); | ||
@@ -14,20 +15,24 @@ var baiduApiKey = 'vwuwiHIswhLGdR3xg1Hwvg2n'; | ||
//调用baidu翻译api | ||
function translateStr(key, callback){ | ||
http.get({ | ||
hostname: 'openapi.baidu.com', | ||
port: 80, | ||
path: '/public/2.0/bmt/translate?client_id='+baiduApiKey+'&q='+key+'&from=auto&to=auto', | ||
agent: false // create a new agent just for this one request | ||
}, function (res) { | ||
var data = ''; | ||
res.on('data', function (chunk) { | ||
data += chunk; | ||
}); | ||
res.on('end', function(){ | ||
callback(JSON.parse(data)); | ||
function translatePromise(key){ | ||
return new Promise(function(resolve, reject){ | ||
http.get({ | ||
hostname: 'openapi.baidu.com', | ||
port: 80, | ||
path: '/public/2.0/bmt/translate?client_id='+baiduApiKey+'&q='+key+'&from=auto&to=auto', | ||
agent: false // create a new agent just for this one request | ||
}, function (res) { | ||
var data = ''; | ||
res.on('data', function (chunk) { | ||
data += chunk; | ||
}); | ||
res.on('end', function(){ | ||
resolve(JSON.parse(data)); | ||
}); | ||
}); | ||
// Do stuff with response | ||
}); | ||
}; | ||
} | ||
//把obj对象的数据转换成为 key = value 模式; | ||
@@ -43,3 +48,2 @@ //以最长的key来补齐空格 | ||
var spaceStr = (new Array(maxLength - keyLen)).join(' '); | ||
releaseContent += n + spaceStr+" = " + obj[n] + "\n"; | ||
@@ -66,66 +70,55 @@ } | ||
module.exports = function(ret, conf, settings, opt) { | ||
console.log(opt) | ||
var i18nConf = fis.config.get('tclI18n'); | ||
var paths = []; | ||
var cacheMap = {}; | ||
var translateMap = {}; | ||
//key最长长度 | ||
var maxKeyLen = 0; | ||
var maxTansKeyLen = 0; | ||
//读取key:key生成map | ||
//读取key:key生成map | ||
var count = 0; | ||
var replace = i18nConf.replace; | ||
var translatePromises = []; | ||
fis.util.map(ret.src, function(subpath, file) { | ||
var content = file.getContent(); | ||
if(i18nConf.ext == file.ext.replace('.', '')){ | ||
var fileExt = file.ext.replace('.', ''); | ||
//占位符根据配置替换 | ||
if(i18nConf.ext == fileExt){ | ||
content = content.replace(i18nReg, replace); | ||
file.setContent(content); | ||
} | ||
while (i18nReg.exec(content)) { | ||
var key = RegExp.$2; | ||
if(!cacheMap[key]){ | ||
count++; | ||
translateStr(key, function(res){ | ||
count--; | ||
var oo = res.trans_result[0]; | ||
var name, value; | ||
if(res.from == 'zh'){ | ||
name = oo['dst']; | ||
value = oo['src']; | ||
} | ||
if(res.from == 'en'){ | ||
name = oo['src']; | ||
value = oo['dst']; | ||
} | ||
name = name.replace(/\W/g, '_').toLowerCase(); | ||
translateMap[name] =value; | ||
maxTansKeyLen = maxTansKeyLen>name.length?maxTansKeyLen:name.length; | ||
if(count == 0){ | ||
var translateCon = map2file(translateMap, maxTansKeyLen); | ||
fis.util.write(releasePath+"_", translateCon); | ||
fis.log.notice('do i18n key translate success'); | ||
} | ||
}); | ||
cacheMap[key] = key; | ||
translatePromises.push(translatePromise(key)); | ||
} | ||
cacheMap[key] = key; | ||
var charLen = key.replace(doubleReg, 'aa').length; | ||
maxKeyLen = maxKeyLen>charLen?maxKeyLen:charLen; | ||
} | ||
}); | ||
//翻译后key最长长度 | ||
var maxTansKeyLen = 0; | ||
Promise.all(translatePromises).then(function(res){ | ||
res.forEach(function(trans){ | ||
console.log(JSON.stringify(trans)); | ||
var oo = trans.trans_result[0]; | ||
var name, value; | ||
if(trans.from == 'zh'){ | ||
name = oo['dst']; | ||
value = oo['src']; | ||
} | ||
if(trans.from == 'en'){ | ||
name = oo['src']; | ||
value = oo['src']; | ||
} | ||
name = name.replace(/\W/g, '_').toLowerCase(); | ||
translateMap[name] =value; | ||
maxTansKeyLen = Math.max(maxTansKeyLen, name.length); | ||
}); | ||
var translateCon = map2file(translateMap, maxTansKeyLen); | ||
fis.util.write(releasePath+"_", translateCon); | ||
fis.log.notice('do i18n key translate success'); | ||
}); | ||
fis.log.notice('do i18n key translate, please hold;'); | ||
@@ -132,0 +125,0 @@ |
{ | ||
"name": "fis-postpackager-tcli18n", | ||
"version": "1.0.5", | ||
"version": "1.0.6", | ||
"description": "parse __i18n__(...) crate default language file", | ||
@@ -20,3 +20,6 @@ "main": "index.js", | ||
"_shasum": "e0ae9faaeebe82cf8121f3dd08b3fb609fa7dd76", | ||
"_from": "fis-postpackager-tcli18n@" | ||
"_from": "fis-postpackager-tcli18n@", | ||
"devDependencies": { | ||
"promise": "^7.0.0" | ||
} | ||
} |
19286
10
123
1