[ruby on rails]多言語切り替え、i 18 n翻訳使用、ローカルタイムゾーン設定


一、多言語切り替えapp/controllers/application_controller.rbに追加:
before_action :set_locale

 def set_locale
   if params[:locale] && I18n.available_locales.include?( params[:locale].to_sym )
     session[:locale] = params[:locale]
   end

   I18n.locale = session[:locale] || I18n.default_locale
 end
アプリ/views/layouts/application.html.Erbに追加:
 controller_name, :action => action_name, :locale => "zh-CN" %>
 controller_name, :action => action_name, :locale => "en" %>
二、i 18 nを用いてアプリケーションに翻訳する.rbに追加
class Application < Rails::Application
    config.i18n.default_locale = "zh-CN"
end
config/localesの下にzh-CNを新規作成する.ymlは、model翻訳の場合はactiverecordattributesの下にModel名とフィールド名を追加します.
zh-CN:
  hello:  ~ %{name}  :
  event_list:     
  admin:
    event_list:       
  activerecord:
    attributes:
      event:
        name:   
  event:
    status:
      draft:   
      public:   
      private:   
viewでの使用
 
 
よく使われるgemもあります
gem “rails-i18n” gem “devise-i18n”
実は、翻訳ファイルの名前はeventsです.yml、zh-TW.yml、en.ymlは何でも構いません.重要なのは、YAML構造の第1層がlocaleの名前、すなわちzh-CNに対応することです.Railsはconfig/localesの下のすべてのYAML語彙ファイルをロードします.
三、ローカルタイムゾーンはアプリケーションに設定.rbに追加
class Application < Rails::Application
    config.time_zone = "Beijing"
end
これはティムです.nowが表示する時間は北京時間に設定し、データ在庫の時間はまだ8時間差で、データベース時間もローカルに変更するにはアプリケーションが必要です.rbに追加
config.active_record.default_timezone = :local