l'essentiel est invisible pour les yeux

Wednesday, January 16, 2008

[Ruby] Ruby-GetText-1.10.0をRails 2.x系erubyテンプレートに対応させるパッチ

むとうさん作の、Ruby-GetText-1.10.0をRails 2.0.2で使っていたのだが、GetText.update_pofiles(内部では、GetText.rgettextを呼び出し)によるmsgidの抽出がうまく動作しなかったので、ソースを見た所、パース対象のファイルの拡張子で適用すべきパーサーを識別しているが、lib/gettext/parser/erb.rbでは、.rhtmlのみ適用となっていたため、Rails 2系の*.html.erb拡張子はパース対象に入っていなかった。.erb拡張子もerubyパーサーに追加するパッチです。

/gettext-10.0.0/lib/gettext/parser/erb.rbに適用して下さい。


% cd RUBY_GETTEXT_INSTALL_PATH
% sudo patch lib/gettext/parser/erb.rb < add_erb_extension.patch


add_erb_extension.patch

*** erb.rb.org 2008-01-16 12:53:36.000000000 +0000
--- erb.rb 2008-01-16 12:53:58.000000000 +0000
***************
*** 15,21 ****
module GetText
module ErbParser
@config = {
! :extnames => ['.rhtml']
}

module_function
--- 15,21 ----
module GetText
module ErbParser
@config = {
! :extnames => ['.rhtml', '.erb']
}

module_function


追記
確認したら、最新のCVSでは対応済みとの事です。パッチを当てる以外にもRake taskでGetText::ErbParser.initを呼び出せば対応可能なので、こちらの方がよさそうです。

# For new Erb template of Rails 2.x
GetText::ErbParser.init(:extnames => ['.rhtml', '.erb'])

desc "Update pot/po files."
task :updatepo do
require 'gettext/utils'
GetText.update_pofiles('myapp',
Dir.glob("{app,config,components,lib}/**/*.{rb,erb,rhtml}"),
'myapp 1.0.0')
end

desc "Create mo-fileds"
task :makemo do
require 'gettext/utils'
GetText.create_mofiles(true, "po", "locale")
end