diff --git a/guides/source/ja/i18n.md b/guides/source/ja/i18n.md index a7aa8ca8da9..28728bd454f 100644 --- a/guides/source/ja/i18n.md +++ b/guides/source/ja/i18n.md @@ -68,7 +68,7 @@ localize # DateオブジェクトやTimeオブジェクトを現地のフォー 上のメソッドにはそれぞれ`#t`と`#l`というエイリアスメソッドがあるので、以下のように簡潔に書けます。 ```ruby -I18n.t 'store.title' +I18n.t "store.title" I18n.l Time.now ``` @@ -118,7 +118,7 @@ NOTE: I18のバックエンドは、訳文が初めて参照されるときに `config/application.rb`では次のように、デフォルトのロケールを変更したり訳文読み込みパスを設定したりできます。 ```ruby -config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb, yml}')] +config.i18n.load_path += Dir[Rails.root.join("my", "locales", "*.{rb,yml}")] config.i18n.default_locale = :de ``` @@ -128,7 +128,7 @@ config.i18n.default_locale = :de # config/initializers/locale.rbファイルの内容: # I18nライブラリに訳文の探索場所を指示する -I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb, yml}')] +I18n.load_path += Dir[Rails.root.join("lib", "locale", "*.{rb,yml}")] # アプリケーションでの利用を許可するロケールのリストを渡す I18n.available_locales = [:en, :pt] @@ -192,7 +192,7 @@ end # 127.0.0.1 application.pl # /etc/hostsファイルに上のように記述する必要がある def extract_locale_from_tld - parsed_locale = request.host.split('.').last + parsed_locale = request.host.split(".").last I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil end ``` @@ -202,8 +202,11 @@ end ```ruby # リクエストのサブドメインからロケールを取り出す (http://it.application.local:3000のような形式) # この動作をローカルPCで行なうためには -# 127.0.0.1 gr.application.local -# /etc/hostsファイルに上のように記述する必要がある +# /etc/hostsファイルに以下のように記述する必要がある +# 127.0.0.1 it.application.local +# +# さらに、config/environments/development.rbに以下の設定を追加する必要もある +# config.hosts << 'it.application.local:3000' def extract_locale_from_subdomain parsed_locale = request.subdomains.first I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil @@ -273,7 +276,7 @@ end ```ruby # config/routes.rb -get '/:locale' => 'dashboard#index' +get "/:locale" => "dashboard#index" ``` このルーティング宣言が他のルーティングを「食べてしまう」ことのないよう、**ルーティング宣言の順序**に十分ご注意ください(この記述は`root :to`の直前に置くことも可能です)。 @@ -319,7 +322,7 @@ end private def extract_locale_from_accept_language_header - request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first + request.env["HTTP_ACCEPT_LANGUAGE"].scan(/^[a-z]{2}/).first end ``` @@ -468,12 +471,12 @@ en: ``` ```ruby -I18n.t 'success.true' # => 'True!' -I18n.t 'success.on' # => 'On!' -I18n.t 'success.false' # => 'False!' -I18n.t 'failure.false' # => Translation Missing -I18n.t 'failure.off' # => Translation Missing -I18n.t 'failure.true' # => Translation Missing +I18n.t "success.true" # => 'True!' +I18n.t "success.on" # => 'On!' +I18n.t "success.false" # => 'False!' +I18n.t "failure.false" # => Translation Missing +I18n.t "failure.off" # => Translation Missing +I18n.t "failure.true" # => Translation Missing ``` ### 訳文に変数を渡す @@ -599,7 +602,7 @@ NOTE: Railsのデフォルトのロケール読み込みメカニズムでは、 ```ruby # config/application.rb -config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] +config.i18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}")] ``` I18n API機能の概要 @@ -627,7 +630,7 @@ I18n API機能の概要 ```ruby I18n.t :message -I18n.t 'message' +I18n.t "message" ``` `translate`メソッドには`:scope`オプションも渡せます。このオプションには、「名前空間」を指定するための追加キーを1つ以上含めることも、訳文キーのスコープを含めることもできます。 @@ -647,9 +650,9 @@ I18n.translate "activerecord.errors.messages.record_invalid" したがって、以下の4つの呼び出しはすべて等価です。 ```ruby -I18n.t 'activerecord.errors.messages.record_invalid' -I18n.t 'errors.messages.record_invalid', scope: :activerecord -I18n.t :record_invalid, scope: 'activerecord.errors.messages' +I18n.t "activerecord.errors.messages.record_invalid" +I18n.t "errors.messages.record_invalid", scope: :activerecord +I18n.t :record_invalid, scope: "activerecord.errors.messages" I18n.t :record_invalid, scope: [:activerecord, :errors, :messages] ``` @@ -658,7 +661,7 @@ I18n.t :record_invalid, scope: [:activerecord, :errors, :messages] `:default`オプションが与えられると、訳文が見つからない場合にここで指定した値が返されます。 ```ruby -I18n.t :missing, default: '【訳文なし】' +I18n.t :missing, default: "【訳文なし】" # => '【訳文なし】' ``` @@ -667,7 +670,7 @@ I18n.t :missing, default: '【訳文なし】' 例: 以下では最初に`:missing`というキーを訳文に置き換えようとし、続いて`:also_missing`というキーを置き換えようとします。ここではどちらからも結果を得られないので、「【訳文なし】」という文字列が返されます。 ```ruby -I18n.t :missing, default: [:also_missing, '【訳文なし】'] +I18n.t :missing, default: [:also_missing, "【訳文なし】"] # => '【訳文なし】' ``` @@ -676,14 +679,14 @@ I18n.t :missing, default: [:also_missing, '【訳文なし】'] キーの配列を渡すことで、複数の訳文を一度に参照できます。 ```ruby -I18n.t [:odd, :even], scope: 'errors.messages' +I18n.t [:odd, :even], scope: "errors.messages" # => ["奇数が必要です", "偶数が必要です"] ``` キーは、グループ化された訳文のハッシュに翻訳できます(ハッシュはネストする可能性があります)。たとえば以下のコードでは、「すべての」Active Recordエラーメッセージをハッシュとして受け取れます。 ```ruby -I18n.t 'errors.messages' +I18n.t "errors.messages" # => {:inclusion=>"がリストに含まれていません", :exclusion=> ... } ``` @@ -699,10 +702,10 @@ en: この設定を行わない場合、ネストした式展開は以下のように無視されます。 ```ruby -I18n.t 'welcome', app_name: 'book store' +I18n.t "welcome", app_name: "book store" # => {:title=>"Welcome!", :content=>"Welcome to the %{app_name}"} -I18n.t 'welcome', deep_interpolation: true, app_name: 'book store' +I18n.t "welcome", deep_interpolation: true, app_name: "book store" # => {:title=>"Welcome!", :content=>"Welcome to the book store"} ``` @@ -740,7 +743,7 @@ en: class BooksController < ApplicationController def create # ... - redirect_to books_url, notice: t('.success') + redirect_to books_url, notice: t(".success") end end ``` @@ -753,9 +756,9 @@ end ```ruby I18n.backend.store_translations :en, inbox: { - zero: 'no messages', # オプション - one: 'one message', - other: '%{count} messages' + zero: "no messages", # オプション + one: "one message", + other: "%{count} messages" } I18n.translate :inbox, count: 2 # => '2 messages' @@ -791,7 +794,7 @@ I18n gemには`Pluralization`バックエンドが用意されており、これ ```ruby I18n::Backend::Simple.include(I18n::Backend::Pluralization) I18n.backend.store_translations :pt, i18n: { plural: { rule: lambda { |n| [0, 1].include?(n) ? :one : :other } } } -I18n.backend.store_translations :pt, apples: { one: 'one or none', other: 'more than one' } +I18n.backend.store_translations :pt, apples: { one: "one or none", other: "more than one" } I18n.t :apples, count: 0, locale: :pt # => 'one or none' @@ -1129,9 +1132,9 @@ en: 上の設定により、以下の4つのコードはいずれも`:short`日付フォーマット`"%b %d"`を返します。 ```ruby -I18n.t 'date.formats.short' -I18n.t 'formats.short', scope: :date -I18n.t :short, scope: 'date.formats' +I18n.t "date.formats.short" +I18n.t "formats.short", scope: :date +I18n.t :short, scope: "date.formats" I18n.t :short, scope: [:date, :formats] ``` @@ -1169,7 +1172,7 @@ I18n APIでは以下の例外が定義されています。これらの例外は #### `I18n::MissingTranslationData`の処理方法をカスタマイズする -`config.i18n.raise_on_missing_translations`が`true`の場合、 `I18n::MissingTranslationData`エラーをraiseします。test環境でこれをオンにしておくと、見つからない訳文がリクエストされた場所をキャッチできます。 +`config.i18n.raise_on_missing_translations`が`true`の場合、ビューやコントローラで`I18n::MissingTranslationData`エラーがraiseされます。この値が`:strict`の場合は、このエラーがモデルでもraiseされるようになります。test環境でこれをオンにしておくと、見つからない訳文がリクエストされた場所をキャッチできます。 `config.i18n.raise_on_missing_translations`が`false`(すべての環境のデフォルト)の場合は、例外のエラーメッセージが表示されます。見つからないキーやスコープがメッセージに含まれているので、これを手がかりにコードを修正できます。 @@ -1216,7 +1219,7 @@ Rails I18nへの貢献について Ruby on Rails 2.2から導入されたI18nサポートは、現在も進化し続けています。I18nプロジェクトは、Ruby on Railsの優れた開発規約に沿って進められています。つまり、機能をいきなりコアに導入するのではなく、最初はプラグインとして進化させ、アプリケーションで実地に使うことで改良を重ね、その後に最も広く一般的に利用可能なベストの機能を組み合わせたものだけを抽出して、Railsのコアに採用します。 -ですから、Railsチームはすべての皆様にプラグインなどのライブラリに採り入れられた新しいアイディアや機能をどしどし試していただき、その結果をコミュニティで利用できるようにしていただければと思います(そのときはぜひ[メーリングリスト][mlist]) でもお知らせください)。 +ですから、Railsチームはすべての皆様にプラグインなどのライブラリに採り入れられた新しいアイディアや機能をどしどし試していただき、その結果をコミュニティで利用できるようにしていただければと思います(そのときはぜひ[メーリングリスト][mlist]でもお知らせください)。 自分の欲しいロケールや言語がRuby on Railsの[訳文データのサンプル][sample trans]リポジトリにない場合、リポジトリを[fork][]し、訳文をそこに追加してから[プルリクエスト][pull req]を送信してください。 @@ -1228,11 +1231,9 @@ Ruby on Rails 2.2から導入されたI18nサポートは、現在も進化し リソース --------- -* [Google group: rails-i18n][] - I18nプロジェクトのメーリングリストです。 * [GitHub: rails-i18n][rails-i18n] - I18nプロジェクトのコードリポジトリです。Rails用の訳文は[訳文例][]に多数掲載されています。これらの訳文は大半のアプリケーションで利用できるはずです。 * [GitHub: i18n][] - I18n gemのコードリポジトリです。 -[Google group: rails-i18n]: https://groups.google.com/g/rails-i18n [訳文例]: https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale [GitHub: i18n]: https://github.com/ruby-i18n/i18n