我试图用特定的语言(即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
答案 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