i18n_generatorsのご紹介

Preview:

DESCRIPTION

楽天テクノロジーカンファレンス2008でLTしたときのスライド。i18n_generatorsというRails 2.2用自作ライブラリの紹介。

Citation preview

i18n_generatorsのご紹介Akira Matsuda

@ 楽天テクノロジーカンファレンス 2008

自己紹介

http://asakusa.rubyist.net/

今からしゃべること

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

そしたら、

なんか公式Wikiにも載った。http://rails-i18n.org/

頑張ります。

主な機能

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拡張

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

# 再起動不要!