2011-08-25 119 views
7

我已将active_admin更新至0.3.0版以使国际化工作正常。但我有问题。activeadmin +国际化

我有我的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没有找到钥匙的时候,它会把钥匙放在大写字母上,在这个例子中就是“仪表板”。但在我的情况下,我有这样的事情:

DEVELOMENT:
Development

生产:
Production

是否有任何人谁有同样的问题?我是我做错了什么,或者这是一个activeadmin错误?任何解决方案

回答

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的一个错误引起的。

+0

谢谢!它完成了这项工作,但仍然 - 这只是一个解决方法。等待他们解决这个问题。 ; ) –

+0

该错误部分修复在最新版本上。 请参阅https://github.com/gregbell/active_admin/issues/434 – kuboon

2

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

根据Rails的国际化文件:http://guides.rubyonrails.org/i18n.html,你必须首先:

  1. 编辑的config/application.rb中设置DEFAULT_LOCALE

    config.i18n.default_locale = :cn 
    
  2. 编辑您的应用程序/控制器/ 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应用程序,你期望应该工作。

4

在申请中。RB

config.i18n.default_locale = :fr 
I18n.locale = config.i18n.locale = config.i18n.default_locale 
I18n.reload! 
2

,似乎工作是创建具有以下内容的初始化替代:

# config/initializers/i18n_reload.rb 
Rails.configuration.after_initialize do 
    I18n.reload! 
end