i18n-js 3.5.0 → 3.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b0e768392d4f11e954143639a70556e397560dcb9b970b80ffe3082ba288bf2
4
- data.tar.gz: f385a60d70b37dc5945692d276aa0fc5ce40b9c4dd61e5123be1a21c859cacb3
3
+ metadata.gz: 62051e50266fb55f81099456051f21393aba9a4ecabda1bf2739ae181bf64ec6
4
+ data.tar.gz: 517cc9090a03e060781be401588b00495a18ccf934fd155ec838d1334b349d7c
5
5
  SHA512:
6
- metadata.gz: 6e9a52a4c632031c4f42554da5e67bd2b138ab42c1a65dc6bca2a8a1aa60184e641c895dac95996d48ad2e285811c47152c5b56d82b4dee40a985607f83b4ec4
7
- data.tar.gz: 254934f35ead75fde6842038ca2e4c8fee13492814b56da9a7b7ab080848a02446a9320efc92fd47eebe322ea4845bcbcd86d86396b1e9435e4ce1af63995178
6
+ metadata.gz: e88fc0e5f91b673a401310c1b8db1bc5f04a3d3cf5379d978fda9a1030cb5bedb897175577301b5cd4ef86cd025f03c17250c1d5953c7779a48a0911339e7307
7
+ data.tar.gz: b7caf39eff008a7817a512f60edffc515a3baa41ff8c7388d54f8fcd59f42e9247ee28567f58c264a319fd9f7049712fc8d0a76a85ca778dad4d70144fb4124f
@@ -18,6 +18,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
18
18
  - Nothing
19
19
 
20
20
 
21
+ ## [3.5.1] - 2019-12-21
22
+
23
+ ### Changed
24
+
25
+ - [JS] Bound shortcut functions
26
+ (PR: https://github.com/fnando/i18n-js/pull/560)
27
+
28
+
21
29
  ## [3.5.0] - 2019-11-12
22
30
 
23
31
  ### Added
@@ -433,7 +441,8 @@ And today is not April Fools' Day
433
441
 
434
442
 
435
443
 
436
- [Unreleased]: https://github.com/fnando/i18n-js/compare/v3.5.0...HEAD
444
+ [Unreleased]: https://github.com/fnando/i18n-js/compare/v3.5.1...HEAD
445
+ [3.5.1]: https://github.com/fnando/i18n-js/compare/v3.5.0...v3.5.1
437
446
  [3.5.0]: https://github.com/fnando/i18n-js/compare/v3.4.2...v3.5.0
438
447
  [3.4.2]: https://github.com/fnando/i18n-js/compare/v3.4.1...v3.4.2
439
448
  [3.4.1]: https://github.com/fnando/i18n-js/compare/v3.4.0...v3.4.1
@@ -1084,9 +1084,9 @@
1084
1084
  };
1085
1085
 
1086
1086
  // Set aliases, so we can save some typing.
1087
- I18n.t = I18n.translate;
1088
- I18n.l = I18n.localize;
1089
- I18n.p = I18n.pluralize;
1087
+ I18n.t = I18n.translate.bind(I18n);
1088
+ I18n.l = I18n.localize.bind(I18n);
1089
+ I18n.p = I18n.pluralize.bind(I18n);
1090
1090
 
1091
1091
  return I18n;
1092
1092
  }));
@@ -206,3 +206,35 @@ if (!Array.prototype.map) {
206
206
  return A;
207
207
  };
208
208
  }
