12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // @flow
-
- import i18next from 'i18next';
- import I18nextXHRBackend from 'i18next-xhr-backend';
-
- import COUNTRIES_RESOURCES from 'i18n-iso-countries/langs/en.json';
- import LANGUAGES_RESOURCES from '../../../../lang/languages.json';
- import MAIN_RESOURCES from '../../../../lang/main.json';
-
- import languageDetector from './languageDetector';
-
- declare var interfaceConfig: Object;
-
- /**
- * The available/supported languages.
- *
- * XXX The element at index zero is the default language.
- *
- * @public
- * @type {Array<string>}
- */
- export const LANGUAGES: Array<string> = Object.keys(LANGUAGES_RESOURCES);
-
- /**
- * The default language.
- *
- * XXX The element at index zero of {@link LANGUAGES} is the default language.
- *
- * @public
- * @type {string} The default language.
- */
- export const DEFAULT_LANGUAGE = LANGUAGES[0];
-
- /**
- * The options to initialize i18next with.
- *
- * @type {Object}
- */
- const options = {
- app:
- (typeof interfaceConfig !== 'undefined' && interfaceConfig.APP_NAME)
- || 'Jitsi Meet',
- compatibilityAPI: 'v1',
- compatibilityJSON: 'v1',
- fallbackLng: DEFAULT_LANGUAGE,
- fallbackOnEmpty: true,
- fallbackOnNull: true,
-
- // XXX i18next modifies the array lngWhitelist so make sure to clone
- // LANGUAGES.
- lngWhitelist: LANGUAGES.slice(),
- load: 'unspecific',
- ns: {
- defaultNs: 'main',
- namespaces: [ 'main', 'languages', 'countries' ]
- },
- resGetPath: 'lang/__ns__-__lng__.json',
- useDataAttrOptions: true
- };
-
- i18next
- .use(navigator.product === 'ReactNative' ? {} : I18nextXHRBackend)
- .use(languageDetector)
- .use({
- name: 'resolveAppName',
- process: (res, key) => i18next.t(key, { app: options.app }),
- type: 'postProcessor'
- })
- .init(options);
-
- // Add default language which is preloaded from the source code.
- i18next.addResourceBundle(
- DEFAULT_LANGUAGE,
- 'countries',
- COUNTRIES_RESOURCES,
- /* deep */ true,
- /* overwrite */ true);
- i18next.addResourceBundle(
- DEFAULT_LANGUAGE,
- 'languages',
- LANGUAGES_RESOURCES,
- /* deep */ true,
- /* overwrite */ true);
- i18next.addResourceBundle(
- DEFAULT_LANGUAGE,
- 'main',
- MAIN_RESOURCES,
- /* deep */ true,
- /* overwrite */ true);
-
- // Add builtin languages.
- // XXX: Note we are using require here, because we want the side-effects of the
- // import, but imports can only be placed at the top, and it would be too early,
- // since i18next is not yet initialized at that point.
- require('./BuiltinLanguages');
-
- export default i18next;
|