1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.getLanguageTag = getLanguageTag;
|
7 | exports.getLanguageString = getLanguageString;
|
8 | var 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 | */
|
21 | function 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 | */
|
52 | function 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 |