示例#1
0
        .then(() => {
          // eslint-disable-next-line global-require
          let i18nData = {};
          try {
            if (locale !== langToLocale(config.get('defaultLang'))) {
              // eslint-disable-next-line global-require, import/no-dynamic-require
              i18nData = require(
                `../../locale/${locale}/${appInstanceName}.js`);
            }
          } catch (e) {
            log.info(
              `Locale JSON not found or required for locale: "${locale}"`);
            log.info(
              `Falling back to default lang: "${config.get('defaultLang')}".`);
          }
          const i18n = makeI18n(i18nData, lang);

          const InitialComponent = (
            <I18nProvider i18n={i18n}>
              <Provider store={store} key="provider">
                <ReduxAsyncConnect {...renderProps} />
              </Provider>
            </I18nProvider>
          );

          const asyncConnectLoadState = store.getState().reduxAsyncConnect.loadState || {};
          const reduxResult = getReduxConnectError(asyncConnectLoadState);
          if (reduxResult.status) {
            return showErrorPage(res, reduxResult.status);
          }

          return hydrateOnClient({ component: InitialComponent });
        })
 it('always returns a scoped moment instance', () => {
   const i18n = utils.makeI18n({}, 'fr', FakeJed);
   // Modifying the locale globally below does not affect the instance
   // created previously.
   moment.locale('de');
   expect(i18n.moment().locale()).toEqual('fr');
 });
 it('falls-back to number.toLocaleString if Intl is not an object', () => {
   const numberFormatSpy = sinon.spy(Intl, 'NumberFormat');
   const i18n = utils.makeI18n({}, 'de', FakeJed, { _Intl: false });
   const toLocaleStringSpy = sinon.spy(Number.prototype, 'toLocaleString');
   const number = 9518231;
   expect(i18n.formatNumber(number)).toEqual('9.518.231');
   sinon.assert.calledWith(toLocaleStringSpy, 'de');
   sinon.assert.notCalled(numberFormatSpy);
 });
 it('falls-back to number.toLocaleString when Intl is missing a NumberFormat constructor', () => {
   const numberFormatSpy = sinon.spy(Intl, 'NumberFormat');
   const i18n = utils.makeI18n({}, 'fr', FakeJed, { _Intl: {} });
   const toLocaleStringSpy = sinon.spy(Number.prototype, 'toLocaleString');
   const number = 12345;
   expect(i18n.formatNumber(number)).toEqual('12 345');
   sinon.assert.calledWith(toLocaleStringSpy, 'fr');
   sinon.assert.notCalled(numberFormatSpy);
 });
 it('Creates an Intl.NumberFormat instance and uses it for formatting', () => {
   const numberFormatSpy = sinon.spy(Intl, 'NumberFormat');
   const i18n = utils.makeI18n({}, 'de', FakeJed);
   sinon.assert.calledWith(numberFormatSpy, 'de');
   const toLocaleStringSpy = sinon.spy(Number.prototype, 'toLocaleString');
   const number = 9518231;
   expect(i18n.formatNumber(number)).toEqual('9.518.231');
   sinon.assert.notCalled(toLocaleStringSpy);
 });
示例#6
0
 it('tries to localise moment', () => {
   const i18nData = {
     options: {
       _momentDefineLocale: sinon.stub(),
       locale_data: { messages: { '': { lang: 'fr' } } },
     },
   };
   const i18n = utils.makeI18n(i18nData, FakeJed);
   assert.equal(i18n.moment.locale(), 'fr');
 });
 it('always passes the locale to moment', () => {
   const i18nData = {
     options: {
       _momentDefineLocale: null,
       locale_data: { messages: { '': { lang: 'fr' } } },
     },
   };
   const i18n = utils.makeI18n(i18nData, 'fr', FakeJed);
   expect(i18n.moment().locale()).toEqual('fr');
 });
    it('does not localise if _momentDefineLocale is not a function', () => {
      const i18nData = {
        options: {
          _momentDefineLocale: null,
          locale_data: { messages: { '': { lang: 'fr' } } },
        },
      };

      const i18n = utils.makeI18n(i18nData, 'en', FakeJed);
      expect(i18n.moment().locale()).toEqual('en');
    });
 it('tries to localise moment', () => {
   const i18nData = {
     options: {
       _momentDefineLocale: sinon.stub(),
       locale_data: { messages: { '': { lang: 'fr' } } },
     },
   };
   const i18n = utils.makeI18n(i18nData, 'fr', FakeJed);
   expect(i18n.moment().locale()).toEqual('fr');
   sinon.assert.called(i18nData.options._momentDefineLocale);
 });
 it('formats a date', () => {
   const i18n = utils.makeI18n({}, 'fr', FakeJed);
   expect(i18n.moment('1988-09-22').format('ll')).toEqual('22 sept. 1988');
 });
 it('formats a number', () => {
   const i18n = utils.makeI18n({}, 'en', FakeJed);
   expect(i18n.formatNumber(9518231)).toEqual('9,518,231');
 });
 it('exposes the lang', () => {
   const i18n = utils.makeI18n({}, 'af', FakeJed);
   expect(i18n.lang).toEqual('af');
 });
 it('adds a localised moment function to the i18n object', () => {
   const i18nData = {};
   const i18n = utils.makeI18n(i18nData, 'en-US', FakeJed);
   expect(i18n.moment).toBeTruthy();
   expect(typeof i18n.moment).toBe('function');
 });
示例#14
0
 it('adds a localised moment to the i18n object', () => {
   const i18nData = {};
   const i18n = utils.makeI18n(i18nData, FakeJed);
   assert.ok(i18n.moment);
   assert.typeOf(i18n.moment, 'function');
 });