2012-08-08 53 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