1 | const DEFAULT_LANGUAGE = 'en'
|
2 |
|
3 | /**
|
4 | * @example
|
5 | * var labels = {'en': 'Temperature', 'de': 'Temperatur'}
|
6 | * var tag = CovUtils.getLanguageTag(labels, 'en-GB')
|
7 | * // tag == 'en'
|
8 | *
|
9 | * @param {object} map An object that maps language tags to strings.
|
10 | * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'.
|
11 | * @return {string} The best matched language tag of the input map.
|
12 | * If no match was found then this is an arbitrary tag of the map.
|
13 | */
|
14 | export function getLanguageTag (map, preferredLanguage = DEFAULT_LANGUAGE) {
|
15 | if (preferredLanguage in map) {
|
16 | return preferredLanguage
|
17 | }
|
18 |
|
19 | // cut off any subtags following the language subtag and try to find a match
|
20 | let prefTag = preferredLanguage.split('-')[0]
|
21 | let matches = Object.keys(map).filter(tag => prefTag === tag.split('-')[0])
|
22 | if (matches.length) {
|
23 | return matches[0]
|
24 | }
|
25 |
|
26 | // no luck, return a random tag
|
27 | return Object.keys(map)[0]
|
28 | }
|
29 |
|
30 | /**
|
31 | * @example
|
32 | * var labels = {'en': 'Temperature', 'de': 'Temperatur'}
|
33 | * var label = CovUtils.getLanguageString(labels, 'en-GB')
|
34 | * // label == 'Temperature'
|
35 | *
|
36 | * @param {object} map An object that maps language tags to strings.
|
37 | * @param {string} [preferredLanguage='en'] The preferred language as a language tag, e.g. 'de'.
|
38 | * @return {string} The string within the input map whose language tag best matched.
|
39 | * If no match was found then this is an arbitrary string of the map.
|
40 | */
|
41 | export function getLanguageString (map, preferredLanguage = DEFAULT_LANGUAGE) {
|
42 | let tag = getLanguageTag(map, preferredLanguage)
|
43 | return map[tag]
|
44 | }
|