Files
mattermost/webapp/i18n/i18n.jsx

117 lines
3.0 KiB
React
Raw Normal View History

2016-03-14 08:50:46 -04:00
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
2016-06-14 14:53:26 -03:00
const de = require('!!file?name=i18n/[name].[ext]!./de.json');
2016-03-14 08:50:46 -04:00
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
2016-03-14 08:50:46 -04:00
2016-03-24 12:05:50 -04:00
import {addLocaleData} from 'react-intl';
2016-06-14 14:53:26 -03:00
import deLocaleData from 'react-intl/locale-data/de';
2016-03-24 12:05:50 -04:00
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';
2016-03-24 12:05:50 -04:00
import ptLocaleData from 'react-intl/locale-data/pt';
// should match the values in model/config.go
2016-03-14 08:50:46 -04:00
const languages = {
2016-06-14 14:53:26 -03:00
de: {
value: 'de',
name: 'Deutsche (Beta)',
url: de
},
2016-03-14 08:50:46 -04:00
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',
2016-03-14 08:50:46 -04:00
name: 'Portugues (Beta)',
url: pt_BR
2016-03-14 08:50:46 -04:00
}
};
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;
}
2016-03-14 08:50:46 -04:00
export function getLanguageInfo(locale) {
if (!availableLanguages) {
setAvailableLanguages();
}
return availableLanguages[locale];
}
export function isLanguageAvailable(locale) {
return !!availableLanguages[locale];
2016-03-14 08:50:46 -04:00
}
2016-03-24 12:05:50 -04:00
export function safariFix(callback) {
require.ensure([
'intl',
2016-06-14 14:53:26 -03:00
'intl/locale-data/jsonp/de.js',
2016-03-24 12:05:50 -04:00
'intl/locale-data/jsonp/en.js',
'intl/locale-data/jsonp/es.js',
'intl/locale-data/jsonp/fr.js',
'intl/locale-data/jsonp/ja.js',
2016-03-24 12:05:50 -04:00
'intl/locale-data/jsonp/pt.js'
], (require) => {
require('intl');
2016-06-14 14:53:26 -03:00
require('intl/locale-data/jsonp/de.js');
2016-03-24 12:05:50 -04:00
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');
2016-03-24 12:05:50 -04:00
require('intl/locale-data/jsonp/pt.js');
callback();
});
}
export function doAddLocaleData() {
addLocaleData(enLocaleData);
2016-06-14 14:53:26 -03:00
addLocaleData(deLocaleData);
2016-03-24 12:05:50 -04:00
addLocaleData(esLocaleData);
addLocaleData(frLocaleData);
addLocaleData(jaLocaleData);
2016-03-24 12:05:50 -04:00
addLocaleData(ptLocaleData);
}