2011-08-25 153 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