209
+
210
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind
211
+ if (!Function.prototype.bind) (function(){
212
+ var ArrayPrototypeSlice = Array.prototype.slice;
213
+ Function.prototype.bind = function(otherThis) {
214
+ if (typeof this !== 'function') {
215
+ // closest thing possible to the ECMAScript 5
216
+ // internal IsCallable function
217
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
218
+ }
219
+
220
+ var baseArgs= ArrayPrototypeSlice .call(arguments, 1),
221
+ baseArgsLength = baseArgs.length,
222
+ fToBind = this,
223
+ fNOP = function() {},
224
+ fBound = function() {
225
+ baseArgs.length = baseArgsLength; // reset to default base arguments
226
+ baseArgs.push.apply(baseArgs, arguments);
227
+ return fToBind.apply(
228
+ fNOP.prototype.isPrototypeOf(this) ? this : otherThis, baseArgs
229
+ );
230
+ };
231
+
232
+ if (this.prototype) {
233
+ // Function.prototype doesn't have a prototype property
234
+ fNOP.prototype = this.prototype;
235
+ }
236
+ fBound.prototype = new fNOP();
237
+
238
+ return fBound;
239
+ };
240
+ })();
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module JS
5
- VERSION = "3.5.0"
5
+ VERSION = "3.5.1"
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18n-js",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "A javascript library similar to Ruby on Rails i18n gem",
5
5
  "author": "Nando Vieira",
6
6
  "license": "MIT",
@@ -10,45 +10,55 @@ describe("Localization", function(){
10
10
  I18n.translations = Translations();
11
11
  });
12
12
 
13
+ it("sets bound alias", function() {
14
+ expect(I18n.l).toEqual(jasmine.any(Function));
15
+ expect(I18n.l).not.toBe(I18n.localize);
16
+ });
17
+
13
18
  it("localizes number", function(){
14
- expect(I18n.l("number", 1234567)).toEqual("1,234,567.000");
19
+ expect(I18n.localize("number", 1234567)).toEqual("1,234,567.000");
20
+ });
21
+
22
+ it("localizes number with 'l' shortcut", function(){
23
+ var l = I18n.l;
24
+ expect(l("number", 1234567)).toEqual("1,234,567.000");
15
25
  });
16
26
 
17
27
  it("localizes currency", function(){
18
- expect(I18n.l("currency", 1234567)).toEqual("$1,234,567.00");
28
+ expect(I18n.localize("currency", 1234567)).toEqual("$1,234,567.00");
19
29
  });
20
30
 
21
31
  it("localizes date strings", function(){
22
32
  I18n.locale = "pt-BR";
23
33
 
24
- expect(I18n.l("date.formats.default", "2009-11-29")).toEqual("29/11/2009");
25
- expect(I18n.l("date.formats.short", "2009-01-07")).toEqual("07 de Janeiro");
26
- expect(I18n.l("date.formats.long", "2009-01-07")).toEqual("07 de Janeiro de 2009");
34
+ expect(I18n.localize("date.formats.default", "2009-11-29")).toEqual("29/11/2009");
35
+ expect(I18n.localize("date.formats.short", "2009-01-07")).toEqual("07 de Janeiro");
36
+ expect(I18n.localize("date.formats.long", "2009-01-07")).toEqual("07 de Janeiro de 2009");
27
37
  });
28
38
 
29
39
  it("localizes time strings", function(){
30
40
  I18n.locale = "pt-BR";
31
41
 
32
- expect(I18n.l("time.formats.default", "2009-11-29 15:07:59")).toEqual("Domingo, 29 de Novembro de 2009, 15:07 h");
33
- expect(I18n.l("time.formats.short", "2009-01-07 09:12:35")).toEqual("07/01, 09:12 h");
34
- expect(I18n.l("time.formats.long", "2009-11-29 15:07:59")).toEqual("Domingo, 29 de Novembro de 2009, 15:07 h");
42
+ expect(I18n.localize("time.formats.default", "2009-11-29 15:07:59")).toEqual("Domingo, 29 de Novembro de 2009, 15:07 h");
43
+ expect(I18n.localize("time.formats.short", "2009-01-07 09:12:35")).toEqual("07/01, 09:12 h");
44
+ expect(I18n.localize("time.formats.long", "2009-11-29 15:07:59")).toEqual("Domingo, 29 de Novembro de 2009, 15:07 h");
35
45
  });
