covutils
Version:
Utilities for creating, transforming, and handling Coverage Data objects.
57 lines (50 loc) • 1.95 kB
JavaScript
;
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];
}