UNPKG

covutils

Version:

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

45 lines (40 loc) 1.64 kB
const 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. */ export function getLanguageTag (map, preferredLanguage = DEFAULT_LANGUAGE) { if (preferredLanguage in map) { return preferredLanguage } // cut off any subtags following the language subtag and try to find a match let prefTag = preferredLanguage.split('-')[0] let matches = Object.keys(map).filter(tag => 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. */ export function getLanguageString (map, preferredLanguage = DEFAULT_LANGUAGE) { let tag = getLanguageTag(map, preferredLanguage) return map[tag] }