fast_gettext 1.8.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fast_gettext/cache'
2
4
 
3
5
  module FastGettext
@@ -12,11 +14,15 @@ module FastGettext
12
14
  end
13
15
  end
14
16
 
17
+ DEFAULT_PLURALIZATION_RULE = ->(i) { i != 1 }
18
+
15
19
  [:available_locales, :_locale, :text_domain, :pluralisation_rule].each do |method_name|
16
- key = "fast_gettext_#{method_name}".to_sym
17
- define_method "#{method_name}=" do |value|
18
- switch_cache if Thread.current[key] != Thread.current[key]=value
19
- end
20
+ key = "fast_gettext_#{method_name}"
21
+ eval <<-RUBY, nil, __FILE__, __LINE__ + 1 # rubocop:disable Security/Eval
22
+ def #{method_name}=(value)
23
+ switch_cache if Thread.current[:#{key}] != Thread.current[:#{key}] = value
24
+ end
25
+ RUBY
20
26
  end
21
27
 
22
28
  def _locale
@@ -24,11 +30,11 @@ module FastGettext
24
30
  end
25
31
  private :_locale, :_locale=
26
32
 
27
-
28
33
  def available_locales
29
34
  locales = Thread.current[:fast_gettext_available_locales] || default_available_locales
30
35
  return unless locales
31
- locales.map{|s|s.to_s}
36
+
37
+ locales.map(&:to_s)
32
38
  end
33
39
 
34
40
  # cattr_accessor with defaults
@@ -37,7 +43,7 @@ module FastGettext
37
43
  [:default_text_domain, "nil"],
38
44
  [:cache_class, "FastGettext::Cache"]
39
45
  ].each do |name, default|
40
- eval <<-Ruby
46
+ eval <<-RUBY, nil, __FILE__, __LINE__ + 1 # rubocop:disable Security/Eval
41
47
  @@#{name} = #{default}
42
48
  def #{name}=(value)
43
49
  @@#{name} = value
@@ -47,7 +53,7 @@ module FastGettext
47
53
  def #{name}
48
54
  @@#{name}
49
55
  end
50
- Ruby
56
+ RUBY
51
57
  end
52
58
 
53
59
  def text_domain
@@ -57,7 +63,7 @@ module FastGettext
57
63
  # if overwritten by user( FastGettext.pluralisation_rule = xxx) use it,
58
64
  # otherwise fall back to repo or to default lambda
59
65
  def pluralisation_rule
60
- Thread.current[:fast_gettext_pluralisation_rule] || current_repository.pluralisation_rule || lambda{|i| i!=1}
66
+ Thread.current[:fast_gettext_pluralisation_rule] || current_repository.pluralisation_rule || DEFAULT_PLURALIZATION_RULE
61
67
  end
62
68
 
63
69
  def cache
@@ -69,8 +75,8 @@ module FastGettext
69
75
  translation_repositories.values.each(&:reload)
70
76
  end
71
77
 
72
- #global, since re-parsing whole folders takes too much time...
73
- @@translation_repositories={}
78
+ # global, since re-parsing whole folders takes too much time...
79
+ @@translation_repositories = {} # rubocop:disable Style/ClassVars
74
80
  def translation_repositories
75
81
  @@translation_repositories
76
82
  end
@@ -97,7 +103,7 @@ module FastGettext
97
103
  end
98
104
 
99
105
  def locale
100
- _locale || ( default_locale || (available_locales||[]).first || 'en' )
106
+ _locale || (default_locale || (available_locales || []).first || 'en')
101
107
  end
102
108
 
103
109
  def locale=(new_locale)
@@ -107,15 +113,15 @@ module FastGettext
107
113
  # for chaining: puts set_locale('xx') == 'xx' ? 'applied' : 'rejected'
108
114
  # returns the current locale, not the one that was supplied
109
115
  # like locale=(), whoes behavior cannot be changed
110
- def set_locale(new_locale)
116
+ def set_locale(new_locale) # rubocop:disable Naming/AccessorMethodName
111
117
  new_locale = best_locale_in(new_locale)
112
118
  self._locale = new_locale
113
119
  locale
114
120
  end
115
121
 
