i18n-js 3.9.2 → 4.0.0.alpha1

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +4 -0
  3. data/.github/FUNDING.yml +1 -1
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
  7. data/.github/dependabot.yml +15 -0
  8. data/.github/workflows/ruby-tests.yml +61 -0
  9. data/.gitignore +11 -7
  10. data/.rubocop.yml +12 -0
  11. data/CHANGELOG.md +12 -571
  12. data/CODE_OF_CONDUCT.md +74 -0
  13. data/CONTRIBUTING.md +79 -0
  14. data/Gemfile +3 -0
  15. data/LICENSE.md +20 -0
  16. data/README.md +86 -1043
  17. data/Rakefile +10 -20
  18. data/exe/i18n +5 -0
  19. data/i18n-js.gemspec +47 -29
  20. data/lib/guard/i18n-js/templates/Guardfile +10 -0
  21. data/lib/guard/i18n-js/version.rb +13 -0
  22. data/lib/guard/i18n-js.rb +78 -0
  23. data/lib/i18n-js/cli/command.rb +43 -0
  24. data/lib/i18n-js/cli/export_command.rb +108 -0
  25. data/lib/i18n-js/cli/init_command.rb +50 -0
  26. data/lib/i18n-js/cli/ui.rb +30 -0
  27. data/lib/i18n-js/cli/version_command.rb +18 -0
  28. data/lib/i18n-js/cli.rb +47 -0
  29. data/lib/i18n-js/listen.rb +80 -0
  30. data/lib/i18n-js/schema.rb +92 -0
  31. data/lib/i18n-js/version.rb +5 -0
  32. data/lib/i18n-js.rb +66 -1
  33. metadata +125 -201
  34. data/.editorconfig +0 -24
  35. data/.github/workflows/tests.yaml +0 -106
  36. data/.npmignore +0 -27
  37. data/Appraisals +0 -52
  38. data/app/assets/javascripts/i18n/filtered.js.erb +0 -23
  39. data/app/assets/javascripts/i18n/shims.js +0 -240
  40. data/app/assets/javascripts/i18n/translations.js +0 -3
  41. data/app/assets/javascripts/i18n.js +0 -1095
  42. data/gemfiles/i18n_0_6.gemfile +0 -7
  43. data/gemfiles/i18n_0_7.gemfile +0 -7
  44. data/gemfiles/i18n_0_8.gemfile +0 -7
  45. data/gemfiles/i18n_0_9.gemfile +0 -7
  46. data/gemfiles/i18n_1_0.gemfile +0 -7
  47. data/gemfiles/i18n_1_1.gemfile +0 -7
  48. data/gemfiles/i18n_1_10.gemfile +0 -7
  49. data/gemfiles/i18n_1_2.gemfile +0 -7
  50. data/gemfiles/i18n_1_3.gemfile +0 -7
  51. data/gemfiles/i18n_1_4.gemfile +0 -7
  52. data/gemfiles/i18n_1_5.gemfile +0 -7
  53. data/gemfiles/i18n_1_6.gemfile +0 -7
  54. data/gemfiles/i18n_1_7.gemfile +0 -7
  55. data/gemfiles/i18n_1_8.gemfile +0 -7
  56. data/gemfiles/i18n_1_9.gemfile +0 -7
  57. data/i18njs.png +0 -0
  58. data/lib/i18n/js/dependencies.rb +0 -67
  59. data/lib/i18n/js/engine.rb +0 -87
  60. data/lib/i18n/js/fallback_locales.rb +0 -70
  61. data/lib/i18n/js/formatters/base.rb +0 -25
  62. data/lib/i18n/js/formatters/js.rb +0 -39
  63. data/lib/i18n/js/formatters/json.rb +0 -13
  64. data/lib/i18n/js/middleware.rb +0 -82
  65. data/lib/i18n/js/private/config_store.rb +0 -31
  66. data/lib/i18n/js/private/hash_with_symbol_keys.rb +0 -36
  67. data/lib/i18n/js/segment.rb +0 -81
  68. data/lib/i18n/js/utils.rb +0 -91
  69. data/lib/i18n/js/version.rb +0 -7
  70. data/lib/i18n/js.rb +0 -274
  71. data/lib/rails/generators/i18n/js/config/config_generator.rb +0 -19
  72. data/lib/rails/generators/i18n/js/config/templates/i18n-js.yml +0 -27
  73. data/lib/tasks/export.rake +0 -8
  74. data/package.json +0 -25
  75. data/spec/fixtures/custom_path.yml +0 -5
  76. data/spec/fixtures/default.yml +0 -5
  77. data/spec/fixtures/erb.yml +0 -5
  78. data/spec/fixtures/except_condition.yml +0 -7
  79. data/spec/fixtures/js_available_locales_custom.yml +0 -1
  80. data/spec/fixtures/js_export_dir_custom.yml +0 -7
  81. data/spec/fixtures/js_export_dir_none.yml +0 -6
  82. data/spec/fixtures/js_extend_parent.yml +0 -6
  83. data/spec/fixtures/js_extend_segment.yml +0 -6
  84. data/spec/fixtures/js_file_per_locale.yml +0 -7
  85. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_default_locale_symbol.yml +0 -4
  86. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_hash.yml +0 -6
  87. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale.yml +0 -4
  88. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml +0 -4
  89. data/spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml +0 -4
  90. data/spec/fixtures/js_file_per_locale_without_fallbacks.yml +0 -4
  91. data/spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml +0 -9
  92. data/spec/fixtures/js_sort_translation_keys_false.yml +0 -6
  93. data/spec/fixtures/js_sort_translation_keys_true.yml +0 -6
  94. data/spec/fixtures/json_only.yml +0 -18
  95. data/spec/fixtures/locales.yml +0 -133
  96. data/spec/fixtures/merge_plurals.yml +0 -6
  97. data/spec/fixtures/merge_plurals_with_no_overrides.yml +0 -4
  98. data/spec/fixtures/merge_plurals_with_partial_overrides.yml +0 -4
  99. data/spec/fixtures/millions.yml +0 -4
  100. data/spec/fixtures/multiple_conditions.yml +0 -7
  101. data/spec/fixtures/multiple_conditions_per_locale.yml +0 -7
  102. data/spec/fixtures/multiple_files.yml +0 -7
  103. data/spec/fixtures/no_config.yml +0 -2
  104. data/spec/fixtures/no_scope.yml +0 -4
  105. data/spec/fixtures/simple_scope.yml +0 -5
  106. data/spec/js/currency.spec.js +0 -62
  107. data/spec/js/current_locale.spec.js +0 -19
  108. data/spec/js/dates.spec.js +0 -276
  109. data/spec/js/defaults.spec.js +0 -31
  110. data/spec/js/extend.spec.js +0 -110
  111. data/spec/js/interpolation.spec.js +0 -124
  112. data/spec/js/jasmine/MIT.LICENSE +0 -20
  113. data/spec/js/jasmine/jasmine-html.js +0 -190
  114. data/spec/js/jasmine/jasmine.css +0 -166
  115. data/spec/js/jasmine/jasmine.js +0 -2476
  116. data/spec/js/jasmine/jasmine_favicon.png +0 -0
  117. data/spec/js/json_parsable.spec.js +0 -14
  118. data/spec/js/locales.spec.js +0 -31
  119. data/spec/js/localization.spec.js +0 -78
  120. data/spec/js/numbers.spec.js +0 -174
  121. data/spec/js/placeholder.spec.js +0 -24
  122. data/spec/js/pluralization.spec.js +0 -228
  123. data/spec/js/prepare_options.spec.js +0 -41
  124. data/spec/js/require.js +0 -2083
  125. data/spec/js/specs.html +0 -49
  126. data/spec/js/specs_requirejs.html +0 -72
  127. data/spec/js/translate.spec.js +0 -304
  128. data/spec/js/translations.js +0 -188
  129. data/spec/js/utility_functions.spec.js +0 -20
  130. data/spec/ruby/i18n/js/fallback_locales_spec.rb +0 -84
  131. data/spec/ruby/i18n/js/segment_spec.rb +0 -286
  132. data/spec/ruby/i18n/js/utils_spec.rb +0 -138
  133. data/spec/ruby/i18n/js_spec.rb +0 -797
  134. data/spec/spec_helper.rb +0 -80
  135. data/yarn.lock +0 -138
