我在Rails 2.3.3上,並且使用Haml 2.0.9來爲我的模板和Gettext-Rails 2.0.4進行翻譯。 Haml像魅力一樣工作,gettext也像它應該那樣工作。Gettext和Haml on Rails/rake updatepo非常奇怪的問題破壞
但是我不能在使用「rake updatepo」時得到Gettext來解析Haml文件。我創建了一個自定義的解析器是這樣的:
# lib/haml_parser.rb
require 'gettext_rails/tools'
require 'haml'
# Haml gettext parser
module HamlParser
module_function
def target?(file)
File.extname(file) == ".haml"
end
def parse(file, ary = [])
haml = Haml::Engine.new(IO.readlines(file).join)
code = haml.precompiled.split(/$/)
GetText::RubyParser.parse_lines(file, code, ary)
end
end
GetText::RGetText.add_parser(HamlParser)
我的Rake文件看起來是這樣的:
# Rakefile
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
desc "Create mo-files for L10n"
task :makemo do
require 'gettext_rails/tools'
GetText.create_mofiles(true) #(true, "po", "locale")
end
desc "Update pot/po files to match new version."
task :updatepo do
require 'gettext_rails/tools'
require 'haml_parser'
MY_APP_TEXT_DOMAIN = "APP"
MY_APP_VERSION = "APP 1.1.0"
GetText.update_pofiles(MY_APP_TEXT_DOMAIN, Dir.glob("{app,lib}/**/*.{rb,rhtml,html.erb,haml,html.haml,rjs}"),
MY_APP_VERSION)
end
在此之前,已知的方法解析Haml的文件(http://www.paulgillard.me.uk/2008/3/8/rails-haml-and-gettext)。
問題:沒有MessageIds從我的Haml文件中識別。如果它試過正確的文件,可以解析它們等,我會在Haml-Parser中檢查「puts」。一切似乎都很好,它只是識別任何東西,並且總是隻返回已發現的msgids,Haml文件則返回一個空的Array。
奇怪的:當我在控制檯中輸入這個,一切正常:
$$ script/console
Loading development environment (Rails 2.3.3)
>> require 'gettext_rails/tools'
=> []
>> require 'haml'
=> []
>> file = "app/views/sessions/new.haml"
=> "app/views/sessions/new.haml"
>> haml = Haml::Engine.new(IO.readlines(file).join)
=> #<Haml::Engine:0x4254104 @tab_change=0, @block_opened=false, @inden [...]
>> code = haml.precompiled.split(/$/)
=> [" content_for :head do;", "\nhaml_temp = stylesheet_link [...]
>> GetText::RubyParser.parse_lines(file, code, [])
=> [["Login", "app/views/sessions/new.haml:4"], [...]
正如你所看到的一切在這裏工作(我離開了漫長的回報)。我有點害怕爲什麼在我的Rake Task中不是這種情況。
任何人有想法?你真的會讓我成爲一個快樂的書呆子!
謝謝!
有關這方面的消息嗎?我甚至沒有使用新的Haml 2.2手動解析! – ujh 2009-10-15 08:10:37