概要
タイトルからある程度想像はつくと思うけど、一応書く。
前提
- Play! framework の messages ファイルとかを使って、テキストの i18n を行っている。ドキュメントはこの辺
- 日付とか、その辺の i18n は今のところやっていない
やりたい事
- React で表示しているメッセージも多言語化したい
- Play 用、React 用と、ファイルを2セット用意するのは避けたい
環境
- Play! framework 2.5
- React 15
結論 (tl;dr)
- Play JsMessages というライブラリを使用し、messages ファイルの内容を JavaScript のオブジェクトとして出力するエンドポイントを作成 (/i18njs/allMessages という名前にした)
- Play! framework のビューの中で <script> タグを使ってそのJSオブジェクトを読み込む
- i18next というライブラリに、その JS オブジェクトを渡す
- React (やその他 JS コード)でテキストを出力する部分で、i18next を使う