SourceChordスマートフォン用の表示で見るSourceChordC#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。Expressな環境で、i18nextを使ってローカライズする方法です。使い方をメモしときます。ローカライズには、i18nextというライブラリを使ってみました。i18nexthttp://i18next.com/https://www.npmjs.com/package/i18nextこれはブラウザ側でも、node.jsのサーバー側でも使える素敵なライブラリです。Web界隈でのローカライズで一般的に使われている、po/moファイルとの連携手段も用意されているようです。(po/moファイルをjson形式に変換して読み込めるみたい。)http://i18next.com/pages/ext_i18next-conv.htmlNode.jsから使う場合の手順については、以下に書かれていますが、http://i18next.com/node/index.html説明がexpress3のものになっているようで、若干説明が古いです。このページの説明を適宜読み替えて、express4で使ってみました。手順サンプルとして、express-generator(ejs指定)で出力したプロジェクトの雛形でローカライズをやってみます。プロジェクトの雛形作成まずはexpress-generatorで-eオプションを付けて、ejsを使ったプロジェクトの雛形を作ります。プロジェクトの構造は以下のようになります。i18nextのインストールnpmから以下のコマンドでインストールできます。今回は日本語/英語の二種類に対応します。ローカライズ用のデータは、localesという名前のフォルダの下に言語/地域ごとに分けて入れていきます。今回のサンプルでは、地域は入れず、ja/enという名前のフォルダを作成しました。対応する言語のフォルダが無かった場合に、フォールバックして参照するための既定値として、devというフォルダも作ります。translation.jsondev/ja/enそれぞれのフォルダに、jsonファイルでローカライズに使用するテキストを配置します。dev/enのフォルダには、以下のようなファイルを置きます。}}jaフォルダのtranslation.jsonでは以下のように、日本語で文字列を書いておきます。"これはローカライズされた文字列です。}}コード今回作ったプロジェクトとコードはこんな感じです。雛形そのままのコードなどの説明は省略しています。package.jsongeneratorで生成したものに、i18nextの依存を追加しただけです。}}app.jsgeneratorで作った雛形に、以下の4つの処理を追加しています。・ejsなどのテンプレートエンジンから、i18nextの関数を呼べるようにする。(registerAppHelperメソッド)コード全体は以下の通り。ルーターの設定より前にi18nextのミドルウェアの追加処理をしておく。ejsなどの、各種テンプレートエンジン中から、i18nextの関数を使えるようにする。app;routes/index.jsルーティング定義の部分は特になにもしていません。express-generatorで生成したファイルのままです。router;view/index.ejsejsファイルに、ローカライズ対象のテキストを埋め込みます。「」で囲われた中に、以下のように「t.(キー名)」という形でローカライズ対象の文言を展開するための関数呼び出しを書きます。</body></html>プロジェクトの構造は以下のとおりです。実行結果ブラウザで表示し、言語設定を切り替えると、表示されるhtmlのテキストが切り替わります。アプリ開発Windows開発者はてなブログをはじめよう!minami_SCさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。