我的大部分网站都在locales(i18n)下工作。但是,现在我在管理方面工作。这在任何地方都不起作用。我刚刚意识到,不在本地范围内的每个URL都会在URL的末尾附加“?locale = en”。
您可以查看此网站。每个URL似乎都很好。但是,如果您转到左上角的图标,将您带回到根目录中,该位已添加到URL中。 http://hik-fyp.heroku.com
我想是用某种语言显示根。但是,当涉及到管理部分(单语)时,它随处可见。
这是正常的吗?这可能会以某种方式干扰网站吗?有办法摆脱它吗? 我花了一段时间在网上研究,但找不到类似的东西。提前谢谢......
这是ApplicationController的摘录
after_filter :store_location
before_filter :set_locale
def set_locale
logger.debug "* Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
I18n.locale = params[:locale] || extract_locale_from_accept_language_header || I18n.default_locale
logger.debug "* Locale set to '#{I18n.locale}'"
if current_user
current_user.locale = params[:locale]
current_user.save
end
session[:locale] = I18n.locale
end
def default_url_options(options={})
logger.debug "default_url_options is passed options: #{options.inspect}\n"
{ :locale => I18n.locale }
end
def store_location
# store last url as long as it isn't a /users path
session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/
end
def after_sign_in_path_for(resource)
session[:previous_url] || root_path
end
答案 0 :(得分:0)
你定义了在设置
时发生的事情def default_url_options(options={})
{ :locale => I18n.locale }
end
这告诉rails url_for帮助程序(它是link_to和许多其他程序的基础)自动包含locale参数。