i18n 1.5.3 → 1.6.0
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 +4 -4
- data/README.md +2 -2
- data/lib/i18n.rb +41 -26
- data/lib/i18n/backend/base.rb +14 -1
- data/lib/i18n/backend/cache.rb +1 -1
- data/lib/i18n/backend/chain.rb +4 -0
- data/lib/i18n/backend/memoize.rb +6 -0
- data/lib/i18n/backend/simple.rb +5 -0
- data/lib/i18n/config.rb +1 -1
- data/lib/i18n/exceptions.rb +14 -0
- data/lib/i18n/tests/localization/date.rb +24 -6
- data/lib/i18n/tests/localization/date_time.rb +23 -6
- data/lib/i18n/tests/localization/time.rb +22 -4
- data/lib/i18n/version.rb +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b03b84d726d3cafa7ea2ecaa6f258cb911696c338cb32c769f71b6d62ca5fb5
|
4
|
+
data.tar.gz: 7a489bf447e9fedee8fd043cc8ba324c0afc0c34701fbfeff5f15b1c1f4fa6b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 534659c40a8df9eb3fd9a123b779de0f1b66471ecd3fb35e2083128193f51aeea95df6aad06039b6309932a6efb3426c525a8759e70c1104754fdd921732d6cd
|
7
|
+
data.tar.gz: caddebe447a797be3dde1607e74d826588ee13ee1317c6abfbb08cbd8a22d79a6aa10a84d3fd21fa45ca9348317aa0e0aafe1c408d4e1c989fbee7f09cd87606
|
data/README.md
CHANGED
@@ -67,7 +67,7 @@ I18n.t(:test) # => "Dies ist ein Test"
|
|
67
67
|
* Cache
|
68
68
|
* Pluralization: lambda pluralizers stored as translation data
|
69
69
|
* Locale fallbacks, RFC4647 compliant (optionally: RFC4646 locale validation)
|
70
|
-
* [Gettext support](https://github.com/
|
70
|
+
* [Gettext support](https://github.com/ruby-i18n/i18n/wiki/Gettext)
|
71
71
|
* Translation metadata
|
72
72
|
|
73
73
|
## Alternative Backend
|
@@ -76,7 +76,7 @@ I18n.t(:test) # => "Dies ist ein Test"
|
|
76
76
|
* ActiveRecord (optionally: ActiveRecord::Missing and ActiveRecord::StoreProcs)
|
77
77
|
* KeyValue (uses active_support/json and cannot store procs)
|
78
78
|
|
79
|
-
For more information and lots of resources see [the 'Resources' page on the wiki](https://github.com/
|
79
|
+
For more information and lots of resources see [the 'Resources' page on the wiki](https://github.com/ruby-i18n/i18n/wiki/Resources).
|
80
80
|
|
81
81
|
## Tests
|
82
82
|
|
data/lib/i18n.rb
CHANGED
@@ -69,6 +69,13 @@ module I18n
|
|
69
69
|
config.backend.reload!
|
70
70
|
end
|
71
71
|
|
72
|
+
# Tells the backend to load translations now. Used in situations like the
|
73
|
+
# Rails production environment. Backends can implement whatever strategy
|
74
|
+
# is useful.
|
75
|
+
def eager_load!
|
76
|
+
config.backend.eager_load!
|
77
|
+
end
|
78
|
+
|
72
79
|
# Translates, pluralizes and interpolates a given key using a given locale,
|
73
80
|
# scope, and default, as well as interpolation values.
|
74
81
|
#
|
@@ -169,15 +176,13 @@ module I18n
|
|
169
176
|
# from the argument values passed to #translate. Therefor your lambdas should
|
170
177
|
# always return the same translations/values per unique combination of argument
|
171
178
|
# values.
|
172
|
-
def translate(
|
173
|
-
|
174
|
-
|
175
|
-
backend = config.backend
|
176
|
-
locale = options.delete(:locale) || config.locale
|
177
|
-
handling = options.delete(:throw) && :throw || options.delete(:raise) && :raise # TODO deprecate :raise
|
178
|
-
|
179
|
+
def translate(key = nil, *, throw: false, raise: false, locale: nil, **options) # TODO deprecate :raise
|
180
|
+
locale ||= config.locale
|
181
|
+
raise Disabled.new('t') if locale == false
|
179
182
|
enforce_available_locales!(locale)
|
180
183
|
|
184
|
+
backend = config.backend
|
185
|
+
|
181
186
|
result = catch(:exception) do
|
182
187
|
if key.is_a?(Array)
|
183
188
|
key.map { |k| backend.translate(locale, k, options) }
|
@@ -185,7 +190,12 @@ module I18n
|
|
185
190
|
backend.translate(locale, key, options)
|
186
191
|
end
|
187
192
|
end
|
188
|
-
|
193
|
+
|
194
|
+
if result.is_a?(MissingTranslation)
|
195
|
+
handle_exception((throw && :throw || raise && :raise), result, locale, key, options)
|
196
|
+
else
|
197
|
+
result
|
198
|
+
end
|
189
199
|
end
|
190
200
|
alias :t :translate
|
191
201
|
|
@@ -197,7 +207,9 @@ module I18n
|
|
197
207
|
alias :t! :translate!
|
198
208
|
|
199
209
|
# Returns true if a translation exists for a given key, otherwise returns false.
|
200
|
-
def exists?(key,
|
210
|
+
def exists?(key, _locale = nil, locale: _locale)
|
211
|
+
locale ||= config.locale
|
212
|
+
raise Disabled.new('exists?') if locale == false
|
201
213
|
raise I18n::ArgumentError if key.is_a?(String) && key.empty?
|
202
214
|
config.backend.exists?(locale, key)
|
203
215
|
end
|
@@ -253,37 +265,40 @@ module I18n
|
|
253
265
|
# I18n.transliterate("Jürgen") # => "Juergen"
|
254
266
|
# I18n.transliterate("Jürgen", :locale => :en) # => "Jurgen"
|
255
267
|
# I18n.transliterate("Jürgen", :locale => :de) # => "Juergen"
|
256
|
-
def transliterate(
|
257
|
-
|
258
|
-
|
259
|
-
locale = options && options.delete(:locale) || config.locale
|
260
|
-
handling = options && (options.delete(:throw) && :throw || options.delete(:raise) && :raise)
|
261
|
-
replacement = options && options.delete(:replacement)
|
268
|
+
def transliterate(key, *, throw: false, raise: false, locale: nil, replacement: nil, **options)
|
269
|
+
locale ||= config.locale
|
270
|
+
raise Disabled.new('transliterate') if locale == false
|
262
271
|
enforce_available_locales!(locale)
|
272
|
+
|
263
273
|
config.backend.transliterate(locale, key, replacement)
|
264
274
|
rescue I18n::ArgumentError => exception
|
265
|
-
handle_exception(
|
275
|
+
handle_exception((throw && :throw || raise && :raise), exception, locale, key, options)
|
266
276
|
end
|
267
277
|
|
268
278
|
# Localizes certain objects, such as dates and numbers to local formatting.
|
269
|
-
def localize(object,
|
270
|
-
|
271
|
-
|
272
|
-
format = options.delete(:format) || :default
|
279
|
+
def localize(object, locale: nil, format: nil, **options)
|
280
|
+
locale ||= config.locale
|
281
|
+
raise Disabled.new('l') if locale == false
|
273
282
|
enforce_available_locales!(locale)
|
283
|
+
|
284
|
+
format ||= :default
|
274
285
|
config.backend.localize(locale, object, format, options)
|
275
286
|
end
|
276
287
|
alias :l :localize
|
277
288
|
|
278
289
|
# Executes block with given I18n.locale set.
|
279
290
|
def with_locale(tmp_locale = nil)
|
280
|
-
if tmp_locale
|
291
|
+
if tmp_locale == nil
|
292
|
+
yield
|
293
|
+
else
|
281
294
|
current_locale = self.locale
|
282
|
-
self.locale
|
295
|
+
self.locale = tmp_locale
|
296
|
+
begin
|
297
|
+
yield
|
298
|
+
ensure
|
299
|
+
self.locale = current_locale
|
300
|
+
end
|
283
301
|
end
|
284
|
-
yield
|
285
|
-
ensure
|
286
|
-
self.locale = current_locale if tmp_locale
|
287
302
|
end
|
288
303
|
|
289
304
|
# Merges the given locale, key and scope into a single array of keys.
|
@@ -307,7 +322,7 @@ module I18n
|
|
307
322
|
|
308
323
|
# Raises an InvalidLocale exception when the passed locale is not available.
|
309
324
|
def enforce_available_locales!(locale)
|
310
|
-
if config.enforce_available_locales
|
325
|
+
if locale != false && config.enforce_available_locales
|
311
326
|
raise I18n::InvalidLocale.new(locale) if !locale_available?(locale)
|
312
327
|
end
|
313
328
|
end
|
data/lib/i18n/backend/base.rb
CHANGED
@@ -95,10 +95,19 @@ module I18n
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def reload!
|
98
|
+
eager_load! if eager_loaded?
|
99
|
+
end
|
100
|
+
|
101
|
+
def eager_load!
|
102
|
+
@eager_loaded = true
|
98
103
|
end
|
99
104
|
|
100
105
|
protected
|
101
106
|
|
107
|
+
def eager_loaded?
|
108
|
+
@eager_loaded ||= false
|
109
|
+
end
|
110
|
+
|
102
111
|
# The method which actually looks up for the translation in the store.
|
103
112
|
def lookup(locale, key, scope = [], options = EMPTY_HASH)
|
104
113
|
raise NotImplementedError
|
@@ -248,12 +257,16 @@ module I18n
|
|
248
257
|
end
|
249
258
|
|
250
259
|
def translate_localization_format(locale, object, format, options)
|
251
|
-
format.to_s.gsub(/%[aAbBpP]/) do |match|
|
260
|
+
format.to_s.gsub(/%(|\^)[aAbBpP]/) do |match|
|
252
261
|
case match
|
253
262
|
when '%a' then I18n.t!(:"date.abbr_day_names", :locale => locale, :format => format)[object.wday]
|
263
|
+
when '%^a' then I18n.t!(:"date.abbr_day_names", :locale => locale, :format => format)[object.wday].upcase
|
254
264
|
when '%A' then I18n.t!(:"date.day_names", :locale => locale, :format => format)[object.wday]
|
265
|
+
when '%^A' then I18n.t!(:"date.day_names", :locale => locale, :format => format)[object.wday].upcase
|
255
266
|
when '%b' then I18n.t!(:"date.abbr_month_names", :locale => locale, :format => format)[object.mon]
|
267
|
+
when '%^b' then I18n.t!(:"date.abbr_month_names", :locale => locale, :format => format)[object.mon].upcase
|
256
268
|
when '%B' then I18n.t!(:"date.month_names", :locale => locale, :format => format)[object.mon]
|
269
|
+
when '%^B' then I18n.t!(:"date.month_names", :locale => locale, :format => format)[object.mon].upcase
|
257
270
|
when '%p' then I18n.t!(:"time.#{object.hour < 12 ? :am : :pm}", :locale => locale, :format => format).upcase if object.respond_to? :hour
|
258
271
|
when '%P' then I18n.t!(:"time.#{object.hour < 12 ? :am : :pm}", :locale => locale, :format => format).downcase if object.respond_to? :hour
|
259
272
|
end
|
data/lib/i18n/backend/cache.rb
CHANGED
data/lib/i18n/backend/chain.rb
CHANGED
@@ -41,6 +41,10 @@ module I18n
|
|
41
41
|
backends.each { |backend| backend.reload! }
|
42
42
|
end
|
43
43
|
|
44
|
+
def eager_load!
|
45
|
+
backends.each { |backend| backend.eager_load! }
|
46
|
+
end
|
47
|
+
|
44
48
|
def store_translations(locale, data, options = EMPTY_HASH)
|
45
49
|
backends.first.store_translations(locale, data, options)
|
46
50
|
end
|
data/lib/i18n/backend/memoize.rb
CHANGED
data/lib/i18n/backend/simple.rb
CHANGED
data/lib/i18n/config.rb
CHANGED
@@ -7,7 +7,7 @@ module I18n
|
|
7
7
|
# The only configuration value that is not global and scoped to thread is :locale.
|
8
8
|
# It defaults to the default_locale.
|
9
9
|
def locale
|
10
|
-
defined?(@locale) && @locale ? @locale : default_locale
|
10
|
+
defined?(@locale) && @locale != nil ? @locale : default_locale
|
11
11
|
end
|
12
12
|
|
13
13
|
# Sets the current locale pseudo-globally, i.e. in the Thread.current hash.
|
data/lib/i18n/exceptions.rb
CHANGED
@@ -15,6 +15,20 @@ module I18n
|
|
15
15
|
|
16
16
|
class ArgumentError < ::ArgumentError; end
|
17
17
|
|
18
|
+
class Disabled < ArgumentError
|
19
|
+
def initialize(method)
|
20
|
+
super(<<~MESSAGE)
|
21
|
+
I18n.#{method} is currently disabled, likely because your application is still in its loading phase.
|
22
|
+
|
23
|
+
This method is meant to display text in the user locale, so calling it before the user locale has
|
24
|
+
been set is likely to display text from the wrong locale to some users.
|
25
|
+
|
26
|
+
If you have a legitimate reason to access i18n data outside of the user flow, you can do so by passing
|
27
|
+
the desired locale explictly with the `locale` argument, e.g. `I18n.#{method}(..., locale: :en)`
|
28
|
+
MESSAGE
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
18
32
|
class InvalidLocale < ArgumentError
|
19
33
|
attr_reader :locale
|
20
34
|
def initialize(locale)
|
@@ -11,8 +11,7 @@ module I18n
|
|
11
11
|
end
|
12
12
|
|
13
13
|
test "localize Date: given the short format it uses it" do
|
14
|
-
|
15
|
-
assert_equal '01. Mar', I18n.l(@date, :format => :short, :locale => :de)
|
14
|
+
assert_equal '01. Mär', I18n.l(@date, :format => :short, :locale => :de)
|
16
15
|
end
|
17
16
|
|
18
17
|
test "localize Date: given the long format it uses it" do
|
@@ -27,17 +26,36 @@ module I18n
|
|
27
26
|
assert_equal 'Samstag', I18n.l(@date, :format => '%A', :locale => :de)
|
28
27
|
end
|
29
28
|
|
29
|
+
test "localize Date: given a uppercased day name format it returns the correct day name in upcase" do
|
30
|
+
assert_equal 'samstag'.upcase, I18n.l(@date, :format => '%^A', :locale => :de)
|
31
|
+
end
|
32
|
+
|
30
33
|
test "localize Date: given an abbreviated day name format it returns the correct abbreviated day name" do
|
31
34
|
assert_equal 'Sa', I18n.l(@date, :format => '%a', :locale => :de)
|
32
35
|
end
|
33
36
|
|
37
|
+
test "localize Date: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
38
|
+
assert_equal 'sa'.upcase, I18n.l(@date, :format => '%^a', :locale => :de)
|
39
|
+
end
|
40
|
+
|
34
41
|
test "localize Date: given a month name format it returns the correct month name" do
|
35
42
|
assert_equal 'März', I18n.l(@date, :format => '%B', :locale => :de)
|
36
43
|
end
|
37
44
|
|
45
|
+
test "localize Date: given a uppercased month name format it returns the correct month name in upcase" do
|
46
|
+
assert_equal 'märz'.upcase, I18n.l(@date, :format => '%^B', :locale => :de)
|
47
|
+
end
|
48
|
+
|
38
49
|
test "localize Date: given an abbreviated month name format it returns the correct abbreviated month name" do
|
39
|
-
|
40
|
-
|
50
|
+
assert_equal 'Mär', I18n.l(@date, :format => '%b', :locale => :de)
|
51
|
+
end
|
52
|
+
|
53
|
+
test "localize Date: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
54
|
+
assert_equal 'mär'.upcase, I18n.l(@date, :format => '%^b', :locale => :de)
|
55
|
+
end
|
56
|
+
|
57
|
+
test "localize Date: given a date format with the month name upcased it returns the correct value" do
|
58
|
+
assert_equal '1. FEBRUAR 2008', I18n.l(::Date.new(2008, 2, 1), :format => "%-d. %^B %Y", :locale => :de)
|
41
59
|
end
|
42
60
|
|
43
61
|
test "localize Date: given missing translations it returns the correct error message" do
|
@@ -50,7 +68,7 @@ module I18n
|
|
50
68
|
|
51
69
|
test "localize Date: does not modify the options hash" do
|
52
70
|
options = { :format => '%b', :locale => :de }
|
53
|
-
assert_equal '
|
71
|
+
assert_equal 'Mär', I18n.l(@date, options)
|
54
72
|
assert_equal({ :format => '%b', :locale => :de }, options)
|
55
73
|
assert_nothing_raised { I18n.l(@date, options.freeze) }
|
56
74
|
end
|
@@ -89,7 +107,7 @@ module I18n
|
|
89
107
|
:day_names => %w(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag),
|
90
108
|
:abbr_day_names => %w(So Mo Di Mi Do Fr Sa),
|
91
109
|
:month_names => %w(Januar Februar März April Mai Juni Juli August September Oktober November Dezember).unshift(nil),
|
92
|
-
:abbr_month_names => %w(Jan Feb
|
110
|
+
:abbr_month_names => %w(Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez).unshift(nil)
|
93
111
|
}
|
94
112
|
}
|
95
113
|
end
|
@@ -12,8 +12,7 @@ module I18n
|
|
12
12
|
end
|
13
13
|
|
14
14
|
test "localize DateTime: given the short format it uses it" do
|
15
|
-
|
16
|
-
assert_equal '01. Mar 06:00', I18n.l(@datetime, :format => :short, :locale => :de)
|
15
|
+
assert_equal '01. Mär 06:00', I18n.l(@datetime, :format => :short, :locale => :de)
|
17
16
|
end
|
18
17
|
|
19
18
|
test "localize DateTime: given the long format it uses it" do
|
@@ -21,25 +20,43 @@ module I18n
|
|
21
20
|
end
|
22
21
|
|
23
22
|
test "localize DateTime: given the default format it uses it" do
|
24
|
-
|
25
|
-
assert_equal 'Sa, 01. Mar 2008 06:00:00 +0000', I18n.l(@datetime, :format => :default, :locale => :de)
|
23
|
+
assert_equal 'Sa, 01. Mär 2008 06:00:00 +0000', I18n.l(@datetime, :format => :default, :locale => :de)
|
26
24
|
end
|
27
25
|
|
28
26
|
test "localize DateTime: given a day name format it returns the correct day name" do
|
29
27
|
assert_equal 'Samstag', I18n.l(@datetime, :format => '%A', :locale => :de)
|
30
28
|
end
|
31
29
|
|
30
|
+
test "localize DateTime: given a uppercased day name format it returns the correct day name in upcase" do
|
31
|
+
assert_equal 'samstag'.upcase, I18n.l(@datetime, :format => '%^A', :locale => :de)
|
32
|
+
end
|
33
|
+
|
32
34
|
test "localize DateTime: given an abbreviated day name format it returns the correct abbreviated day name" do
|
33
35
|
assert_equal 'Sa', I18n.l(@datetime, :format => '%a', :locale => :de)
|
34
36
|
end
|
35
37
|
|
38
|
+
test "localize DateTime: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
39
|
+
assert_equal 'sa'.upcase, I18n.l(@datetime, :format => '%^a', :locale => :de)
|
40
|
+
end
|
41
|
+
|
36
42
|
test "localize DateTime: given a month name format it returns the correct month name" do
|
37
43
|
assert_equal 'März', I18n.l(@datetime, :format => '%B', :locale => :de)
|
38
44
|
end
|
39
45
|
|
46
|
+
test "localize DateTime: given a uppercased month name format it returns the correct month name in upcase" do
|
47
|
+
assert_equal 'märz'.upcase, I18n.l(@datetime, :format => '%^B', :locale => :de)
|
48
|
+
end
|
49
|
+
|
40
50
|
test "localize DateTime: given an abbreviated month name format it returns the correct abbreviated month name" do
|
41
|
-
|
42
|
-
|
51
|
+
assert_equal 'Mär', I18n.l(@datetime, :format => '%b', :locale => :de)
|
52
|
+
end
|
53
|
+
|
54
|
+
test "localize DateTime: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
55
|
+
assert_equal 'mär'.upcase, I18n.l(@datetime, :format => '%^b', :locale => :de)
|
56
|
+
end
|
57
|
+
|
58
|
+
test "localize DateTime: given a date format with the month name upcased it returns the correct value" do
|
59
|
+
assert_equal '1. FEBRUAR 2008', I18n.l(::DateTime.new(2008, 2, 1, 6), :format => "%-d. %^B %Y", :locale => :de)
|
43
60
|
end
|
44
61
|
|
45
62
|
test "localize DateTime: given missing translations it returns the correct error message" do
|
@@ -12,8 +12,7 @@ module I18n
|
|
12
12
|
end
|
13
13
|
|
14
14
|
test "localize Time: given the short format it uses it" do
|
15
|
-
|
16
|
-
assert_equal '01. Mar 06:00', I18n.l(@time, :format => :short, :locale => :de)
|
15
|
+
assert_equal '01. Mär 06:00', I18n.l(@time, :format => :short, :locale => :de)
|
17
16
|
end
|
18
17
|
|
19
18
|
test "localize Time: given the long format it uses it" do
|
@@ -29,17 +28,36 @@ module I18n
|
|
29
28
|
assert_equal 'Samstag', I18n.l(@time, :format => '%A', :locale => :de)
|
30
29
|
end
|
31
30
|
|
31
|
+
test "localize Time: given a uppercased day name format it returns the correct day name in upcase" do
|
32
|
+
assert_equal 'samstag'.upcase, I18n.l(@time, :format => '%^A', :locale => :de)
|
33
|
+
end
|
34
|
+
|
32
35
|
test "localize Time: given an abbreviated day name format it returns the correct abbreviated day name" do
|
33
36
|
assert_equal 'Sa', I18n.l(@time, :format => '%a', :locale => :de)
|
34
37
|
end
|
35
38
|
|
39
|
+
test "localize Time: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
40
|
+
assert_equal 'sa'.upcase, I18n.l(@time, :format => '%^a', :locale => :de)
|
41
|
+
end
|
42
|
+
|
36
43
|
test "localize Time: given a month name format it returns the correct month name" do
|
37
44
|
assert_equal 'März', I18n.l(@time, :format => '%B', :locale => :de)
|
38
45
|
end
|
39
46
|
|
47
|
+
test "localize Time: given a uppercased month name format it returns the correct month name in upcase" do
|
48
|
+
assert_equal 'märz'.upcase, I18n.l(@time, :format => '%^B', :locale => :de)
|
49
|
+
end
|
50
|
+
|
40
51
|
test "localize Time: given an abbreviated month name format it returns the correct abbreviated month name" do
|
41
|
-
|
42
|
-
|
52
|
+
assert_equal 'Mär', I18n.l(@time, :format => '%b', :locale => :de)
|
53
|
+
end
|
54
|
+
|
55
|
+
test "localize Time: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
56
|
+
assert_equal 'mär'.upcase, I18n.l(@time, :format => '%^b', :locale => :de)
|
57
|
+
end
|
58
|
+
|
59
|
+
test "localize Time: given a date format with the month name upcased it returns the correct value" do
|
60
|
+
assert_equal '1. FEBRUAR 2008', I18n.l(::Time.utc(2008, 2, 1, 6, 0), :format => "%-d. %^B %Y", :locale => :de)
|
43
61
|
end
|
44
62
|
|
45
63
|
test "localize Time: given missing translations it returns the correct error message" do
|
data/lib/i18n/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Fuchs
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
- Stephan Soller
|
11
11
|
- Saimon Moore
|
12
12
|
- Ryan Bigg
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2019-
|
16
|
+
date: 2019-03-03 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
|
+
name: concurrent-ruby
|
19
20
|
requirement: !ruby/object:Gem::Requirement
|
20
21
|
requirements:
|
21
22
|
- - "~>"
|
22
23
|
- !ruby/object:Gem::Version
|
23
24
|
version: '1.0'
|
24
|
-
name: concurrent-ruby
|
25
|
-
prerelease: false
|
26
25
|
type: :runtime
|
26
|
+
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - "~>"
|
@@ -82,7 +82,7 @@ files:
|
|
82
82
|
- lib/i18n/tests/pluralization.rb
|
83
83
|
- lib/i18n/tests/procs.rb
|
84
84
|
- lib/i18n/version.rb
|
85
|
-
homepage: http://github.com/
|
85
|
+
homepage: http://github.com/ruby-i18n/i18n
|
86
86
|
licenses:
|
87
87
|
- MIT
|
88
88
|
metadata:
|
@@ -117,9 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: 1.3.5
|
119
119
|
requirements: []
|
120
|
-
|
121
|
-
|
122
|
-
signing_key:
|
120
|
+
rubygems_version: 3.0.2
|
121
|
+
signing_key:
|
123
122
|
specification_version: 4
|
124
123
|
summary: New wave Internationalization support for Ruby
|
125
124
|
test_files: []
|