【问题标题】:rails 3 i18n set locale does not workrails 3 i18n set locale 不起作用
【发布时间】:2011-07-31 23:34:23
【问题描述】:

我希望翻译回退到 :en,但默认语言环境是 :de。我怎样才能做到最好? 我在'config/application.rb'中试过

config.i18n.default_locale = :en
config.i18n.locale = :de

但在此之后 I18n.locale 仍然是 :en。 有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-3 internationalization default locale


    【解决方案1】:

    如果你像下面这样设置语言环境

    I18n.locale = :de

    然后在线路触发后,每个访问者都将使用de 语言环境,而不是默认语言环境en

    所以更好的方法是

    在您的 application_controller.rb 中

    before_filter: set_locale
    
    private
    
    
    def set_locale
      I18n.locale = params[:locale] || I18n.default_locale
    end
    

    回复乔纳森·克拉克:

    从 application_controller 继承的每个控制器都会设置语言环境。

    【讨论】:

      【解决方案2】:

      您不能在您的环境中设置语言环境。

      您必须将 default_locale 放入您的环境配置文件中,并且您必须在您的应用程序本身中设置您的语言环境。

      例如在您的 application_controller.rb 中

      before_filter: set_locale
      
      private
      
        def set_locale
          I18n.locale = params[:locale] if params[:locale]
        end
      

      【讨论】:

      • 为什么会这样??答案是有效的,但文档说更改 'config/application.rb' 中的这些行应该会更改语言环境。
      • 我必须在每个页面上设置语言环境吗?我假设你把上面的代码放在应用程序控制器中?
      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多