cgriego / active_attr

What ActiveModel left out
MIT License
1.2k stars 92 forks source link

I18N Scope #80

Open marco-martins opened 12 years ago

marco-martins commented 12 years ago

It's really nice if can have i18N support, for now i try translate attributes in i18n file but it does not work.

cgriego commented 12 years ago

@skarface What are you using for keys? ActiveAttr doesn't do anything for i18n but it does pull in ActiveModel modules that should provide full support.

marco-martins commented 12 years ago

I use normal way, in my translate file i put: activerecord: attributes: user: name: "Nome"

I try do same with ActiveAttr but translation won't work.

cgriego commented 12 years ago

Since ActiveAttr isn't doing anything for i18n, and only leaning on ActiveModel, you'll have to use "activemodel" as the key portion instead of "activerecord" or "activeattr".

I'll leave this issue open to consider whether we should declare our own i18n scope. It might be necessary when we create our own validators.

marco-martins commented 12 years ago

Work right with ActiveModel, many thanks.

phstc commented 12 years ago

Work right with ActiveModel, many thanks. (2)

@cgriego Would be great if you can add it in the README.

phantomwhale commented 12 years ago

Just encountered this - I see that ActiveRecord overrides the #i18n_scope method to :activerecord, but ActiveModel by default declares it as :activemodel

For now, we're going with a Monkey Patch to BasicModel of:

  def self.i18n_scope
    "activerecord"
  end

Not sure if there is a more elegant way of integrating this into the gem - I can imagine the 80%+ of users would be using this within a Rails stack, and therefore needing this patch. Might be a little beyond my modest skills now, but I'll keep a few brain cells working on it.

borama commented 11 years ago

Another workaround: if you don't want to monkey patch, you can simply use an alias in the translation file:

cs:
  activerecord: &model_i18n
    attributes:
      user:
        name: 'Jméno'

  activemodel: *model_i18n    

Works OK, though I guess this might double the i18n keys in memory...