Ruby Rails上的Refinery CMS:在Blog模块中翻译/本地化字符串

时间:2015-12-22 13:58:45

标签: ruby ruby-on-rails-3 localization internationalization refinerycms

在精炼厂CMS的博客模块中,源代码中有一些我想要翻译的字符串。当我覆盖博客模块的_post.html.erb的视图时,里面有这样的代码:

 <%= content_tag(:span, 
   "#{t('by', :scope => 'refinery.blog.posts.show')} #{@post.author.username}",
   :class => "blog_author") if @post.author.present? %>

我想本地化“by”字符串,以便在博客中,默认的英文“By authorname”被另一种语言的短语所取代。

现在,我已经修改了rails config / locales目录中的en.yml和hr.yml本地化文件,并添加了翻译。但是,这对我页面上显示的字符串没有任何影响。

我已尝试将 config / application.rb 中的 config.i18n.default_locale 变量设置为:en 并使用我想要的语言但是这也没有完成任何事情。

我来的最远的是,如果我将 initializers / refinery / i18n.rb 中的 config.current_locale 变量更改为:de 例如,它具有翻译炼油厂及其博客模块的管理界面的效果。然而,博客条目中的字符串保持不变。

我还在精炼厂博客组件的gems库中添加了一个带有我的语言环境翻译的yml文件,但它仍然不起作用。

有关如何翻译精炼厂博客模块中的字符串的任何帮助将不胜感激。我在互联网上搜索了如何翻译炼油厂,但没有找到任何具体的信息来翻译博客组件,只有导轨的一般指南,这似乎对炼油厂博客没有帮助。

我使用以下宝石版本:

  • rails(4.2.4)
  • rails-i18n(4.0.7)
  • railties(4.2.4)
  • refinerycms(3.0.0 1d13007)
  • refinerycms-acts-as-indexed(2.0.1)
  • refinerycms-authentication-devise(1.0.4)
  • refinerycms-blog(3.0.0 5ee8336)
  • refinerycms-core(3.0.0 1d13007)
  • refinerycms-i18n(3.0.1 ff93ad9)
  • refinerycms-images(3.0.0 1d13007)
  • refinerycms-pages(3.0.0 1d13007)
  • refinerycms-resources(3.0.0 1d13007)
  • refinerycms-search(3.0.0 aa8098c)
  • refinerycms-settings(3.0.0)
  • refinerycms-wymeditor(1.0.6) ...

提前谢谢!

P.S

我已将翻译字符串添加到 hr.yml 并设置

config.i18n.default_locale = :hr
config.i18n.locale = :hr
application.rb 中的

在rails控制台中,我得到:

*I18n.locale* => :hr, 
 I18n.translate('hello') => "Pozdrav svima" 

但是,当我启动应用程序时,在rails服务器消息中有:

*Parameters: {"locale"=>:en}*

并且没有翻译工作......为什么?

1 个答案:

答案 0 :(得分:0)

根据rails locale guide 可以根据URL设置应用程序区域设置。对于localhost,语言环境设置为英语。要更改此设置,可以修改 application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action :set_locale

  def set_locale
    I18n.locale = I18n.default_locale
  end

end