i18n.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import i18n from 'i18next';
  2. import LanguageDetector from 'i18next-browser-languagedetector';
  3. import { reactI18nextModule } from 'react-i18next';
  4. import resources from '@alias/locales';
  5. export default (userlang) => {
  6. // setup LanguageDetector
  7. const langDetector = new LanguageDetector();
  8. langDetector.addDetector({
  9. name: 'userSettingDetector',
  10. lookup(options) {
  11. return userlang;
  12. },
  13. cacheUserlanguage(lng, options) {
  14. },
  15. });
  16. return i18n
  17. .use(langDetector)
  18. .use(reactI18nextModule) // if not using I18nextProvider
  19. .init({
  20. debug: (process.env.NODE_ENV !== 'production'),
  21. resources,
  22. load: 'currentOnly',
  23. fallbackLng: 'en-US',
  24. detection: {
  25. order: ['userSettingDetector', 'querystring', 'localStorage'],
  26. },
  27. interpolation: {
  28. escapeValue: false, // not needed for react!!
  29. },
  30. // react i18next special options (optional)
  31. react: {
  32. wait: false,
  33. bindI18n: 'languageChanged loaded',
  34. bindStore: 'added removed',
  35. nsMode: 'default'
  36. }
  37. });
  38. };