i18n-js 2.1.2 → 3.8.3

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.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +24 -0
  3. data/.github/FUNDING.yml +3 -0
  4. data/.github/workflows/tests.yaml +100 -0
  5. data/.gitignore +6 -4
  6. data/.npmignore +27 -0
  7. data/Appraisals +44 -0
  8. data/CHANGELOG.md +539 -0
  9. data/Gemfile +1 -1
  10. data/README.md +1086 -0
  11. data/Rakefile +19 -7
  12. data/app/assets/javascripts/i18n.js +1095 -0
  13. data/app/assets/javascripts/i18n/filtered.js.erb +23 -0
  14. data/app/assets/javascripts/i18n/shims.js +240 -0
  15. data/app/assets/javascripts/i18n/translations.js +3 -0
  16. data/gemfiles/i18n_0_6.gemfile +7 -0
  17. data/gemfiles/i18n_0_7.gemfile +7 -0
  18. data/gemfiles/i18n_0_8.gemfile +7 -0
  19. data/gemfiles/i18n_0_9.gemfile +7 -0
  20. data/gemfiles/i18n_1_0.gemfile +7 -0
  21. data/gemfiles/i18n_1_1.gemfile +7 -0
  22. data/gemfiles/i18n_1_2.gemfile +7 -0
  23. data/gemfiles/i18n_1_3.gemfile +7 -0
  24. data/gemfiles/i18n_1_4.gemfile +7 -0
  25. data/gemfiles/i18n_1_5.gemfile +7 -0
  26. data/gemfiles/i18n_1_6.gemfile +7 -0
  27. data/gemfiles/i18n_1_7.gemfile +7 -0
  28. data/gemfiles/i18n_1_8.gemfile +7 -0
  29. data/i18n-js.gemspec +12 -9
  30. data/i18njs.png +0 -0
  31. data/lib/i18n-js.rb +1 -177
  32. data/lib/i18n/js.rb +264 -0
  33. data/lib/i18n/js/dependencies.rb +63 -0
  34. data/lib/i18n/js/engine.rb +87 -0
  35. data/lib/i18n/js/fallback_locales.rb +70 -0
  36. data/lib/i18n/js/formatters/base.rb +25 -0
  37. data/lib/i18n/js/formatters/js.rb +39 -0
  38. data/lib/i18n/js/formatters/json.rb +13 -0
  39. data/lib/{i18n-js → i18n/js}/middleware.rb +32 -9
  40. data/lib/i18n/js/private/config_store.rb +31 -0
  41. data/lib/i18n/js/private/hash_with_symbol_keys.rb +36 -0
  42. data/lib/i18n/js/segment.rb +80 -0
  43. data/lib/i18n/js/utils.rb +78 -0
  44. data/lib/i18n/js/version.rb +7 -0
  45. data/lib/rails/generators/i18n/js/config/config_generator.rb +19 -0
  46. data/{config → lib/rails/generators/i18n/js/config/templates}/i18n-js.yml +11 -6
  47. data/lib/tasks/export.rake +8 -0
  48. data/package.json +25 -0
  49. data/spec/fixtures/custom_path.yml +5 -0
  50. data/spec/fixtures/default.yml +5 -0
  51. data/spec/fixtures/erb.yml +5 -0
  52. data/spec/fixtures/except_condition.yml +7 -0
  53. data/spec/fixtures/js_export_dir_custom.yml +7 -0
  54. data/spec/fixtures/js_export_dir_none.yml +6 -0
  55. data/spec/fixtures/js_extend_parent.yml +6 -0
  56. data/spec/fixtures/js_extend_segment.yml +6 -0
  57. data/spec/fixtures/js_file_per_locale.yml +7 -0
  58. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_default_locale_symbol.yml +4 -0
  59. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_hash.yml +6 -0
  60. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale.yml +4 -0
  61. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml +4 -0
  62. data/spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml +4 -0
  63. data/spec/fixtures/js_file_per_locale_without_fallbacks.yml +4 -0
  64. data/spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml +9 -0
  65. data/spec/fixtures/js_sort_translation_keys_false.yml +6 -0
  66. data/spec/fixtures/js_sort_translation_keys_true.yml +6 -0
  67. data/spec/fixtures/json_only.yml +18 -0
  68. data/spec/{resources → fixtures}/locales.yml +58 -1
  69. data/spec/fixtures/merge_plurals.yml +6 -0
  70. data/spec/fixtures/merge_plurals_with_no_overrides.yml +4 -0
  71. data/spec/fixtures/merge_plurals_with_partial_overrides.yml +4 -0
  72. data/spec/fixtures/millions.yml +4 -0
  73. data/spec/fixtures/multiple_conditions.yml +7 -0
  74. data/spec/fixtures/multiple_conditions_per_locale.yml +7 -0
  75. data/spec/fixtures/multiple_files.yml +7 -0
  76. data/spec/{resources → fixtures}/no_config.yml +0 -0
  77. data/spec/fixtures/no_scope.yml +4 -0
  78. data/spec/fixtures/simple_scope.yml +5 -0
  79. data/spec/js/currency.spec.js +62 -0
  80. data/spec/js/current_locale.spec.js +19 -0
  81. data/spec/js/dates.spec.js +276 -0
  82. data/spec/js/defaults.spec.js +31 -0
  83. data/spec/js/extend.spec.js +110 -0
  84. data/spec/js/interpolation.spec.js +124 -0
  85. data/spec/js/jasmine/MIT.LICENSE +20 -0
  86. data/spec/js/jasmine/jasmine-html.js +190 -0
  87. data/spec/js/jasmine/jasmine.css +166 -0
  88. data/spec/js/jasmine/jasmine.js +2476 -0
  89. data/spec/js/jasmine/jasmine_favicon.png +0 -0
  90. data/spec/js/json_parsable.spec.js +14 -0
  91. data/spec/js/locales.spec.js +31 -0
  92. data/spec/js/localization.spec.js +78 -0
  93. data/spec/js/numbers.spec.js +174 -0
  94. data/spec/js/placeholder.spec.js +24 -0
  95. data/spec/js/pluralization.spec.js +219 -0
  96. data/spec/js/prepare_options.spec.js +41 -0
  97. data/spec/js/require.js +2083 -0
  98. data/spec/js/specs.html +49 -0
  99. data/spec/js/specs_requirejs.html +72 -0
  100. data/spec/js/translate.spec.js +304 -0
  101. data/spec/js/translations.js +188 -0
  102. data/spec/js/utility_functions.spec.js +20 -0
  103. data/spec/ruby/i18n/js/fallback_locales_spec.rb +84 -0
  104. data/spec/ruby/i18n/js/segment_spec.rb +261 -0
  105. data/spec/ruby/i18n/js/utils_spec.rb +106 -0
  106. data/spec/ruby/i18n/js_spec.rb +748 -0
  107. data/spec/spec_helper.rb +75 -14
  108. data/yarn.lock +131 -0
  109. metadata +223 -98
  110. data/.rspec +0 -1
  111. data/Gemfile.lock +0 -51
  112. data/README.rdoc +0 -305
  113. data/lib/i18n-js/engine.rb +0 -62
  114. data/lib/i18n-js/railtie.rb +0 -13
  115. data/lib/i18n-js/rake.rb +0 -16
  116. data/lib/i18n-js/version.rb +0 -10
  117. data/spec/i18n_spec.js +0 -768
  118. data/spec/i18n_spec.rb +0 -205
  119. data/spec/resources/custom_path.yml +0 -4
  120. data/spec/resources/default.yml +0 -4
  121. data/spec/resources/js_file_per_locale.yml +0 -3
  122. data/spec/resources/multiple_conditions.yml +0 -6
  123. data/spec/resources/multiple_files.yml +0 -6
  124. data/spec/resources/no_scope.yml +0 -3
  125. data/spec/resources/simple_scope.yml +0 -4
  126. data/vendor/assets/javascripts/i18n.js +0 -450
  127. data/vendor/assets/javascripts/i18n/translations.js.erb +0 -7
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1ecff24d70edad3fce1aafa3f96872f4d7a9fc7a0ff7fdcb5fe112ee5f79d410
4
+ data.tar.gz: ee563efe72631f54c5c36536803a3bf0c31fe1c98f996763a36921b14cf21c2a
5
+ SHA512:
6
+ metadata.gz: 59ebc7bd38d3cd451631107c711d1a53001d3677a073327fdb66c043d4c5f37b6f7429b0fd2e7ff495201b575670bb4baabdaccb5e3cbebabc973f17f9db74bf
7
+ data.tar.gz: 9e841a4b949c5993894b3f74296ca7837594cc1d1a68552b1c840578694501ad3a163dca443fac0f9bd6fa2fc198aec3fbdf299da45f96a283fc1ce215d1bd72
data/.editorconfig ADDED
@@ -0,0 +1,24 @@
1
+ # EditorConfig is awesome: http://EditorConfig.org
2
+
3
+ # top-most EditorConfig file
4
+ root = true
5
+
6
+ # default configuration
7
+ [*]
8
+ indent_style = space
9
+ indent_size = 2
10
+ insert_final_newline = true
11
+ trim_trailing_whitespace = true
12
+
13
+ # Unix-style newlines with a newline ending every file
14
+ end_of_line = lf
15
+
16
+ # Set default charset
17
+ charset = utf-8
18
+
19
+ # Tab indentation (no size specified)
20
+ [Makefile]
21
+ indent_style = tab
22
+
23
+ [*.{md,markdown}]
24
+ trim_trailing_whitespace = false
@@ -0,0 +1,3 @@
1
+ ---
2
+ github: ["fnando"]
3
+ custom: ["https://paypal.me/nandovieira/🍕"]
@@ -0,0 +1,100 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ paths-ignore:
8
+ - 'README.md'
9
+ push:
10
+ branches:
11
+ - main
12
+ paths-ignore:
13
+ - 'README.md'
14
+
15
+ jobs:
16
+ ruby_unit_tests:
17
+ name: Ruby Unit Tests
18
+ if: "contains(github.event.commits[0].message, '[ci skip]') == false"
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os:
23
+ - ubuntu
24
+ ruby:
25
+ - 2.4
26
+ - 2.5
27
+ - 2.6
28
+ - 2.7
29
+ gemfile:
30
+ - gemfiles/i18n_0_6.gemfile
31
+ - gemfiles/i18n_0_7.gemfile
32
+ - gemfiles/i18n_0_8.gemfile
33
+ - gemfiles/i18n_0_9.gemfile
34
+ - gemfiles/i18n_1_0.gemfile
35
+ - gemfiles/i18n_1_1.gemfile
36
+ - gemfiles/i18n_1_2.gemfile
37
+ - gemfiles/i18n_1_3.gemfile
38
+ - gemfiles/i18n_1_4.gemfile
39
+ - gemfiles/i18n_1_5.gemfile
40
+ - gemfiles/i18n_1_6.gemfile
41
+ - gemfiles/i18n_1_7.gemfile
42
+ - gemfiles/i18n_1_8.gemfile
43
+ allow_failures:
44
+ - false
45
+ include:
46
+ - os: ubuntu
47
+ ruby: ruby-head
48
+ gemfile: gemfiles/i18n_1_8.gemfile
49
+ allow_failures: true
50
+ env:
51
+ BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
52
+ ALLOW_FAILURES: "${{ matrix.allow_failures }}"
53
+ runs-on: ${{ matrix.os }}-latest
54
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
55
+ steps:
56
+ - name: Checkout
57
+ uses: actions/checkout@v2
58
+ - name: Setup Ruby
59
+ uses: ruby/setup-ruby@v1
60
+ with:
61
+ ruby-version: ${{ matrix.ruby }}
62
+ bundler-cache: true
63
+ - name: Test
64
+ run: bundle exec rake spec:ruby || $ALLOW_FAILURES
65
+
66
+ js_unit_tests:
67
+ name: JS Unit Tests
68
+ if: "contains(github.event.commits[0].message, '[ci skip]') == false"
69
+ strategy:
70
+ fail-fast: false
71
+ matrix:
72
+ os:
73
+ - ubuntu
74
+ node:
75
+ - 10
76
+ - 12
77
+ - 14
78
+ runs-on: ${{ matrix.os }}-latest
79
+ steps:
80
+ - name: Checkout
81
+ uses: actions/checkout@v2
82
+ - name: Setup node
83
+ uses: actions/setup-node@v1
84
+ with:
85
+ node-version: ${{ matrix.node }}
86
+ - name: Get yarn cache directory path
87
+ id: yarn-cache-dir-path
88
+ run: echo "::set-output name=dir::$(yarn cache dir)"
89
+ - uses: actions/cache@v2
90
+ id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
91
+ with:
92
+ path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
93
+ key: ${{ runner.os }}-yarn-${{ github.ref }}-${{ github.sha }}
94
+ restore-keys: |
95
+ ${{ runner.os }}-yarn-${{ github.ref }}-
96
+ ${{ runner.os }}-yarn-
97
+ - name: Install JS Dependencies
98
+ run: yarn install
99
+ - name: Test
100
+ run: npm test
data/.gitignore CHANGED
@@ -1,5 +1,7 @@
1
- doc
2
- coverage
3
1
  pkg
