Escenario
Por un lado una aplicación que permite al usuario personalizar el idioma del sitio. Por otro, una gráfica de tipo línea temporal generada con la biblioteca Chart.js, integrada en un módulo de React con react-chartjs-2.Problema
Según un comentario de un usuario de Stackoverflow, basta con un require('moment/min/moment-with-locales'); y establecer el valor de la locale con moment.locale('es'). Es necesario que la definamos antes de que se pinte la gráfica. De ahí que la incluyera en el primer método del ciclo de vida de React:
1 2 3 4 |
constructor(props) { super(props); moment.locale(this.props.userLocale) } |
1 2 3 4 |
constructor(props) { super(props); require('moment/locale/' + this.props.userLocale) } |
1 2 3 4 5 6 7 8 9 10 11 |
setLocale() { switch (this.props.userLocale) { case 'es': require('moment/locale/es'); break; default: require('moment/locale/en-ca'); break; } } |
1 |
parser: (date) => { moment.locale(this.props.userLocale); return moment(date)} |