簡體   English   中英

Rails生產:語言環境切換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM