module Sequel::Plugins::Localize::ClassMethods
Public Instance Methods
_init_translations()
click to toggle source
# File lib/sequel/localize.rb, line 15 def _init_translations @@_lowercase_name = underscore(demodulize(self.to_s)) create_translation_class create_translated_field_methods create_translation_accessors end
add_translation_accessors(code)
click to toggle source
# File lib/sequel/localize.rb, line 27 def add_translation_accessors(code) create_translation_writer(code) create_translation_reader(code) end
localized_fields()
click to toggle source
# File lib/sequel/localize.rb, line 21 def localized_fields @@localized_fields ||= translation_class.columns - [translation_class.primary_key, :"#{@@_lowercase_name}_id", :language_id] end
translation_class()
click to toggle source
# File lib/sequel/localize.rb, line 24 def translation_class @@translation_class ||= Object.const_get("#{self}Translation") end
Protected Instance Methods
create_translated_field_methods()
click to toggle source
# File lib/sequel/localize.rb, line 46 def create_translated_field_methods localized_fields.each do |field_name| self.class_eval(<<-RUBY, __FILE__, __LINE__ + 1) def #{field_name}(locale = I18n.site_locale) (translation(locale) || translation(default_locale)).#{field_name} end def #{field_name}=(value, locale) translation(locale).#{field_name}= value end RUBY end end
create_translation_accessors()
click to toggle source
# File lib/sequel/localize.rb, line 58 def create_translation_accessors Language.all.each do |l| create_translation_writer(l.code) create_translation_reader(l.code) end end
create_translation_class()
click to toggle source
# File lib/sequel/localize.rb, line 34 def create_translation_class one_to_many :"#{@@_lowercase_name}_translations" alias_method :translations_dataset, :"#{@@_lowercase_name}_translations_dataset" alias_method :translations, :"#{@@_lowercase_name}_translations" alias_method :add_translation, :"add_#{@@_lowercase_name}_translation" self.class_eval(<<-RUBY, __FILE__, __LINE__ + 1) class ::#{self}Translation < Sequel::Model many_to_one :#{@@_lowercase_name} many_to_one :language end RUBY end
create_translation_reader(locale)
click to toggle source
# File lib/sequel/localize.rb, line 76 def create_translation_reader(locale) self.class_eval(<<-RUBY, __FILE__, __LINE__ + 1) def #{locale} translation :#{locale} end RUBY end
create_translation_writer(locale)
click to toggle source
# File lib/sequel/localize.rb, line 65 def create_translation_writer(locale) self.class_eval(<<-RUBY, __FILE__, __LINE__ + 1) def #{locale}=(attributes = {}) attributes.each do |method, value| modified! self.send :"\#{method}=", value, :#{locale} end end RUBY end