i18n 0.4.0 → 0.4.1
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.
Potentially problematic release.
This version of i18n might be problematic. Click here for more details.
- data/lib/i18n/backend/base.rb +14 -5
- data/lib/i18n/version.rb +1 -1
- metadata +9 -4
data/lib/i18n/backend/base.rb
CHANGED
@@ -11,6 +11,7 @@ module I18n
|
|
11
11
|
RESERVED_KEYS = [:scope, :default, :separator, :resolve]
|
12
12
|
RESERVED_KEYS_PATTERN = /%\{(#{RESERVED_KEYS.join("|")})\}/
|
13
13
|
DEPRECATED_INTERPOLATION_SYNTAX_PATTERN = /(\\)?\{\{([^\}]+)\}\}/
|
14
|
+
INTERPOLATION_SYNTAX_PATTERN = /%\{([^\}]+)\}/
|
14
15
|
|
15
16
|
# Accepts a list of paths to translation files. Loads translations from
|
16
17
|
# plain Ruby (*.rb) or YAML files (*.yml). See #load_rb and #load_yml
|
@@ -150,7 +151,8 @@ module I18n
|
|
150
151
|
# interpolation).
|
151
152
|
def interpolate(locale, string, values = {})
|
152
153
|
return string unless string.is_a?(::String) && !values.empty?
|
153
|
-
|
154
|
+
original_values = values.dup
|
155
|
+
|
154
156
|
preserve_encoding(string) do
|
155
157
|
string = string.gsub(DEPRECATED_INTERPOLATION_SYNTAX_PATTERN) do
|
156
158
|
escaped, key = $1, $2.to_sym
|
@@ -162,10 +164,17 @@ module I18n
|
|
162
164
|
end
|
163
165
|
end
|
164
166
|
|
167
|
+
keys = string.scan(INTERPOLATION_SYNTAX_PATTERN).flatten
|
168
|
+
return string if keys.empty?
|
169
|
+
|
165
170
|
values.each do |key, value|
|
166
|
-
|
167
|
-
|
168
|
-
|
171
|
+
if keys.include?(key.to_s)
|
172
|
+
value = value.call(values) if interpolate_lambda?(value, string, key)
|
173
|
+
value = value.to_s unless value.is_a?(::String)
|
174
|
+
values[key] = value
|
175
|
+
else
|
176
|
+
values.delete(key)
|
177
|
+
end
|
169
178
|
end
|
170
179
|
|
171
180
|
string % values
|
@@ -174,7 +183,7 @@ module I18n
|
|
174
183
|
if string =~ RESERVED_KEYS_PATTERN
|
175
184
|
raise ReservedInterpolationKey.new($1.to_sym, string)
|
176
185
|
else
|
177
|
-
raise MissingInterpolationArgument.new(
|
186
|
+
raise MissingInterpolationArgument.new(original_values, string)
|
178
187
|
end
|
179
188
|
end
|
180
189
|
|
data/lib/i18n/version.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Sven Fuchs
|
@@ -18,7 +19,7 @@ autorequire:
|
|
18
19
|
bindir: bin
|
19
20
|
cert_chain: []
|
20
21
|
|
21
|
-
date: 2010-05
|
22
|
+
date: 2010-06-05 00:00:00 +02:00
|
22
23
|
default_executable:
|
23
24
|
dependencies: []
|
24
25
|
|
@@ -79,16 +80,20 @@ rdoc_options: []
|
|
79
80
|
require_paths:
|
80
81
|
- lib
|
81
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
82
84
|
requirements:
|
83
85
|
- - ">="
|
84
86
|
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
85
88
|
segments:
|
86
89
|
- 0
|
87
90
|
version: "0"
|
88
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
89
93
|
requirements:
|
90
94
|
- - ">="
|
91
95
|
- !ruby/object:Gem::Version
|
96
|
+
hash: 23
|
92
97
|
segments:
|
93
98
|
- 1
|
94
99
|
- 3
|
@@ -97,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
102
|
requirements: []
|
98
103
|
|
99
104
|
rubyforge_project: "[none]"
|
100
|
-
rubygems_version: 1.3.
|
105
|
+
rubygems_version: 1.3.7
|
101
106
|
signing_key:
|
102
107
|
specification_version: 3
|
103
108
|
summary: New wave Internationalization support for Ruby
|