116
- @@default_locale = nil
122
+ @@default_locale = nil # rubocop:disable Style/ClassVars
117
123
  def default_locale=(new_locale)
118
- @@default_locale = best_locale_in(new_locale)
124
+ @@default_locale = best_locale_in(new_locale) # rubocop:disable Style/ClassVars
119
125
  switch_cache
120
126
  end
121
127
 
@@ -123,17 +129,17 @@ module FastGettext
123
129
  @@default_locale
124
130
  end
125
131
 
126
- #Opera: de-DE,de;q=0.9,en;q=0.8
127
- #Firefox de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
128
- #IE6/7 de
129
- #nil if nothing matches
132
+ # Opera: de-DE,de;q=0.9,en;q=0.8
133
+ # Firefox de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
134
+ # IE6/7 de
135
+ # nil if nothing matches
130
136
  def best_locale_in(locales)
131
137
  formatted_sorted_locales(locales).each do |candidate|
132
- return candidate if not available_locales
138
+ return candidate unless available_locales
133
139
  return candidate if available_locales.include?(candidate)
134
- return candidate[0..1] if available_locales.include?(candidate[0..1])#available locales include a langauge
140
+ return candidate[0..1] if available_locales.include?(candidate[0..1]) # available locales include a langauge
135
141
  end
136
- return nil#nothing found im sorry :P
142
+ nil # nothing found im sorry :P
137
143
  end
138
144
 
139
145
  # temporarily switch locale for a block
@@ -146,27 +152,27 @@ module FastGettext
146
152
  set_locale current_locale
147
153
  end
148
154
 
149
- #turn off translation if none was defined to disable all resulting errors
155
+ # turn off translation if none was defined to disable all resulting errors
150
156
  def silence_errors
151
157
  require 'fast_gettext/translation_repository/base'
152
- translation_repositories[text_domain] ||= TranslationRepository::Base.new('x', :path => 'locale')
158
+ translation_repositories[text_domain] ||= TranslationRepository::Base.new('x', path: 'locale')
153
159
  end
154
160
 
155
161
  private
156
162
 
157
163
  # de-de,DE-CH;q=0.9 -> ['de_DE','de_CH']
158
164
  def formatted_sorted_locales(locales)
159
- found = weighted_locales(locales).reject{|x|x.empty?}.sort_by{|l|l.last}.reverse #sort them by weight which is the last entry
160
- found.flatten.map{|l| format_locale(l)}
165
+ found = weighted_locales(locales).reject(&:empty?).sort_by(&:last).reverse # sort them by weight which is the last entry
166
+ found.flatten.map { |l| format_locale(l) }
161
167
  end
162
168
 
163
- #split the locale and seperate it into different languages
164
- #de-de,de;q=0.9,en;q=0.8 => [['de-de','de','0.5'], ['en','0.8']]
169
+ # split the locale and seperate it into different languages
170
+ # de-de,de;q=0.9,en;q=0.8 => [['de-de','de','0.5'], ['en','0.8']]
165
171
  def weighted_locales(locales)
166
- locales = locales.to_s.gsub(/\s/,'')
172
+ locales = locales.to_s.gsub(/\s/, '')
167
173
  found = [[]]
168
174
  locales.split(',').each do |part|
169
- if part =~ /;q=/ #contains language and weight ?
175
+ if part.include? ';q=' # contains language and weight ?
170
176
  found.last << part.split(/;q=/)
171
177
  found.last.flatten!
172
178
  found << []
@@ -177,9 +183,9 @@ module FastGettext
177
183
  found
178
184
  end
179
185
 
180
- #de-de -> de_DE
186
+ # de-de -> de_DE
181
187
  def format_locale(locale)
182
- locale.sub(/^([a-zA-Z]{2,3})[-_]([a-zA-Z]{2,3})$/){$1.downcase+'_'+$2.upcase}
188
+ locale.sub(/^([a-zA-Z]{2,3})[-_]([a-zA-Z]{2,3})$/) { $1.downcase + '_' + $2.upcase }
183
189
  end
184
190
 
185
191
  def switch_cache
@@ -1,4 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FastGettext
4
+ TRANSLATION_METHODS = [:_, :n_, :s_, :p_, :ns_, :np_].freeze
5
+ NIL_BLOCK = -> { nil }
6
+
2
7
  # this module should be included
