zlocalize 4.2.1 → 4.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fcc6278f96e0fe07e33fc8516efc5f8118cf24b
4
- data.tar.gz: 83f6e8ac7787ad6b1e902d77c30468c9d7ae7270
3
+ metadata.gz: e0b7205eae0de41db4cd6fcbc5aa2cbd5807e60a
4
+ data.tar.gz: 3c0374e95c6e25cbfb8b43dd93238635b22f605a
5
5
  SHA512:
6
- metadata.gz: 9ae3437dea609e5bc36d40b440520a51fecfbab81c387bc992d683e57df331e56c8d20a04656551975d093041b26bcac30c2be7edbe828cdc4ee713689229936
7
- data.tar.gz: cf38ca76ddc195ccdf26d2fe39b362c3ef548a3fdd30c463c9f27b012490c7f88231214c90823582d3832f850b6761b9c068caa45cadd4a2002699c9bcb05f98
6
+ metadata.gz: ed6638ee95dd4bb20b32fad644c6352f079d5ed6a788f500e2d4fa82c44a473717130eab600af9bb0612a3493889f46c29f1d2ea3ab41ee56c22e15be96cadb9
7
+ data.tar.gz: d96e729b473b41d377352a1a770f254a1e8e5ed611b483f22aba85c4023b1e31aee1468d8d191bd36daf744c52d49cb25f5393ec7bc6a79def9de11cd93a5981
@@ -11,3 +11,6 @@ ActiveRecord::Base.send(:include, ZLocalize::Translatable::LocalizedDecimalAttri
11
11
 
12
12
  require 'zlocalize/rails/translated_attributes_serializer'
13
13
  ActiveRecord::Base.send(:include, ZLocalize::Translatable::TranslatedAttributesSerializer)
14
+
15
+ require 'zlocalize/rails/default_locale_evaluator'
16
+ ActiveRecord::Base.send(:include, ZLocalize::Translatable::DefaultLocaleEvaluator)
@@ -41,14 +41,18 @@ module ZLocalize
41
41
  end
42
42
 
43
43
  module AttachedTranslations #:nodoc:
44
+
44
45
  def self.included(base)
45
46
  base.extend(ClassMethods)
46
47
  end
47
48
 
48
49
  module ClassMethods
49
50
 
50
- def has_translations
51
+ def has_translations(options = {})
51
52
  has_many :translations, :as => :translated, :dependent => :destroy
53
+
54
+ set_default_locale_for_translations(options[:default_locale])
55
+
52
56
  include ZLocalize::Translatable::AttachedTranslations::InstanceMethods
53
57
  end
54
58
 
@@ -56,12 +60,18 @@ module ZLocalize
56
60
 
57
61
  module InstanceMethods
58
62
 
59
- def translate(attr_name,locale = nil)
63
+ def translate(attr_name,locale = nil, fetch_default = true)
60
64
  locale ||= ZLocalize.locale
61
65
  if tr = find_translation(attr_name,locale)
62
- tr.value
66
+ return tr.value
63
67
  else
64
- ''
68
+ unless (default_locale = evaluate_default_locale_for_translations).blank?
69
+ if default_locale.to_s != locale.to_s
70
+ if tr = find_translation(attr_name,default_locale)
71
+ return tr.value
72
+ end
73
+ end
74
+ end
65
75
  end
66
76
  end
67
77
 
@@ -0,0 +1,44 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module ZLocalize
3
+ module Translatable
4
+ module DefaultLocaleEvaluator
5
+
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+
12
+ cattr_reader :default_locale_for_translations
13
+
14
+ def set_default_locale_for_translations(value)
15
+ @@default_locale_for_translations =
16
+ case value
17
+ when nil then nil
18
+ when Symbol, String then value.to_sym
19
+ else
20
+ raise(
21
+ Zigotos::Translatable::TranslationError,
22
+ "default_locale option must be either a String or a Symbol representing a method on this class (trying to set it to a #{value.class.name})"
23
+ )
24
+ end
25
+
26
+ include ZLocalize::Translatable::DefaultLocaleEvaluator::InstanceMethods
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+
32
+ def evaluate_default_locale_for_translations
33
+ unless self.class.default_locale_for_translations.blank?
34
+ self.send(self.class.default_locale_for_translations)
35
+ else
36
+ nil
37
+ end
38
+ end
39
+
40
+ end # module InstanceMethods
41
+
42
+ end # module DefaultLocaleEvaluator
43
+ end # module Translatable
44
+ end # module ZLocalize
@@ -15,9 +15,11 @@ module ZLocalize
15
15
 
16
16
  serialize :translated_attributes, HashWithIndifferentAccess
17
17
 
18
+ set_default_locale_for_translations(options[:default_locale])
19
+
18
20
  [attribute_names].flatten.each do |attr_name|
19
21
  class_eval "def #{attr_name}(options = {})
20
- read_translated_attribute('#{attr_name}',(options[:locale] || ZLocalize.locale).to_s)
22
+ read_translated_attribute('#{attr_name}',(options[:locale] || ZLocalize.locale).to_s, options[:fetch_default] == true)
21
23
  end"
22
24
  end
23
25
 
@@ -31,13 +33,22 @@ module ZLocalize
31
33
 
32
34
  include ZLocalize::Translatable::TranslatedAttributesSerializer::InstanceMethods
33
35
  end
36
+
34
37
  end
35
38
 
36
39
  module InstanceMethods
37
40
 
38
- def read_translated_attribute(attr_name,locale)
39
- s = self.translated_attributes[locale]
40
- s.is_a?(Hash) ? s[attr_name] : nil
41
+ def read_translated_attribute(attr_name,locale,fetch_default = true)
42
+ s = self.translated_attributes[locale].try(:'[]',attr_name)
43
+ if s.blank? && fetch_default
44
+ unless (default_locale = evaluate_default_locale_for_translations).blank?
45
+ if default_locale.to_s != locale.to_s
46
+ return self.translated_attributes[default_locale].try(:'[]',attr_name)
47
+ end
48
+ end
49
+ else
50
+ return s
51
+ end
41
52
  end
42
53
 
43
54
  alias :translate :read_translated_attribute
@@ -38,7 +38,9 @@ module ZLocalize
38
38
 
39
39
  module ClassMethods
40
40
 
41
- def translates_columns(column_names)
41
+ def translates_columns(column_names, options = {})
42
+
43
+ set_default_locale_for_translations(options[:default_locale])
42
44
 
43
45
  [column_names].flatten.each do |col_name|
44
46
  class_eval "def #{col_name}(options = {})
@@ -54,12 +56,18 @@ module ZLocalize
54
56
 
55
57
  def read_translated_column(col_name,locale,fetch_default = true)
56
58
  s = self.read_attribute("#{col_name}_#{locale}")
57
- if !s.nil?
59
+ if s.blank? && fetch_default
60
+ unless (default_locale = evaluate_default_locale_for_translations).blank?
61
+ if default_locale.to_s != locale.to_s
62
+ attr_name = "#{col_name}_#{default_locale}"
63
+ if self.respond_to?(attr_name)
64
+ return self.read_attribute(attr_name)
65
+ end
66
+ end
67
+ end
68
+ else
58
69
  return s
59
- elsif fetch_default == true
60
- return self.read_attribute("#{col_name}_#{ZLocalize.default_locale}")
61
70
  end
62
- nil
63
71
  end
64
72
 
65
73
  end # module InstanceMethods
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zlocalize
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 4.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Bedard
@@ -81,6 +81,7 @@ files:
81
81
  - lib/zlocalize/rails/active_record.rb
82
82
  - lib/zlocalize/rails/attached_translations.rb
83
83
  - lib/zlocalize/rails/decimal_attributes.rb
84
+ - lib/zlocalize/rails/default_locale_evaluator.rb
84
85
  - lib/zlocalize/rails/generators/initializer.rb
85
86
  - lib/zlocalize/rails/generators/templates/initializer_template.rb
86
87
  - lib/zlocalize/rails/generators/templates/translations_migration_template.rb