[英]Rails production: locales switching
在我的應用中,我通過會話切換了語言環境。 邏輯保存在控制器中:
class SetLanguageController < ApplicationController
def russian
I18n.locale = :ru
set_session_and_redirect
end
def english
I18n.locale = :en
set_session_and_redirect
end
private
def set_session_and_redirect
session[:locale] = I18n.locale
redirect_to :back
rescue ActionController::RedirectBackError
redirect_to :root
end
end
切換可通過鏈接進行:
link_to_unless I18n.locale == :ru, "Русский", rus_locale_path
link_to_unless I18n.locale == :en, "English", eng_locale_path
路線中的語言環境代碼(無需提問,但如果您感興趣的話)
get 'rus_locale' => 'set_language#russian'
get 'eng_locale' => 'set_language#english'
它可以完美地在開發中工作,但可以在生產中工作
application.rb
config.i18n.load_path += Dir[Rails.root.join('config','locales', '*.yml').to_s]
config.i18n.default_locale = :ru
如何使它在生產中起作用? 謝謝
我解決了在應用程序控制器中設置before_filter
問題
before_filter :set_locale
def set_locale
I18n.locale = session[:locale] ? session[:locale] : I18n.default_locale
end
但是此解決方案是虛擬的,因為它實際上並不能解決問題的實質-先前的代碼在開發中起作用,但在生產中起作用。 如果您知道如何更聰明地修復它,那么您會很好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.