3

我有一个 Rails 2.2 web 应用程序在乘客 / REE 上运行

我将默认语言环境设置为config/environment.rb

config.i18n.default_locale = 'en-GB'

第一个请求似乎没有设置语言环境I18n.locale

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

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

如果这是正常的乘客行为,任何帮助表示赞赏。

4

1 回答 1

6

Mongrel 会“自动”重置语言环境,因为它使用不同的线程处理几乎每个请求,而 Phusion Passenger 使用相同的线程处理所有请求。

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

只需确保您为用户的首选区域设置了每个请求的区域设置。

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

于 2009-04-29T01:27:15.537 回答