Completed
Push — master ( bfa831...18ad30 )
by Ajeh
36s
created

Translator.setLanguage   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
c 0
b 0
f 0
nc 2
dl 0
loc 3
rs 10
nop 1
1
// mini translator
2
3
const TRANSLATIONS = {
4
    en: require('./translations/en').default,
5
    zh: require('./translations/zh').default
6
    //es: require('./translations/es').default
7
}
8
9
10
const Translator = function (translations, separator = '.') {
11
    this.separator = separator
12
    this.translations = translations
13
14
    let navigatorLang = window.navigator.language || window.navigator.userLanguage
15
    let selectedLang = window.location.search.match(/(?:[\?\&])(?:lang=)(\w{2})(?:&|$)/)
16
    let lang = selectedLang ? selectedLang[1] : navigatorLang
17
18
    this.setLanguage(lang)
19
}
20
21
Translator.prototype.setLanguage = function (lang) {
22
    this.lang = typeof this.translations[lang] !== 'undefined' ? lang : 'en'
23
}
24
25
Translator.prototype.get = function (route) {
26
    let parts = route.split(this.separator)
27
    let translation = this.translations[this.lang]
28
29
    for (let i = 0; i < parts.length; i++) {
30
        translation = translation[parts[i]]
31
        if (translation === undefined) {
32
            translation = '[Error: No Translation]'
33
            break
34
        }
35
    }
36
37
    return translation
38
}
39
40
window.Translator = new Translator(TRANSLATIONS)
41
42
export default function (n) {
43
    return window.Translator.get(n)
44
}