[Rails]日本語表記にする方法

# はじめに

今回は日本語表記にする方法を学びました。

こちらも慣れるためにアウトプットしていきたいと思います。

やり方は色々あると思いますがまずは入門として。

# i18n

多言語対応のため国際化機能です。


internationalization（国際化の意味）が18文字ある事から「i18n」と言います。

覚えやすい！！

# controllerの記述

URLのオプションに合わせて表示言語を切り替える様にします。

```ruby:application_controller.rb
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" は試しに記述してみています。


```yml:en.yml
# 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”　で名前の違う、内容の同じファイルをコピーすることができます。）

```yml:ja.yml
# (en.ymlと同じものが上に書いてあります)
#      .
#      ・
#      ・


ja:
  hello: "世界の皆さんこんにちは"
  morning: "おはようーー！！"

```

# viewファイルに記述



```html:index.html.erb

 <!--(文字を変えるところだけ記述しています。)-->

<div class="wrapper">
<h1><%= t('hello') %></h1>
<p><%= t('morning') %></p>

```

この様に記述していくと、初めは

英語になっていますが、

![スクリーンショット 2020-12-29 22.34.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892628/99130515-328e-d9a3-73e9-05a8fea5a2c8.png)

「localhost:3000」の次に「/?locale=ja」と記述すると日本語に変換されます。

![スクリーンショット 2020-12-29 22.35.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892628/39d90488-6426-7012-0cfc-5b1271a446e2.png)


# `ラベルタグだった場合`

```html:new.html.erb
<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>
```
<br>

「ja.yml」に直接記述していきます。

<br>

```yml:ja.yml

ja:
  hello: "世界の皆さんこんにちは"
  morning: "おはようーー！！"


  activerecord:
      models:
        map: 
  
      attributes:
        map:
          name: 名前です！！
          address: 住所です！！

#　記述する位置に注意！！

```
<br>

そうすることで


![スクリーンショット 2020-12-29 23.05.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892628/f8ba1c0f-a666-0ca2-8c8c-0717826509af.png)


「localhost:3000」の次に「/?locale=ja」と記述すると日本語に変換されます。

![スクリーンショット 2020-12-29 23.05.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892628/48dde36a-58cf-5787-09d4-cf688700fb6c.png)



# まとめ

 これを使用することで結構気軽に日本語だけではなく他の言語にも変えることができそうで嬉しいです。

まだまだ覚えることがたくさんですね。

次回はもう少し読み込んでgemの使ったやり方も学ぼうと思います。

もっと細かく書いてるものを貼り付けておきます。

本日はここまで。

# 資料


[Github rails-i18n](https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml)

[個人開発がやりたくなる LT 会 のレポート　i18nについて](https://morizyun.github.io/blog/i18n-english-rails-ruby-many-languages/)

[Rails ガイド　Rails 国際化 (i18n) API](https://railsguides.jp/i18n.html)

[pika waka 【Rails】I18n入門書](https://pikawaka.com/rails/i18n)