0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-29

はじめに

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

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

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

i18n

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

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

覚えやすい!!

controllerの記述

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

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" は試しに記述してみています。

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

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


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

viewファイルに記述

index.html.erb

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

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

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

英語になっていますが、

スクリーンショット 2020-12-29 22.34.26.png

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

スクリーンショット 2020-12-29 22.35.22.png

ラベルタグだった場合

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>

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


ja.yml

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


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

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


そうすることで

スクリーンショット 2020-12-29 23.05.12.png

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

スクリーンショット 2020-12-29 23.05.35.png

まとめ

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

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

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

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

本日はここまで。

資料

Github rails-i18n

個人開発がやりたくなる LT 会 のレポート i18nについて

Rails ガイド Rails 国際化 (i18n) API

pika waka 【Rails】I18n入門書

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?