Module: Qbrick::Translatable::ClassMethods

Included in:
Qbrick::Translatable
Defined in:
lib/qbrick/translatable.rb

Instance Method Summary collapse

Instance Method Details

#attr_name_for_locale(attr_name, locale) ⇒ Object



51
52
53
# File 'lib/qbrick/translatable.rb', line 51

def attr_name_for_locale(attr_name, locale)
  "#{attr_name}_#{locale.to_s.underscore}"
end

#define_localized_attr_finder(attr_name) ⇒ Object



37
38
39
40
41
# File 'lib/qbrick/translatable.rb', line 37

def define_localized_attr_finder(attr_name)
  define_singleton_method "find_by_#{attr_name}" do |val|
    send "find_by_#{attr_name}_#{locale_for_attr_name}", val
  end
end

#define_localized_attr_getter(attr_name) ⇒ Object



19
20
21
22
23
# File 'lib/qbrick/translatable.rb', line 19

def define_localized_attr_getter(attr_name)
  define_method attr_name do
    send "#{attr_name}_#{locale_for_attr_name}"
  end
end

#define_localized_attr_predicate_method(attr_name) ⇒ Object



25
26
27
28
29
# File 'lib/qbrick/translatable.rb', line 25

def define_localized_attr_predicate_method(attr_name)
  define_method "#{attr_name}?" do
    send "#{attr_name}_#{locale_for_attr_name}?"
  end
end

#define_localized_attr_setter(attr_name) ⇒ Object



31
32
33
34
35
# File 'lib/qbrick/translatable.rb', line 31

def define_localized_attr_setter(attr_name)
  define_method "#{attr_name}=" do |val|
    send "#{attr_name}_#{locale_for_attr_name}=", val
  end
end

#locale_attr(attr_name) ⇒ Object



47
48
49
# File 'lib/qbrick/translatable.rb', line 47

def locale_attr(attr_name)
  "#{attr_name}_#{locale_for_attr_name}"
end

#locale_for_attr_nameObject



43
44
45
# File 'lib/qbrick/translatable.rb', line 43

def locale_for_attr_name
  I18n.locale.to_s.underscore
end

#translate(*args) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/qbrick/translatable.rb', line 10

def translate(*args)
  args.each do |attr_name|
    define_localized_attr_getter attr_name
    define_localized_attr_setter attr_name
    define_localized_attr_finder attr_name
    define_localized_attr_predicate_method attr_name
  end
end

#translated_columns_for(attr_name) ⇒ Object



55
56
57
# File 'lib/qbrick/translatable.rb', line 55

def translated_columns_for(attr_name)
  column_names & I18n.available_locales.map { |l| attr_name_for_locale attr_name, l }
end