'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInterfaceLanguage = getInterfaceLanguage; exports.getBestMatchingLanguage = getBestMatchingLanguage; exports.validateTranslationKeys = validateTranslationKeys; exports.randomPseudo = randomPseudo; /** * Return the current interface language * If the navigator object is defined it returns the current navigator language * otherwise it falls back to 'en-US' * Works in browsers */ function getInterfaceLanguage() { var defaultLang = 'en-US'; if (typeof navigator === 'undefined') { return defaultLang; } var nav = navigator; // eslint-disable-line no-undef if (nav) { if (nav.language) { return nav.language; } if (!!nav.languages && !!nav.languages[0]) { return nav.languages[0]; } if (nav.userLanguage) { return nav.userLanguage; } if (nav.browserLanguage) { return nav.browserLanguage; } } return defaultLang; } /** * Get the best match based on the language passed and the available languages * @param {*} language * @param {*} props */ function getBestMatchingLanguage(language, props) { // If an object with the passed language key exists return it if (props[language]) return language; // if the string is composed try to find a match with only the first language identifiers (en-US --> en) var idx = language.indexOf('-'); var auxLang = idx >= 0 ? language.substring(0, idx) : language; return props[auxLang] ? auxLang : Object.keys(props)[0]; } /** * Check that the keys used in the provided strings object don't collide with existing property * already defined in the LocalizedStrings object * @param {*} translationKeys */ function validateTranslationKeys(translationKeys) { var reservedNames = ['_interfaceLanguage', '_language', '_defaultLanguage', '_defaultLanguageFirstLevelKeys', '_props']; translationKeys.forEach(function (key) { if (reservedNames.indexOf(key) !== -1) { throw new Error(key + ' cannot be used as a key. It is a reserved word.'); } }); } /** * Get a random pseudo string back after specified a length * @param {Number} len - How many characters to get back */ function randomPseudo(len) { var text = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (var i = 0; i < len; i += 1) { text += possible.charAt(Math.floor(Math.random() * possible.length)); }return text; }