Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

i18next.js 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import i18next from 'i18next';
  2. import I18nextXHRBackend from 'i18next-xhr-backend';
  3. import LANGUAGES_RESOURCES from '../../../../lang/languages.json';
  4. import MAIN_RESOURCES from '../../../../lang/main.json';
  5. import { DEFAULT_LANGUAGE, LANGUAGES } from './constants';
  6. import languageDetector from './languageDetector';
  7. declare var interfaceConfig: Object;
  8. /**
  9. * The options to initialize i18next with.
  10. *
  11. * @type {Object}
  12. */
  13. const options = {
  14. app:
  15. (typeof interfaceConfig !== 'undefined' && interfaceConfig.APP_NAME)
  16. || 'Jitsi Meet',
  17. compatibilityAPI: 'v1',
  18. compatibilityJSON: 'v1',
  19. fallbackLng: DEFAULT_LANGUAGE,
  20. fallbackOnEmpty: true,
  21. fallbackOnNull: true,
  22. // XXX i18next modifies the array lngWhitelist so make sure to clone
  23. // LANGUAGES.
  24. lngWhitelist: LANGUAGES.slice(),
  25. load: 'unspecific',
  26. ns: {
  27. defaultNs: 'main',
  28. namespaces: [ 'main', 'languages' ]
  29. },
  30. resGetPath: 'lang/__ns__-__lng__.json',
  31. useDataAttrOptions: true
  32. };
  33. i18next
  34. .use(I18nextXHRBackend)
  35. .use(languageDetector)
  36. .use({
  37. name: 'resolveAppName',
  38. process: (res, key) => i18next.t(key, { app: options.app }),
  39. type: 'postProcessor'
  40. })
  41. .init(options);
  42. // Add default language which is preloaded from the source code.
  43. i18next.addResourceBundle(
  44. DEFAULT_LANGUAGE,
  45. 'main',
  46. MAIN_RESOURCES,
  47. /* deep */ true,
  48. /* overwrite */ true);
  49. i18next.addResourceBundle(
  50. DEFAULT_LANGUAGE,
  51. 'languages',
  52. LANGUAGES_RESOURCES,
  53. /* deep */ true,
  54. /* overwrite */ true);
  55. export default i18next;