i18n 1.0.1 → 1.1.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/lib/i18n/backend/base.rb +1 -0
- data/lib/i18n/backend/key_value.rb +1 -0
- data/lib/i18n/exceptions.rb +6 -15
- data/lib/i18n/locale/fallbacks.rb +1 -1
- data/lib/i18n/tests/interpolation.rb +1 -1
- data/lib/i18n/version.rb +1 -1
- data/test/backend/fallbacks_test.rb +10 -18
- data/test/backend/key_value_test.rb +24 -0
- data/test/backend/simple_test.rb +8 -0
- data/test/locale/fallbacks_test.rb +2 -2
- data/test/test_data/locales/en.yaml +3 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00ca216533d9fa4b869395ffc218a4c048b5d86c3db3b93d6cae489e7578a7a9
|
4
|
+
data.tar.gz: 805b70e0c7cc30d1c11c60ccb52d8e9e1c5693a86e57690959c182dc40005af3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbe0187478522d98f7fe3ff79c71b1ebc0b34e6f3dc9bdd44803fbe7cdab192458dda74a501dc03ad9a55b6433298c53f3ebadc4132da2b00790e239ae88ebe8
|
7
|
+
data.tar.gz: b6cfa2da751b722fc379263f6dadf82b383fc8cfdddf5e7ac2722992e577361c3ee8dbe0df97b15f781ddbb971eb8f27dda034b732a1cb5d1e9a6ec31e9bd415
|
data/lib/i18n/backend/base.rb
CHANGED
data/lib/i18n/exceptions.rb
CHANGED
@@ -3,23 +3,14 @@
|
|
3
3
|
require 'cgi'
|
4
4
|
|
5
5
|
module I18n
|
6
|
-
# Handles exceptions raised in the backend. All exceptions except for
|
7
|
-
# MissingTranslationData exceptions are re-thrown. When a MissingTranslationData
|
8
|
-
# was caught the handler returns an error message string containing the key/scope.
|
9
|
-
# Note that the exception handler is not called when the option :throw was given.
|
10
6
|
class ExceptionHandler
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
when Exception
|
17
|
-
raise exception
|
18
|
-
else
|
19
|
-
throw :exception, exception
|
20
|
-
end
|
7
|
+
def call(exception, _locale, _key, _options)
|
8
|
+
if exception.is_a?(MissingTranslation)
|
9
|
+
exception.message
|
10
|
+
else
|
11
|
+
raise exception
|
21
12
|
end
|
22
|
-
|
13
|
+
end
|
23
14
|
end
|
24
15
|
|
25
16
|
class ArgumentError < ::ArgumentError; end
|
@@ -56,7 +56,7 @@ module I18n
|
|
56
56
|
def initialize(*mappings)
|
57
57
|
@map = {}
|
58
58
|
map(mappings.pop) if mappings.last.is_a?(Hash)
|
59
|
-
self.defaults = mappings.empty? ? [
|
59
|
+
self.defaults = mappings.empty? ? [] : mappings
|
60
60
|
end
|
61
61
|
|
62
62
|
def defaults=(defaults)
|
@@ -43,7 +43,7 @@ module I18n
|
|
43
43
|
end
|
44
44
|
|
45
45
|
test "interpolation: it does not raise I18n::MissingInterpolationArgument for escaped variables" do
|
46
|
-
assert_nothing_raised
|
46
|
+
assert_nothing_raised do
|
47
47
|
assert_equal 'Barr %{foo}', interpolate(:default => '%{bar} %%{foo}', :bar => 'Barr')
|
48
48
|
end
|
49
49
|
end
|
data/lib/i18n/version.rb
CHANGED
@@ -24,18 +24,10 @@ class I18nBackendFallbacksTranslateTest < I18n::TestCase
|
|
24
24
|
assert_equal 'Interpolate %{value}', I18n.t(:interpolate)
|
25
25
|
end
|
26
26
|
|
27
|
-
test "returns the :en translation for a missing :de translation" do
|
28
|
-
assert_equal 'Foo in :en', I18n.t(:foo, :locale => :de)
|
29
|
-
end
|
30
|
-
|
31
27
|
test "returns the :de translation for a missing :'de-DE' translation" do
|
32
28
|
assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE')
|
33
29
|
end
|
34
30
|
|
35
|
-
test "returns the :en translation for translation missing in both :de and :'de-De'" do
|
36
|
-
assert_equal 'Buz in :en', I18n.t(:buz, :locale => :'de-DE')
|
37
|
-
end
|
38
|
-
|
39
31
|
test "returns the :de translation for a missing :'de-DE' when :default is a String" do
|
40
32
|
assert_equal 'Bar in :de', I18n.t(:bar, :locale => :'de-DE', :default => "Default Bar")
|
41
33
|
assert_equal "Default Bar", I18n.t(:missing_bar, :locale => :'de-DE', :default => "Default Bar")
|
@@ -106,6 +98,11 @@ class I18nBackendFallbacksTranslateTest < I18n::TestCase
|
|
106
98
|
I18n.enforce_available_locales = false
|
107
99
|
end
|
108
100
|
end
|
101
|
+
|
102
|
+
test "returns fallback default given missing pluralization data" do
|
103
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 1, default: 'default')
|
104
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 0, default: 'default')
|
105
|
+
end
|
109
106
|
end
|
110
107
|
|
111
108
|
class I18nBackendFallbacksLocalizeTest < I18n::TestCase
|
@@ -117,18 +114,13 @@ class I18nBackendFallbacksLocalizeTest < I18n::TestCase
|
|
117
114
|
super
|
118
115
|
I18n.backend = Backend.new
|
119
116
|
store_translations(:en, :date => { :formats => { :en => 'en' }, :day_names => %w(Sunday) })
|
120
|
-
store_translations(:de, :date => { :formats => { :de => 'de' } })
|
117
|
+
store_translations(:de, :date => { :formats => { :de => 'de' }, :day_names => %w(Sunday) })
|
121
118
|
end
|
122
119
|
|
123
120
|
test "still uses an existing format as usual" do
|
124
121
|
assert_equal 'en', I18n.l(Date.today, :format => :en, :locale => :en)
|
125
122
|
end
|
126
|
-
|
127
|
-
test "looks up and uses a fallback locale's format for a key missing in the given locale (1)" do
|
128
|
-
assert_equal 'en', I18n.l(Date.today, :format => :en, :locale => :de)
|
129
|
-
end
|
130
|
-
|
131
|
-
test "looks up and uses a fallback locale's format for a key missing in the given locale (2)" do
|
123
|
+
test "looks up and uses a fallback locale's format for a key missing in the given locale" do
|
132
124
|
assert_equal 'de', I18n.l(Date.today, :format => :de, :locale => :'de-DE')
|
133
125
|
end
|
134
126
|
|
@@ -137,7 +129,7 @@ class I18nBackendFallbacksLocalizeTest < I18n::TestCase
|
|
137
129
|
end
|
138
130
|
|
139
131
|
test "uses a fallback locale's translation for a key missing in the given locale" do
|
140
|
-
assert_equal 'Sunday', I18n.l(Date.new(2010, 1, 3), :format => '%A', :locale => :de)
|
132
|
+
assert_equal 'Sunday', I18n.l(Date.new(2010, 1, 3), :format => '%A', :locale => :'de-DE')
|
141
133
|
end
|
142
134
|
end
|
143
135
|
|
@@ -208,8 +200,8 @@ class I18nBackendFallbacksExistsTest < I18n::TestCase
|
|
208
200
|
end
|
209
201
|
|
210
202
|
test "exists? should return true given a key which is missing from the given locale and exists in a fallback locale" do
|
211
|
-
assert_equal true, I18n.exists?(:
|
212
|
-
assert_equal true, I18n.exists?(:
|
203
|
+
assert_equal true, I18n.exists?(:bar, :de)
|
204
|
+
assert_equal true, I18n.exists?(:bar, :'de-DE')
|
213
205
|
end
|
214
206
|
|
215
207
|
test "exists? should return false given a key which is missing from the given locale and all its fallback locales" do
|
@@ -58,4 +58,28 @@ class I18nBackendKeyValueTest < I18n::TestCase
|
|
58
58
|
store_translations(:en, :bar => { :one => "One" })
|
59
59
|
assert_equal("One", I18n.t("bar", :count => 1))
|
60
60
|
end
|
61
|
+
|
62
|
+
test "subtrees enabled: returns localized string given missing pluralization data" do
|
63
|
+
setup_backend!(true)
|
64
|
+
assert_equal 'bar', I18n.t("foo.bar", count: 1)
|
65
|
+
end
|
66
|
+
|
67
|
+
test "subtrees disabled: returns localized string given missing pluralization data" do
|
68
|
+
setup_backend!(false)
|
69
|
+
assert_equal 'bar', I18n.t("foo.bar", count: 1)
|
70
|
+
end
|
71
|
+
|
72
|
+
test "subtrees enabled: Returns fallback default given missing pluralization data" do
|
73
|
+
setup_backend!(true)
|
74
|
+
I18n.backend.extend I18n::Backend::Fallbacks
|
75
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 1, default: 'default')
|
76
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 0, default: 'default')
|
77
|
+
end
|
78
|
+
|
79
|
+
test "subtrees disabled: Returns fallback default given missing pluralization data" do
|
80
|
+
setup_backend!(false)
|
81
|
+
I18n.backend.extend I18n::Backend::Fallbacks
|
82
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 1, default: 'default')
|
83
|
+
assert_equal 'default', I18n.t(:missing_bar, count: 0, default: 'default')
|
84
|
+
end
|
61
85
|
end if I18n::TestCase.key_value?
|
data/test/backend/simple_test.rb
CHANGED
@@ -17,6 +17,10 @@ class I18nBackendSimpleTest < I18n::TestCase
|
|
17
17
|
assert_raise(I18n::UnknownFileType) { I18n.backend.load_translations("#{locales_dir}/en.xml") }
|
18
18
|
end
|
19
19
|
|
20
|
+
test "simple load_translations: given a YAML file name with yaml extension does not raise anything" do
|
21
|
+
assert_nothing_raised { I18n.backend.load_translations("#{locales_dir}/en.yaml") }
|
22
|
+
end
|
23
|
+
|
20
24
|
test "simple load_translations: given a Ruby file name it does not raise anything" do
|
21
25
|
assert_nothing_raised { I18n.backend.load_translations("#{locales_dir}/en.rb") }
|
22
26
|
end
|
@@ -100,4 +104,8 @@ class I18nBackendSimpleTest < I18n::TestCase
|
|
100
104
|
I18n.backend.reload!
|
101
105
|
assert_equal false, I18n.backend.initialized?
|
102
106
|
end
|
107
|
+
|
108
|
+
test "returns localized string given missing pluralization data" do
|
109
|
+
assert_equal 'baz', I18n.t('foo.bar', count: 1)
|
110
|
+
end
|
103
111
|
end
|
@@ -3,10 +3,10 @@ require 'test_helper'
|
|
3
3
|
include I18n::Locale
|
4
4
|
|
5
5
|
class I18nFallbacksDefaultsTest < I18n::TestCase
|
6
|
-
test "defaults
|
6
|
+
test "defaults to an empty array if no default has been set manually" do
|
7
7
|
I18n.default_locale = :'en-US'
|
8
8
|
fallbacks = Fallbacks.new
|
9
|
-
assert_equal [
|
9
|
+
assert_equal [], fallbacks.defaults
|
10
10
|
end
|
11
11
|
|
12
12
|
test "defaults reflect a manually passed default locale if any" do
|
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.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Fuchs
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2018-
|
16
|
+
date: 2018-08-07 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: concurrent-ruby
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- test/run_all.rb
|
127
127
|
- test/test_data/locales/de.po
|
128
128
|
- test/test_data/locales/en.rb
|
129
|
+
- test/test_data/locales/en.yaml
|
129
130
|
- test/test_data/locales/en.yml
|
130
131
|
- test/test_data/locales/invalid/empty.yml
|
131
132
|
- test/test_data/locales/invalid/syntax.yml
|
@@ -151,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
152
|
version: 1.3.5
|
152
153
|
requirements: []
|
153
154
|
rubyforge_project: "[none]"
|
154
|
-
rubygems_version: 2.7.
|
155
|
+
rubygems_version: 2.7.3
|
155
156
|
signing_key:
|
156
157
|
specification_version: 4
|
157
158
|
summary: New wave Internationalization support for Ruby
|