UNPKG

stackpress

Version:

Incept is a content management framework.

66 lines (65 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Language { constructor() { this._locale = 'en_US'; } static get locales() { return Object.keys(this._languages); } static get key() { return this._key; } static configure(key, languages) { this._key = key; this._languages = languages; return this; } static language(name) { if (!this._languages[name]) { return null; } return { label: this._languages[name].label, translations: Object.assign({}, this._languages[name].translations) }; } static load(req, defaults = 'en_US') { const locale = req.session(this.key); const language = new Language(); language.locale = locale || defaults; return language; } get label() { var _a; return ((_a = Language._languages[this._locale]) === null || _a === void 0 ? void 0 : _a.label) || this._locale; } get locale() { return this._locale; } get translations() { var _a; return ((_a = Language._languages[this._locale]) === null || _a === void 0 ? void 0 : _a.translations) || {}; } set locale(locale) { this._locale = locale; } save(res) { res.session.set(Language.key, this._locale); return this; } update(locale, res) { this._locale = locale; return this.save(res); } translate(phrase, ...variables) { let translation = this.translations[phrase] || phrase; for (let i = 0; i < variables.length; i++) { translation = translation.replace('%s', String(variables[i])); } return translation; } } Language._key = 'locale'; Language._languages = {}; exports.default = Language;