Node.jsで日本語と英語のページを両方とも表示する(多言語対応)(EJS)

言語のために変な実装をしてコードを煩わしい状態にしたくなかったので、今回ちゃんとNode.jsでの多言語対応を行う.

使うのは “i18n”.

https://github.com/mashpie/i18n-node

まずはインストール

npm install i18n –save

次はapp.jsの整備

以下のように書く.configureくらいしか設定することは特に無い.あとはapp.use(i18n.init)をする.

今回は日本語と英語の設定をする.デフォルトは日本語設定に.

フォルダファイルの環境整備

localesは言語ごとのファイルを置く場所.とりあえずlocalesディレクトリだけ作る.

スクリーンショット 2018-10-14 1.30.30.png

とりあえずページに表示を試みる

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 …”

}

なので、作業手順は

  1. とりあえずページを書き上げる.
  2. 日本語の内容を<%= __(“ここにかく”)%>でくくるようにする
  3. 勝手にjsonに”ここにかく”をキーにした連想配列が追加される
  4. 各言語のjsonを書き換える

でよいはず.

これで多言語対応ができた.

楽チン.

About the author

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です