i18n_generatorsのご紹介Akira Matsuda
@ 楽天テクノロジーカンファレンス 2008
自己紹介
今からしゃべること
Ruby on Rails 2.2のI18N/L10N
を支援するライブラリ
% sudo gem installamatsuda-i18n_generators
Rails I18n のおさらい
Ruby on Railsって、なんていう言語で書かれているフレームワークかご存知ですか?
Ruby on Rails(< 2.2)
Ruby on Rails(< 2.2)は英語で書かれている。
Ruby
英 語
Rails
Application ApplicationApplication
Rails I18nはRailsから英語を排除
これにより、
従来の日本語化
Ruby
英 語
Rails
Application ApplicationApplication
ここらへんで頑張って動的にローカライズ
Rails 2.2での日本語化
Ruby
Rails + i18n
Application ApplicationApplication
すっきり!
• 実行時に翻訳エンジンがmixinされないので、 動作が追いやすい• 実行時に翻訳エンジンがmixinされないので、 (たぶん)早い• 環境構築が楽チン!• 定義ファイルは読み書きしやすいYAMLで• 再起動ナシで再読み込み• etc. etc.
merits
no more monkey patching!
Rails I18n and me
2008年7月
Rails勉強会@東京 第31回で「Rails 2.2のI18nについてくわしく」のセッションオーナーをやった
中の人と個人的に何度かメールのやり取りをした
日本語のロケールファイルja.yml
をプロジェクトにコミット
要望チケットを何件か挙げた。
それだけ。
2008/9/4
RailsConf Europe 2008Sven Fuchsさんの発表
http://en.oreilly.com/railseurope2008/public/schedule/detail/3569
なんかThanksに名前が載ってた
これはヤバい。
なんか作った。
i18n_generators
http://github.com/amatsuda/i18n_generators/
そしたら、
頑張ります。
主な機能
1. アプリのデフォルトロケールを設定
2.ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5. scaffoldをi18n拡張
1. アプリのデフォルトロケールを設定
2. ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5. scaffoldをi18n拡張
DHHが作ったconfig/environment.rbの定義を書き換えるだけ。
1. アプリのデフォルトロケールを設定
2. ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5. scaffoldをi18n拡張
http://github.com/svenfuchs/rails-i18n/から世界中のみんなが作った.ymlをコピる。
or
Unicode CLDRプロジェクトのWEBサイトをスクレイピングしてそれっぽいファイルを捏造す作る。
1. アプリのデフォルトロケールを設定
2. ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5. scaffoldをi18n拡張
全モデルとその属性をループしつつ、Google翻訳API にガンガン食わせる。
1. アプリのデフォルトロケールを設定
2. ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5. scaffoldをi18n拡張
同上。
1. アプリのデフォルトロケールを設定
2. ロケール定義ファイルを自動生成
3. DB内の全modelとその全カラムの翻訳YAMLを生成
4. viewで呼び出されているtranslationの翻訳YAMLを生成
5.scaffoldをi18n拡張
Iain Heckerさんの作品をそのままパチっ借用してscaffoldジェネレーターに食わせているだけ。
以上、全部他人のフンドシ。
DEMO(ドラが鳴るまで)
% sudo gem installamatsuda-i18n_generators
# Rails 2.2.2がインストールされていることを確認して、% rails -vRails 2.2.2
# アプリを作成% rails rakuten
# generate i18n_scaffold% ./script/generate i18n_scaffold todo title:string
# migrate% rake db:migrate
# 確認してみる% ./script/server
# generate i18n で日本語化!% ./script/generate i18n ja
# 再起動% ./script/server
# スキーマ変更してみる% ./script/destroy scaffold todo % ./script/generate i18n_scaffold todo title:string registered_at:datetime
#モデルの翻訳のみ更新する i18n_translation% ./script/generate i18n --translation ja
# 再起動不要!
#翻訳が気に食わないので直す% vi config/locales/translation_ja.yml
# 再起動不要!