Sha256: d7455a68d9181bacb59a27be75fefbad7690d24e56b00d7d47d852ee728fbbf1
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
module Traco module ClassMethods def locales_for_attribute(attribute) re = /\A#{attribute}_([a-z]{2})\z/ column_names. grep(re) { $1.to_sym }. sort_by(&locale_sort_value) end def locale_columns(attribute) locales_for_attribute(attribute).map { |locale| :"#{attribute}_#{locale}" } end def human_attribute_name(attribute, options = {}) default = super(attribute, options.merge(:default => "")) if default.blank? && attribute.to_s.match(/\A(\w+)_([a-z]{2})\z/) column, locale = $1, $2.to_sym if translates?(column) return "#{super(column, options)} (#{locale_name(locale)})" end end super end private def locale_sort_value lambda { |locale| if locale == I18n.default_locale # Sort the default locale first. "0" else # Sort the rest alphabetically. locale.to_s end } end def translates?(attribute) translatable_attributes.include?(attribute.to_sym) end def locale_name(locale) I18n.t(locale, :scope => :"i18n.languages", :default => locale.to_s.upcase) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
traco-1.0.0 | lib/traco/class_methods.rb |
traco-0.4.2 | lib/traco/class_methods.rb |