我添加" -US"到en locale

时间:2014-11-11 22:02:43

标签: ruby-on-rails internationalization rails-i18n globalize

我试图用特定的语言(即en,pt等)来保留这些网址,但在设置之后,我一直在寻找“美国”网站。而不是' en。 (即localhost:3000 / en-us / apps而不是localhost:3000 / en / apps)。我不确定在哪里可以更改此设置,因为我认为它会默认为我的后备。

我使用以下内容为我的路线添加了前缀:

scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do

    root :to => "home#index"

    get 'omniauth/:provider' => 'omniauth#localized', as: :localized_omniauth

    devise_for :users, skip: :omniauth_callbacks, :controllers => { :registrations => "registrations", :sessions => "sessions", :passwords => "passwords" }

    resources :submissions.....

ApplicationController.rb

def default_url_options(options = {})
    {locale: I18n.locale}
end

def set_locale
    I18n.locale = params[:locale] ||
                  request.env['rack.locale'] ||
                  I18n.default_locale
end

application.rb中

config.i18n.default_locale = :en
config.i18n.available_locales = [:en, :pt]
config.i18n.fallbacks = true

1 个答案:

答案 0 :(得分:0)

您缺少设置I18n.locale

def default_url_options(options={})
  { locale: I18n.locale }
end

检测并设置当前请求的区域设置,具体取决于您的输入数据:

before_filter :set_locale

def set_locale
  if defined?(params) && params[:locale]
    I18n.locale = params[:locale]
  elsif current_user && current_user.language_id.present?
    I18n.locale = current_user.language.code
  end
  I18n.locale ||= I18n.default_locale
end