rails-i18n による日本語化
基本的な流れ(自分用に)
gem 'rails-i18n'をインストールする
Gemfile
gem 'rails-i18n'
gem 'rails-i18n'
Gemfileに「rails-i18n」を導入する。
bundle install
「rails-i18n」をインストール
デフォルトの言語を日本語に設定する、i18nの複数のlocalesファイルが読み込まれるようにする
config/application.rb
module RunteqNormal
class Application < Rails::Application
config.load_defaults 5.2
config.generators.system_tests = nil
config.generators do |g|
g.skip_routes true
g.assets false
g.helper false
g.test_framework false
end
#ここから追記
#↓でデフォルトの言語を日本語に設定する。
config.i18n.default_locale = :ja
#↓でi18nの複数のlocalesファイルが読み込まれるようになる
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
#ここまで
end
end
views/model用のlocalesファイルをconfig/locales下に作成する
module RunteqNormal
class Application < Rails::Application
config.load_defaults 5.2
config.generators.system_tests = nil
config.generators do |g|
g.skip_routes true
g.assets false
g.helper false
g.test_framework false
end
#ここから追記
#↓でデフォルトの言語を日本語に設定する。
config.i18n.default_locale = :ja
#↓でi18nの複数のlocalesファイルが読み込まれるようになる
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
#ここまで
end
end
画面表(HTML)を担当するViewとDB関連の処理を担当するModelでは、ファイルを分けておく必要がある。
今回は、View用の「config/locales/view/ja.yml」とModel用の「config/locales/activerecorder/ja.yml」を作成。
それぞれのja.ymlファイルに日本語の設定をする
config/locales/views/ja.yml
ja:
defaults:
login: 'ログイン'
register: '登録'
logout: 'ログアウト'
users: # controller/usersに対応
new: # newアクションに対応
title: 'ユーザー登録'
to_login_page: 'ログインページへ'
user_sessions:
new:
title: 'ログイン'
to_register_page: '登録ページへ'
password_forget: 'パスワードをお忘れの方はこちら'
boards:
index:
title: '掲示板一覧'
new:
title: '掲示板作成'
bookmarks:
title: 'ブックマーク一覧'
profiles:
show:
title: 'プロフィール'
config/locales/activerecorder/ja.yml
# モデルは全て activerecord 下に記述することで、「User.model_name.human」、「User.human_attribute_name({attr_name})」で使用可能になる。
ja:
activerecord:
models:
user: 'ユーザー'
board: '掲示板'
attributes:
user:
email: 'メールアドレス'
password: 'パスワード'
password_confirmation: 'パスワード確認'
last_name: '姓'
first_name: '名'
基本的な使い方
Viewの場合
app/views/users/new.html.erb
<%= t 'users.new.title' %>
ja:
defaults:
login: 'ログイン'
register: '登録'
logout: 'ログアウト'
users: # controller/usersに対応
new: # newアクションに対応
title: 'ユーザー登録'
to_login_page: 'ログインページへ'
user_sessions:
new:
title: 'ログイン'
to_register_page: '登録ページへ'
password_forget: 'パスワードをお忘れの方はこちら'
boards:
index:
title: '掲示板一覧'
new:
title: '掲示板作成'
bookmarks:
title: 'ブックマーク一覧'
profiles:
show:
title: 'プロフィール'
# モデルは全て activerecord 下に記述することで、「User.model_name.human」、「User.human_attribute_name({attr_name})」で使用可能になる。
ja:
activerecord:
models:
user: 'ユーザー'
board: '掲示板'
attributes:
user:
email: 'メールアドレス'
password: 'パスワード'
password_confirmation: 'パスワード確認'
last_name: '姓'
first_name: '名'
Viewの場合
<%= t 'users.new.title' %>
→「config/locales/views/ja.yml」に、「users: new: title: ’ユーザー登録’」と記述してあるので「ユーザー登録」と表示される
・対応するビューの中ではツリーを省略できるので、「users.new」の部分は省略して書くことができる。
#ja.ymlファイルの
# users:
# new:
# の部分を自動で読み込んでいる状態
<%= t ‘.title’ %>
→同じく「ユーザー登録と表示される」
・「users/index.html.erb」に記述されているので、「ja.yml」ファイルの「users: new:」の部分を自動的に読み込んでいる。
Modelの場合
<%= t('activerecord.models.user') %>
→「onfig/locales/activerecorder/ja.yml」に「activerecord: models: user: ‘ユーザー’」と記述してあるので「ユーザー」と表示される
<%= t('activerecord.attributes.user.email') %>
→「メールアドレス」と表示される
「User.model_name.human」、「User.human_attribute_name({attr_name})」を使う
#<%= t('activerecord.models.user') %> を書き換える
<li><%= User.model_name.human %></li>
→「ユーザー」と表示される
#<%= t('activerecord.attributes.user.email') %> を書き換える
<li><%= User.human_attribute_name(:email) %></li>
→「メールアドレス」と表示される
実際の記述例
app/views/users/inew.html.erb
<%= form_with model: @user, local: true do |f| %>
<div class="form-group">
<%= f.label :email, User.human_attribute_name(:email) %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password, User.human_attribute_name(:password) %>
<%= f.password_field :password, class: 'form-control' %>
</div>
参考
<%= form_with model: @user, local: true do |f| %>
<div class="form-group">
<%= f.label :email, User.human_attribute_name(:email) %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password, User.human_attribute_name(:password) %>
<%= f.password_field :password, class: 'form-control' %>
</div>
Author And Source
この問題について(rails-i18n による日本語化), 我々は、より多くの情報をここで見つけました https://qiita.com/yuht-09/items/38956e79e9c53a376b77著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .