SlideShare a Scribd company logo
1 of 59
Download to read offline
i18n_generators
のご紹介
Akira Matsuda
@ 楽天テクノロジーカンファレンス 2008
自己紹介
http://asakusa.rubyist.net/
今からしゃべること
Ruby on Rails 2.2
のI18N/L10N
を支援するライブラリ
% sudo gem install
amatsuda-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 2008
Sven Fuchsさんの発表
http://en.oreilly.com/railseurope2008/public/schedule/detail/3569
なんかThanksに
名前が載ってた
これはヤバい。
なんか作った。
i18n_generators
http://github.com/
amatsuda/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拡張
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 install
amatsuda-i18n_generators
# Rails 2.2.2がインストールされていることを確認して、
% rails -v
Rails 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
# 再起動不要!

More Related Content

Viewers also liked

Rails Development That Doesn't Hurt
Rails Development That Doesn't HurtRails Development That Doesn't Hurt
Rails Development That Doesn't HurtAkira Matsuda
 
Railsエコシステムの研究
Railsエコシステムの研究Railsエコシステムの研究
Railsエコシステムの研究Akira Matsuda
 
Deep Learningの基礎と応用
Deep Learningの基礎と応用Deep Learningの基礎と応用
Deep Learningの基礎と応用Seiya Tokui
 
NIPS 2016 Overview and Deep Learning Topics
NIPS 2016 Overview and Deep Learning Topics  NIPS 2016 Overview and Deep Learning Topics
NIPS 2016 Overview and Deep Learning Topics Koichi Hamada
 
Uncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game TheoryUncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game TheoryRikiya Takahashi
 
拡がるディープラーニングの活用
拡がるディープラーニングの活用拡がるディープラーニングの活用
拡がるディープラーニングの活用NVIDIA Japan
 

Viewers also liked (6)

Rails Development That Doesn't Hurt
Rails Development That Doesn't HurtRails Development That Doesn't Hurt
Rails Development That Doesn't Hurt
 
Railsエコシステムの研究
Railsエコシステムの研究Railsエコシステムの研究
Railsエコシステムの研究
 
Deep Learningの基礎と応用
Deep Learningの基礎と応用Deep Learningの基礎と応用
Deep Learningの基礎と応用
 
NIPS 2016 Overview and Deep Learning Topics
NIPS 2016 Overview and Deep Learning Topics  NIPS 2016 Overview and Deep Learning Topics
NIPS 2016 Overview and Deep Learning Topics
 
Uncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game TheoryUncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game Theory
 
拡がるディープラーニングの活用
拡がるディープラーニングの活用拡がるディープラーニングの活用
拡がるディープラーニングの活用
 

Similar to i18n_generatorsのご紹介

20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使うRyo Nagai
 
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02Yasuko Ohba
 
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Yuta Shimizu
 
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会Sho Ezawa
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用kotaro_hirayama
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方Tomoya Narita
 
Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1Sea Mountain
 

Similar to i18n_generatorsのご紹介 (9)

20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
 
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
 
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
 
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方
Ruby会議2009:Ruby, Railsによる「ケータイ」ポータルの作り方
 
Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1Ruby on Rails3 Tutorial Chapter1
Ruby on Rails3 Tutorial Chapter1
 

i18n_generatorsのご紹介