Rails ローカライズ i18n

参考記事

gem

github.com

morizyun.github.io

qiita.com

サブドメインで言語判断したので

app/controllers/application_controller.rb

before_filter :set_locale

def set_locale
  I18n.locale = extract_locale_from_subdomain
end

def extract_locale_from_subdomain
  parsed_locale = request.subdomains.first
  I18n.available_locales.include?(parsed_locale.to_sym) ? parsed_locale : I18n.default_locale
end

Rails c で  I18n.available_locales を確認

$ rails c
Running via Spring preloader in process 10001
Loading development environment (Rails 5.2.1.1)
irb(main):001:0> I18n.available_locales
=> [:en, :"es-MX", :fa, :"en-BORK", :tr, :es, :"en-NZ", :ja, :bg, :"zh-CN", :"en-US", :"de-AT", :de, :"ca-CAT", :"de-CH", :fr, :sk, :"pt-BR", :"fr-CA", :nep, :nl, :"en-UG", :"en-IND", :"en-au-ocker", :ko, :"en-MS", :"en-GB", :"zh-TW", :"fi-FI", :lv, :"fr-CH", :"en-SG", :sv, :"en-AU", :uk, :it, :"no-NO", :"en-PAK", :ee, :"en-ZA", :"da-DK", :id, :"nb-NO", :ru, :"en-CA", :pt, :vi, :he, :ca, :pl, 

日本語があったのでOK

config> application.rb

//== gemの指示に従う
 config.i18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}").to_s]

//==デフォルトを英語にする。
  config.i18n.default_locale = :en

その他 config>locales>en.yml jp.yml を作成

そこに記載していく。

ja:
  devise:
    sessions:
      log_in: "ログイン"

en:
  devise:
    sessions:
      log_in: "Log_in"

Viewでの記載方法は

tというのがi18nの変数 その中に記載するだけ

 <h2><%= t('devise.sessions.log_in') %></h2>

ちなみにrubyは文字列をutf8で内部的に持っているので、このような書き方が可能。

日本だけを見ていたら、マーケットが違いすぎることに最近気づく
デフォルトは英語ですね。