kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
87 lines (86 loc) • 3.29 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _en = _interopRequireDefault(require("./en"));
var _it = _interopRequireDefault(require("./it"));
var _ru = _interopRequireDefault(require("./ru"));
var DEFAULT_LOCALE = 'en';
var Translator = exports["default"] = /*#__PURE__*/function () {
function Translator() {
(0, _classCallCheck2["default"])(this, Translator);
this.locale = null;
this.translations = {};
this.registerTranslation('en', _en["default"]);
this.registerTranslation('it', _it["default"]);
this.registerTranslation('ru', _ru["default"]);
var locale = null;
var languages = Translator.getBrowserLanguages();
for (var i = 0; i < languages.length; i++) {
var lang = languages[i];
if (this.translations.hasOwnProperty(lang)) {
locale = lang;
break;
}
}
locale = locale ? locale : DEFAULT_LOCALE;
this.setLocale(locale);
}
return (0, _createClass2["default"])(Translator, [{
key: "t",
value: function t(phrase) {
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
params[_key - 1] = arguments[_key];
}
return this.translate.apply(this, [phrase].concat(params));
}
}, {
key: "translate",
value: function translate(phrase) {
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
params[_key2 - 1] = arguments[_key2];
}
var locale = this.locale;
var translation = this.translations[locale];
if (!translation.hasOwnProperty(phrase)) {
console.warn("translation '".concat(phrase, "' not found in language '").concat(locale, "'"));
return phrase;
}
var translatedPhrase = translation[phrase];
translatedPhrase = translatedPhrase.replace(/{(\d+)}/g, function (match, number) {
return typeof params[number] != 'undefined' ? params[number] : match;
});
return translatedPhrase;
}
}, {
key: "setLocale",
value: function setLocale(locale) {
locale = locale.toLowerCase();
if (this.translations.hasOwnProperty(locale)) {
this.locale = locale;
} else {
console.warn("locale '".concat(locale, "' not available, switch to ").concat(DEFAULT_LOCALE));
this.locale = DEFAULT_LOCALE.toLowerCase();
}
}
}, {
key: "registerTranslation",
value: function registerTranslation(locale, translations) {
if (!this.translations.hasOwnProperty(locale)) {
this.translations[locale] = translations;
} else {
Object.assign(this.translations[locale], translations);
}
}
}], [{
key: "getBrowserLanguages",
value: function getBrowserLanguages() {
return navigator.languages ? navigator.languages : [navigator.language || navigator.userLanguage];
}
}]);
}();
module.exports = exports.default;