Je tente de mettre en place i18n sur une application React en utilisant react-intl. L'application est rendue de manière universelle (à la fois sur le client et sur le serveur en utilisant node). Un exemple basique de ce que j'ai est le suivant:
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import {IntlProvider, FormattedDate} from 'react-intl';
class App extends Component {
const date = new Date();
render() {
return (
);
}
}
ReactDOM.render(
,
document.getElementById('container')
);
La date formatée rendue par le serveur est différente de la date rendue par le client, ce qui entraîne une invalidité du checksum react et provoque l'annulation du rendu côté serveur. Le serveur renvoie la locale en-US de la date et le navigateur rend en-GB
J'ai essayé ce petit test à la fois sur le serveur et sur le navigateur:
var date = new Date();
console.log(date.toLocaleDateString('en-GB'));
console.log(date.toLocaleDateString('en-US'));
Dans le navigateur, cela affiche:
"13/04/2016" "4/13/2016"
Ce qui est ce que je m'attendais, mais dans node j'obtiens
"4/13/2016" "4/13/2016"
Ce qui est peut-être la raison pour laquelle la version rendue par le serveur du code react est différente de la version du navigateur??
Je suppose que c'est là le problème. Node est en version v5.4.1