UNPKG

@numizmatclub/i18n-tool

Version:

A simple internationalization library

78 lines (63 loc) 2.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var I18n = function () { function I18n(fallbackTranslation) { (0, _classCallCheck2["default"])(this, I18n); this.translations = {}; this.fallbackTranslation = fallbackTranslation; } (0, _createClass2["default"])(I18n, [{ key: "addLocale", value: function addLocale(locale, translation) { this.translations[locale] = translation; return this; } }, { key: "assignTranslation", value: function assignTranslation(locale) { this.activeTranslation = this.translations[locale]; if (!this.activeTranslation) { this.activeTranslation = this.translations[this.fallbackTranslation]; } return this; } }, { key: "t", value: function t(key) { var paths = key.split('.'); var template = this._findDeep(paths); for (var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { parameters[_key - 1] = arguments[_key]; } if (parameters) { parameters.forEach(function (parameter, index) { template = template.replace("{".concat(index, "}"), parameter); }); } return template; } }, { key: "_findDeep", value: function _findDeep(paths) { var current = this.activeTranslation; var currentFallback = this.translations[this.fallbackTranslation]; for (var i = 0; i < paths.length; ++i) { if (current[paths[i]] === undefined) { current = currentFallback[paths[i]]; currentFallback = current; if (current === undefined) { return 'undefined'; } } else { current = current[paths[i]]; currentFallback = currentFallback[paths[i]]; } } return current; } }]); return I18n; }(); module.exports = I18n;