3
8
  # Responsibility:
4
9
  # - direct translation queries to the current repository
@@ -6,153 +11,114 @@ module FastGettext
6
11
  # - understand / enforce namespaces
7
12
  # - decide which plural form is used
8
13
  module Translation
9
- extend self
10
-
11
- #make it usable in class definition, e.g.
12
- # class Y
13
- # include FastGettext::Translation
14
- # @@x = _('y')
15
- # end
16
- def self.included(klas) #:nodoc:
17
- klas.extend self
18
- end
19
-
20
- def _(key, &block)
21
- FastGettext.cached_find(key) or (block ? block.call : key)
14
+ def _(key)
15
+ FastGettext.cached_find(key) || (block_given? ? yield : key)
22
16
  end
23
17
 
24
- #translate pluralized
18
+ # translate pluralized
25
19
  # some languages have up to 4 plural forms...
26
20
  # n_(singular, plural, plural form 2, ..., count)
27
21
  # n_('apple','apples',3)
28
- def n_(*keys, &block)
29
- count = keys.pop
22
+ def n_(*keys, count)
30
23
  translations = FastGettext.cached_plural_find(*keys)
31
-
32
24
  selected = FastGettext.pluralisation_rule.call(count)
33
- selected = (selected ? 1 : 0) unless selected.is_a? Numeric #convert booleans to numbers
25
+ selected = (selected ? 1 : 0) unless selected.is_a? Numeric # convert booleans to numbers
34
26
 
27
+ # If we have a translation return it
35
28
  result = translations[selected]
36
- if result
37
- result
38
- elsif keys[selected]
39
- _(keys[selected])
40
- else
41
- block ? block.call : keys.last
42
- end
29
+ return result if result
30
+
31
+ # If we have a block always use it in place of a translation
32
+ return yield if block_given?
33
+
34
+ # Fall back to the best fit translated key if it's there
35
+ _(keys[selected] || keys.last)
43
36
  end
44
37
 
45
- #translate with namespace, use namespect to find key
46
- # 'Car','Tire' -> Tire if no translation could be found
47
- # p_('Car','Tire') <=> s_('Car|Tire')
48
- def p_(namespace, key, separator=nil, &block)
49
- msgid = "#{namespace}#{separator||NAMESPACE_SEPARATOR}#{key}"
50
- FastGettext.cached_find(msgid) or (block ? block.call : key)
38
+ # translate with namespace
39
+ # 'Car', 'Tire' -> Tire if no translation could be found
40
+ # p_('Car', 'Tire') == s_('Car|Tire')
41
+ def p_(namespace, key, separator = nil)
42
+ msgid = "#{namespace}#{separator || CONTEXT_SEPARATOR}#{key}"
43
+
44
+ translation = FastGettext.cached_find(msgid)
45
+ return translation if translation
46
+
47
+ block_given? ? yield : key
51
48
  end
52
49
 
53
- #translate, but discard namespace if nothing was found
50
+ # translate, but discard namespace if nothing was found
54
51
  # Car|Tire -> Tire if no translation could be found
55
- def s_(key, separator=nil, &block)
56
- translation = FastGettext.cached_find(key) and return translation
57
- block ? block.call : key.split(separator||NAMESPACE_SEPARATOR).last
52
+ def s_(key, separator = nil)
53
+ translation = FastGettext.cached_find(key)
54
+ return translation if translation
55
+
56
+ block_given? ? yield : key.split(separator || NAMESPACE_SEPARATOR).last
58
57
  end
59
58
 
60
- #tell gettext: this string need translation (will be found during parsing)
59
+ # tell gettext: this string need translation (will be found during parsing)
61
60
  def N_(translate)
62
61
  translate
63
62
  end
64
63
 
65
- #tell gettext: this string need translation (will be found during parsing)
64
+ # tell gettext: this string need translation (will be found during parsing)
66
65
  def Nn_(*keys)
67
66
  keys
68
67
  end
69
68
 
