1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
const es = require('!!file?name=i18n/[name].[ext]!./es.json');
const fr = require('!!file?name=i18n/[name].[ext]!./fr.json');
const ja = require('!!file?name=i18n/[name].[ext]!./ja.json');
const pt_BR = require('!!file?name=i18n/[name].[ext]!./pt-BR.json'); //eslint-disable-line camelcase
import {addLocaleData} from 'react-intl';
import enLocaleData from 'react-intl/locale-data/en';
import esLocaleData from 'react-intl/locale-data/es';
import frLocaleData from 'react-intl/locale-data/fr';
import jaLocaleData from 'react-intl/locale-data/ja';
import ptLocaleData from 'react-intl/locale-data/pt';
// should match the values in model/config.go
const languages = {
en: {
value: 'en',
name: 'English',
url: ''
},
es: {
value: 'es',
name: 'Español (Beta)',
url: es
},
fr: {
value: 'fr',
name: 'Français (Beta)',
url: fr
},
ja: {
value: 'ja',
name: '日本語 (Beta)',
url: ja
},
'pt-BR': {
value: 'pt-BR',
name: 'Portugues (Beta)',
url: pt_BR
}
};
let availableLanguages = null;
function setAvailableLanguages() {
const available = global.window.mm_config.AvailableLocales.split(',');
availableLanguages = {};
available.forEach((l) => {
if (languages[l]) {
availableLanguages[l] = languages[l];
}
});
}
export function getAllLanguages() {
return languages;
}
export function getLanguages() {
if (!availableLanguages) {
setAvailableLanguages();
}
return availableLanguages;
}
export function getLanguageInfo(locale) {
if (!availableLanguages) {
setAvailableLanguages();
}
return availableLanguages[locale];
}
export function isLanguageAvailable(locale) {
return !!availableLanguages[locale];
}
export function safariFix(callback) {
require.ensure([
'intl',
'intl/locale-data/jsonp/en.js',
'intl/locale-data/jsonp/es.js',
'intl/locale-data/jsonp/fr.js',
'intl/locale-data/jsonp/ja.js',
'intl/locale-data/jsonp/pt.js'
], (require) => {
require('intl');
require('intl/locale-data/jsonp/en.js');
require('intl/locale-data/jsonp/es.js');
require('intl/locale-data/jsonp/fr.js');
require('intl/locale-data/jsonp/ja.js');
require('intl/locale-data/jsonp/pt.js');
callback();
});
}
export function doAddLocaleData() {
addLocaleData(enLocaleData);
addLocaleData(esLocaleData);
addLocaleData(frLocaleData);
addLocaleData(jaLocaleData);
addLocaleData(ptLocaleData);
}
|