i18n-js 3.0.11 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -1
- data/README.md +17 -3
- data/app/assets/javascripts/i18n.js +4 -2
- data/lib/i18n/js.rb +10 -1
- data/lib/i18n/js/fallback_locales.rb +1 -1
- data/lib/i18n/js/version.rb +1 -1
- data/package.json +1 -1
- data/spec/js/translate.spec.js +7 -0
- data/spec/ruby/i18n/js/fallback_locales_spec.rb +2 -2
- data/spec/ruby/i18n/js_spec.rb +2 -2
- 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: 1ddbdc40f7c45b3d6f6efd89f7e38ce602e06309280cf4b23a0c66fbbb465a6f
|
4
|
+
data.tar.gz: 820b05a44bcff8eb060d53a007b9d61342bfaf9d49a1286c69f9dfe2d6cf60dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b9ff1a4f87ba0d8e69e0b2719a2a32ae605a96953a76e443052f7a622b6735aa5e5c0c1a7b3af50e98558c3ab9e1d04d7a32d67c5acd4cb328cd99f10092531
|
7
|
+
data.tar.gz: 76d742dd79d8af3e6d689487096efe318cd7e4eabd3b2c8c67157b90357ca8eeea106c820d3ef832ec802daefdb28e6a7081c14d9a66128c0bf3bb8fcdb031cd
|
data/CHANGELOG.md
CHANGED
@@ -18,6 +18,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
18
18
|
- Nothing
|
19
19
|
|
20
20
|
|
21
|
+
## [3.1.0] - 2018-11-01
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- [Ruby] Add option to allow setting a different I18n backend
|
26
|
+
(PR: https://github.com/fnando/i18n-js/pull/519)
|
27
|
+
|
28
|
+
### Fixed
|
29
|
+
|
30
|
+
- [JS] Fix missing translation when pluralizing with default scopes
|
31
|
+
(PR: https://github.com/fnando/i18n-js/pull/516)
|
32
|
+
|
33
|
+
|
21
34
|
## [3.0.11] - 2018-07-06
|
22
35
|
|
23
36
|
### Fixed
|
@@ -334,7 +347,8 @@ And today is not April Fools' Day
|
|
334
347
|
|
335
348
|
|
336
349
|
|
337
|
-
[Unreleased]: https://github.com/fnando/i18n-js/compare/v3.0
|
350
|
+
[Unreleased]: https://github.com/fnando/i18n-js/compare/v3.1.0...HEAD
|
351
|
+
[3.1.0]: https://github.com/fnando/i18n-js/compare/v3.0.11...v3.1.0
|
338
352
|
[3.0.11]: https://github.com/fnando/i18n-js/compare/v3.0.10...v3.0.11
|
339
353
|
[3.0.10]: https://github.com/fnando/i18n-js/compare/v3.0.9...v3.0.10
|
340
354
|
[3.0.9]: https://github.com/fnando/i18n-js/compare/v3.0.8...v3.0.9
|
data/README.md
CHANGED
@@ -339,7 +339,12 @@ I18n.t("some.scoped.translation", {locale: "fr"});
|
|
339
339
|
You can also interpolate values:
|
340
340
|
|
341
341
|
```javascript
|
342
|
-
|
342
|
+
// You need the `translations` object setup first
|
343
|
+
I18n.translations["en"] = {
|
344
|
+
greeting: "Hello %{name}"
|
345
|
+
}
|
346
|
+
|
347
|
+
I18n.t("greeting", {name: "John Doe"});
|
343
348
|
```
|
344
349
|
You can set default values for missing scopes:
|
345
350
|
```javascript
|
@@ -576,14 +581,16 @@ I18n.translations["en"] = {
|
|
576
581
|
I18n.l("date.formats.ordinal_day", "2009-09-18", { day: '18th' }); // Sep 18th
|
577
582
|
```
|
578
583
|
|
579
|
-
If you prefer, you can use the `I18n.strftime`
|
584
|
+
If you prefer, you can use the `I18n.toTime` and `I18n.strftime` functions to format dates.
|
580
585
|
|
581
586
|
```javascript
|
582
587
|
var date = new Date();
|
588
|
+
I18n.toTime("date.formats.short", "2009-09-18");
|
589
|
+
I18n.toTime("date.formats.short", date);
|
583
590
|
I18n.strftime(date, "%d/%m/%Y");
|
584
591
|
```
|
585
592
|
|
586
|
-
The accepted formats are:
|
593
|
+
The accepted formats for `I18n.strftime` are:
|
587
594
|
|
588
595
|
%a - The abbreviated weekday name (Sun)
|
589
596
|
%A - The full weekday name (Sunday)
|
@@ -813,6 +820,13 @@ So ensure sprockets is loaded before this gem like moving entry of sprockets in
|
|
813
820
|
|
814
821
|
**Note:** See issue [#404](https://github.com/fnando/i18n-js/issues/404) for more details and discussion of this issue.
|
815
822
|
|
823
|
+
### JS `I18n.toCurrency` & `I18n.toNumber` cannot handle large integers
|
824
|
+
|
825
|
+
The above methods use `toFixed` and it only supports 53 bit integers.
|
826
|
+
Ref: http://2ality.com/2012/07/large-integers.html
|
827
|
+
|
828
|
+
Feel free to find & discuss possible solution(s) at issue [#511](https://github.com/fnando/i18n-js/issues/511)
|
829
|
+
|
816
830
|
|
817
831
|
## Maintainer
|
818
832
|
|
@@ -575,6 +575,7 @@
|
|
575
575
|
var translationOptions = this.createTranslationOptions(scope, options);
|
576
576
|
|
577
577
|
var translation;
|
578
|
+
var usedScope = scope;
|
578
579
|
|
579
580
|
var optionsWithoutDefault = this.prepareOptions(options)
|
580
581
|
delete optionsWithoutDefault.defaultValue
|
@@ -584,7 +585,8 @@
|
|
584
585
|
var translationFound =
|
585
586
|
translationOptions.some(function(translationOption) {
|
586
587
|
if (isSet(translationOption.scope)) {
|
587
|
-
|
588
|
+
usedScope = translationOption.scope;
|
589
|
+
translation = this.lookup(usedScope, optionsWithoutDefault);
|
588
590
|
} else if (isSet(translationOption.message)) {
|
589
591
|
translation = lazyEvaluate(translationOption.message, scope);
|
590
592
|
}
|
@@ -605,7 +607,7 @@
|
|
605
607
|
return (typeof(t) === "string" ? this.interpolate(t, options) : t);
|
606
608
|
}, this);
|
607
609
|
} else if (isObject(translation) && isSet(options.count)) {
|
608
|
-
translation = this.pluralize(options.count,
|
610
|
+
translation = this.pluralize(options.count, usedScope, options);
|
609
611
|
}
|
610
612
|
|
611
613
|
return translation;
|
data/lib/i18n/js.rb
CHANGED
@@ -28,6 +28,15 @@ module I18n
|
|
28
28
|
@config_file_path = new_path
|
29
29
|
end
|
30
30
|
|
31
|
+
# Allow using a different backend than the one globally configured
|
32
|
+
def self.backend
|
33
|
+
@backend ||= I18n.backend
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.backend=(alternative_backend)
|
37
|
+
@backend = alternative_backend
|
38
|
+
end
|
39
|
+
|
31
40
|
# Export translations to JavaScript, considering settings
|
32
41
|
# from configuration file
|
33
42
|
def self.export
|
@@ -161,7 +170,7 @@ module I18n
|
|
161
170
|
|
162
171
|
# Initialize and return translations
|
163
172
|
def self.translations
|
164
|
-
|
173
|
+
self.backend.instance_eval do
|
165
174
|
init_translations unless initialized?
|
166
175
|
# When activesupport is absent,
|
167
176
|
# the core extension (`#slice`) from `i18n` gem will be used instead
|
@@ -57,7 +57,7 @@ module I18n
|
|
57
57
|
#
|
58
58
|
# Maybe this should be fixed within I18n.
|
59
59
|
def using_i18n_fallbacks_module?
|
60
|
-
I18n.backend.class.included_modules.include?(I18n::Backend::Fallbacks)
|
60
|
+
I18n::JS.backend.class.included_modules.include?(I18n::Backend::Fallbacks)
|
61
61
|
end
|
62
62
|
|
63
63
|
def ensure_valid_fallbacks_as_array!
|
data/lib/i18n/js/version.rb
CHANGED
data/package.json
CHANGED
data/spec/js/translate.spec.js
CHANGED
@@ -190,6 +190,13 @@ describe("Translate", function(){
|
|
190
190
|
actual = I18n.t("foo", options);
|
191
191
|
expect(actual).toEqual("FOO");
|
192
192
|
})
|
193
|
+
|
194
|
+
it("pluralizes using the correct scope if translation is found within default scope", function() {
|
195
|
+
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})
|
198
|
+
expect(actual).toEqual(expected)
|
199
|
+
})
|
193
200
|
});
|
194
201
|
|
195
202
|
it("uses default value for simple translation", function(){
|
@@ -55,10 +55,10 @@ describe I18n::JS::FallbackLocales do
|
|
55
55
|
let(:backend_with_fallbacks) { backend_class_with_fallbacks.new }
|
56
56
|
|
57
57
|
before do
|
58
|
-
I18n.backend = backend_with_fallbacks
|
58
|
+
I18n::JS.backend = backend_with_fallbacks
|
59
59
|
I18n.fallbacks[:fr] = [:de, :en]
|
60
60
|
end
|
61
|
-
after { I18n.backend = I18n::Backend::Simple.new }
|
61
|
+
after { I18n::JS.backend = I18n::Backend::Simple.new }
|
62
62
|
|
63
63
|
context "given true as fallbacks" do
|
64
64
|
let(:fallbacks) { true }
|
data/spec/ruby/i18n/js_spec.rb
CHANGED
@@ -313,10 +313,10 @@ EOS
|
|
313
313
|
let!(:old_backebad) { I18n.backend }
|
314
314
|
|
315
315
|
before do
|
316
|
-
I18n.backend = backend_with_fallbacks
|
316
|
+
I18n::JS.backend = backend_with_fallbacks
|
317
317
|
I18n.fallbacks[:fr] = [:de, :en]
|
318
318
|
end
|
319
|
-
after { I18n.backend = old_backebad }
|
319
|
+
after { I18n::JS.backend = old_backebad }
|
320
320
|
|
321
321
|
it "exports with defined locale as fallback when enabled" do
|
322
322
|
set_config "js_file_per_locale_with_fallbacks_enabled.yml"
|
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.1.0
|
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-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|