70
- def ns_(*args, &block)
71
- translation = n_(*args, &block)
72
- # block is called once again to compare result
73
- block && translation == block.call ? translation : translation.split(NAMESPACE_SEPARATOR).last
74
- end
75
- end
69
+ # translate pluralized with separator
70
+ def ns_(*args)
71
+ translation = n_(*args, &NIL_BLOCK)
72
+ return translation if translation
76
73
 
77
- # this module should be included for multi-domain support
78
- module TranslationMultidomain
79
- extend self
80
-
81
- #make it usable in class definition, e.g.
82
- # class Y
83
- # include FastGettext::TranslationMultidomain
84
- # @@x = d_('domain', 'y')
85
- # end
86
- def self.included(klas) #:nodoc:
87
- klas.extend self
88
- end
74
+ return yield if block_given?
89
75
 
90
- # helper block for changing domains
91
- def _in_domain domain
92
- old_domain = FastGettext.text_domain
93
- FastGettext.text_domain = domain
94
- yield if block_given?
95
- ensure
96
- FastGettext.text_domain = old_domain
76
+ n_(*args).split(NAMESPACE_SEPARATOR).last
97
77
  end
98
78
 
99
- # gettext functions to translate in the context of given domain
100
- def d_(domain, key, &block)
101
- _in_domain domain do
102
- FastGettext::Translation._(key, &block)
103
- end
104
- end
105
-
106
- def dn_(domain, *keys, &block)
107
- _in_domain domain do
108
- FastGettext::Translation.n_(*keys, &block)
109
- end
110
- end
79
+ # translate pluralized with context
80
+ def np_(context, plural_one, *args, separator: nil)
81
+ nargs = ["#{context}#{separator || CONTEXT_SEPARATOR}#{plural_one}"] + args
82
+ translation = n_(*nargs, &NIL_BLOCK)
83
+ return translation if translation
111
84
 
112
- def ds_(domain, key, separator=nil, &block)
113
- _in_domain domain do
114
- FastGettext::Translation.s_(key, separator, &block)
115
- end
116
- end
117
-
118
- def dns_(domain, *keys, &block)
119
- _in_domain domain do
120
- FastGettext::Translation.ns_(*keys, &block)
121
- end
122
- end
85
+ return yield if block_given?
123
86
 
124
- # gettext functions to translate in the context of any domain
125
- # (note: if mutiple domains contains key, random translation is returned)
126
- def D_(key)
127
- FastGettext.translation_repositories.each_key do |domain|
128
- result = FastGettext::TranslationMultidomain.d_(domain, key) {nil}
129
- return result unless result.nil?
130
- end
131
- key
87
+ n_(plural_one, *args)
132
88
  end
89
+ end
133
90
 
134
- def Dn_(*keys)
135
- FastGettext.translation_repositories.each_key do |domain|
136
- result = FastGettext::TranslationMultidomain.dn_(domain, *keys) {nil}
137
- return result unless result.nil?
138
- end
139
- keys[-3].split(keys[-2]||NAMESPACE_SEPARATOR).last
140
- end
91
+ module TranslationAliased
92
+ include Translation
93
+ TRANSLATION_METHODS.each { |m| alias_method "#{m.to_s.delete('_')}gettext", m }
94
+ end
141
95
 
142
- def Ds_(key, separator=nil)
143
- FastGettext.translation_repositories.each_key do |domain|
144
- result = FastGettext::TranslationMultidomain.ds_(domain, key, separator) {nil}
145
- return result unless result.nil?
146
- end
147
- key.split(separator||NAMESPACE_SEPARATOR).last
148
- end
96
+ # this module should be included for multi-domain support
97
+ module TranslationMultidomain
98
+ include Translation
149
99
 
