UNPKG

@lskjs/i18

Version:

LSK module for internationalization with i18next.

368 lines (367 loc) 14.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.I18Instance = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _env = require("@lskjs/env"); var _err = _interopRequireDefault(require("@lskjs/err")); var _module = _interopRequireDefault(require("@lskjs/module")); var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues")); var _i18next = _interopRequireDefault(require("i18next")); var _i18nextXhrBackend = _interopRequireDefault(require("i18next-xhr-backend")); var _excluded = ["lng", "locale", "backend", "resources"]; function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var I18Instance = /*#__PURE__*/function (_Module) { (0, _inherits2["default"])(I18Instance, _Module); var _super = _createSuper(I18Instance); function I18Instance() { var _this; (0, _classCallCheck2["default"])(this, I18Instance); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _this.instance = null; _this.locale = null; _this.t = function () { return '???'; }; return _this; } (0, _createClass2["default"])(I18Instance, [{ key: "init", value: function () { var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _get2["default"])((0, _getPrototypeOf2["default"])(I18Instance.prototype), "init", this).call(this); case 2: _context.next = 4; return this.createInstance(); case 4: this.instance = _context.sent; case 5: case "end": return _context.stop(); } }, _callee, this); })); function init() { return _init.apply(this, arguments); } return init; }() }, { key: "run", value: function () { var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return (0, _get2["default"])((0, _getPrototypeOf2["default"])(I18Instance.prototype), "run", this).call(this); case 2: _context2.next = 4; return this.update(); case 4: case "end": return _context2.stop(); } }, _callee2, this); })); function run() { return _run.apply(this, arguments); } return run; }() }, { key: "initResources", value: function () { var _initResources = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { var _this2 = this; var resources; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: if (!_env.isClient) { _context3.next = 2; break; } return _context3.abrupt("return"); case 2: if (!this.resources) { _context3.next = 4; break; } return _context3.abrupt("return"); case 4: resources = this.config.resources; _context3.next = 7; return (0, _asyncMapValues["default"])(resources, function (value) { // eslint-disable-next-line no-param-reassign if (typeof value === 'string') value = { translation: value }; if (_env.isServer) { return (0, _asyncMapValues["default"])(value, function (path) { try { var res = JSON.parse(require('fs').readFileSync(path)); // TODO: подумать что корретнее делать return res; } catch (err) { _this2.log.error(err); // error ignored return null; } }); } return null; }); case 7: this.resources = _context3.sent; case 8: case "end": return _context3.stop(); } }, _callee3, this); })); function initResources() { return _initResources.apply(this, arguments); } return initResources; }() }, { key: "exists", value: function () { var _exists = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() { var _this$instance; var _args4 = arguments; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: if (this.instance) { _context4.next = 2; break; } throw new _err["default"]('!this.instance'); case 2: return _context4.abrupt("return", (_this$instance = this.instance).exists.apply(_this$instance, _args4)); case 3: case "end": return _context4.stop(); } }, _callee4, this); })); function exists() { return _exists.apply(this, arguments); } return exists; }() }, { key: "update", value: function () { var _update = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() { var _this3 = this; return _regenerator["default"].wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: if (this.instance) { _context5.next = 2; break; } throw new _err["default"]('!this.instance'); case 2: this.locale = this.instance.language; this.t = function () { var _this3$instance; return (_this3$instance = _this3.instance).t.apply(_this3$instance, arguments); }; case 4: case "end": return _context5.stop(); } }, _callee5, this); })); function update() { return _update.apply(this, arguments); } return update; }() }, { key: "applyLogger", value: function applyLogger(instance) { var moduleLog = this.log; instance.use({ type: 'logger', log: function log(args) { if (args[0] === 'i18next: initialized') { moduleLog.trace(args.join(', ')); return; } if (args[0] === 'i18next: languageChanged') { moduleLog.trace(args.join(', ')); return; } if (args[0] === 'i18next::translator: missingKey') { moduleLog.error(args.join(', ')); return; } moduleLog.trace(args.join(', ')); }, warn: function warn(args) { moduleLog.warn(args.join(', ')); }, error: function error(args) { moduleLog.error(args.join(', ')); } }); } }, { key: "createInstance", value: function () { var _createInstance = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() { var _this4 = this; return _regenerator["default"].wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: return _context7.abrupt("return", new Promise( /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(resolve, reject) { var instance, _this4$config, lng, locale, backend, resources, props; return _regenerator["default"].wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: instance = _i18next["default"].createInstance(); if (_this4.debug) _this4.applyLogger(instance); _this4$config = _this4.config, lng = _this4$config.lng, locale = _this4$config.locale, backend = _this4$config.backend, resources = _this4$config.resources, props = (0, _objectWithoutProperties2["default"])(_this4$config, _excluded); props.lng = lng || locale || 'en'; if (!_env.isClient) { _context6.next = 8; break; } if (backend) { _this4.log.trace('use i18nextXhrBackend'); props.backend = backend; instance.use(_i18nextXhrBackend["default"]); } _context6.next = 11; break; case 8: _context6.next = 10; return _this4.initResources(); case 10: props.resources = _this4.resources; case 11: return _context6.abrupt("return", instance.init(props).then(function () { return resolve(instance); })["catch"](function (err) { _this4.log.error('init', err); return reject(err); })); case 12: case "end": return _context6.stop(); } }, _callee6); })); return function (_x, _x2) { return _ref.apply(this, arguments); }; }())); case 1: case "end": return _context7.stop(); } }, _callee7); })); function createInstance() { return _createInstance.apply(this, arguments); } return createInstance; }() }, { key: "loadNamespaces", value: function () { var _loadNamespaces = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() { var _this$instance2, _args8 = arguments; return _regenerator["default"].wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: if (!this.instance) { _context8.next = 7; break; } _context8.next = 3; return (_this$instance2 = this.instance).loadNamespaces.apply(_this$instance2, _args8); case 3: _context8.next = 5; return this.update(); case 5: _context8.next = 8; break; case 7: this.log.error('!this.instance!'); case 8: case "end": return _context8.stop(); } }, _callee8, this); })); function loadNamespaces() { return _loadNamespaces.apply(this, arguments); } return loadNamespaces; }() }, { key: "changeLanguage", value: function () { var _changeLanguage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() { var _this$instance3, _args9 = arguments; return _regenerator["default"].wrap(function _callee9$(_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: if (!this.instance) { _context9.next = 7; break; } _context9.next = 3; return (_this$instance3 = this.instance).changeLanguage.apply(_this$instance3, _args9); case 3: _context9.next = 5; return this.update(); case 5: _context9.next = 8; break; case 7: this.log.error('!this.instance!'); case 8: case "end": return _context9.stop(); } }, _callee9, this); })); function changeLanguage() { return _changeLanguage.apply(this, arguments); } return changeLanguage; }() }]); return I18Instance; }(_module["default"]); exports.I18Instance = I18Instance; var _default = I18Instance; exports["default"] = _default; //# sourceMappingURL=I18Instance.js.map