Express.jsで国際化を超手軽にする方法

読了まで:約3分


概要: node.js の WAF、Express.js で国際化を手軽にする方法


こんにちま!

最近というか三月後半から四月後半にかけて、 家の方がゴタゴタしていてモリモリ元気をなくしていたにゃるらコト岡村 直樹(24)です。皆様お久しぶりでございます。

なんかこのブログを書くのが久しぶりすぎて、

どういうノリで書いていたか が思い出せないのですが、

とりあえず、僕のガジェット系ブログ、

みたいなノリで書きたいと思います。

Express.js で超手軽に国際化する方法

早速本題。

最近というかまんま今日のコトなのですが、 node.js を使って、リアルタイム掲示板なるケッタイなモノを作っていたとき、

国際化、どうすんだべ?

ってなって、色々と検索していた結果、 i18n-nodeを使うと超手軽に国際化できる! ということが分かったので、その辺りまとめたいと思います。

本日の環境

  • node.js 0.4.12
  • Express 2.5.0
  • ejs 0.7.1
  • i18n-node 0.3.0

やり方

サンプルコードはこちら:

上記 Gist を checkout して試す場合、 ディレクトリ構造はこんな感じにする必要があります。

root/
app.js
templates/
index.ejs
locales/
ja.js

解説

まあやってるコトそのものは Gist のコード見たい方が早いですが、 ざざっと解説すると、app.jsでは、

  1. i18n-nodeをロード
  2. i18n-nodeで使うロケールを指定
  3. i18n-nodeの関数を、テンプレート用ヘルパーに登録
  4. i18n-nodeに用意されている Middleware を登録

という感じのコトを行っています。

で、三番の テンプレートヘルパーへの登録 の部分は、

app.helpers({
'l':  i18n.__
, 'ln': i18n.__n
});

という感じになっていて、このコードによって、テンプレート、 例えばindex.ejs等では、

<p><%= l('hello world!') %></p>

という感じで呼び出せます。

で、i18n-nodeの便利な所はここらか先で、Gist に有るようなコードを作った上で、 node app.jsして i18n してあるページにアクセスすると、 なんと自動的に翻訳用 JSON ファイルを作ってくれます! 超便利!

それで残りはもう簡単で、自動生成された翻訳用 JSON ファイルに、 各種翻訳版を書いて行けば、国際化は完了、という感じです。

以上解説終わり

えー、この記事を書いている途中で、TYPE-MOON の新作、

が届いたのでさっさと記事を切り上げますが、 以上が Express.js ではi18n-nodeを使って国際化すると楽だよ〜って話でした。

自分で読んだ感じ説明はもうちっとなんとかならんのか、 と思わないでもないですが、プログラマーは言葉で語らずコードで語れ! という感じでごまかしておきます(ぉぃ

それにしたって僕は今日初めて本格的に node.js を使ったコードを書いたのですが、 以外と使えるモンだなーと感じました。なんだろう、 今まで Javascript であっためんどくさい事を考えずにコードを書けるので、 その点が良いのかなーとか思ったりします。

あと基本非同期! っていうのも良いですね! リアルタイム掲示板なんていうケッタイなモノには向いてる感じだし。

ただ僕が作ってるケッタイなモノに関しては、 もうかれこれ 3 年以上はちぎっては投げちぎっては投げをしているので、 今回も完成するかどうかひじょーしきに怪しいですよししょー!

ま、ケッタイなモノが完成するかどうかは一重に僕の意欲にかかってますが、 他にも作りかけな云々がぽつぽつあるので、 そっちも進めて行きながらケッタイなモノを完成させたいと思います。

まあ感想部分は Express.js があんまり関係ないですが、 以上が Express.js で超簡単に国際化する方法でした。

ではまた、次の記事で会いましょう。

ノシ

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。