我正在尝试本地化现有的Ruby on Rails项目,我决定使用fast_gettext。我试图按照github页面(https://github.com/grosser/fast_gettext)和这个小教程(http://blog.lingohub.com/developers/2013/08/ruby-gettext-internationalization-tutorial-fest-gettext-gem/)中的描述进行设置。但是,当我做的时候
rake gettext:find
似乎只搜索我的.rb文件,而不是我的其他文件(重要的是,没有检查.erb文件)。
除了更新我的包以包含必要的宝石之外,这是我到目前为止所做的:
添加了config / initializers / fast_gettext.rb。这是:
# config/initializers/fast_gettext.rb
FastGettext.add_text_domain 'app', :path => 'config/locales', :type => :yaml
FastGettext.default_available_locales = ['en','es']
FastGettext.default_text_domain = 'app'
我还创建了lib / tasks / gettext.rake
namespace :gettext do
def files_to_translate
Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml,slim,rhtml}")
end
end
这是index.html.erb
<div class="home_title"><%= t(:xyz) %></div>
我在application_controller.rb中设置语言环境,如果我手动修改语言环境文件(例如config / locales / es.yml),则在打开页面时会翻译文本。但是,当我运行gettext时,它不会为此项创建条目。我最终得到了一个空的app.pot:
# File headers....
# Copyright, my name, etc.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: app 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-03-19 16:52-0700\n"
"PO-Revision-Date: 2014-03-19 16:52-0700\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
正如我上面所说,我认为gettext只是检查.rb文件(基于我放在gettext代码中的一些被黑客入侵的日志)。也可能是我需要做一些额外的事情来配置gettext以识别这是一个要本地化的字符串:
<%= t(:xyz) %>
提前感谢您的建议。