UNPKG

1.95 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getLanguageTag = getLanguageTag;
7exports.getLanguageString = getLanguageString;
8var DEFAULT_LANGUAGE = 'en';
9
10/**
11 * @example
12 * var labels = {'en': 'Temperature', 'de': 'Temperatur'}
13 * var tag = CovUtils.getLanguageTag(labels, 'en-GB')
14 * // tag == 'en'
15 *
16 * @param {object} map An object that maps language tags to strings.
17 * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'.
18 * @return {string} The best matched language tag of the input map.
19 * If no match was found then this is an arbitrary tag of the map.
20 */
21function getLanguageTag(map) {
22 var preferredLanguage = arguments.length <= 1 || arguments[1] === undefined ? DEFAULT_LANGUAGE : arguments[1];
23
24 if (preferredLanguage in map) {
25 return preferredLanguage;
26 }
27
28 // cut off any subtags following the language subtag and try to find a match
29 var prefTag = preferredLanguage.split('-')[0];
30 var matches = Object.keys(map).filter(function (tag) {
31 return prefTag === tag.split('-')[0];
32 });
33 if (matches.length) {
34 return matches[0];
35 }
36
37 // no luck, return a random tag
38 return Object.keys(map)[0];
39}
40
41/**
42 * @example
43 * var labels = {'en': 'Temperature', 'de': 'Temperatur'}
44 * var label = CovUtils.getLanguageString(labels, 'en-GB')
45 * // label == 'Temperature'
46 *
47 * @param {object} map An object that maps language tags to strings.
48 * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'.
49 * @return {string} The string within the input map whose language tag best matched.
50 * If no match was found then this is an arbitrary string of the map.
51 */
52function getLanguageString(map) {
53 var preferredLanguage = arguments.length <= 1 || arguments[1] === undefined ? DEFAULT_LANGUAGE : arguments[1];
54
55 var tag = getLanguageTag(map, preferredLanguage);
56 return map[tag];
57}
\No newline at end of file