UNPKG

covutils

Version:

Utilities for creating, transforming, and handling Coverage Data objects.

57 lines (50 loc) 1.95 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLanguageTag = getLanguageTag; exports.getLanguageString = getLanguageString; var DEFAULT_LANGUAGE = 'en'; /** * @example * var labels = {'en': 'Temperature', 'de': 'Temperatur'} * var tag = CovUtils.getLanguageTag(labels, 'en-GB') * // tag == 'en' * * @param {object} map An object that maps language tags to strings. * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'. * @return {string} The best matched language tag of the input map. * If no match was found then this is an arbitrary tag of the map. */ function getLanguageTag(map) { var preferredLanguage = arguments.length <= 1 || arguments[1] === undefined ? DEFAULT_LANGUAGE : arguments[1]; if (preferredLanguage in map) { return preferredLanguage; } // cut off any subtags following the language subtag and try to find a match var prefTag = preferredLanguage.split('-')[0]; var matches = Object.keys(map).filter(function (tag) { return prefTag === tag.split('-')[0]; }); if (matches.length) { return matches[0]; } // no luck, return a random tag return Object.keys(map)[0]; } /** * @example * var labels = {'en': 'Temperature', 'de': 'Temperatur'} * var label = CovUtils.getLanguageString(labels, 'en-GB') * // label == 'Temperature' * * @param {object} map An object that maps language tags to strings. * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'. * @return {string} The string within the input map whose language tag best matched. * If no match was found then this is an arbitrary string of the map. */ function getLanguageString(map) { var preferredLanguage = arguments.length <= 1 || arguments[1] === undefined ? DEFAULT_LANGUAGE : arguments[1]; var tag = getLanguageTag(map, preferredLanguage); return map[tag]; }