【发布时间】:2014-04-19 02:05:02
【问题描述】:
在过去的几个小时里,我一直在尽一切可能使这项工作发挥作用,在 Google 上搜索、重新设计、测试等 - 但不知何故无法让它发挥作用。
好的,我想设置 I18n.locale - 相当简单。
基本上我在这里实现了指南上写的内容:
http://guides.rubyonrails.org/i18n.html
Application_controller.rb
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
事实上我的看起来是这样的:
class ApplicationController < ActionController::Base
logger.info "Point A..."
before_action :set_locale
def set_locale
logger.info "Point B..."
I18n.locale = extract_locale_from_accept_language_header
end
private
def extract_locale_from_accept_language_header
....
这个问题是在我可以设置语言环境之前设置语言环境,当我第一次访问页面时。如果还没有设置语言环境,我想先读取用户的浏览器设置。让用户有机会访问他们的本地化站点。如果他们随后更改了区域设置(更改语言 - 很好,那么设置了区域设置,这就是他们正在使用的,直到他们决定再次切换)。
我在上面的代码中放置了两行,这是输出:
Point A...
Processing by StaticPagesController#home as HTML
Parameters: {"locale"=>"en"}
Point B...
我尝试了以下方法: - 删除 application.rb 中的默认语言环境:#config.i18n.default_locale = :en - 禁用所有可能干扰的宝石(每次都重新启动服务器)
任何帮助将不胜感激。谢谢,G
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 internationalization rails-i18n i18n-gem