Rails i18n のロケールファイル整理

下記の記述をすることで config/locales ディレクトリ配下をモデル毎、ビュー毎に整理できる。

# config/application.rb
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb, yml}')]

こうすることで、モデル名とモデル属性名をビュー内部のテキストから分離し、そして日付・時刻フォーマットなどすべてをデフォルトから分離できます。

|-defaults
|---es.yml
|---en.yml
|-models
|---book
|-----es.yml
|-----en.yml
|-views
|---defaults
|-----es.yml
|-----en.yml
|---books
|-----es.yml
|-----en.yml

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

Ruby alias vs alias_method

Rubyでメソッドをエイリアスする場合、下記の通り、2つのやり方がある。

class User

  def full_name
    puts "Johnnie Walker"
  end

  alias name full_name
end

User.new.name #=>Johnnie Walker
class User

  def full_name
    puts "Johnnie Walker"
  end

  alias_method :name, :full_name
end

User.new.name #=>Johnnie Walker

alias vs alias_method | BigBinary Blog

結論としては Module 内であれば alias_method を使うほうが良さそう。

下記の通り Module じゃない context の場合は alias_method を使うことはできないので、 alias キーワードを使う必要がある。

* def hi
*   puts "hi"
> end
=> :hi
> alias hello hi
=> nil
> hello
hi
=> nil
> alias_method :hello, :hi
(irb):6:in `<main>': undefined method `alias_method' for main:Object (NoMethodError)

参考文献