Rails ローカライズ i18n
参考記事
gem
サブドメインで言語判断したので
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で内部的に持っているので、このような書き方が可能。
日本だけを見ていたら、マーケットが違いすぎることに最近気づく
デフォルトは英語ですね。