Ruby on Rails で gettext を使う
あとで i18n もやるので、ブランチを作って作業する。
git branch gettext
git checkout gettext
次を参考に
- Ruby on RailsでRuby-GetText-Packageを使う (Rails-2.3.2以降) - よたらぼ 保管庫
- RadRailsでのRuby-GetText-Packageの使い方覚え書き - マックな色々・・・・。 - Yahoo!ブログ
まず必要なものを vendor/gems にインストールするために
rake -T |
grep gems
rake gems # List the gems that this rails application depends on
rake gems:build # Build any native extensions for unpacked gems
rake gems:build:force # Force the build of all gems
rake gems:install # Installs all required gems.
rake gems:refresh_specs # Regenerate gem specifications in correct format.
rake gems:unpack # Unpacks all required gems into vendor/gems.
rake gems:unpack:dependencies # Unpacks all required gems and their dependencies into vendor/gems.
config/environments.rb に config.gem "gettext"
を追加する。
Rails::Initializer.run do |config|
config.gem 'locale'
config.gem 'locale_rails'
config.gem 'gettext'
config.gem 'gettext_activerecord'
config.gem 'gettext_rails'
次の一連の rake を実行すると vendor/gems の下に gettext が配置される。
rake gems:unpack:dependencies
rake gems:build
ApplicationController に init_gettext "blog"
を追加する。
これでサーバを再起動すると検証エラー等が日本語になっている。
apps/blog/vendor/gems/gettext_rails-2.1.0/README.rdoc を参考に lib/tasks/gettext.rake を作成する。
# -*- mode: ruby -*-
require 'rubygems'
namespace :gettext do
desc "Create mo files"
task :makemo do
require 'gettext_rails/tools'
GetText.create_mofiles
end
desc "Update po file"
task :updatepo do
require 'gettext_rails/tools'
# Need to access DB to find Model table/column names.
# Use config/database.yml which is the same style with rails.
GetText.update_pofiles("blog",
Dir.glob("{app,config,components,lib}/**/*.{rb,erb}"),
"blog 1.0.0")
end
end
次で po/blog.pot ファイルを作成する。
rake gettext:updatepo
po/blog.pot を編集。
次で po/ja/blog.po を作成。この手順は最初の1回だけ。 msginit は cp でも ok?
cd po
mkdir ja
msginit -i blog.pot -o ja/blog.po
po/ja/blog.po の msgstr に日本語を書く。
rake gettext:makemo
次で locale/ja/LC_MESSAGES/blog.mo を作成。
rake makemo
サーバを再起動する。
_() を追加したら rake gettext:updatepo する。 po/ja/blog.po を編集したら rake gettext:makemo して、サーバを再起動する。
0 件のコメント:
コメントを投稿