選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

middleware.ts 1.1KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { SET_DYNAMIC_BRANDING_DATA } from '../../dynamic-branding/actionTypes';
  2. import MiddlewareRegistry from '../redux/MiddlewareRegistry';
  3. import { I18NEXT_INITIALIZED, LANGUAGE_CHANGED } from './actionTypes';
  4. import { changeLanguageBundle } from './functions';
  5. import i18next from './i18next';
  6. import logger from './logger';
  7. /**
  8. * Implements the entry point of the middleware of the feature base/i18n.
  9. *
  10. * @param {Store} store - The redux store.
  11. * @returns {Function}
  12. */
  13. MiddlewareRegistry.register(store => next => action => {
  14. switch (action.type) {
  15. case I18NEXT_INITIALIZED:
  16. case LANGUAGE_CHANGED:
  17. case SET_DYNAMIC_BRANDING_DATA: {
  18. const { language } = i18next;
  19. const { labels } = action.type === SET_DYNAMIC_BRANDING_DATA
  20. ? action.value
  21. : store.getState()['features/dynamic-branding'];
  22. if (language && labels && labels[language]) {
  23. changeLanguageBundle(language, labels[language])
  24. .catch(err => {
  25. logger.log('Error setting dynamic language bundle', err);
  26. });
  27. }
  28. break;
  29. }
  30. }
  31. return next(action);
  32. });