Rails:Phusion Passenger和I18n.locale应该如何表现?

Tim*_*ing 3 ruby-on-rails passenger phusion internationalization

我在Passenger/REE上运行了一个Rails 2.2 Web应用程序

我在中设置了默认语言环境 config/environment.rb

config.i18n.default_locale = 'en-GB'
Run Code Online (Sandbox Code Playgroud)

第一个请求似乎没有设置区域设置 I18n.locale

如果我访问一个带有before_filter的页面,该页面在每次后续访问任何控制器时设置I18n.locale,即使它没有相同的before_filter设置,I18n.locale也会得到I18n.locale,无论设置如何,比如说en-US.

在具有相同代码的Mongrel上,每个请求都获得en-GB默认的语言环境,直到由before_filter显式设置.

如果这是正常的乘客行为,任何帮助升值锻炼.

Zac*_*ack 5

Mongrel"自动"重置语言环境,因为它几乎处理每个具有不同线程的请求,而Phusion Passenger使用相同的线程处理所有内容.

作为对此的破解,在之前的过滤器中,您可以在根据其他参数设置区域设置之前始终将区域设置设置为nil.这样,它将始终将语言环境设置的最后一个值重置为nil.

只需确保您在每个请求上为用户首选的语言环境设置语言环境.

我遇到了同样的问题,因为我只是设置了语言环境,如果传入参数告诉站点更改语言环境.我想无论你是否使用Phusion Passenger,这都是你必须设置的东西.