[Rails]i18n基本使用

首先安裝rails-i18n

Gemfile
gem "rails-i18n"

$ bundle install

我們所有翻譯檔案都會在config/locals目錄下,都是為.yml的檔案,而檔名不重要,純粹是好分辨而已,這邊就創鈔兩個檔案:
en.yml代表英文翻譯
zh-TW.yml代表中文翻譯

自定義的話例如中文翻譯來說:

zh-TW:

  welcome: "嗨世界!#{username}"

  sport:

    ball: 籃球

而英文翻譯:

en:

  welcome: "Hello world! #{username}"

  sport:

    ball: basketball

使用方法如下:

example.html.erb
t("sport.ball")
t(:sport, :scope => :ball )
t(:welcome, :username => "Kurt")

在application_controller.rb設定如下:

application_controller.rb
before_action :set_locale

def set_locale
  # 可以將 ["en", "zh-TW"] 設定為 VALID_LANG 放到 config/environment.rb 
  if params[:locale] && I18n.available_locales.include?( params[:locale].to_sym )
    session[:locale] = params[:locale]
  end

  I18n.locale = session[:locale] || I18n.default_locale
end

在view中切換版本:

example.html.erb
<%= link_to "中文版", :controller => controller_name, :action => action_name, :locale => "zh-TW" %>
<%= link_to "English", :controller => controller_name, :action => action_name, :locale => "en" %>
comments powered by Disqus