Module: AbAdmin::Concerns::TranslationsMacro
- Defined in:
- lib/ab_admin/concerns/translations_macro.rb
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Instance Method Summary
collapse
Instance Method Details
#add_translated_attributes(attr_names) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 21
def add_translated_attributes(attr_names)
attr_names.each do |attr_name|
define_translation_accessors(attr_name)
self.translated_attribute_names << attr_name
end
end
|
#class_name ⇒ Object
40
41
42
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 40
def class_name
name.split('::').last
end
|
#define_translation_accessors(attr_name) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 28
def define_translation_accessors(attr_name)
define_method("#{attr_name}_translation") { translation_for_locale(I18n.locale).try!(:send, attr_name) }
define_method("#{attr_name}_translation=") {|v| translation_for_locale(I18n.locale).try!(:send, "#{attr_name}=", v) }
alias_method attr_name, "#{attr_name}_translation"
alias_method "#{attr_name}=", "#{attr_name}_translation="
define_method("#{attr_name}_default"){ translation_for_locale(I18n.default_locale).try!(:send, attr_name) }
AbAdmin.translated_locales.each do |l|
define_method("#{attr_name}_#{l}") {translation_for_locale(l).try!(:send, attr_name)}
define_method("#{attr_name}_#{l}=") {|v| translation_for_locale(l).try!(:send, "#{attr_name}=", v)}
end
end
|
#setup_translations(options) ⇒ Object
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 10
def setup_translations(options)
include InstanceMethods
extend ClassMethods
class_attribute :translated_attribute_names, :translation_options
self.translated_attribute_names = []
self.translation_options = options
has_many :translations, class_name: translation_class.name, foreign_key: class_name.foreign_key, dependent: :destroy, autosave: true, inverse_of: :translated_model
end
|
#translates(*attr_names) ⇒ Object
4
5
6
7
8
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 4
def translates(*attr_names)
options = attr_names.
setup_translations(options) unless translates?
add_translated_attributes(attr_names.map(&:to_sym) - translated_attribute_names)
end
|
#translates? ⇒ Boolean
44
45
46
|
# File 'lib/ab_admin/concerns/translations_macro.rb', line 44
def translates?
included_modules.include?(InstanceMethods)
end
|