我已將我的Web應用翻譯成英語和克羅地亞語。英語被設置爲我的config/application.rb中默認的語言環境和所有啓用的回退:缺省語言環境,如果在Rails中缺少語言環境
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.default_locale = :en
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
I18n.enforce_available_locales = true
config.i18n.fallbacks = true
config.i18n.fallbacks = [:en]
config.i18n.fallbacks = {'es' => 'en', 'fr' => 'en', 'de' => 'en'}
我的config/routes.rb中的定義是這樣的:
scope "(:locale)", :locale => /en|hr/ do
root :to => 'static_pages#home'
match 'signin', to: 'sessions#new', via: 'get'
match 'signout', to: 'sessions#destroy', via: 'delete'
match '/signup', to: 'users#new', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
resources :sessions, only: [:new, :create, :destroy]
resources :relationships, only: [:create, :destroy]
resources :users do
member do
get :following, :followers
end
end
end
一切都運行完美當用戶使用應用程序並在語言之間切換,但如果用戶轉到url並鍵入例如「es」而不是「en」或「hr」,則出現錯誤說明的路由錯誤頁面:No route matches [GET ]「/ es/signin」
我該如何使它回退到英語語言環境,如果locales文件夾中的整個.yml文件丟失?
也許是因爲你指定了locale參數(':locale =>/en | hr /')的確切值? – peresleguine
我必須定義那些值(因爲我只有那兩個)。如果我刪除它們,整個應用程序無法正常工作。 –
如果你使用除'en'或'hr'之外的任何內容作爲路徑前綴,它將導致路由錯誤。如果將「es」添加到正則表達式,輸出將會是什麼? ':locale =>/en | hr | es /'? – peresleguine