i18n-js 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/app/assets/javascripts/i18n.js +4 -0
- data/app/assets/javascripts/i18n/shims.js +89 -0
- data/lib/i18n/js/version.rb +1 -1
- data/spec/js/translate.spec.js +9 -0
- data/spec/js/translations.js +6 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 820d6beeaa53ffbe74afc97313260ee0a77412a7ff576e906a1c4291a50970d0
|
4
|
+
data.tar.gz: e7a97db0d132db4de65bb1ae5c37b1ca47670f6ce76ea02e356d4bc8906343c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7657ce121aba975ba1b1d0acad226786ef867494e9fc1d1ec3d118f499f475ab27567cb121433f9af54c0080ac2b899edfdd1079de5497da7b936c18afe4bbb
|
7
|
+
data.tar.gz: 38a12230b043fb9f014bb33a056498071b1871155f77e27ed062a8678409a550db346c31a4264cc07bea6494601f1cc43643c0b47afad328f3aba05d0b2b8cbc
|
data/CHANGELOG.md
CHANGED
@@ -18,6 +18,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
18
18
|
- Nothing
|
19
19
|
|
20
20
|
|
21
|
+
## [3.0.8] - 2018-06-06
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
|
25
|
+
- [JS] Interpolate translation array too
|
26
|
+
(PR: https://github.com/fnando/i18n-js/pull/498)
|
27
|
+
|
28
|
+
|
21
29
|
## [3.0.7] - 2018-05-30
|
22
30
|
|
23
31
|
### Fixed
|
@@ -301,7 +309,8 @@ And today is not April Fools' Day
|
|
301
309
|
|
302
310
|
|
303
311
|
|
304
|
-
[Unreleased]: https://github.com/fnando/i18n-js/compare/v3.0.
|
312
|
+
[Unreleased]: https://github.com/fnando/i18n-js/compare/v3.0.8...HEAD
|
313
|
+
[3.0.8]: https://github.com/fnando/i18n-js/compare/v3.0.7...v3.0.8
|
305
314
|
[3.0.7]: https://github.com/fnando/i18n-js/compare/v3.0.6...v3.0.7
|
306
315
|
[3.0.6]: https://github.com/fnando/i18n-js/compare/v3.0.5...v3.0.6
|
307
316
|
[3.0.5]: https://github.com/fnando/i18n-js/compare/v3.0.4...v3.0.5
|
@@ -598,6 +598,10 @@
|
|
598
598
|
|
599
599
|
if (typeof(translation) === "string") {
|
600
600
|
translation = this.interpolate(translation, options);
|
601
|
+
} else if (isArray(translation)) {
|
602
|
+
translation = translation.map(function(t) {
|
603
|
+
return this.interpolate(t, options);
|
604
|
+
}, this);
|
601
605
|
} else if (isObject(translation) && isSet(options.count)) {
|
602
606
|
translation = this.pluralize(options.count, scope, options);
|
603
607
|
}
|
@@ -117,3 +117,92 @@ if (!Array.prototype.some)
|
|
117
117
|
return false;
|
118
118
|
};
|
119
119
|
}
|
120
|
+
|
121
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
|
122
|
+
if (!Array.prototype.map) {
|
123
|
+
|
124
|
+
Array.prototype.map = function(callback/*, thisArg*/) {
|
125
|
+
|
126
|
+
var T, A, k;
|
127
|
+
|
128
|
+
if (this == null) {
|
129
|
+
throw new TypeError('this is null or not defined');
|
130
|
+
}
|
131
|
+
|
132
|
+
// 1. Let O be the result of calling ToObject passing the |this|
|
133
|
+
// value as the argument.
|
134
|
+
var O = Object(this);
|
135
|
+
|
136
|
+
// 2. Let lenValue be the result of calling the Get internal
|
137
|
+
// method of O with the argument "length".
|
138
|
+
// 3. Let len be ToUint32(lenValue).
|
139
|
+
var len = O.length >>> 0;
|
140
|
+
|
141
|
+
// 4. If IsCallable(callback) is false, throw a TypeError exception.
|
142
|
+
// See: http://es5.github.com/#x9.11
|
143
|
+
if (typeof callback !== 'function') {
|
144
|
+
throw new TypeError(callback + ' is not a function');
|
145
|
+
}
|
146
|
+
|
147
|
+
// 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
|
148
|
+
if (arguments.length > 1) {
|
149
|
+
T = arguments[1];
|
150
|
+
}
|
151
|
+
|
152
|
+
// 6. Let A be a new array created as if by the expression new Array(len)
|
153
|
+
// where Array is the standard built-in constructor with that name and
|
154
|
+
// len is the value of len.
|
155
|
+
A = new Array(len);
|
156
|
+
|
157
|
+
// 7. Let k be 0
|
158
|
+
k = 0;
|
159
|
+
|
160
|
+
// 8. Repeat, while k < len
|
161
|
+
while (k < len) {
|
162
|
+
|
163
|
+
var kValue, mappedValue;
|
164
|
+
|
165
|
+
// a. Let Pk be ToString(k).
|
166
|
+
// This is implicit for LHS operands of the in operator
|
167
|
+
// b. Let kPresent be the result of calling the HasProperty internal
|
168
|
+
// method of O with argument Pk.
|
169
|
+
// This step can be combined with c
|
170
|
+
// c. If kPresent is true, then
|
171
|
+
if (k in O) {
|
172
|
+
|
173
|
+
// i. Let kValue be the result of calling the Get internal
|
174
|
+
// method of O with argument Pk.
|
175
|
+
kValue = O[k];
|
176
|
+
|
177
|
+
// ii. Let mappedValue be the result of calling the Call internal
|
178
|
+
// method of callback with T as the this value and argument
|
179
|
+
// list containing kValue, k, and O.
|
180
|
+
mappedValue = callback.call(T, kValue, k, O);
|
181
|
+
|
182
|
+
// iii. Call the DefineOwnProperty internal method of A with arguments
|
183
|
+
// Pk, Property Descriptor
|
184
|
+
// { Value: mappedValue,
|
185
|
+
// Writable: true,
|
186
|
+
// Enumerable: true,
|
187
|
+
// Configurable: true },
|
188
|
+
// and false.
|
189
|
+
|
190
|
+
// In browsers that support Object.defineProperty, use the following:
|
191
|
+
// Object.defineProperty(A, k, {
|
192
|
+
// value: mappedValue,
|
193
|
+
// writable: true,
|
194
|
+
// enumerable: true,
|
195
|
+
// configurable: true
|
196
|
+
// });
|
197
|
+
|
198
|
+
// For best browser support, use the following:
|
199
|
+
A[k] = mappedValue;
|
200
|
+
}
|
201
|
+
// d. Increase k by 1.
|
202
|
+
k++;
|
203
|
+
}
|
204
|
+
|
205
|
+
// 9. return A
|
206
|
+
return A;
|
207
|
+
};
|
208
|
+
}
|
data/lib/i18n/js/version.rb
CHANGED
data/spec/js/translate.spec.js
CHANGED
@@ -256,4 +256,13 @@ describe("Translate", function(){
|
|
256
256
|
it("accepts the scope as an array using a base scope", function(){
|
257
257
|
expect(I18n.t(["stranger"], {scope: "greetings"})).toEqual("Hello stranger!");
|
258
258
|
});
|
259
|
+
|
260
|
+
it("returns an array with values interpolated", function(){
|
261
|
+
var options = {value: 314};
|
262
|
+
expect(I18n.t("arrayWithParams", options)).toEqual([
|
263
|
+
`An item with a param of ${options.value}`,
|
264
|
+
`Another item with a param of ${options.value}`,
|
265
|
+
`A last item with a param of ${options.value}`,
|
266
|
+
]);
|
267
|
+
});
|
259
268
|
});
|
data/spec/js/translations.js
CHANGED
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.0.
|
4
|
+
version: 3.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|