4
- spec/tmp
5
- .DS_Store
2
+ node_modules
3
+ Gemfile.lock
4
+ .idea/
5
+ coverage/
6
+ gemfiles/*.gemfile.lock
7
+ gemfiles/.bundle
data/.npmignore ADDED
@@ -0,0 +1,27 @@
1
+ # https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
2
+
3
+ # tests
4
+ spec
5
+ coverage
6
+
7
+ # build tools
8
+ .travis.yml
9
+
10
+ # linters
11
+ .jscsrc
12
+ .jshintrc
13
+ .eslintrc*
14
+
15
+ # editor settings
16
+ .idea
17
+ .editorconfig
18
+
19
+ # Ruby code
20
+ app/assets/javascripts/i18n/
21
+ gemfiles
22
+ lib
23
+ Gemfile*
24
+ *.gemspec
25
+ Rakefile
26
+ Appraisals
27
+
data/Appraisals ADDED
@@ -0,0 +1,44 @@
1
+
2
+ appraise "i18n_0_8" do
3
+ gem "i18n", "~> 0.8.0"
4
+ end
5
+
6
+ appraise "i18n_0_9" do
7
+ gem "i18n", "~> 0.9.0"
8
+ end
9
+
10
+ appraise "i18n_1_0" do
11
+ gem "i18n", "~> 1.0.0"
12
+ end
13
+
14
+ appraise "i18n_1_1" do
15
+ gem "i18n", "~> 1.1.0"
16
+ end
17
+
18
+ appraise "i18n_1_2" do
19
+ gem "i18n", "~> 1.2.0"
20
+ end
21
+
22
+ appraise "i18n_1_3" do
23
+ gem "i18n", "~> 1.3.0"
24
+ end
25
+
26
+ appraise "i18n_1_4" do
27
+ gem "i18n", "~> 1.4.0"
28
+ end
29
+
30
+ appraise "i18n_1_5" do
31
+ gem "i18n", "~> 1.5.1"
32
+ end
33
+
34
+ appraise "i18n_1_6" do
35
+ gem "i18n", "~> 1.6.0"
36
+ end
37
+
38
+ appraise "i18n_1_7" do
39
+ gem "i18n", "~> 1.7.0"
40
+ end
41
+
42
+ appraise "i18n_1_8" do
43
+ gem "i18n", "~> 1.8.0"
44
+ end
data/CHANGELOG.md ADDED
@@ -0,0 +1,539 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+
5
+
6
+ ## [Unreleased]
7
+
8
+ ### Added
9
+
10
+ - Nothing
11
+
12
+ ### Changed
13
+
14
+ - Nothing
15
+
16
+ ### Fixed
17
+
18
+ - Nothing
19
+
20
+
21
+ ## [3.8.3]
22
+
23
+ ### Changed
24
+
25
+ - [Ruby] Generate translations in JS as `JSON.parse` instead of object literal for performance
26
+ (PR: https://github.com/fnando/i18n-js/pull/605)
27
+ (PR: https://github.com/fnando/i18n-js/pull/606)
28
+ (PR: https://github.com/fnando/i18n-js/pull/607)
29
+
30
+
31
+ ## [3.8.2] - 2021-03-18
32
+
33
+ ### Fixed
34
+
35
+ - [Ruby] Stop using deprecated method
36
+ (PR: https://github.com/fnando/i18n-js/pull/598)
37
+ - [Ruby] Fix typo in error class reference
38
+ (Commit: https://github.com/fnando/i18n-js/commit/cc075ad0a36e940205d0a14390379d69013d188e)
39
+
40
+
41
+ ## [3.8.1] - 2021-02-25
42
+
43
+ ### Fixed
44
+
45
+ - [Ruby] Fix performance issue reading config
46
+ (PR: https://github.com/fnando/i18n-js/pull/593)
47
+
48
+
49
+ ## [3.8.0] - 2020-10-15
50
+
51
+ ### Added
52
+
53
+ - [JS] Add option `scope` for `toHumanSize()`
54
+ (PR: https://github.com/fnando/i18n-js/pull/583)
55
+
56
+
57
+ ## [3.7.1] - 2020-06-30
58
+
59
+ ### Fixed
60
+
61
+ - [JS] For translation missing behaviour `guess`, replace all underscores to spaces properly
62
+ (PR: https://github.com/fnando/i18n-js/pull/574)
63
+
64
+
65
+ ## [3.7.0] - 2020-05-29
66
+
67
+ ### Added
68
+
69
+ - [JS] Allow options to be passed in when calling `I18n.localize`/`I18n.l`
70
+ (PR: https://github.com/fnando/i18n-js/pull/570)
71
+
72
+
73
+ ## [3.6.0] - 2020-02-14
74
+
75
+ ### Added
76
+
77
+ - [Ruby] Allow `suffix` to be added to generated translations files
78
+ (PR: https://github.com/fnando/i18n-js/pull/561)
79
+
80
+
81
+ ## [3.5.1] - 2019-12-21
82
+
83
+ ### Changed
84
+
85
+ - [JS] Bound shortcut functions
86
+ (PR: https://github.com/fnando/i18n-js/pull/560)
87
+
88
+
89
+ ## [3.5.0] - 2019-11-12
90
+
91
+ ### Added
92
+
93
+ - [JS] Support for `%k` strftime format to match Ruby strftime
94
+ (PR: https://github.com/fnando/i18n-js/pull/554)
95
+
96
+
97
+ ## [3.4.2] - 2019-11-11
98
+
99
+ ### Fixed
100
+
101
+ - [Ruby] Fix regression introduced in PR #551
102
+ (PR: https://github.com/fnando/i18n-js/pull/555)
103
+
104
+
105
+ ## [3.4.1] - 2019-11-01
106
+
107
+ ### Fixed
108
+
109
+ - [Ruby] Fix merging of plural keys to work with fallbacks that aren't overridden
110
+ (PR: https://github.com/fnando/i18n-js/pull/551)
111
+
112
+
113
+ ## [3.4.0] - 2019-10-15
114
+
115
+ ### Added
116
+
117
+ - [Ruby] Allow `prefix` to be added to generated translations files
118
+ (PR: https://github.com/fnando/i18n-js/pull/549)
119
+
120
+
121
+ ## [3.3.0] - 2019-06-06
122
+
123
+ ### Added
124
+
125
+ - [JS] Support for `%P`, `%Z`, and `%l` strftime formats to match Ruby strftime
126
+ (PR: https://github.com/fnando/i18n-js/pull/537)
127
+
128
+
129
+ ## [3.2.3] - 2019-05-24
130
+
131
+ ### Changed
132
+
133
+ - [Ruby] Allow rails 6 to be used with this gem
134
+ (PR: https://github.com/fnando/i18n-js/pull/536)
135
+
136
+
137
+ ## [3.2.2] - 2019-05-09
138
+
139
+ ### Fixed
140
+
141
+ - [JS] Return invalid date/time input values (null & undefined) as-is
142
+ (Commit: https://github.com/fnando/i18n-js/commit/869d1689ed788ff50121de492db354652971c23d)
143
+
144
+
145
+ ## [3.2.1] - 2019-01-22
146
+
147
+ ### Changed
148
+
149
+ - [Ruby] `json_only` option should allow multiple locales.
150
+ (PR: https://github.com/fnando/i18n-js/pull/531)
151
+ - [Ruby] Simplified and cleaned code related to JS/JSON formatting.
152
+ (PR: https://github.com/fnando/i18n-js/pull/531)
153
+ - [JS] Use strict value comparison
154
+
155
+ ### Fixed
156
+
157
+ - [Ruby] Relax `i18n` version requirement back to `>= 0.6.6`
158
+ (PR: https://github.com/fnando/i18n-js/pull/530)
159
+ - [Ruby] Fix merging of plural keys across locales.
160
+ (PR: https://github.com/fnando/i18n-js/pull/472)
161
+
162
+
163
+ ## [3.2.0] - 2018-11-16
164
+
165
+ ### Added
166
+
167
+ - [Ruby] Add option `json_only` to generate translations in JSON
168
+ (PR: https://github.com/fnando/i18n-js/pull/524)
169
+
170
+ ### Changed
171
+
172
+ - [Ruby] Requires `i18n` to be `>= 0.8.0` for CVE-2014-10077
173
+
174
+
175
+ ## [3.1.0] - 2018-11-01
176
+
177
+ ### Added
178
+
179
+ - [Ruby] Add option to allow setting a different I18n backend
180
+ (PR: https://github.com/fnando/i18n-js/pull/519)
181
+
182
+ ### Fixed
183
+
184
+ - [JS] Fix missing translation when pluralizing with default scopes
185
+ (PR: https://github.com/fnando/i18n-js/pull/516)
186
+
187
+
188
+ ## [3.0.11] - 2018-07-06
189
+
190
+ ### Fixed
191
+
192
+ - [JS] Fix interpolation for array with non string/null elements
193
+ (PR: https://github.com/fnando/i18n-js/pull/505)
194
+
195
+
196
+ ## [3.0.10] - 2018-06-21
197
+
198
+ ### Fixed
199
+
200
+ - [JS] Fix extend method changing keys with `null` to empty objects
201
+ (PR: https://github.com/fnando/i18n-js/pull/503)
202
+ - [JS] Fix variable name in an internal method
203
+ (PR: https://github.com/fnando/i18n-js/pull/501)
204
+
205
+
206
+ ## [3.0.9] - 2018-06-21
207
+
208
+ ### Fixed
209
+
210
+ - [JS] Fix translation array interpolation for array with null
211
+
212
+
213
+ ## [3.0.8] - 2018-06-06
214
+
215
+ ### Changed
216
+
217
+ - [JS] Interpolate translation array too
218
+ (PR: https://github.com/fnando/i18n-js/pull/498)
219
+
220
+
221
+ ## [3.0.7] - 2018-05-30
222
+
223
+ ### Fixed
224
+
225
+ - [Ruby] Fix new bug occuring when config file is absent
226
+
227
+
228
+ ## [3.0.6] - 2018-05-30
229
+
230
+ ### Fixed
231
+
232
+ - [Ruby] Make JS `i18n/filtered` depends on i18n-js config too
233
+ (PR: https://github.com/fnando/i18n-js/pull/497)
234
+
235
+
236
+ ## [3.0.5] - 2018-02-26
237
+
238
+ ### Changed
239
+
240
+ - [Ruby] Support `I18n` `1.0.x`
241
+ (PR: https://github.com/fnando/i18n-js/pull/492)
242
+
243
+
244
+ ## [3.0.4] - 2018-01-26
245
+
246
+ ### Fixed
247
+
248
+ - [Ruby] Fix `JS::Dependencies.using_asset_pipeline?` returning true when sprockets installed but disabled
249
+ (PR: https://github.com/fnando/i18n-js/pull/488)
250
+
251
+
252
+ ## [3.0.3] - 2018-01-02
253
+
254
+ ### Fixed
255
+
256
+ - [Ruby] Fix extend method when translations has array values
257
+ (PR: https://github.com/fnando/i18n-js/pull/487)
258
+
259
+
260
+ ## [3.0.2] - 2017-10-26
261
+
262
+ ### Changed
263
+
264
+ - [Ruby] Avoid writing new file if a file with same content already exists
265
+ (PR: https://github.com/fnando/i18n-js/pull/473)
266
+ - [JS] Fix fallback when "3-part" locale like `zh-Hant-TW` is used
267
+ It was falling back to `zh` first instead of `zh-Hant` (see new test case added)
268
+ (PR: https://github.com/fnando/i18n-js/pull/475)
269
+
270
+
271
+ ## [3.0.1] - 2017-08-02
272
+
273
+ ### Changed
274
+
275
+ - [Ruby] Relax Rails detection code to work with alternative installation methods
276
+ (PR: https://github.com/fnando/i18n-js/pull/467)
277
+ - [JS] Fix fallback when "3-part" locale like `zh-Hant-TW` is used
278
+ It fallbacks to `zh` only before, now it fallbacks to `zh-Hant`
279
+ (PR: https://github.com/fnando/i18n-js/pull/465)
280
+
281
+
282
+ ## [3.0.0] - 2017-04-01
283
+
284
+ This is a fake official release, the *real* one will be `3.0.0.rc17`
285
+ And today is not April Fools' Day
286
+
287
+ ### Fixed
288
+
289
+ - Ends the longest Release Candidate period among all ruby gems
290
+ (v3.0.0.rc1 released at 2012-05-10)
291
+
292
+
293
+ ## [3.0.0.rc16] - 2017-03-13
294
+
295
+ ### Changed
296
+
297
+ - [Ruby] Drop support for Ruby < `2.1.0`
298
+
299
+ ### Fixed
300
+
301
+ - [JS] Make defaultValue works on plural translation
302
+ - [JS] Fix UMD pattern so the global/root won’t be undefined
303
+
304
+
305
+ ## [3.0.0.rc15] - 2016-12-07
306
+
307
+ ### Added
308
+
309
+ - Nothing
310
+
311
+ ### Changed
312
+
313
+ - [JS] Allow `defaultValue` to work in pluralization
314
+ (PR: https://github.com/fnando/i18n-js/pull/433)
315
+ - [Ruby] Stop validating the fallback locales against `I18n.available_locales`
316
+ This allows some locales to be used as fallback locales, but not to be generated in JS.
317
+ (PR: https://github.com/fnando/i18n-js/pull/425)
318
+ - [Ruby] Remove dependency on gem `activesupport`
319
+
320
+ ### Fixed
321
+
322
+ - [JS] Stop converting numeric & boolean values into objects
323
+ when merging objects with `I18n.extend`
324
+ (PR: https://github.com/fnando/i18n-js/pull/420)
325
+ - [JS] Fix I18n pluralization fallback when tree is empty
326
+ (PR: https://github.com/fnando/i18n-js/pull/435)
327
+ - [Ruby] Use old syntax to define lambda for compatibility with older Rubies
328
+ (Issue: https://github.com/fnando/i18n-js/issues/419)
329
+ - [Ruby] Fix error raised in middleware cache cleaning in parallel test
330
+ (Issue: https://github.com/fnando/i18n-js/issues/436)
331
+
332
+
333
+ ## [3.0.0.rc14] - 2016-08-29
334
+
335
+ ### Changed
336
+
337
+ - [JS] Method `I18n.extend()` behave as deep merging instead of shallow merging. (https://github.com/fnando/i18n-js/pull/416)
338
+ - [Ruby] Use object/class instead of block when registering Sprockets preprocessor (https://github.com/fnando/i18n-js/pull/418)
339
+ To ensure that your cache will expire properly based on locale file content after upgrading,
340
+ you should run `rake assets:clobber` and/or other rake tasks that clear the asset cache once gem updated
341
+ - [Ruby] Detect & support rails 5 (https://github.com/fnando/i18n-js/pull/413)
342
+
343
+
344
+ ## [3.0.0.rc13] - 2016-06-29
345
+
346
+ ### Added
347
+
348
+ - [Ruby] Added option `js_extend` to not generate JS code for translations with usage of `I18n.extend` ([#397](https://github.com/fnando/i18n-js/pull/397))
349
+
350
+ ### Changed
351
+
352
+ - Nothing
353
+
354
+ ### Fixed
355
+
356
+ - [JS] Initialize option `missingBehaviour` & `missingTranslationPrefix` with default values ([#398](https://github.com/fnando/i18n-js/pull/398))
357
+ - [JS] Throw an error when `I18n.strftime()` takes an invalid date ([#383](https://github.com/fnando/i18n-js/pull/383))
358
+ - [JS] Fix default error message when translation missing to consider locale passed in options
359
+ - [Ruby] Reset middleware cache on rails startup
360
+ ([#402](https://github.com/fnando/i18n-js/pull/402))
361
+
362
+
363
+ ## [3.0.0.rc12] - 2015-12-30
364
+
365
+ ### Added
366
+
367
+ - [JS] Allow extending of translation files ([#354](https://github.com/fnando/i18n-js/pull/354))
368
+ - [JS] Allow missingPlaceholder to receive extra data for debugging ([#380](https://github.com/fnando/i18n-js/pull/380))
369
+
370
+ ### Changed
371
+
372
+ - Nothing
373
+
374
+ ### Fixed
375
+
376
+ - [Ruby] Fix of missing initializer at sprockets. ([#371](https://github.com/fnando/i18n-js/pull/371))
377
+ - [Ruby] Use proper method to register preprocessor documented by sprockets-rails. ([#376](https://github.com/fnando/i18n-js/pull/376))
378
+ - [JS] Correctly round unprecise floating point numbers.
379
+ - [JS] Ensure objects are recognized when passed in from an iframe. ([#375](https://github.com/fnando/i18n-js/pull/375))
380
+
381
+
382
+ ## 3.0.0.rc11
383
+
384
+ ### breaking changes
385
+
386
+ ### enhancements
387
+
388
+ ### bug fixes
389
+
390
+ - [Ruby] Handle fallback locale without any translation properly ([#338](https://github.com/fnando/i18n-js/pull/338))
391
+ - [Ruby] Prevent translation entry with null value to override value in fallback locale(s), if enabled ([#334](https://github.com/fnando/i18n-js/pull/334))
392
+
393
+
394
+ ## 3.0.0.rc10
395
+
396
+ ### breaking changes
397
+
398
+ - [Ruby] In `config/i18n-js.yml`, if you are using `%{locale}` in your filename and are referencing specific translations keys, please add `*.` to the beginning of those keys. ([#320](https://github.com/fnando/i18n-js/pull/320))
399
+ - [Ruby] The `:except` option to exclude certain phrases now (only) accepts the same patterns the `:only` option accepts
400
+
401
+ ### enhancements
402
+
403
+ - [Ruby] Make handling of per-locale and not-per-locale exporting to be more consistent ([#320](https://github.com/fnando/i18n-js/pull/320))
404
+ - [Ruby] Add option `sort_translation_keys` to sort translation keys alphabetically ([#318](https://github.com/fnando/i18n-js/pull/318))
405
+
406
+ ### bug fixes
407
+
408
+ - [Ruby] Fix fallback logic to work with not-per-locale files ([#320](https://github.com/fnando/i18n-js/pull/320))
409
+
410
+
411
+ ## 3.0.0.rc9
412
+
413
+ ### enhancements
414
+
415
+ - [JS] Force currency number sign to be at first place using `sign_first` option, default to `true`
416
+ - [Ruby] Add option `namespace` & `pretty_print` ([#300](https://github.com/fnando/i18n-js/pull/300))
417
+ - [Ruby] Add option `export_i18n_js` ([#301](https://github.com/fnando/i18n-js/pull/301))
418
+ - [Ruby] Now the gem also detects pre-release versions of `rails`
419
+ - [Ruby] Add `:except` option to exclude certain phrases or groups of phrases from the
420
+ outputted translations ([#312](https://github.com/fnando/i18n-js/pull/312))
421
+ - [JS] You can now set `I18n.missingBehavior='guess'` to have the scope string output as text instead of of the
422
+ "[missing `scope`]" message when no translation is available.
423
+ Combined that with `I18n.missingTranslationPrefix='SOMETHING'` and you can
424
+ still identify those missing strings.
425
+ ([#304](https://github.com/fnando/i18n-js/pull/304))
426
+
427
+ ### bug fixes
428
+
429
+ - [JS] Fix missing translation message when scope is passed in options
430
+ - [Ruby] Fix save cache directory verification when path is a symbolic link ([#329](https://github.com/fnando/i18n-js/pull/329))
431
+
432
+
433
+ ## 3.0.0.rc8
434
+
435
+ ### enhancements
436
+
437
+ - Add support for loading via AMD and CommonJS module loaders ([#266](https://github.com/fnando/i18n-js/pull/266))
438
+ - Add `I18n.nullPlaceholder`
439
+ Defaults to I18n.missingPlaceholder (`[missing {{name}} value]`)
440
+ Set to `function() {return "";}` to match Ruby `I18n.t("name: %{name}", name: nil)`
441
+ - For date formatting, you can now also add placeholders to the date format, see README for detail
442
+ - Add fallbacks option to `i18n-js.yml`, defaults to `true`
443
+
444
+ ### bug fixes
445
+
446
+ - Fix factory initialization so that the Node/CommonJS branch only gets executed if the environment is Node/CommonJS
447
+ (it currently will execute if module is defined in the global scope, which occurs with QUnit, for example)
448
+ - Fix pluralization rules selection for negative `count` (e.g. `-1` was lead to use `one` for pluralization) ([#268](https://github.com/fnando/i18n-js/pull/268))
449
+ - Remove check for `Rails.configuration.assets.compile` before telling Sprockets the dependency of translations JS file
450
+ This might be the reason of many "cache not expired" issues
451
+ Discovered/reported in #277
452
+
453
+ ## 3.0.0.rc7
454
+
455
+ ### enhancements
456
+
457
+ - The Rails Engine initializer is now named as `i18n-js.register_preprocessor` (https://github.com/fnando/i18n-js/pull/261)
458
+ - Rename `I18n::JS.config_file` to `I18n::JS.config_file_path` and make it configurable
459
+ Expected a `String`, default is still `config/i18n-js.yml`
460
+ - When running `rake i18n:js:export`, the `i18n.js` will also be exported to `I18n::JS.export_i18n_js_dir_path` by default
461
+ - Add `I18n::JS.export_i18n_js_dir_path`
462
+ Expected a `String`, default is `public/javascripts`
463
+ Set to `nil` will disable exporting `i18n.js`
464
+
465
+ ### bug fixes
466
+
467
+ - Prevent toString() call on `undefined` when there is a missing interpolation value
468
+ - Added support for Rails instances without Sprockets object (https://github.com/fnando/i18n-js/pull/241)
469
+ - Fix `DEFAULT_OPTIONS` in `i18n.js` which contained an excessive comma
470
+ - Fix `nil` values are exported into JS files which causes strange translation error
471
+ - Fix pattern to replace all escaped $ in I18n.translate
472
+ - Fix JS `I18n.lookup` modifies existing locales accidentally
473
+
474
+ ## 3.0.0.rc6
475
+
476
+ ### enhancements
477
+
478
+ - You can now assign `I18n.locale` & `I18n.default_locale` before loading `i18n.js` in `application.html.*`
479
+ (merged to `i18n-js-pika` already)
480
+ - You can include ERB in `config/i18n-js.yml`(https://github.com/fnando/i18n-js/pull/224)
481
+ - Add support for +00:00 style time zone designator (https://github.com/fnando/i18n-js/pull/167)
482
+ - Add back rake task for export (`rake i18n:js:export`)
483
+ - Not overriding translation when manually run `I18n::JS.export` (https://github.com/fnando/i18n-js/pull/171)
484
+ - Move missing placeholder text generation into its own function (for easier debugging) (https://github.com/fnando/i18n-js/pull/169)
485
+ - Add support for milliseconds (`lll` in `yyyy-mm-ddThh:mm:ss.lllZ`) (https://github.com/fnando/i18n-js/pull/192)
486
+ - Add back i18n-js.yml config file generator : `rails generate i18n:js:config` (https://github.com/fnando/i18n-js/pull/225)
487
+
488
+ ### bug fixes
489
+
490
+ - `I18n::JS.export` no longer exports locales other than those in `I18n.available_locales`, if `I18n.available_locales` is set
491
+ - I18.t supports the base scope through the options argument
492
+ - I18.t accepts an array as the scope
493
+ - Fix regression: asset not being reloaded in development when translation changed
494
+ - Requires `i18n` to be `~> 0.6`, `0.5` does not work at all
495
+ - Fix using multi-star scope with top-level translation key (https://github.com/fnando/i18n-js/pull/221)
496
+
497
+
498
+ ## Before 3.0.0.rc5
499
+
500
+ - Things happened.
501
+
502
+
503
+
504
+ [Unreleased]: https://github.com/fnando/i18n-js/compare/v3.8.3...HEAD
505
+ [3.8.3]: https://github.com/fnando/i18n-js/compare/v3.8.2...v3.8.3
506
+ [3.8.2]: https://github.com/fnando/i18n-js/compare/v3.8.1...v3.8.2
507
+ [3.8.1]: https://github.com/fnando/i18n-js/compare/v3.8.0...v3.8.1
508
+ [3.8.0]: https://github.com/fnando/i18n-js/compare/v3.7.1...v3.8.0
509
+ [3.7.1]: https://github.com/fnando/i18n-js/compare/v3.7.0...v3.7.1
510
+ [3.7.0]: https://github.com/fnando/i18n-js/compare/v3.6.0...v3.7.0
511
+ [3.6.0]: https://github.com/fnando/i18n-js/compare/v3.5.1...v3.6.0
512
+ [3.5.1]: https://github.com/fnando/i18n-js/compare/v3.5.0...v3.5.1
513
+ [3.5.0]: https://github.com/fnando/i18n-js/compare/v3.4.2...v3.5.0
514
+ [3.4.2]: https://github.com/fnando/i18n-js/compare/v3.4.1...v3.4.2
515
+ [3.4.1]: https://github.com/fnando/i18n-js/compare/v3.4.0...v3.4.1
516
+ [3.4.0]: https://github.com/fnando/i18n-js/compare/v3.3.0...v3.4.0
517
+ [3.3.0]: https://github.com/fnando/i18n-js/compare/v3.2.3...v3.3.0
518
+ [3.2.3]: https://github.com/fnando/i18n-js/compare/v3.2.2...v3.2.3
519
+ [3.2.2]: https://github.com/fnando/i18n-js/compare/v3.2.1...v3.2.2
520
+ [3.2.1]: https://github.com/fnando/i18n-js/compare/v3.2.0...v3.2.1
521
+ [3.2.0]: https://github.com/fnando/i18n-js/compare/v3.1.0...v3.2.0
522
+ [3.1.0]: https://github.com/fnando/i18n-js/compare/v3.0.11...v3.1.0
523
+ [3.0.11]: https://github.com/fnando/i18n-js/compare/v3.0.10...v3.0.11
524
+ [3.0.10]: https://github.com/fnando/i18n-js/compare/v3.0.9...v3.0.10
525
+ [3.0.9]: https://github.com/fnando/i18n-js/compare/v3.0.8...v3.0.9
526
+ [3.0.8]: https://github.com/fnando/i18n-js/compare/v3.0.7...v3.0.8
527
+ [3.0.7]: https://github.com/fnando/i18n-js/compare/v3.0.6...v3.0.7
528
+ [3.0.6]: https://github.com/fnando/i18n-js/compare/v3.0.5...v3.0.6
529
+ [3.0.5]: https://github.com/fnando/i18n-js/compare/v3.0.4...v3.0.5
530
+ [3.0.4]: https://github.com/fnando/i18n-js/compare/v3.0.3...v3.0.4
531
+ [3.0.3]: https://github.com/fnando/i18n-js/compare/v3.0.2...v3.0.3
532
+ [3.0.2]: https://github.com/fnando/i18n-js/compare/v3.0.1...v3.0.2
533
+ [3.0.1]: https://github.com/fnando/i18n-js/compare/v3.0.0...v3.0.1
534
+ [3.0.0]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc16...v3.0.0
535
+ [3.0.0.rc16]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc15...v3.0.0.rc16
536
+ [3.0.0.rc15]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc14...v3.0.0.rc15
537
+ [3.0.0.rc14]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc13...v3.0.0.rc14
538
+ [3.0.0.rc13]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc12...v3.0.0.rc13
539
+ [3.0.0.rc12]: https://github.com/fnando/i18n-js/compare/v3.0.0.rc11...v3.0.0.rc12