2012-08-08 29 views
1

我正尝试为几个国家的本地化我的Rails应用程序。 我想像AirBnB一样实现它。基于地区的子域和www子域。如何实现像本地化AirBnB?

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

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

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

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

回答

3

在Heroku上完全可以使用 - 使用通配符域,以便您的应用程序在* .myapp.com上可用,然后根据子域设置语言。导轨上的红宝石有一个部分here。总之,你需要做一些事情(在你的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 
+0

这似乎是非常好的解决方案,我会尝试的!非常感谢。 – 2012-08-08 08:21:42