はじめに
今回は日本語表記にする方法を学びました。
こちらも慣れるためにアウトプットしていきたいと思います。
やり方は色々あると思いますがまずは入門として。
i18n
多言語対応のため国際化機能です。
internationalization(国際化の意味)が18文字ある事から「i18n」と言います。
覚えやすい!!
controllerの記述
URLのオプションに合わせて表示言語を切り替える様にします。
class ApplicationController < ActionController::Base
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options = {})
{ locale: I18n.locale }.merge options
end
end
yamlファイルに記述
configディレクトリの中のlocaleディレクトリの中の「en.yml」ファイルの中身を見てみます。
(config/locales/en.yml)
en: の部分の morning: "morning" は試しに記述してみています。
# Files in the config/locales directory are used for internationalization
# and are automatically loaded by Rails. If you want to use locales other
# than English, add the necessary files in this directory.
#
# To use the locales, use `I18n.t`:
#
# I18n.t 'hello'
#
# In views, this is aliased to just `t`:
#
# <%= t('hello') %>
#
# To use a different locale, set it with `I18n.locale`:
#
# I18n.locale = :es
#
# This would use the information in config/locales/es.yml.
#
# The following keys must be escaped otherwise they will not be retrieved by
# the default I18n backend:
#
# true, false, on, off, yes, no
#
# Instead, surround them with single quotes.
#
# en:
# 'true': 'foo'
#
# To learn more, please read the Rails Internationalization guide
# available at https://guides.rubyonrails.org/i18n.html.
en:
hello: "Hello world"
morning: "morning"
「en.yml」と同じ階層に「ja.yml」ファイルを作成します。
( ”cp -a config/locales/en.yml config/locales/ja.yml” で名前の違う、内容の同じファイルをコピーすることができます。)
# (en.ymlと同じものが上に書いてあります)
# .
# ・
# ・
ja:
hello: "世界の皆さんこんにちは"
morning: "おはようーー!!"
viewファイルに記述
<!--(文字を変えるところだけ記述しています。)-->
<div class="wrapper">
<h1><%= t('hello') %></h1>
<p><%= t('morning') %></p>
この様に記述していくと、初めは
英語になっていますが、
「localhost:3000」の次に「/?locale=ja」と記述すると日本語に変換されます。
ラベルタグだった場合
<div class="wrapper">
<h1><%= t('hello') %></h1>
<div class="form">
<%= form_with model: @map do |f| %>
<div class="field">
<%= f.label :address %>
<%= f.text_field :address %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit 'Submit' %>
</div>
<% end %>
</div>
</div>
「ja.yml」に直接記述していきます。
ja:
hello: "世界の皆さんこんにちは"
morning: "おはようーー!!"
activerecord:
models:
map:
attributes:
map:
name: 名前です!!
address: 住所です!!
# 記述する位置に注意!!
そうすることで
「localhost:3000」の次に「/?locale=ja」と記述すると日本語に変換されます。
まとめ
これを使用することで結構気軽に日本語だけではなく他の言語にも変えることができそうで嬉しいです。
まだまだ覚えることがたくさんですね。
次回はもう少し読み込んでgemの使ったやり方も学ぼうと思います。
もっと細かく書いてるものを貼り付けておきます。
本日はここまで。
資料
個人開発がやりたくなる LT 会 のレポート i18nについて