狠狠撸

狠狠撸Share a Scribd company logo
国際化 (I18n) API 編
Rails解説セミナー
http://railsguides.jp/
セミナーを
始める前に
講義中に参照したリンクはコメント欄で (質問もお気軽に)
講師のターミナルは下記 URL から閲覧できます :)
http://screenx.tv/yasulab
狠狠撸 is in 狠狠撸Share!
http://www.slideshare.net/yasulab/presentations
質問はいつでもお気軽に!
個別相談は休憩や終了後に :)
Sample App で実験 :)
https://github.com/yasslab/sample_app
1. $ git clone  ?
https://github.com/yasslab/sample_apps.git
2. 対象のディレクトリに移動後: $ git init ;?
$ bundle exec rake db:migrate?
$ bundle exec rake db:test:prepare?
$ bundle exec rake db:populate
3. $ gem install rails --version 4.0.5
4. $ rbenv install 2.2.2
5. $ gem install rails --version 4.2.3
下準備
Ready?
解説セミナーを
進めていきましょう!
国際化 (I18n) API 編
Rails解説セミナー
http://railsguides.jp/
? 中級者~上級者向けの大型リファレンス
? 読み進める順番は特になく、機能毎に解説:
? e.g. Active Record の基礎、バリデーション
? e.g. Action View の概要、フォームヘルパー
? e.g. Action Controller の概要、ルーティング
? 例外: Railsをはじめよう → Rails チュートリアル
? ウェブ版は全編無料! http://railsguides.jp/
Railsガイドとは?
今回のテーマ
Rails 国際化 (I18n) API
http://railsguides.jp/i18n.html
? I18n の仕組みと Locale (ロケール)
? 国際化と Localization の違い
? Locale の切り分け方法
? Locale を切り分ける3つの方法
? アプリケーションを国際化してみる
? お題: Signup エラーを日本語化してみよう
? 他、紹介しきれなかった API の紹介
今日やること
? I18n の仕組みと Locale (ロケール)
? 国際化と Localization の違い
? Locale の切り分け方法
? Locale を切り分ける3つの方法
? アプリケーションを国際化してみる
? お題: Signup エラーを日本語化してみよう
? 他、紹介しきれなかった API の紹介
今日やること
? Railsアプリケーションを「国際化」する仕組み.?
国際化と Localization は別モノ.?
?
国際化:?
使用されるすべての文言や、ロケール固有の要素
(日付や通貨フォーマット等) の抽象化までの作業?
?
Localization (日本語化など):?
具体的な翻訳方法を提供したり、?
そのためのフォーマットを提供したりすること
I18n の仕組み
? 国際化の流れ:?
i18nを確実にサポートする?
Locale 辞書の置き場所をRailsに指示する?
Locale の設定?保存?切替方法をRailsに指示する
? Localizationの流れ:?
Railsのデフォルトロケールの追加/差し替え?
テキストを抽象化し、キーで検索できる辞書にする?
(flashやerrorメッセージ、固定テキストなどが対象)?
作成した辞書を yaml などの拡張子で保存する
I18n の仕組み
重大なお知らせ
実は国際化は完了済み!
デフォルト文字列 == Locale (ロケール)
? デフォルトの Locale を使って出力してみる?
?
?
? 1. en.yml から ja.yml を作成し、hello を訳文を追加?
2. static_pages_controller.rb に locale を追加?
3. ブラウザの URL に ?locale=ja を入力してみよう!
I18n の Locale を使ってみよう
色々な Locale が既に完成済み
Active Model の Locale のサンプル
https://github.com/rails/rails/blob/master/
activesupport/lib/active_support/locale/en.yml
Active Support の Locale のサンプル
https://github.com/rails/rails/blob/master/
activesupport/lib/active_support/locale/en.yml
色々な Locale が既に完成済み
あとは日本語の
Locale を作成して
切り分けていくだけ
Locale をどうやって
切り分けていくか?
方法1
ドメインで切り分ける
? Top Level ドメイン名を使って切り分ける?
方法 1. ドメインで切り分ける
? サブドメイン名を使って切り分ける
? ?
?
?
?
? アプリケーション内で Locale を切り替える
ここに http://example.ja などを代入
方法 1. ドメインで切り分ける
? ドメインで切り分けるメリット:?
1. Locale が URL の一部として明確に示されるため,?
?User はどの言語で表示されているか理解できる.?
3. Railsでの実装は簡単 (らしい)?
4. 検索エンジンはドメイン名同士に関連性がある?
?ものを優先的に扱っている (らしい)
ただドメインを使ったデモは
準備が面倒なので今回は割愛
方法 1. ドメインで切り分ける
方法2
params で切り分ける
? URL の params (“?locale=ja”など) を使って切り分ける?
# 先ほどの Locale のデモで見せた方法と同じ.?
例: www.example.com/books?locale=ja
? ただし、link_to books_url(locale: I18n.locale) と?
それぞれの View で毎回書くのは面倒そう… orz
方法 2. params で切り分ける
Helper メソッドを上書きしてデフォルト値を設定すると便利 :)
そんなときは
? 「URLの末尾に ?locale=ja はダサい!!」という場合は?
URL の Pattern から locale を取得することも可能 :)?
例1: www.example.com/ja/books ?
例2: www.example.com/en/books ?
# www.example.com/#{lang}/booksあ?
# cf. http://yasslab.jp/ja/ vs. http://yasslab.jp/en/
方法 2. params で切り分ける
Routing で scope メソッドを使うとURL内に locale を埋め込める
(ただし、Root URL の設計には十分に注意すること)
方法3
クライアントの情報を
調べて切り分ける
? Locale の切り分け時に参考になるクライアント情報:?
1. Accept-Languageあ?
?ブラウザやOSで設定した情報が含まれる?
?
2. GeoIPなどの地域情報?
?ユーザーのIPアドレスから地域情報を割り出す?
?cf. 海外からGoogleにアクセスすると言語が変わる?
?
3. ユーザープロファイル?
?Signup 時などにユーザーに言語を選ばせて、?
?その言語情報をアプリケーション全体で共有する
方法 3. クライアント情報で切り分け
今回はデモが簡単な
方法2: params切り分け
を採用して進めます
? I18n の仕組みと Locale (ロケール)
? 国際化と Localization の違い
? Locale の切り分け方法
? Locale を切り分ける3つの方法
? アプリケーションを国際化してみる
? お題: Signup エラーを日本語化してみよう
? 他、紹介しきれなかった API の紹介
今日やること
? 方法2で Locale を切り分けて、helpページで練習!
アプリケーションの国際化
辞書を作成?再起動?管理するのが面倒なので,
今回は en.yml に辞書を追加していきます.
? 自分の好きな辞書を追加してみよう!
アプリケーションの国際化
YAML形式は人間にとって読みやすい! ?
けど、空白スペースや特殊文字だと…?
? I18n.translate (t) メソッドは変数も渡せる
アプリケーションの国際化
greet_username がない辞書 (pirate) で?
t ‘greet_username’ を実行すると…?
? I18n.locale (l) メソッドで日付?時刻も追加できる
? ?
?
?
?
? I18n.translate もネストした情報を取得できます
アプリケーションの国際化
? 他にも色々あります!?
詳細は rails-18n/rails/locale を参照.
アプリケーションの国際化
GitHub の rails-18n を探してみましょう:)
https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale
アプリケーションの国際化
日本語の見本 (ja.yml) もあります!?
見本を使って日本語化してみましょう :)
https://github.com/svenfuchs/rails-i18n/
blob/master/rails/locale/ja.yml
※ 日本語に変わらない場合は rails server を再起動してみましょう
アプリケーションの国際化
? 準備ができたら signup で失败してみよう!
アプリケーションの国際化
? 準備ができたら signup で失败してみよう!
【今回のお題】
ここのエラーメッセージを
日本語にしてみてください
アプリケーションの国際化
? 完成予想図はこんな感じです :)
紹介しきれなかった API の紹介
? 最後に、次のセクションを眺めてみましょう.
Rails 国際化 (I18n) API
http://railsguides.jp/i18n.html
お疲れ様でした
? I18n の仕組みと Locale (ロケール)
? 国際化と Localization の違い
? Locale の切り分け方法
? Locale を切り分ける3つの方法
? アプリケーションを国際化してみる
? お題: Signup エラーを日本語化してみよう
? 他、紹介しきれなかった API の紹介
今日やったこと
参考情报
Rails 国際化 (I18n) API
http://railsguides.jp/i18n.html
国際化 (I18n) API 編
Rails解説セミナー
http://railsguides.jp/

More Related Content

Rails解説セミナー: Rails国際化 (I18n) API