2014-07-11 34 views
1

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-nameRails的:設置本地爲 「en」 當.co.uk域名

偉大工程與.de或其他領域。 但是對於講英語的域名,我使用的是en.yml。我試圖在我的應用程序控制器中實現這樣的例外:

if I18n.available_locales.map(&:to_s) == "co.uk" 
    I18n.locale = "en" 
end 

但是這樣做不起作用。 我不想通過默認語言環境來做到這一點,這是我現在思考的唯一解決方案。

如何告訴rails使用「en」語言環境,如果我在.co.uk域而不將默認語言環境設置爲en?

+0

您使用的區域設置有多少? – dax

+0

目前只有德和恩 - 但更多的來((.es,.fr,.ro) – DonMB

回答

1

您鏈接到的文檔建議採取以下方法

before_action :set_locale 

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

def extract_locale_from_tld 
    parsed_locale = request.host.split('.').last 
    I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil 
end 

用這個代替嘗試。它更清晰,更易於理解:

before_action :set_locale 

... 
private 

def set_locale 
    parsed_locale = request.host.split('.').last 
    case parsed_locale 
    when 'de' then Il8n.locale = :de 
    when 'fr' then Il8n.locale = :fr 
    ... 
    else 
    I18n.locale = :en #this is now your 'default' 
    end 
end 
+0

工程,但德,我得到這個:「未初始化的常量ApplicationController :: Il8n」的線「當'德'然後Il8n .locale =:de「 – DonMB

相關問題