言語のために変な実装をしてコードを煩わしい状態にしたくなかったので、今回ちゃんとNode.jsでの多言語対応を行う.
使うのは “i18n”.
https://github.com/mashpie/i18n-node
まずはインストール
npm install i18n –save
次はapp.jsの整備
以下のように書く.configureくらいしか設定することは特に無い.あとはapp.use(i18n.init)をする.
今回は日本語と英語の設定をする.デフォルトは日本語設定に.
フォルダファイルの環境整備
localesは言語ごとのファイルを置く場所.とりあえずlocalesディレクトリだけ作る.
とりあえずページに表示を試みる
ejsやjadeのページの中で以下のように記述する.
ejsを例にすると以下のような感じ.
<%= __(“HELLO”)%>
app.useでi18n.initを指定してもらっているので、__を自由なタイミングで使える.
上記の行を入れてなんかのページをひらけば,
HELLOの文字が表示されて見つかるはず.
ja.jsonやen.jsonを編集する
さっきの表示を行うことで、localesのなかにja.jsonとen.jsonが作成されて、その中にHELLOの連想配列が用意される.
{
“HELLO” : “HELLO”
}
i18nでは、見つからなかった単語に関してはこのように勝手に追加してくれる.
また、連想配列のキーには当然日本語や文章でも構わない.
なので、以下のような形もできる.
{
“昔々、あるところにおじいさんとおばあさんがいました.おじいさんは山に” : “Once upon a time, Grand mother …”
}
なので、作業手順は
- とりあえずページを書き上げる.
- 日本語の内容を<%= __(“ここにかく”)%>でくくるようにする
- 勝手にjsonに”ここにかく”をキーにした連想配列が追加される
- 各言語のjsonを書き換える
でよいはず.
これで多言語対応ができた.
楽チン.