lib/mongoid/i18n/localized_field.rb in mongoid_i18n-0.3.1 vs lib/mongoid/i18n/localized_field.rb in mongoid_i18n-0.4.0

- old
+ new

@@ -1,6 +1,49 @@ module Mongoid module I18n - class LocalizedField < Hash + class LocalizedField + include Mongoid::Fields::Serializable + + # Return translated values of field, accoring to current locale. + # If :use_default_if_empty is set, then in case when there no + # translation available for current locale, if will try to + # get translation for defalt_locale. + def deserialize(object) + lookups = [self.locale] + + # TODO: Add I18n.fallbacks support instead of :use_default_if_empty + if options[:use_default_if_empty] + lookups.push ::I18n.default_locale.to_s + end + + # Find first localized value in lookup path and return corresponding value + object[lookups.find{|locale| object[locale]}] + end + + # Return translations as keys. If :clear_empty_values is set to true + # pairs with empty values will be rejected + def to_hash(object) + if options[:clear_empty_values] + object.reject!{|k,v| v.blank?} + end + + object + end + + # Assing new translation to translation table. + def assign(object, value) + object.merge(locale => value) + end + + # Replace translation hash with new one. If :clear_empty_values is set to + # pairs with empty values will be reject + def replace(object, values) + self.to_hash(values) + end + + # Return current locale as string + def locale + ::I18n.locale.to_s + end end end end \ No newline at end of file