Skip to content

Commit

Permalink
Merge pull request #1556 from thoefer/master
Browse files Browse the repository at this point in the history
Brought back alternative convention for namespaced models in i18n
  • Loading branch information
josevalim committed Jun 8, 2011
2 parents 8c1762f + 0831b7e commit b64524d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
7 changes: 4 additions & 3 deletions activemodel/lib/active_model/naming.rb
Expand Up @@ -21,7 +21,7 @@ def initialize(klass, namespace = nil, name = nil)
@partial_path = "#{@collection}/#{@element}".freeze @partial_path = "#{@collection}/#{@element}".freeze
@param_key = (namespace ? _singularize(@unnamespaced) : @singular).freeze @param_key = (namespace ? _singularize(@unnamespaced) : @singular).freeze
@route_key = (namespace ? ActiveSupport::Inflector.pluralize(@param_key) : @plural).freeze @route_key = (namespace ? ActiveSupport::Inflector.pluralize(@param_key) : @plural).freeze
@i18n_key = self.underscore.to_sym @i18n_key = self.underscore.tr('/', '.').to_sym
end end


# Transform the model name into a more humane format, using I18n. By default, # Transform the model name into a more humane format, using I18n. By default,
Expand All @@ -35,8 +35,9 @@ def human(options={})
@klass.respond_to?(:i18n_scope) @klass.respond_to?(:i18n_scope)


defaults = @klass.lookup_ancestors.map do |klass| defaults = @klass.lookup_ancestors.map do |klass|
klass.model_name.i18n_key [klass.model_name.i18n_key,
end klass.model_name.i18n_key.to_s.tr('.', '/').to_sym]
end.flatten


defaults << options[:default] if options[:default] defaults << options[:default] if options[:default]
defaults << @human defaults << @human
Expand Down
5 changes: 3 additions & 2 deletions activemodel/lib/active_model/translation.rb
Expand Up @@ -44,8 +44,9 @@ def lookup_ancestors
# Specify +options+ with additional translating options. # Specify +options+ with additional translating options.
def human_attribute_name(attribute, options = {}) def human_attribute_name(attribute, options = {})
defaults = lookup_ancestors.map do |klass| defaults = lookup_ancestors.map do |klass|
:"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}" [:"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}",
end :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key.to_s.tr('.', '/')}.#{attribute}"]
end.flatten


defaults << :"attributes.#{attribute}" defaults << :"attributes.#{attribute}"
defaults << options.delete(:default) if options[:default] defaults << options.delete(:default) if options[:default]
Expand Down
10 changes: 10 additions & 0 deletions activemodel/test/cases/translation_test.rb
Expand Up @@ -76,5 +76,15 @@ def test_human_does_not_modify_options
Person.model_name.human(options) Person.model_name.human(options)
assert_equal({:default => 'person model'}, options) assert_equal({:default => 'person model'}, options)
end end

def test_alternate_namespaced_model_attribute_translation
I18n.backend.store_translations 'en', :activemodel => {:attributes => {:person => {:gender => {:attribute => 'person gender attribute'}}}}
assert_equal 'person gender attribute', Person::Gender.human_attribute_name('attribute')
end

def test_alternate_namespaced_model_translation
I18n.backend.store_translations 'en', :activemodel => {:models => {:person => {:gender => 'person gender model'}}}
assert_equal 'person gender model', Person::Gender.model_name.human
end
end end


0 comments on commit b64524d

Please sign in to comment.