Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails未正确设置区域设置_Ruby On Rails_Rails I18n - Fatal编程技术网

Ruby on rails Rails未正确设置区域设置

Ruby on rails Rails未正确设置区域设置,ruby-on-rails,rails-i18n,Ruby On Rails,Rails I18n,我有Rails应用程序(3.2.12),目前正在该应用程序上运行国际化(“en”、“es”、“it”、“de”、“fr”) 除了我注销应用并进入登录页面外,国际化正在应用程序内工作。例如,登录页: http://localhost:3000/?locale=en http://localhost:3000/?locale=es http://localhost:3000/?locale=it etc... 全部默认为西班牙语翻译“es”。当我检查上面每个页面的语言环境设置时,我发现语言环境设置

我有Rails应用程序(3.2.12),目前正在该应用程序上运行国际化(“en”、“es”、“it”、“de”、“fr”)

除了我注销应用并进入登录页面外,国际化正在应用程序内工作。例如,登录页:

http://localhost:3000/?locale=en
http://localhost:3000/?locale=es
http://localhost:3000/?locale=it
etc...
全部默认为西班牙语翻译“es”。当我检查上面每个页面的语言环境设置时,我发现语言环境设置是正确的。所以基本上说英语的“en”语言环境显示了西班牙语的翻译

我还检查了YAML文件,这些都很好

对于此问题,SO上最接近的匹配项是以下问题:

我尝试过这个答案中的解决方案,但它们似乎对我不起作用

以下是一些与国际化相关的代码

应用程序控制器

class ApplicationController < ActionController::Base
  protect_from_forgery

  before_filter :set_locale

private

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
    #default_url_options[:locale] = params[:locale]
    #I18n.locale = params[:locale] || 'en'
  end

  def default_url_options
    { :locale => I18n.locale }
  end
end
此外,我的应用程序使用designe和Active_admin


你知道我在这里做错了什么吗?

试着调试
设置语言环境的方法。似乎语言环境是默认设置的,比如
params[:locale]
为nil

def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
    Rails.logger.debug "locale_params=#{params[:locale]}"
  end

嗨,亚历克斯。我认为区域设置是正确的。例如,我的服务器日志显示:“locale_params=en”。如果我打开say西班牙语登录页,它会显示locale=es?。同样,对于英语,它显示locale=en。对于其他语言,de、fr和it也会显示相应的区域设置。只有“en”区域设置显示“es”的翻译。其他的翻译都很好。
def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
    Rails.logger.debug "locale_params=#{params[:locale]}"
  end