7

我已将 active_admin 更新到 0.3.0 版以使国际化工作。但我有问题。

我的 pl.yml 文件更新为 activeadmin 部分,如下所示:

pl:  
  active_admin:
    blank_slate:
      content: "Nie ma jeszcze rekordów."
      link: "Nowy"
    dashboard: "Dashboard2"
    view: "Podgląd"

这不起作用,所以我尝试将此代码添加到我的 application.rb:

    config.before_configuration do
      I18n.locale = :pl
      I18n.load_path += Dir[Rails.root.join('config', 'locales', '*', '.{rb,yml}')]
      I18n.reload!
    end

现在国际化似乎在开发环境中工作,但我在其他环境中仍然存在问题。我的仪表板有问题:键。通常,简而言之,当 I18n 找不到键时,它会放 key: 大写字母,在本例中为“Dashboard”。但就我而言,我有这样的事情:

发展:
发展

生产:
生产

有没有人有同样的问题?我做错了什么,或者这是一个activeadmin错误?有什么解决办法吗?

4

4 回答 4

8

我有同样的问题。我需要这样做才能让它在生产和开发中都能正常工作:

config.before_configuration do
  I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
  I18n.locale = :nl
  I18n.default_locale = :nl
  config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
  config.i18n.locale = :nl
  # bypasses rails bug with i18n in production\
  I18n.reload!
  config.i18n.reload!
end

config.i18n.locale = :nl
config.i18n.default_locale = :nl

不是很漂亮,但可能是由 Rails 中的错误引起的。

于 2011-11-02T21:45:55.730 回答
4

在应用程序.rb

config.i18n.default_locale = :fr
I18n.locale = config.i18n.locale = config.i18n.default_locale
I18n.reload!
于 2012-10-12T09:51:33.257 回答
2

关键原因可能是由于:Rails 从最终用户的浏览器中选择了语言环境,而不是您的配置文件。例如,一个日本人使用英语浏览器访问您的网站,那么您的 Rails 应用程序将向他显示“英语”文本,而不是您希望它显示的日语。

根据 Rails i18n 文档: http: //guides.rubyonrails.org/i18n.html,您首先必须:

  1. 编辑 config/application.rb 以设置 default_locale

    config.i18n.default_locale = :cn
    
  2. 编辑你的 app/controllers/application_controller.rb,添加一个 before_filter

    before_filter :set_locale
    # for those user whose browser is not using our default_locale, e.g. a Chinese using English broser,
    # just like me. :)
    def set_locale
      I18n.locale = params[:local] || I18n.default_locale
    end
    
  3. 在这种情况下,您应该将“cn”作为默认语言环境。

  4. 通过将这些代码行添加到您的任何页面来检查您的视图页面。例如

    # in products/index.html.erb
    <h1>Products List</h1>
    default_locale is: <%= I18n.default_locale %> <br/>
    current_locale is: <%= I18n.locale %>
    
  5. 输出结果应如下所示:

    Products List
    default_locale is: cn 
    current_locale is: cn          
    

    您的 Rails 应用程序应该可以按预期工作。

于 2012-03-27T03:18:34.443 回答
2

似乎可行的另一种方法是使用以下内容创建初始化程序:

# config/initializers/i18n_reload.rb
Rails.configuration.after_initialize do
  I18n.reload!
end
于 2013-03-29T10:54:53.677 回答