LoginSignup
3
4

More than 5 years have passed since last update.

requirejs-i18n を使ったWebアプリの多言語対応

Last updated at Posted at 2014-02-21

RequireJS を使っている人は、requirejs-i18n プラグインを使うと簡単に多言語対応できます。

詳細は下記ページに書いてある通りです。

インストール

i18n.jsをインストールします。

bower install requirejs-i18n

もちろん手動でもいいです。
i18n.js

注意事項

data-main属性で指定したconfigスクリプトのパスに nlsディレクトリを作成してください。
それ以外のパスでは正しく動作しません。

YOUR_CONFIG_PATH/nls/**/*.js

また、同種のリソースファイルのファイル名を同じにします。以下の説明では、wording.jsとしています。

メモ

何の情報をもとに言語判定しているのか

navigator.language または navigator.userLanguage

基本形

ルートとなる文字列リソース

言語コードに対応するリソースが存在しない場合、ルートのリソースが表示されます。

// YOUR_CONFIG_PATH/nls/wording.js
define({
  "root": {
    "trend": "Trends",
    "loading": "Loading...",
    "search": "Search"
  }
});

"en"(英語)をルートのlocaleとするのが良いでしょう。

リソースの読み込み方

// YOUR_CONFIG_PATH/test.js
define(["i18n!nls/wording.js"], function (aWording) {
  console.log("The name for trend in this locale is: " + aWording.trend);
  // The name for trend in this locale is: Trends
});

localeを追加

例)pt-br を追加する場合

// YOUR_CONFIG_PATH/nls/wording.js
define({
  "root": {
    // 省略...
  },
  "pt-br": true    // ポルトガル語(ブラジル)
                   // 以降、同じように列挙.
}

ポルトガル(ブラジル)語のリソースを追加します。

// YOUR_CONFIG_PATH/nls/pt-br/wording.js
define({
  "trend": "Trends",
  "loading": "Carregando...",
  "search": "Pesquisar"
});

localeを追加する毎にディレクトリを作成します。
例では nls/pt-br/wording.js となるようにファイルを配置します。

特定の言語を固定表示

require.config({
  config: {
    i18n: {
      locale: 'ja'    // 日本語の文字列リソースのみを表示
    }
  }
});

リソース読み込みの優先順位

以下のようにポルトガル語のリソースが存在する場合を想定したときに、pt-br の
wording.jsが存在しない場合は pt のwording.jsがロードされます。

YOUR_CONFIG_PATH/nls/pt-br/wording.js
YOUR_CONFIG_PATH/nls/pt/wording.js
YOUR_CONFIG_PATH/nls/wording.js

rootリソースをバンドル化

localeと同じようにディレクトリを作成することもできます。

// YOUR_CONFIG_PATH/nls/wording.js
define({
  "root": true,
  "pt-br": true,
  "pt": true,
  "ja": true,
  "es": false
});
// YOUR_CONFIG_PATH/nls/root/wording.js
define({
  "trend": "Trends",
  "loading": "Loading...",
  "search": "Search"
});
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4