フォーチュンサモナーズ
«前の日記(2005-08-31) 最新 次の日記(2005-09-07)» 編集

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2005-09-06

_ [Ruby][Rails] Ruby-GetText-Package を使ってみる このエントリーを含むブックマーク

Ruby-GetText-Packageメジャーリリースして rails に対応した とのこと。

ちょうど業務用に作っている rails アプリがあったので、これを日本語化してみました。基本的に Ruby on RailsでRuby-GetText-Packageを使う の通りに作業して問題なく L10N 化できました。

インストール

gem でインストール。

$ sudo gem install gettext
Attempting local installation of 'gettext'
Local gem file not found: gettext*.gem
Attempting remote installation of 'gettext'
Select which gem to install for your platform (i686-linux)
 1. gettext 1.0.0 (ruby)
 2. gettext 1.0.0 (mswin32)
 3. Cancel installation
> 1
Building native extensions.  This could take a while...
ruby extconf.rb install gettext
checking for setlocale()... yes
checking for nl_langinfo()... yes
creating Makefile
 
make
i686-pc-linux-gnu-gcc -fPIC -O2 -pipe -march=pentium4  -fPIC  -I. -I/usr/lib/ruby/1.8/i686-linux -I/usr/lib/ruby/1.8/i686-linux -I. -DHAVE_SETLOCALE -DHAVE_NL_LANGINFO  -c _locale.c
i686-pc-linux-gnu-gcc -shared  -L'/usr/lib' -Wl,-R'/usr/lib' -o _locale.so _locale.o  -Wl,-R -Wl,/usr/lib -L/usr/lib -L. -lruby18  -lpthread -ldl -lcrypt -lm   -lc
 
make install
install -c -p -m 0755 _locale.so /usr/lib/ruby/gems/1.8/gems/gettext-1.0.0/lib
ruby extconf.rb install gettext
checking for setlocale()... yes
checking for nl_langinfo()... yes
creating Makefile
 
make
make: Nothing to be done for `all'.
 
make install
install -c -p -m 0755 _locale.so /usr/lib/ruby/gems/1.8/gems/gettext-1.0.0/lib
Successfully installed gettext-1.0.0

プラットフォームを選択するところがありましたが、mswin32 ではないので ruby を選んでみました。つつがなくインストールできたようです。

$ gem list gettext
*** LOCAL GEMS ***
 
gettext (1.0.0)
    Ruby-GetText-Package is Native Language Support Library and Tools
    which modeled after GNU gettext package.

RAILS_ROOT/config/environment.rb 修正

require 'gettext/rails'
GetText.output_charset = 'UTF-8'

ドキュメントでは RAILS_ROOT/app/controllers/application.rb に追加していますが、こっちにおいてみました。どっちがいいんでしょ>識者の方。

RAILS_ROOT/app/controller/application.rb 修正

class ApplicationController < ActionController::Base
  before_filter :init_gettext
  def init_gettext
    bindtextdomain('lazydog', request.cgi)
    @headers['Content-Type'] = 'text/html; charset=UTF-8'
  end
end

environment.rb に移した分を除いて、ドキュメントそのままです。

pot ファイル作成の rake タスクを追加

rgettextによる翻訳文字列の抽出 ではシェル上で実行していますが、ワイルドカードに ** が使えないシェルを使っているので rake のタスクにしました。RAILS_ROOT/Rakefile に以下を追加(2005/09/07:rgettext コマンドではなく、GetText.rgettext を使うように修正しました)。

desc "Create pot file for L10n"
task :makepot do
  require 'gettext/rgettext'
  files = Dir.glob('**/*.{rb,rhtml}')
  GetText.rgettext(files, "po/foo.pot")
end

mo ファイル作成の rake タスクを追加

po → mo変換 のままです。

desc "Create mo-files for L10n"
task :makemo do
  require 'gettext/rmsgfmt'
  GetText.create_mofiles(true, "po", "locale")
end

文字列の GetText 化

view や helper や contoroller 内の文字列をひたすら _('hoge') に。

pot/po ファイル作成

ファイルを作って編集。

$ mkdir po
$ mkdir po/ja
$ rake makepot
$ cp po/foo.pot po/ja/foo.po
$ vi po/ja/foo.po

mo ファイル生成

rake makemo

webrick サーバ再起動

すでに動作をさせている環境だったので、kill してから ruby script/server。

そして日本語に

おー。ブラウザの Accept-Language によって、表示すべき言語を自動で判断するんですね。便利。

_ [Ruby] るびま 9 号 このエントリーを含むブックマーク

一周年おめでとうございます&おつかれさまです。後で読むためにメモ。

本日のツッコミ(全2件) [ツッコミを入れる]
_ むとう (2005-09-07 02:23)

environment.rb に移した方が良いかもしれませんね。requireとset_output_charsetの部分。<br><br>それから、rgettextをタスク化するなら、GetText.rgettextというメソッドを使った方が簡単だと思いますよ。<br><br>require 'gettext/rgettext'<br>GetText.rgettext(files, "po/foo.pot")

_ だて (2005-09-07 08:04)

どうもです。GetText.rgettext を使うようにしました。

[]

最近のコメント:

  1. だて (09-17)
  2. トオルスガルモノノ (09-16)
  3. むとう (09-09)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).