UNPKG

i18n-zh2other

Version:

语言包自动翻译

97 lines (76 loc) 3.39 kB
"use strict"; 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;