module Globalize::Automatic
Constants
- VERSION
Public Instance Methods
normalize_locales(locales)
click to toggle source
# File lib/globalize/automatic.rb, line 248 def normalize_locales(locales) [locales].flatten.compact.map(&:to_sym) end
parse_options(options)
click to toggle source
# File lib/globalize/automatic.rb, line 236 def parse_options(options) case options when Hash from_locales = normalize_locales(options[:from]) to_locales = normalize_locales(options[:to]) else from_locales = normalize_locales(options) to_locales = I18n.available_locales end {from: from_locales, to: to_locales} end
setup_automatic_translation!(klass, attr_names, options)
click to toggle source
# File lib/globalize/automatic.rb, line 194 def setup_automatic_translation!(klass, attr_names, options) automatic_options = validate_options(parse_options(options)) locales = (automatic_options[:from] + automatic_options[:to]).uniq klass.globalize_accessors locales: locales, attributes: attr_names unless klass.include?(Globalize::Automatic::TranslatedExtension) klass.include Globalize::Automatic::TranslatedExtension klass.has_many :automatic_translations, dependent: :destroy, autosave: true, class_name: klass.automatic_translation_class.name, foreign_key: klass.name.foreign_key, inverse_of: :automatic_translated_model automatic_table_name = "#{klass.table_name.singularize}_automatic_translations" klass.automatic_translation_class.table_name = automatic_table_name klass.automatic_translation_class.define_singleton_method(:table_name) { automatic_table_name } end klass.add_automatic_translation_field_locales!(attr_names, automatic_options[:from]) klass.add_automatic_translated_field_locales!(attr_names, automatic_options[:to]) attr_names.each do |attr_name| locales.each do |locale| klass.class_eval(<<"EVAL") def #{klass.automatic_translation_attribute_name_for(attr_name, locale)} automatic_translation_for(#{locale.inspect}).#{attr_name}_automatically end def #{klass.automatic_translation_attribute_name_for(attr_name, locale)}=(automatically) automatic_translation_for(#{locale.inspect}).#{attr_name}_automatically = automatically end self.automatic_translation_attribute_names.push(:#{klass.automatic_translation_attribute_name_for(attr_name, locale)}) EVAL end end unless klass.translation_class.include?(Globalize::Automatic::TranslationExtension) klass.translation_class.include Globalize::Automatic::TranslationExtension end end
validate_options(options)
click to toggle source
# File lib/globalize/automatic.rb, line 252 def validate_options(options) if options[:from].empty? raise ArgumentError.new('missing :from option') elsif options[:to].empty? raise ArgumentError.new('missing :to option') else options end end