src/helpers/i18n/index.js   A
last analyzed

Complexity

Total Complexity 4
Complexity/F 1

Size

Lines of Code 55
Function Count 4

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 0
wmc 4
c 2
b 0
f 0
nc 1
mnd 0
bc 4
fnc 4
dl 0
loc 55
rs 10
bpm 1
cpm 1
noi 0

3 Functions

Rating   Name   Duplication   Size   Complexity  
A i18next.handler 0 8 1
A index.js ➔ userLanguageObject 0 14 1
A index.js ➔ changeLangRequest 0 11 1
1
'use strict'
2
3
import assert from 'assert-plus'
4
import i18next from 'i18next'
5
import resources from './locales'
6
import acceptLanguage from 'accept-language'
7
8
// supported languages
9
export const languages = ['en-US', 'pt-BR']
10
11
i18next.init({
12
  lng: 'en-US',
13
  fallbackLng: languages,
14
  resources
15
})
16
17
i18next.handler = function () {
18
  return function (request, response, next) {
19
    request.i18n = i18next
20
    request.t = i18next.t.bind(i18next)
21
22
    return next()
23
  }
24
}
25
26
export default i18next
27
28
// sets the language by the header
29
export const changeLangRequest = function (request) {
30
  assert.object(request, 'request')
31
  assert.object(request.i18n, 'request.i18n')
32
33
  const { i18n } = request
34
35
  const language = request.headers['accept-language']
36
  i18n.changeLanguage(acceptLanguage.get(language))
37
38
  return i18n
39
}
40
41
// defines a language according to user settings
42
export const userLanguageObject = function (request) {
43
  assert.object(request, 'request')
44
  assert.object(request.user, 'request.user')
45
46
  const { user } = request
47
48
  assert.object(user.account, 'user.account')
49
  assert.ok(user.account.language, 'user.account.language')
50
51
  const language = user.account.language
52
  i18next.changeLanguage(acceptLanguage.get(language))
53
54
  return i18next
55
}
56