Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

939 views

Published on

Railsガイド解説セミナーのスライド資料です

Railsガイド: http://railsguides.jp/
Railsガイド解説セミナー: http://railsguides.jp/options.html#seminar


【関連リンク】
Railsチュートリアル: http://railstutorial.jp/
Railsチュートリアル解説セミナー: http://railstutorial.jp/seminars
Railsスクリーンキャスト: http://railstutorial.jp/screencasts
Railsビギナーズ倶楽部: http://coedo-rails.doorkeeper.jp/

Published in: Education
  • Be the first to comment

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

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

×