Невозможно изменить локаль default.js по умолчанию в компоненте реагирования. - PullRequest
0 голосов
/ 06 мая 2018

Я хочу изменить локаль dafault этого компонента на fr. Вот этот компонент:

import EventEmitter from 'events';
import pt from 'prop-types';
import React from 'react';
import moment from 'moment';

moment.locale("fr");

class Ticker extends EventEmitter {
  tick = () => this.emit('tick');

  constructor(interval) {
    super();
    this.setMaxListeners(0);
    this.once('newListener', () => setInterval(this.tick, interval));
  }
}

const ticker = new Ticker(30000); // 30 sec

export default class TimeDisplay extends React.Component {
  static propTypes = {
    timeStamp: pt.oneOfType([pt.number.isRequired, pt.string.isRequired]),
    className: pt.string,
    timeAgoInTitle: pt.bool,
  };

  refresh = () => this.forceUpdate();

  componentDidMount() {
    ticker.addListener('tick', this.refresh);
  }

  componentWillUnmount() {
    ticker.removeListener('tick', this.refresh);
  }

  render() {
    moment.locale("fr");
    const time = moment(this.props.timeStamp);
    const timeAgo = Math.abs(moment().diff(time)) < 1000 ? 'maintenant' : time.fromNow();
    const timeISO = time.format();

    const title = this.props.timeAgoInTitle ? timeAgo : time.format('lll');
    const contents = this.props.children ? this.props.children : timeAgo;

    return (
      <time className={this.props.className} dateTime={timeISO} title={title}>{contents}</time>
    );
  }
}

Как видите, я установил moment.locale("fr"); как после импорта, так и при рендеринге, но строки моментов по-прежнему отображаются на английском языке. Как я могу это исправить?

1 Ответ

0 голосов
/ 06 мая 2018

добавить relativeTime в moment.locale, лучше использовать moment.locale в componentWillMount, а не render функцию

moment.locale('fr', {
      relativeTime : {
          future : 'dans %s',
          past : 'il y a %s',
          s : 'quelques secondes',
          m : 'une minute',
          mm : '%d minutes',
          h : 'une heure',
          hh : '%d heures',
          d : 'un jour',
          dd : '%d jours',
          M : 'un mois',
          MM : '%d mois',
          y : 'un an',
          yy : '%d ans'
      }
  });
...