i18n-js 3.0.11 → 3.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/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
|