150
- def Dns_(*keys)
151
- FastGettext.translation_repositories.each_key do |domain|
152
- result = FastGettext::TranslationMultidomain.dns_(domain, *keys) {nil}
153
- return result unless result.nil?
154
- end
155
- keys[-2].split(NAMESPACE_SEPARATOR).last
100
+ # gettext functions to translate in the context of given domain
101
+ TRANSLATION_METHODS.each do |method|
102
+ eval <<-RUBY, nil, __FILE__, __LINE__ + 1 # rubocop:disable Security/Eval
103
+ # translate in given domain
104
+ def d#{method}(domain, *args, &block)
105
+ FastGettext.with_domain(domain) { #{method}(*args, &block) }
106
+ end
107
+
108
+ # translate with whatever domain finds a translation
109
+ def D#{method}(*args, &block)
110
+ repos = FastGettext.translation_repositories
111
+ last = repos.size - 1
112
+ repos.each_key.each_with_index do |domain, i|
113
+ if i == last
114
+ return d#{method}(domain, *args, &block)
115
+ else
116
+ result = d#{method}(domain, *args, &NIL_BLOCK)
117
+ return result if result
118
+ end
119
+ end
120
+ end
121
+ RUBY
156
122
  end
157
123
  end
158
124
  end
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FastGettext
2
4
  module TranslationRepository
3
5
  # Responsibility:
4
6
  # - base for all repositories
5
7
  # - fallback as empty repository, that cannot translate anything but does not crash
6
8
  class Base
7
-
8
9
  attr_reader :name, :options
9
10
 
10
- def initialize(name,options={})
11
+ def initialize(name, options = {})
11
12
  @name = name
12
13
  @options = options
13
14
  end
@@ -38,17 +39,19 @@ module FastGettext
38
39
  MoFile.empty
39
40
  end
40
41
 
41
- def find_files_in_locale_folders(relative_file_path,path)
42
+ def find_files_in_locale_folders(relative_file_path, path)
42
43
  path ||= "locale"
43
44
  raise "path #{path} could not be found!" unless File.exist?(path)
44
45
 
45
46
  @files = {}
46
- Dir[File.join(path,'*')].each do |locale_folder|
47
+ Dir[File.join(path, '*')].each do |locale_folder|
47
48
  next unless File.basename(locale_folder) =~ LOCALE_REX
48
- file = File.join(locale_folder,relative_file_path).untaint
49
+
50
+ file = File.join(locale_folder, relative_file_path)
49
51
  next unless File.exist? file
52
+
50
53
  locale = File.basename(locale_folder)
51
- @files[locale] = yield(locale,file)
54
+ @files[locale] = yield(locale, file)
52
55
  end
53
56
  end
54
57
  end
@@ -1,32 +1,38 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fast_gettext/translation_repository/base'
2
4
 
3
5
  module FastGettext
4
6
  module TranslationRepository
5
7
  # Responsibility:
6
8
  # - delegate calls to members of the chain in turn
7
- #TODO cache should be expired after a repo was added
9
+ # TODO cache should be expired after a repo was added
8
10
  class Chain < Base
9
11
  attr_accessor :chain
10
12
 
11
- def initialize(name,options={})
13
+ def initialize(name, options = {})
12
14
  super
13
15
  self.chain = options[:chain]
14
16
  end
15
17
 
16
18
  def available_locales
17
- chain.map{|c|c.available_locales}.flatten.uniq
19
+ chain.map(&:available_locales).flatten.uniq
18
20
  end
19
21
 
20
22
  def pluralisation_rule
21
23
  chain.each do |c|
22
- result = c.pluralisation_rule and return result
24
+ if result = c.pluralisation_rule
25
+ return result
26
+ end
23
27
  end
24
28
  nil
25
29
  end
26
30
 
27
31
  def [](key)
28
32
  chain.each do |c|
29
- result = c[key] and return result
33
+ if result = c[key]
34
+ return result
35
+ end
30
36
  end
31
37
  nil
32
38
  end
@@ -1,4 +1,5 @@
1
- require 'active_record'
1
+ # frozen_string_literal: true
2
+
2
3
  module FastGettext
3
4
  module TranslationRepository
4
5
  # Responsibility:
@@ -11,13 +12,14 @@ module FastGettext
11
12
  # key: find_by_key, translations
12
13
  # translation: text, locale
13
14
  class Db
14
- def initialize(name,options={})
15
+ def initialize(_name, options = {})
15
16
  @model = options[:model]
16
17
  end
17
18
 
18
- @@seperator = '||||' # string that seperates multiple plurals
19
- def self.seperator=(sep);@@seperator = sep;end
20
- def self.seperator;@@seperator;end
19
+ @separator = '||||' # string that separates multiple plurals
20
+ class << self
21
+ attr_accessor :separator
22
+ end
21
23
 
22
24
  def available_locales
23
25
  if @model.respond_to? :available_locales
@@ -28,11 +30,7 @@ module FastGettext
28
30
  end
29
31
 
30
32
  def pluralisation_rule
31
- if @model.respond_to? :pluralsation_rule
32
- @model.pluralsation_rule
33
- else
34
- nil
35
- end
33
+ @model.pluralisation_rule if @model.respond_to? :pluralisation_rule
36
34
  end
37
35
 
38
36
  def [](key)
@@ -40,8 +38,8 @@ module FastGettext
40
38
  end
41
39
 
42
40
  def plural(*args)
43
- if translation = @model.translation(args*self.class.seperator, FastGettext.locale)
44
- translation.to_s.split(self.class.seperator)
41
+ if translation = @model.translation(args * self.class.separator, FastGettext.locale)
42
+ translation.to_s.split(self.class.separator)
45
43
  else
46
44
  []
47
45
  end
@@ -52,11 +50,12 @@ module FastGettext
52
50
  end
53
51
 
54
52
  def self.require_models
53
+ require 'active_record'
55
54
  folder = "fast_gettext/translation_repository/db_models"
56
55
  require "#{folder}/translation_key"
57
56
  require "#{folder}/translation_text"
58
57
  Module.new do
59
- def self.included(base)
58
+ def self.included(_base)
60
59
  puts "you no longer need to include the result of require_models"
61
60
  end
62
61
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TranslationKey < ActiveRecord::Base
2
- has_many :translations, :class_name => 'TranslationText', :dependent => :destroy
4
+ has_many :translations, class_name: 'TranslationText', dependent: :destroy
3
5
 
4
- accepts_nested_attributes_for :translations, :allow_destroy => true
6
+ accepts_nested_attributes_for :translations, allow_destroy: true
5
7
 
6
8
  validates_uniqueness_of :key
7
9
  validates_presence_of :key
@@ -13,25 +15,26 @@ class TranslationKey < ActiveRecord::Base
13
15
  def self.translation(key, locale)
14
16
  return unless translation_key = find_by_key(newline_normalize(key))
15
17
  return unless translation_text = translation_key.translations.find_by_locale(locale)
18
+
16
19
  translation_text.text
17
20
  end
18
21
 
19
22
  def self.available_locales
20
- @@available_locales ||= begin
23
+ @available_locales ||= begin
21
24
  if ActiveRecord::VERSION::MAJOR >= 3
22
25
  TranslationText.group(:locale).count
23
26
  else
24
- TranslationText.count(:group=>:locale)
27
+ TranslationText.count(group: :locale)
25
28
  end.keys.sort
26
29
  end
27
30
  end
28
31
 
29
- protected
30
-
31
- def self.newline_normalize(s)
32
- s.to_s.gsub("\r\n", "\n")
32
+ def self.newline_normalize(string)
33
+ string.to_s.gsub("\r\n", "\n")
33
34
  end
34
35
 
36
+ protected
37
+
35
38
  def normalize_newlines
36
39
  self.key = self.class.newline_normalize(key)
37
40
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TranslationText < ActiveRecord::Base
2
- belongs_to :translation_key, :class_name => 'TranslationKey'
4
+ belongs_to :translation_key, class_name: 'TranslationKey'
3
5
  validates_presence_of :locale
4
- validates_uniqueness_of :locale, :scope=>:translation_key_id
6
+ validates_uniqueness_of :locale, scope: :translation_key_id
5
7
  attr_accessible :text, :locale, :translation_key, :translation_key_id if ActiveRecord::VERSION::MAJOR == 3 || defined?(ProtectedAttributes)
6
8
  after_update :expire_cache
7
9
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fast_gettext/translation_repository/base'
2
4
 
3
5
  module FastGettext
@@ -8,7 +10,7 @@ module FastGettext
8
10
  class Logger < Base
9
11
  attr_accessor :callback
10
12
 
11
- def initialize(name,options={})
13
+ def initialize(name, options = {})
12
14
  super
13
15
  self.callback = options[:callback]
14
16
  end
@@ -24,4 +26,4 @@ module FastGettext
24
26
  end
25
27
  end
26
28
  end
27
- end
29
+ end