i18n-zh2other
Version:
语言包自动翻译
97 lines (76 loc) • 3.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _translate = _interopRequireDefault(require("./translate"));
var _progressBar = _interopRequireDefault(require("./progress-bar"));
var _Subject = require("rxjs/Subject");
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var regZh = /.*[\u4e00-\u9fa5]+.*$/; // 匹配中文
var Lang = /*#__PURE__*/function () {
function Lang(Config) {
_classCallCheck(this, Lang);
this.Config = Config;
this.delay = Config.baiduTranslate.delay || 1200;
this.batchCount = Config.baiduTranslate.batchCount || 9;
}
_createClass(Lang, [{
key: "startExecuteTranslate",
value: function startExecuteTranslate(lang) {
var _this = this;
var entry = this.Config.entry;
var inPath = entry.inPath,
outPath = entry.outPath;
var targetFilePath = outPath + _path["default"].sep + lang + '.json';
var srcFilePath = inPath + _path["default"].sep + 'zh.json';
var json = '';
if (!_fs["default"].existsSync(targetFilePath)) {
if (!_fs["default"].existsSync(srcFilePath)) {
console.log('未找到翻译源文件, 请确定路径是否正确!' + srcFilePath);
return;
}
json = _fs["default"].readFileSync(srcFilePath).toString();
} else {
json = _fs["default"].readFileSync(targetFilePath).toString();
}
var data = JSON.parse(json);
var allKeys = Object.keys(data);
var pAll = [];
var tIndex = 0;
var process = 0;
var allCount = allKeys.filter(function (key, index) {
return regZh.test(data[key]);
}).length;
var sub$ = new _Subject.Subject();
var pb = new _progressBar["default"]('翻译进度', 50);
allKeys.forEach(function (key, index) {
if (regZh.test(data[key])) {
tIndex++;
new _translate["default"](_this.Config, lang, _this.delay * (tIndex / _this.batchCount))["do"](data[key]).then(function (re) {
data[key] = re;
pb.render({
completed: ++process,
total: allCount
});
sub$.next(process);
});
}
});
sub$.subscribe(function (value) {
if (value >= allCount) {
_fs["default"].writeFileSync(targetFilePath, JSON.stringify(data, null, 2));
console.log(' 翻译结束!');
}
});
}
}]);
return Lang;
}();
var _default = Lang;
exports["default"] = _default;