カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

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

概要: 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で超簡単に国際化する方法でした。

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

ノシ