Something went wrong on our end
Select Git revision
translations.mjs
-
Volker Schukai authoredVolker Schukai authored
translations.mjs 5.83 KiB
/**
* @author schukai GmbH
*/
import {Base} from "../types/base.mjs";
import {isObject, isString} from "../types/is.mjs";
import {validateInstance, validateInteger, validateObject, validateString} from "../types/validate.mjs";
import {Locale, parseLocale} from "./locale.mjs";
export {Translations}
/**
* With this class you can manage translations and access the keys.
*
* ```
* <script type="module">
* import {Translations} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@latest/source/i18n/translations.mjs';
* new Translations()
* </script>
* ```
*
* @example
*
* import {Translations} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@latest/source/i18n/translations.mjs';
* import {parseLocale} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@latest/source/i18n/locale.mjs';
*
* const translation = new Translations(parseLocale('en-GB'));
*
* translation.assignTranslations({
* text1: "click",
* text2: {
* 'one': 'click once',
* 'other': 'click n times'
* }
* });
*
* console.log(translation.getText('text1'));
* // ↦ click
*
* console.log(translation.getPluralRuleText('text2',1));
* // -> click once
* console.log(translation.getPluralRuleText('text2',2));
* // -> click n times
*
* @since 1.13.0
* @copyright schukai GmbH
* @memberOf Monster.I18n
* @see https://datatracker.ietf.org/doc/html/rfc3066
*/
class Translations extends Base {
/**
*
* @param {Locale} locale
*/
constructor(locale) {
super();
if (isString(locale)) {
locale = parseLocale(locale);
}
this.locale = validateInstance(locale, Locale);
this.storage = new Map();
}