i18n-js 3.9.2 → 4.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
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