36
46
 
37
47
  it("return 'Invalid Date' or original value for invalid input", function(){
38
- expect(I18n.l("time.formats.default", "")).toEqual("Invalid Date");
39
- expect(I18n.l("time.formats.default", null)).toEqual(null);
40
- expect(I18n.l("time.formats.default", undefined)).toEqual(undefined);
48
+ expect(I18n.localize("time.formats.default", "")).toEqual("Invalid Date");
49
+ expect(I18n.localize("time.formats.default", null)).toEqual(null);
50
+ expect(I18n.localize("time.formats.default", undefined)).toEqual(undefined);
41
51
  });
42
52
 
43
53
  it("localizes date/time strings with placeholders", function(){
44
54
  I18n.locale = "pt-BR";
45
55
 
46
- expect(I18n.l("date.formats.short_with_placeholders", "2009-01-07", { p1: "!", p2: "?" })).toEqual("07 de Janeiro ! ?");
47
- expect(I18n.l("time.formats.short_with_placeholders", "2009-01-07 09:12:35", { p1: "!" })).toEqual("07/01, 09:12 h !");
56
+ expect(I18n.localize("date.formats.short_with_placeholders", "2009-01-07", { p1: "!", p2: "?" })).toEqual("07 de Janeiro ! ?");
57
+ expect(I18n.localize("time.formats.short_with_placeholders", "2009-01-07 09:12:35", { p1: "!" })).toEqual("07/01, 09:12 h !");
48
58
  });
49
59
 
50
60
  it("localizes percentage", function(){
51
61
  I18n.locale = "pt-BR";
52
- expect(I18n.l("percentage", 123.45)).toEqual("123,45%");
62
+ expect(I18n.localize("percentage", 123.45)).toEqual("123,45%");
53
63
  });
54
64
  });
@@ -10,8 +10,9 @@ describe("Pluralization", function(){
10
10
  I18n.translations = Translations();
11
11
  });
12
12
 
