目次
開発環境
- Ruby:version 3.1.2
- Ruby on Rails:version 7.0.4
- Visual Studio Code:version 1.73.0
- OS:Windows10
Ruby on Railsでi18nによる日本語化対応の実装手順
Ruby on Railsの日本語化対応はja.ymlという辞書データを作成していく流れになります。
今回はメモアプリの作成で使用したコードを用いて解説していきます。
rails-i18nのgemファイルをインストールする
まずはrails-i18nのgemファイルをインストールするためにGemファイルに下記を記述します。
67 68 69 70 71 72 73 74 | group :test do # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] gem "capybara" gem "selenium-webdriver" gem "webdrivers" end gem 'rails-i18n' |
続いて以下のコマンドを打ち、gemファイルをインストールします。
1 | bundle install |
デフォルトの言語を日本語に設定する
続いてデフォルトの言語を日本語に設定するための設定をしていきます。
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | module MemoApp class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 7.0 # Configuration for the application, engines, and railties goes here. # # These settings can be overridden in specific environments using the files # in config/environments, which are processed later. # # config.time_zone = "Central Time (US & Canada)" # config.eager_load_paths << Rails.root.join("extras") config.i18n.default_locale = :ja config.i18n.load_path += Dir[Rails.root.join('config/locales/**/*.yml').to_s] end end |
21行目の「config.i18n.default_locale = :ja」は、デフォルトの言語を日本語に設定するという設定になります。
22行目の「config.i18n.load_path += Dir[Rails.root.join('config/locales/**/*.yml').to_s]」は、複数のロケールファイルが読み込まれるようpathを通す設定になります。
翻訳ファイルを作成する
続いて「app\config\locales」フォルダ内に「ja.yml」というファイルを作成します。
その後、「ja.yml」に「rails-i18n」のGitHubの日本語の辞書データを記述します。
GitHubの日本語の辞書データ:https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | ja: activerecord: errors: messages: record_invalid: 'バリデーションに失敗しました: %{errors}' restrict_dependent_destroy: has_one: "%{record}が存在しているので削除できません" has_many: "%{record}が存在しているので削除できません" date: abbr_day_names: - 日 - 月 - 火 - 水 - 木 - 金 - 土 abbr_month_names: - - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 day_names: - 日曜日 - 月曜日 - 火曜日 - 水曜日 - 木曜日 - 金曜日 - 土曜日 formats: default: "%Y/%m/%d" long: "%Y年%m月%d日(%a)" short: "%m/%d" month_names: - - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 order: - :year - :month - :day datetime: distance_in_words: about_x_hours: 約%{count}時間 about_x_months: 約%{count}ヶ月 about_x_years: 約%{count}年 almost_x_years: "%{count}年弱" half_a_minute: 30秒前後 less_than_x_seconds: "%{count}秒未満" less_than_x_minutes: "%{count}分未満" over_x_years: "%{count}年以上" x_seconds: "%{count}秒" x_minutes: "%{count}分" x_days: "%{count}日" x_months: "%{count}ヶ月" x_years: "%{count}年" prompts: second: 秒 minute: 分 hour: 時 day: 日 month: 月 year: 年 errors: format: "%{attribute}%{message}" messages: accepted: を受諾してください blank: を入力してください confirmation: と%{attribute}の入力が一致しません empty: を入力してください equal_to: は%{count}にしてください even: は偶数にしてください exclusion: は予約されています greater_than: は%{count}より大きい値にしてください greater_than_or_equal_to: は%{count}以上の値にしてください inclusion: は一覧にありません invalid: は不正な値です less_than: は%{count}より小さい値にしてください less_than_or_equal_to: は%{count}以下の値にしてください model_invalid: 'バリデーションに失敗しました: %{errors}' not_a_number: は数値で入力してください not_an_integer: は整数で入力してください odd: は奇数にしてください other_than: は%{count}以外の値にしてください present: は入力しないでください required: を入力してください taken: はすでに存在します too_long: は%{count}文字以内で入力してください too_short: は%{count}文字以上で入力してください wrong_length: は%{count}文字で入力してください template: body: 次の項目を確認してください header: "%{model}に%{count}個のエラーが発生しました" helpers: select: prompt: 選択してください submit: create: 登録する submit: 保存する update: 更新する number: currency: format: delimiter: "," format: "%n%u" precision: 0 separator: "." significant: false strip_insignificant_zeros: false unit: 円 format: delimiter: "," precision: 3 separator: "." significant: false strip_insignificant_zeros: false human: decimal_units: format: "%n %u" units: billion: 十億 million: 百万 quadrillion: 千兆 thousand: 千 trillion: 兆 unit: '' format: delimiter: '' precision: 3 significant: true strip_insignificant_zeros: true storage_units: format: "%n%u" units: byte: バイト eb: EB gb: GB kb: KB mb: MB pb: PB tb: TB percentage: format: delimiter: '' format: "%n%" precision: format: delimiter: '' support: array: last_word_connector: "、" two_words_connector: "、" words_connector: "、" time: am: 午前 formats: default: "%Y年%m月%d日(%a) %H時%M分%S秒 %z" long: "%Y/%m/%d %H:%M" short: "%m/%d %H:%M" pm: 午後 |
モデルとカラムに関する日本語辞書データを作成する
続いて「activerecord」内にモデルとカラムに関連付けて日本語辞書データを作成します。
今回は、メモアプリの作成で使用したコードをサンプルとして記載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ja: activerecord: modes: memo: メモ attributes: memo: title: タイトル description: 本文 errors: messages: record_invalid: 'バリデーションに失敗しました: %{errors}' restrict_dependent_destroy: has_one: "%{record}が存在しているので削除できません" has_many: "%{record}が存在しているので削除できません" |
おわりに
Ruby on Railsでrails-i18nによる日本語化対応について解説してきましたが、いかがだったでしょうか。
Webサービスではユーザーが使いやすいようにするために複数言語対応などは当たり前に実装されているため、是非、日本語化対応に挑戦してみてください。