Rails I18n

多國語系設置

step. 1 更改預設

Rails 支持多國語系(Internationalization,簡稱I18n),預設的語系是英文,如要修改,請至config/application.rb

1
2
config.i18n.available_locales = [:en, :'zh-TW'] #支援語系
config.i18n.default_locale = :'zh-TW' #預設語系

step. 2 新增詞匯檔

接著,在config/locales新增zh-TW.yml 這個詞匯檔

1
2
zh-TW:
  welcome: "歡迎"

修改首頁index.html如下

1
<h1><%= t('welcome') %></h1>

便可以看到首頁的"welcome"變成"歡迎"

檔案副檔名YML是一種YAML Document,格式的縮排必須使用兩個空格

step. 3 新增Gem

Gemfile新增gem "rails-i18n" 接著bundle install

step. 4 Model字段翻譯

1
2
3
4
5
6
7
8
9
zh-TW:
  welcome: "歡迎"
  activerecord:
    models:
      feedback: "回饋"
    attributes:
      feedback:
        author: "你的名字"
        message: "訊息"

就有英文介面及中文介面

step. 4 切換多國語系

  1. app/controllers/application_controller.rb新增以下這段
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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
  1. 接著在app/views/layouts/application.html.erb新增路徑
1
2
    <%= link_to "中文版", :controller => controller_name, :action => action_name, :locale => "zh-TW" %>
    <%= link_to "English", :controller => controller_name, :action => action_name, :locale => "en" %>

就可以在頁面看到中文版跟英文版的切換了!

updatedupdated2022-06-162022-06-16