Rails 3国际化(I8n)区域设置从域名问题

时间:2011-03-13 15:10:35

标签: ruby-on-rails internationalization nginx setlocale

我创建了一个rails 3网站,可以通过whereisdaniel.com和whereisdaniel.ru访问.com的网站应该提供英文版本,而.ru的网站应该提供俄语版本。

在本地,一切正常。但是,在我部署的网站上,一切正常,但在转到.ru网站后,尝试切换到.com版本会导致俄语翻译。我唯一能想到的是我的nginx / passenger配置存在某种问题。

我的配置文件如下所示:

nginx.conf

server {
  listen 80;
  server_name whereisdaniel.com whereisdaniel.ru;
  root /home/dan/whereisdaniel/public/;
  passenger_enabled on;
}

我的其余代码我直接在Rails指南中剪切并粘贴: http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-name

还有一个小问题: 我没有从Rails指南中实现的唯一内容是本指南的这一部分,因为我不明白如何:

link_to("Deutsch", "#{APP_CONFIG[:deutsch_website_url]}#{request.env['REQUEST_URI']}")

而不是这个,我只有基本的HTML链接到不同的网站网址。实际上,如果有人知道的话,我想了解如何/在哪里创建APP_CONFIG常量。

1 个答案:

答案 0 :(得分:1)

此链接的评论解决了我的问题: Rails: How should Phusion Passenger and I18n.locale behave?

在Rails 3.0.4中似乎存在一个错误。这是一个解决方法:

在应用程序控制器中,过滤器之前的set_locale应如下所示:

def set_locale
  I18n.locale = I18n.default_locale
  I18n.locale = extract_locale_from_tld
end

我现在唯一想知道的是APP_CONFIG变量。