13
- it("sets alias", function() {
14
- expect(I18n.p).toEqual(I18n.pluralize);
13
+ it("sets bound alias", function() {
14
+ expect(I18n.p).toEqual(jasmine.any(Function));
15
+ expect(I18n.p).not.toBe(I18n.pluralize);
15
16
  });
16
17
 
17
18
  it("pluralizes scope", function(){
@@ -20,6 +21,13 @@ describe("Pluralization", function(){
20
21
  expect(I18n.p(5, "inbox")).toEqual("You have 5 messages");
21
22
  });
22
23
 
24
+ it("pluralizes scope with 'p' shortcut", function(){
25
+ var p = I18n.p;
26
+ expect(p(0, "inbox")).toEqual("You have no messages");
27
+ expect(p(1, "inbox")).toEqual("You have 1 message");
28
+ expect(p(5, "inbox")).toEqual("You have 5 messages");
29
+ });
30
+
23
31
  it("pluralizes using the 'other' scope", function(){
24
32
  I18n.translations["en"]["inbox"]["zero"] = null;
25
33
  expect(I18n.p(0, "inbox")).toEqual("You have 0 messages");
@@ -10,35 +10,45 @@ describe("Translate", function(){
10
10
  I18n.translations = Translations();
11
11
  });
12
12
 
13
+ it("sets bound alias", function() {
14
+ expect(I18n.t).toEqual(jasmine.any(Function));
15
+ expect(I18n.t).not.toBe(I18n.translate);
16
+ });
17
+
13
18
  it("returns translation for single scope", function(){
14
- expect(I18n.t("hello")).toEqual("Hello World!");
19
+ expect(I18n.translate("hello")).toEqual("Hello World!");
20
+ });
21
+
22
+ it("returns translation with 't' shortcut", function(){
23
+ var t = I18n.t;
24
+ expect(t("hello")).toEqual("Hello World!");
15
25
  });
16
26
 
17
27
  it("returns translation as object", function(){
18
- expect(I18n.t("greetings")).toEqual(I18n.translations.en.greetings);
28
+ expect(I18n.translate("greetings")).toEqual(I18n.translations.en.greetings);
19
29
  });
20
30
 
21
31
  it("returns missing message translation for valid scope with null", function(){
22
- actual = I18n.t("null_key");
32
+ actual = I18n.translate("null_key");
23
33
  expected = '[missing "en.null_key" translation]';
24
34
  expect(actual).toEqual(expected);
25
35
  });
26
36
 
27
37
  it("returns missing message translation for invalid scope", function(){
28
- actual = I18n.t("invalid.scope");
38
+ actual = I18n.translate("invalid.scope");
29
39
  expected = '[missing "en.invalid.scope" translation]';
30
40
  expect(actual).toEqual(expected);
31
41
  });
32
42
 
33
43
  it("returns missing message translation with provided locale for invalid scope", function(){
34
- actual = I18n.t("invalid.scope", { locale: "ja" });
44
+ actual = I18n.translate("invalid.scope", { locale: "ja" });
35
45
  expected = '[missing "ja.invalid.scope" translation]';
36
46
  expect(actual).toEqual(expected);
37
47
  });
38
48
 
39
49
  it("returns guessed translation if missingBehaviour is set to guess", function(){
40
50
  I18n.missingBehaviour = 'guess'
41
- actual = I18n.t("invalid.thisIsAutomaticallyGeneratedTranslation");
51
+ actual = I18n.translate("invalid.thisIsAutomaticallyGeneratedTranslation");
42
52
  expected = 'this is automatically generated translation';
43
53
  expect(actual).toEqual(expected);
44
54
  });
@@ -46,47 +56,47 @@ describe("Translate", function(){
46
56
  it("returns guessed translation with prefix if missingBehaviour is set to guess and prefix is also provided", function(){
47
57
  I18n.missingBehaviour = 'guess'
48
58
  I18n.missingTranslationPrefix = 'EE: '
49
- actual = I18n.t("invalid.thisIsAutomaticallyGeneratedTranslation");
59
+ actual = I18n.translate("invalid.thisIsAutomaticallyGeneratedTranslation");
50
60
  expected = 'EE: this is automatically generated translation';
51
61
  expect(actual).toEqual(expected);
52
62
  });
53
63
 
54
64
  it("returns missing message translation for valid scope with scope", function(){
55
- actual = I18n.t("monster", {scope: "greetings"});
65
+ actual = I18n.translate("monster", {scope: "greetings"});
56
66
  expected = '[missing "en.greetings.monster" translation]';
57
67
  expect(actual).toEqual(expected);
58
68
  });
59
69
 
60
70
  it("returns translation for single scope on a custom locale", function(){
61
71
  I18n.locale = "pt-BR";
62
- expect(I18n.t("hello")).toEqual("Olá Mundo!");
72
+ expect(I18n.translate("hello")).toEqual("Olá Mundo!");
63
73
  });
64
74
 
65
75
  it("returns translation for multiple scopes", function(){
66
- expect(I18n.t("greetings.stranger")).toEqual("Hello stranger!");
76
+ expect(I18n.translate("greetings.stranger")).toEqual("Hello stranger!");
67
77
  });
68
78
 
69
79
  it("returns translation with default locale option", function(){
70
- expect(I18n.t("hello", {locale: "en"})).toEqual("Hello World!");
71
- expect(I18n.t("hello", {locale: "pt-BR"})).toEqual("Olá Mundo!");
80
+ expect(I18n.translate("hello", {locale: "en"})).toEqual("Hello World!");
81
+ expect(I18n.translate("hello", {locale: "pt-BR"})).toEqual("Olá Mundo!");
72
82
  });
73
83
 
74
84
  it("fallbacks to the default locale when I18n.fallbacks is enabled", function(){
75
85
  I18n.locale = "pt-BR";
76
86
  I18n.fallbacks = true;
77
- expect(I18n.t("greetings.stranger")).toEqual("Hello stranger!");
87
+ expect(I18n.translate("greetings.stranger")).toEqual("Hello stranger!");
78
88
  });
79
89
 
80
90
  it("fallbacks to default locale when providing an unknown locale", function(){
81
91
  I18n.locale = "fr";
82
92
  I18n.fallbacks = true;
83
- expect(I18n.t("greetings.stranger")).toEqual("Hello stranger!");
93
+ expect(I18n.translate("greetings.stranger")).toEqual("Hello stranger!");
84
94
  });
85
95
 
86
96
  it("fallbacks to less specific locale", function(){
87
97
  I18n.locale = "de-DE";
88
98
  I18n.fallbacks = true;
89
- expect(I18n.t("hello")).toEqual("Hallo Welt!");
99
+ expect(I18n.translate("hello")).toEqual("Hallo Welt!");
90
100
  });
91
101
 
92
102
  describe("when a 3-part locale is used", function(){
@@ -96,15 +106,15 @@ describe("Translate", function(){
96
106
  });
97
107
 
98
108
  it("fallbacks to 2-part locale when absent", function(){
99
- expect(I18n.t("cat")).toEqual("貓");
109
+ expect(I18n.translate("cat")).toEqual("貓");
100
110
  });
101
111
 
102
112
  it("fallbacks to 1-part locale when 2-part missing requested translation", function(){
103
- expect(I18n.t("dog")).toEqual("狗");
113
+ expect(I18n.translate("dog")).toEqual("狗");
104
114
  });
105
115
 
106
116
  it("fallbacks to 2-part for the first time", function(){
107
- expect(I18n.t("dragon")).toEqual("龍");
117
+ expect(I18n.translate("dragon")).toEqual("龍");
108
118
  });
109
119
  });
110
120
 
@@ -115,7 +125,7 @@ describe("Translate", function(){
115
125
  return ["nb"];
116
126
  };
117
127
 
118
- expect(I18n.t("hello")).toEqual("Hei Verden!");
128
+ expect(I18n.translate("hello")).toEqual("Hei Verden!");
119
129
  });
120
130
 
121
131
  it("fallbacks using custom rules (array)", function() {
@@ -123,7 +133,7 @@ describe("Translate", function(){
123
133
  I18n.fallbacks = true;
124
134
  I18n.locales["no"] = ["no", "nb"];
125
135
 
126
- expect(I18n.t("hello")).toEqual("Hei Verden!");
136
+ expect(I18n.translate("hello")).toEqual("Hei Verden!");
127
137
  });
128
138
 
129
139
  it("fallbacks using custom rules (string)", function() {
@@ -131,25 +141,25 @@ describe("Translate", function(){
131
141
  I18n.fallbacks = true;
132
142
  I18n.locales["no"] = "nb";
133
143
 
134
- expect(I18n.t("hello")).toEqual("Hei Verden!");
144
+ expect(I18n.translate("hello")).toEqual("Hei Verden!");
135
145
  });
136
146
 
137
147
  describe("when provided default values", function() {
138
148
  it("uses scope provided in defaults if scope doesn't exist", function() {
139
- actual = I18n.t("Hello!", {defaults: [{scope: "greetings.stranger"}]});
149
+ actual = I18n.translate("Hello!", {defaults: [{scope: "greetings.stranger"}]});
140
150
  expect(actual).toEqual("Hello stranger!");
141
151
  });
142
152
 
143
153
  it("continues to fallback until a scope is found", function() {
144
154
  var defaults = [{scope: "foo"}, {scope: "hello"}];
145
155
 
146
- actual = I18n.t("foo", {defaults: defaults});
156
+ actual = I18n.translate("foo", {defaults: defaults});
147
157
  expect(actual).toEqual("Hello World!");
148
158
  });
149
159
 
150
160
  it("uses message if specified as a default", function() {
151
161
  var defaults = [{message: "Hello all!"}];
152
- actual = I18n.t("foo", {defaults: defaults});
162
+ actual = I18n.translate("foo", {defaults: defaults});
153
163
  expect(actual).toEqual("Hello all!");
154
164
  });
155
165
 
@@ -158,7 +168,7 @@ describe("Translate", function(){
158
168
  {scope: "bar"}
159
169
  , {message: "Hello all!"}
160
170
  , {scope: "hello"}];
161
- actual = I18n.t("foo", {defaults: defaults});
171
+ actual = I18n.translate("foo", {defaults: defaults});
162
172
  expect(actual).toEqual("Hello all!");
163
173
  });
164
174
 
@@ -167,7 +177,7 @@ describe("Translate", function(){
167
177
  defaults: [{scope: "bar"}]
168
178
  , defaultValue: "Hello all!"
169
179
  };
170
- actual = I18n.t("foo", options);
180
+ actual = I18n.translate("foo", options);
171
181
  expect(actual).toEqual("Hello all!");
172
182
  });
173
183
 
@@ -176,7 +186,7 @@ describe("Translate", function(){
176
186
  defaults: [{scope: "hello"}]
177
187
  , defaultValue: "Hello all!"
178
188
  };
179
- actual = I18n.t("foo", options);
189
+ actual = I18n.translate("foo", options);
180
190
  expect(actual).toEqual("Hello World!");
181
191
  })
182
192
 
@@ -187,36 +197,36 @@ describe("Translate", function(){
187
197
  return scope.toUpperCase();
188
198
  }
189
199
  };
190
- actual = I18n.t("foo", options);
200
+ actual = I18n.translate("foo", options);
191
201
  expect(actual).toEqual("FOO");
192
202
  })
193
203
 
194
204
  it("pluralizes using the correct scope if translation is found within default scope", function() {
195
205
  expect(I18n.translations["en"]["mailbox"]).toEqual(undefined);
196
- actual = I18n.t("mailbox.inbox", {count: 1, defaults: [{scope: "inbox"}]});
197
- expected = I18n.t("inbox", {count: 1})
206
+ actual = I18n.translate("mailbox.inbox", {count: 1, defaults: [{scope: "inbox"}]});
207
+ expected = I18n.translate("inbox", {count: 1})
198
208
  expect(actual).toEqual(expected)
199
209
  })
200
210
  });
201
211
 
202
212
  it("uses default value for simple translation", function(){
203
- actual = I18n.t("warning", {defaultValue: "Warning!"});
213
+ actual = I18n.translate("warning", {defaultValue: "Warning!"});
204
214
  expect(actual).toEqual("Warning!");
205
215
  });
206
216
 
207
217
  it("uses default value for plural translation", function(){
208
- actual = I18n.t("message", {defaultValue: { one: '%{count} message', other: '%{count} messages'}, count: 1});
218
+ actual = I18n.translate("message", {defaultValue: { one: '%{count} message', other: '%{count} messages'}, count: 1});
209
219
  expect(actual).toEqual("1 message");
210
220
  });
211
221
 
212
222
  it("uses default value for unknown locale", function(){
213
223
  I18n.locale = "fr";
214
- actual = I18n.t("warning", {defaultValue: "Warning!"});
224
+ actual = I18n.translate("warning", {defaultValue: "Warning!"});
215
225
  expect(actual).toEqual("Warning!");
216
226
  });
217
227
 
218
228
  it("uses default value with interpolation", function(){
219
- actual = I18n.t(
229
+ actual = I18n.translate(
220
230
  "alert",
221
231
  {defaultValue: "Attention! {{message}}", message: "You're out of quota!"}
222
232
  );
@@ -225,33 +235,33 @@ describe("Translate", function(){
225
235
  });
226
236
 
227
237
  it("ignores default value when scope exists", function(){
228
- actual = I18n.t("hello", {defaultValue: "What's up?"});
238
+ actual = I18n.translate("hello", {defaultValue: "What's up?"});
229
239
  expect(actual).toEqual("Hello World!");
230
240
  });
231
241
 
232
242
  it("returns translation for custom scope separator", function(){
233
243
  I18n.defaultSeparator = "•";
234
- actual = I18n.t("greetings•stranger");
244
+ actual = I18n.translate("greetings•stranger");
235
245
  expect(actual).toEqual("Hello stranger!");
236
246
  });
237
247
 
238
248
  it("returns boolean values", function() {
239
- expect(I18n.t("booleans.yes")).toEqual(true);
240
- expect(I18n.t("booleans.no")).toEqual(false);
249
+ expect(I18n.translate("booleans.yes")).toEqual(true);
250
+ expect(I18n.translate("booleans.no")).toEqual(false);
241
251
  });
242
252
 
243
253
  it("escapes $ when doing substitution (IE)", function(){
244
254
  I18n.locale = "en";
245
255
 
246
- expect(I18n.t("paid", {price: "$0"})).toEqual("You were paid $0");
247
- expect(I18n.t("paid", {price: "$0.12"})).toEqual("You were paid $0.12");
248
- expect(I18n.t("paid", {price: "$1.35"})).toEqual("You were paid $1.35");
256
+ expect(I18n.translate("paid", {price: "$0"})).toEqual("You were paid $0");
257
+ expect(I18n.translate("paid", {price: "$0.12"})).toEqual("You were paid $0.12");
258
+ expect(I18n.translate("paid", {price: "$1.35"})).toEqual("You were paid $1.35");
249
259
  });
250
260
 
251
261
  it("replaces all occurrences of escaped $", function(){
252
262
  I18n.locale = "en";
253
263
 
254
- expect(I18n.t("paid_with_vat", {
264
+ expect(I18n.translate("paid_with_vat", {
255
265
  price: "$0.12",
256
266
  vat: "$0.02"}
257
267
  )).toEqual("You were paid $0.12 (incl. VAT $0.02)");
@@ -259,20 +269,20 @@ describe("Translate", function(){
259
269
 
260
270
  it("sets default scope", function(){
261
271
  var options = {scope: "greetings"};
262
- expect(I18n.t("stranger", options)).toEqual("Hello stranger!");
272
+ expect(I18n.translate("stranger", options)).toEqual("Hello stranger!");
263
273
  });
264
274
 
265
275
  it("accepts the scope as an array", function(){
266
- expect(I18n.t(["greetings", "stranger"])).toEqual("Hello stranger!");
276
+ expect(I18n.translate(["greetings", "stranger"])).toEqual("Hello stranger!");
267
277
  });
268
278
 
269
279
  it("accepts the scope as an array using a base scope", function(){
270
- expect(I18n.t(["stranger"], {scope: "greetings"})).toEqual("Hello stranger!");
280
+ expect(I18n.translate(["stranger"], {scope: "greetings"})).toEqual("Hello stranger!");
271
281
  });
272
282
 
273
283
  it("returns an array with values interpolated", function(){
274
284
  var options = {value: 314};
275
- expect(I18n.t("arrayWithParams", options)).toEqual([
285
+ expect(I18n.translate("arrayWithParams", options)).toEqual([
276
286
  null,
277
287
  "An item with a param of " + options.value,
278
288
  "Another item with a param of " + options.value,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-js
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-12 00:00:00.000000000 Z
11
+ date: 2019-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -222,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  requirements: []
225
- rubygems_version: 3.0.6
225
+ rubygems_version: 3.1.1
226
226
  signing_key:
227
227
  specification_version: 4
228
228
  summary: It's a small library to provide the Rails I18n translations on the Javascript.