{"version":3,"file":"I18n.mjs","sources":["../../../src/I18n/I18n.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '../Logger';\nconst logger = new ConsoleLogger('I18n');\n/**\n * Language translation utility.\n */\nexport class I18n {\n    constructor() {\n        /**\n         * @private\n         */\n        this._options = null;\n        /**\n         * @private\n         */\n        this._lang = null;\n        /**\n         * @private\n         */\n        this._dict = {};\n    }\n    /**\n     * Sets the default language from the configuration when required.\n     */\n    setDefaultLanguage() {\n        // Default to window language if not set in instance\n        if (!this._lang &&\n            typeof window !== 'undefined' &&\n            window &&\n            window.navigator) {\n            this._lang = window.navigator.language;\n        }\n        logger.debug(this._lang);\n    }\n    /**\n     * @method\n     * Explicitly setting language\n     * @param {String} lang\n     */\n    setLanguage(lang) {\n        this._lang = lang;\n    }\n    /**\n     * @method\n     * Get value\n     * @param {String} key\n     * @param {String} defVal - Default value\n     */\n    get(key, defVal = undefined) {\n        this.setDefaultLanguage();\n        if (!this._lang) {\n            return typeof defVal !== 'undefined' ? defVal : key;\n        }\n        const lang = this._lang;\n        let val = this.getByLanguage(key, lang);\n        if (val) {\n            return val;\n        }\n        if (lang.indexOf('-') > 0) {\n            val = this.getByLanguage(key, lang.split('-')[0]);\n        }\n        if (val) {\n            return val;\n        }\n        return typeof defVal !== 'undefined' ? defVal : key;\n    }\n    /**\n     * @method\n     * Get value according to specified language\n     * @param {String} key\n     * @param {String} language - Specified langurage to be used\n     * @param {String} defVal - Default value\n     */\n    getByLanguage(key, language, defVal = null) {\n        if (!language) {\n            return defVal;\n        }\n        const langDict = this._dict[language];\n        if (!langDict) {\n            return defVal;\n        }\n        return langDict[key];\n    }\n    /**\n     * @method\n     * Add vocabularies for one language\n     * @param {String} language - Language of the dictionary\n     * @param {Object} vocabularies - Object that has key-value as dictionary entry\n     */\n    putVocabulariesForLanguage(language, vocabularies) {\n        let langDict = this._dict[language];\n        if (!langDict) {\n            langDict = this._dict[language] = {};\n        }\n        this._dict[language] = { ...langDict, ...vocabularies };\n    }\n    /**\n     * @method\n     * Add vocabularies for one language\n     * @param {Object} vocabularies - Object that has language as key,\n     *                                vocabularies of each language as value\n     */\n    putVocabularies(vocabularies) {\n        Object.keys(vocabularies).forEach(key => {\n            this.putVocabulariesForLanguage(key, vocabularies[key]);\n        });\n    }\n}\n"],"names":[],"mappings":"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"}