Node.js

【Node.js】expressで多言語化(日本語化)する方法【コピペで簡単】

どうも、katです!

Node.jsのフレームワークであるexpressを使っていて、認証やバリデーションで、英語のメッセージが表示されることってありますよね。

日本語に書き換えようにも、モジュール内で定義されている箇所を書き換えるとかは抵抗があります。

そんなときに、viewに表示する際に日本語に置き換えることができたら便利ですよね。

今回は、そのやり方について書いていこうと思います。(基本的にコピペでできるので、簡単です!)

前提

前提として、下記が必要です。

多言語化モジュール追加

それではまず、多言語化に必要なi18nというモジュールを追加します。

$ npm install i18n

locales(言語対応リスト)を作成する

次に、日本語にしたい文言毎に、対応表(json)を作成していきます。

まずは、下記ディレクトリとファイルを作成します。

$ mkdir locales
$ cd locales
$ touch ja.json

次に、中身を記載します。※後述しますが、ここに記載しなくても、アプリを動かしていると勝手に追加されていくので、全て網羅する必要はありません。

・ja.json

{
  "Hello": "こんにちは"
}

app.js修正

次に、app.jsを修正していきます。

気を付けないといけないのは、各画面のルーティングをuseする前に書かないと「__ is not defined」というエラーになりますので、気を付けましょう。

・app.js

var i18n = require("i18n");

// 多言語化の利用設定
i18n.configure({
  // 利用するlocalesを設定。これが辞書ファイルとひも付きます
  locales: ['ja', 'en'],
  defaultLocale: 'ja',
  // 辞書ファイルのありかを指定
  directory: __dirname + "/locales",
  // オブジェクトを利用したい場合はtrue
  objectNotation: true
});

app.use(i18n.init);

// manualでi18nセッション管理できるように設定しておきます
app.use(function (req, res, next) {
  if (req.session.locale) {
    i18n.setLocale(req, req.session.locale);
  }
  next();
});

app.use(‘/’, indexRouter)などの前に記載します!!

view側修正

viewでは、日本語化したい文言を、”<%- __(“と “)%>“で囲みます。

<%- __("Hello") %>

変数の場合
<%- __(message) %>

配列の場合
<% messages.forEach(function (message) { %>
  <%- __(message) %>
<% }); %>

また、上記で囲まれた文言がlocalesのリストに存在しない場合は、勝手に追加されますので、漏れが出にくくて便利です!

最後に

いかがだったでしょうか?

やり方さえ間違えなければ、30分もあれば簡単に導入できる方法かと思いますので、是非やってみてください!

 以上、「 expressで多言語化(日本語化)する方法」でした~。

 

よろしければ以下も見てみて下さい。

【Node.js入門】インストール~画面表示(Hello World) 【Linux編】Node.jsのインストール〜画面を表示させるまでの説明です。...
【Node.js入門】バージョン指定方法node.jsのバージョンの切り替え方法について説明します。...
ABOUT ME
kat
プログラマー歴7年、2歳の子供を持つパパです。 興味のあることはプログラミングや今後のIT技術などです。 趣味でオンラインカードゲームのサイトを運営しております。 プログラミングを通して社会に貢献していきたいです。