@@ -1,106 +0,0 @@
1
- name: Tests
2
-
3
- on:
4
- pull_request:
5
- branches:
6
- - main
7
- - v3
8
- paths-ignore:
9
- - 'README.md'
10
- push:
11
- branches:
12
- - main
13
- - v3
14
- paths-ignore:
15
- - 'README.md'
16
-
17
- jobs:
18
- ruby_unit_tests:
19
- name: Ruby Unit Tests
20
- if: "contains(github.event.commits[0].message, '[ci skip]') == false"
21
- strategy:
22
- fail-fast: false
23
- matrix:
24
- os:
25
- - ubuntu
26
- ruby:
27
- - 2.4
28
- - 2.5
29
- - 2.6
30
- - 2.7
31
- - '3.0'
32
- - 3.1
33
- gemfile:
34
- - gemfiles/i18n_0_6.gemfile
35
- - gemfiles/i18n_0_7.gemfile
36
- - gemfiles/i18n_0_8.gemfile
37
- - gemfiles/i18n_0_9.gemfile
38
- - gemfiles/i18n_1_0.gemfile
39
- - gemfiles/i18n_1_1.gemfile
40
- - gemfiles/i18n_1_2.gemfile
41
- - gemfiles/i18n_1_3.gemfile
42
- - gemfiles/i18n_1_4.gemfile
43
- - gemfiles/i18n_1_5.gemfile
44
- - gemfiles/i18n_1_6.gemfile
45
- - gemfiles/i18n_1_7.gemfile
46
- - gemfiles/i18n_1_8.gemfile
47
- - gemfiles/i18n_1_9.gemfile
48
- - gemfiles/i18n_1_10.gemfile
49
- allow_failures:
50
- - false
51
- include:
52
- - os: ubuntu
53
- ruby: ruby-head
54
- gemfile: gemfiles/i18n_1_8.gemfile
55
- allow_failures: true
56
- env:
57
- BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
58
- ALLOW_FAILURES: "${{ matrix.allow_failures }}"
59
- runs-on: ${{ matrix.os }}-latest
60
- continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
61
- steps:
62
- - name: Checkout
63
- uses: actions/checkout@v2
64
- - name: Setup Ruby
65
- uses: ruby/setup-ruby@v1
66
- with:
67
- ruby-version: ${{ matrix.ruby }}
68
- bundler-cache: true
69
- - name: Test
70
- run: bundle exec rake spec:ruby || $ALLOW_FAILURES
71
-
72
- js_unit_tests:
73
- name: JS Unit Tests
74
- if: "contains(github.event.commits[0].message, '[ci skip]') == false"
75
- strategy:
76
- fail-fast: false
77
- matrix:
78
- os:
79
- - ubuntu
80
- node:
81
- - 10
82
- - 12
83
- - 14
84
- runs-on: ${{ matrix.os }}-latest
85
- steps:
86
- - name: Checkout
87
- uses: actions/checkout@v2
88
- - name: Setup node
89
- uses: actions/setup-node@v1
90
- with:
91
- node-version: ${{ matrix.node }}
92
- - name: Get yarn cache directory path
93
- id: yarn-cache-dir-path
94
- run: echo "::set-output name=dir::$(yarn cache dir)"
95
- - uses: actions/cache@v2
96
- id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
97
- with:
98
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
99
- key: ${{ runner.os }}-yarn-${{ github.ref }}-${{ github.sha }}
100
- restore-keys: |
101
- ${{ runner.os }}-yarn-${{ github.ref }}-
102
- ${{ runner.os }}-yarn-
103
- - name: Install JS Dependencies
104
- run: yarn install
105
- - name: Test
106
- run: npm test
data/.npmignore DELETED
@@ -1,27 +0,0 @@
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 DELETED
@@ -1,52 +0,0 @@
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
45
-
46
- appraise "i18n_1_9" do
47
- gem "i18n", "~> 1.9.0"
48
- end
49
-
50
- appraise "i18n_1_10" do
51
- gem "i18n", "~> 1.10.0"
52
- end
@@ -1,23 +0,0 @@
1
- <%# encoding: utf-8 %>
2
-
3
- // Using UMD pattern from
4
- // https://github.com/umdjs/umd#regular-module
5
- // `returnExports.js` version
6
- ;(function (root, factory) {
7
- if (typeof define === 'function' && define.amd) {
8
- // AMD. Register as an anonymous module.
9
- define(["i18n"], factory);
10
- } else if (typeof module === 'object' && module.exports) {
11
- // Node. Does not work with strict CommonJS, but
12
- // only CommonJS-like environments that support module.exports,
13
- // like Node.
14
- factory(require("i18n"));
15
- } else {
16
- // Browser globals (root is window)
17
- factory(root.I18n);
18
- }
19
- }(this, function(I18n) {
20
- "use strict";
21
-
22
- I18n.translations = <%= I18n::JS.filtered_translations.to_json %>;
23
- }));
@@ -1,240 +0,0 @@
1
- // https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
2
- if (!Array.prototype.indexOf) {
3
- Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
4
- "use strict";
5
- if (this == null) {
6
- throw new TypeError();
7
- }
8
- var t = Object(this);
9
- var len = t.length >>> 0;
10
- if (len === 0) {
11
- return -1;
12
- }
13
- var n = 0;
14
- if (arguments.length > 1) {
15
- n = Number(arguments[1]);
16
- if (n != n) { // shortcut for verifying if it's NaN
17
- n = 0;
18
- } else if (n != 0 && n != Infinity && n != -Infinity) {
19
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
20
- }
21
- }
22
- if (n >= len) {
23
- return -1;
24
- }
25
- var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
26
- for (; k < len; k++) {
27
- if (k in t && t[k] === searchElement) {
28
- return k;
29
- }
30
- }
31
- return -1;
32
- }
33
- }
34
-
35
- // Production steps of ECMA-262, Edition 5, 15.4.4.18
36
- // Reference: https://es5.github.com/#x15.4.4.18
37
- // https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach
38
- if ( !Array.prototype.forEach ) {
39
-
40
- Array.prototype.forEach = function forEach( callback, thisArg ) {
41
-
42
- var T, k;
43
-
44
- if ( this == null ) {
45
- throw new TypeError( "this is null or not defined" );
46
- }
47
-
48
- // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
49
- var O = Object(this);
50
-
51
- // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
52
- // 3. Let len be ToUint32(lenValue).
53
- var len = O.length >>> 0; // Hack to convert O.length to a UInt32
54
-
55
- // 4. If IsCallable(callback) is false, throw a TypeError exception.
56
- // See: https://es5.github.com/#x9.11
57
- if ( {}.toString.call(callback) !== "[object Function]" ) {
58
- throw new TypeError( callback + " is not a function" );
59
- }
60
-
61
- // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
62
- if ( thisArg ) {
63
- T = thisArg;
64
- }
65
-
66
- // 6. Let k be 0
67
- k = 0;
68
-
69
- // 7. Repeat, while k < len
70
- while( k < len ) {
71
-
72
- var kValue;
73
-
74
- // a. Let Pk be ToString(k).
75
- // This is implicit for LHS operands of the in operator
76
- // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
77
- // This step can be combined with c
78
- // c. If kPresent is true, then
79
- if ( Object.prototype.hasOwnProperty.call(O, k) ) {
80
-
81
- // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
82
- kValue = O[ k ];
83
-
84
- // ii. Call the Call internal method of callback with T as the this value and
85
- // argument list containing kValue, k, and O.
86
- callback.call( T, kValue, k, O );
87
- }
88
- // d. Increase k by 1.
89
- k++;
90
- }
91
- // 8. return undefined
92
- };
93
- }
94
-
95
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
96
- if (!Array.prototype.some)
97
- {
98
- Array.prototype.some = function(fun /*, thisArg */)
99
- {
100
- 'use strict';
101
-
102
- if (this === void 0 || this === null)
103
- throw new TypeError();
104
-
105
- var t = Object(this);
106
- var len = t.length >>> 0;
107
- if (typeof fun !== 'function')
108
- throw new TypeError();
109
-
110
- var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
111
- for (var i = 0; i < len; i++)
112
- {
113
- if (i in t && fun.call(thisArg, t[i], i, t))
114
- return true;
115
- }
116
-
117
- return false;
118
- };
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: https://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
- }
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
- })();
@@ -1,3 +0,0 @@
1
- //= require i18n/shims
2
- //= require i18n
3
- //= require i18n/filtered