1

我正在尝试为多个国家/地区本地化我的 Rails 应用程序。我想像 AirBnB 一样实现它。基于区域设置的子域和 www 子域。

www.myapp.com
jp.myapp.com
kr.myapp.com

首先,用户输入区域设置子域站点或 www 子域站点。如果用户进入本地化页面或在 www 子域页面中设置他们的语言,设置 cookie 参数 [:locale]。

AirBnB 使用 Ruby on Rails 进行开发,但他们如何操作许多子域?他们为每个区域设置了多个应用程序,还是只有一个应用程序?我可以在 Heroku 上实现这个吗?

我检查了这个 RailsCasts Episode http://railscasts.com/episodes/123-subdomains-revised?view=asciicast,但它使用乘客,所以我怀疑我是否可以将此解决方案用于 Heroku。

4

1 回答 1

3

在 Heroku 上完全可以实现 - 使用通配符域,以便您的应用程序在 *.myapp.com 上可用,然后根据子域设置语言。导轨上的红宝石在这里有一节。总之,您需要执行类似(在您的 application_controller.rb 中);

before_filter :set_locale

def set_locale
  I18n.locale = extract_locale_from_subdomain || I18n.default_locale
end

# Get locale code from request subdomain (like http://it.lvh.me:3000)
# lvh.me is a free service which maps ANY subdomain to 127.0.0.1 so
# en.lvh.me, it.lvh.me etc would all redirect to 127.0.0.1
def extract_locale_from_subdomain
  parsed_locale = request.subdomains.first
  I18n.available_locales.include?(parsed_locale.to_sym) ? parsed_locale : nil
end
于 2012-08-08T07:58:19.133 回答