Использование moment.locale ('de') в датах реагирования для отображения перевода на немецкий язык, но с неожиданным выводом - PullRequest
0 голосов
/ 01 октября 2019

Использование moment.locale ('de') в методе render для дат реагирования, чтобы показать перевод на немецкий язык, но получая неожиданный вывод, но при обновлении, снова и снова, он отображает правильные переводы enter image description here

Ответы [ 2 ]

0 голосов
/ 01 октября 2019
 class DateRangeWrapper extends React.PureComponent {
  render() {
    const {
      startDate,
      endDate,
      onDatesChange,
      focusedInput,
      onFocusChange,
      windowStyle,
      rangeSelect,
      blockpastDates,
      displayFormat,
      localelang,
      startDatePlaceholderText,
      endDatePlaceholderText,
    } = this.props;
    **moment.locale(`${localelang}`);**
    return (
      <div className="CalendarComponent">
        <div
          className={
            windowStyle === 'Popup'
              ? windowStyle
              : classnames(windowStyle, 'inlineHeight')
          }
        >
          <DateRangePicker
            {...rangeConfig}
            startDate={rangeSelect === 'fromPresent' ? moment() : startDate}
            endDate={endDate}
            onDatesChange={onDatesChange}
            focusedInput={focusedInput}
            onFocusChange={onFocusChange}
            customArrowIcon={<ArrowIcon />}
            navPrev={<CalendarNavIcon direction="prev" />}
            navNext={<CalendarNavIcon direction="next" />}
            isOutsideRange={
              blockpastDates ? day => moment().diff(day) > 0 : () => false
            }
            renderCalendarInfo={
              windowStyle === 'Popup'
                ? () => (
                  <Controls
                    applyText={this.props.applyText}
                    cancelText={this.props.cancelText}
                    onDatePickerApply={this.props.onDatePickerApply}
                    onDatePickerClose={this.props.onDatePickerClose}
                  />
                  )
                : () => {}
            }
            displayFormat={displayFormat}
            startDatePlaceholderText={startDatePlaceholderText}
            endDatePlaceholderText={endDatePlaceholderText}
          />
        </div>
      </div>
    );
  }
}

localelang - это реквизит, значение которого i18next.language передается от компонента, в котором используется этот компонент даты

0 голосов
/ 01 октября 2019

Вам нужно использовать модуль moment-with-locale-es6, как и сказано в названии, с локалями ... в нормальном модуле только английский

Без какого-либо примера кода довольно сложно выяснить, что здесь не так. .

Я использую вспомогательную функцию для возврата нового объекта moment с текущим языковым стандартом, установленным из моего модуля i18n, и он работает как шарм.

Может быть, это поможет. Вот мой помощник.

import moment from 'moment-with-locales-es6';
import i18n from './i18n';

const momentWithLocale = (...args) => {
  moment.locale(i18n.locale);
  return moment(...args);
};

export default momentWithLocale;

...