When using react-rails for an internationalized app it makes a lot of sense to use i18n-js for translations, so that you can reuse the the strings from your rails app's .yml files (and all the tooling & services that exist around that).
When you use the prerender feature of react-rails you face 2 problems:
- The first is that
translation.js
&i18n.js
from i18n-js need to be loaded inside the server-side JS prerendering processes, which is achieved by loading them inside thecomponents.js
. - The second problem is the server processes need to be aware of the current
locale
of each HTTP request. This is done by adding a custom renderer and using thebefore_render
hook to configure i18n-js accordingly for each render call.
@jhilden normally in a react applications I'm setting
I18n.locale
in a root component, and passingI18n.locale
into areact_component
. Benefit - you can change locales inside an client application without reloading whole app on a server-side, through it depends on high level application architecture, looks more js-friendly :)