amatsuda / i18n_generators

A pack of Rails generators gem plugin that generates Rails 3 and Rails 2 I18n locale files for almost every known locale.
http://github.com/amatsuda/i18n_generators
MIT License
296 stars 29 forks source link

transration_**.yml内のAlias(<<*****)を解決できない。 #21

Closed swanmatch closed 4 years ago

swanmatch commented 6 years ago

いつもとても便利に使わせて頂いています。 お互い日本人のようですので日本語で失礼させて頂きます。 こちらのgemを使ったApplicationTemplateを作っているなかで相談です。 https://github.com/swanmatch/SwanTemplate

rails g scaffold book titleした上で検索用のフォームを作る際に 下記のようなActiveModelをincludeしたモデルを作っています。

# == Schema Information
#
# Table name: books
#
#  id                  :integer          not null, primary key
#  title               :string(255)
#  created_at          :datetime         not null
#  updated_at          :datetime         not null

Class Book  < ApplicationRecord
end
Class BookSearch
  include ActiveModel::Model
  attr_accessor :title
end

この際にrails g i18n jaすると、 以下のようなymlができます。

ja:
  activerecord:
    models:
      book: 本  #g
    attributes:
      book:
        title: タイトル  #g

検索用のモデルも基本的には同じattributesを持っているので、 database.ymlと同様、DRYにするために以下のように加筆するのが理想です。

ja:
  activerecord:
    models:
      book: 本  #g
    attributes:
      book: &book_attrs
        title: タイトル  #g

  activemodel:
    models:
      book_search: 本検索
    attributes:
      book_search:
        <<: *book_attrs

ここまではうまくいくのですが、この状態でrails g i18n jaすると、 book_attrsを解決できず、以下のようなエラーが発生してしまいます。

        28: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n/i18n_generator.rb:15:in `main'
        27: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/i18n_translation_generator.rb:26:in `main'
        26: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:64:in `load_yml_file'
        25: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:64:in `new'
        24: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:59:in `initialize'
        23: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:59:in `map'
        22: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:59:in `block in initialize'
        21: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:59:in `new'
        20: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/i18n_generators-2.1.1/lib/generators/i18n_translation/lib/yaml.rb:14:in `initialize'
        19: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych.rb:264:in `load'
        18: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/nodes/node.rb:50:in `to_ruby'
        17: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
        16: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
        15: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
        14: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
        13: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
        12: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
        11: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
        10: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
         9: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
         8: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each_slice'
         7: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each'
         6: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
         5: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
         4: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
         3: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
         2: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:319:in `visit_Psych_Nodes_Alias'
         1: from /home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:319:in `fetch'
/home/shirotori/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:319:in `block in visit_Psych_Nodes_Alias': Unknown alias: book_attrs

仕組み上解決が難しいのは理解しているのですが、 なにかよい解決方法があればご教授下さい。 宜しくお願い致します。