i18n-js 3.3.0 → 3.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e499400b911829bf876432a25d3bbb1e5c55af10e5cedd2fdbf06a88145e8f3
4
- data.tar.gz: '0893d97d2e483f17c8c9a3af79227e6808a01a35275e10fceadc3b8ad507f70d'
3
+ metadata.gz: e862238199baf310221642a6913ce7d07b87b2c6934e691bed7bc19a613c09b7
4
+ data.tar.gz: cdc3db450f6613e82246f2b2ba303ae706bbdaadebee84d34024cd8fb371308c
5
5
  SHA512:
6
- metadata.gz: 66cc8573871132c0af819c87ffb10bf0e918799da4cd77aa01fb2298c422e7c5ae3f92409ae55575215360abba759b65d7410e9e0c1077dd4d75594cd5c1196e
7
- data.tar.gz: e4072b5b511a0b39b875dc03258926afc0cc5fe7f512054efcf05ebc9b8df67ada3c937cfe4ce9902dde6a61f87aed2240c971c24f990ae07c8b1309df5a15dc
6
+ metadata.gz: 2bc681b8e0b8e7260fd5dfdea56c3733234c8c8afedd0e4c6492ef65356e8b7b6d5ee2e959d5ba26751860c89e237813960e5bc4a45cdb7dbd525fe396277718
7
+ data.tar.gz: 7aaf234e4f39b7f3eeeff50cadd7f6f8625e235477a83d58bbcf17c30ef7e09ab086de27c85fe5c5f802b6e4f935d81a203abccae80bc65c53a6e549eeb989fb
data/.travis.yml CHANGED
@@ -28,6 +28,7 @@ gemfile:
28
28
  - gemfiles/i18n_1_4.gemfile
29
29
  - gemfiles/i18n_1_5.gemfile
30
30
  - gemfiles/i18n_1_6.gemfile
31
+ - gemfiles/i18n_1_7.gemfile
31
32
  matrix:
32
33
  fast_finish: true
33
34
  allow_failures:
data/Appraisals CHANGED
@@ -34,3 +34,7 @@ end
34
34
  appraise "i18n_1_6" do
35
35
  gem "i18n", "~> 1.6.0"
36
36
  end
37
+
38
+ appraise "i18n_1_7" do
39
+ gem "i18n", "~> 1.7.0"
40
+ end
data/CHANGELOG.md CHANGED
@@ -18,6 +18,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
18
18
  - Nothing
19
19
 
20
20
 
21
+ ## [3.4.0] - 2019-10-15
22
+
23
+ ### Added
24
+
25
+ - Allow `prefix` to be added to generated translations files
26
+ (PR: https://github.com/fnando/i18n-js/pull/549)
27
+
28
+
21
29
  ## [3.3.0] - 2019-06-06
22
30
 
23
31
  ### Added
@@ -400,7 +408,8 @@ And today is not April Fools' Day
400
408
 
401
409
 
402
410
 
403
- [Unreleased]: https://github.com/fnando/i18n-js/compare/v3.3.0...HEAD
411
+ [Unreleased]: https://github.com/fnando/i18n-js/compare/v3.4.0...HEAD
412
+ [3.4.0]: https://github.com/fnando/i18n-js/compare/v3.3.0...v3.4.0
404
413
  [3.3.0]: https://github.com/fnando/i18n-js/compare/v3.2.3...v3.3.0
405
414
  [3.2.3]: https://github.com/fnando/i18n-js/compare/v3.2.2...v3.2.3
406
415
  [3.2.2]: https://github.com/fnando/i18n-js/compare/v3.2.1...v3.2.2
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # I18n.js
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/i18n-js.svg?style=flat-square)](http://badge.fury.io/rb/i18n-js)
4
+ [![npm](https://img.shields.io/npm/v/i18n-js.svg?style=flat-square)](https://www.npmjs.com/package/i18n-js)
4
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
5
6
 
6
7
  [![Build Status](http://img.shields.io/travis/fnando/i18n-js.svg?style=flat-square)](https://travis-ci.org/fnando/i18n-js)
@@ -8,6 +9,8 @@
8
9
 
9
10
  [![Gitter](https://img.shields.io/badge/gitter-join%20chat-1dce73.svg?style=flat-square)](https://gitter.im/fnando/i18n-js)
10
11
 
12
+ > The above badges are generated by https://shields.io/
13
+
11
14
  It's a small library to provide the Rails I18n translations on the JavaScript.
12
15
 
13
16
  Features:
@@ -245,6 +248,27 @@ MyNamespace.translations["en"] = { ... }
245
248
  ```
246
249
 
247
250
 
251
+ ### Adding a line at the beggining of the translations file (useful for imports)
252
+
253
+ Setting the `prefix: "import I18n from 'i18n-js';\n"` option will add the line at the beggining of the resultant translation file.
254
+ This can be useful to use this gem with the [i18n-js](https://www.npmjs.com/package/i18n-js) npm package, which is quite useful to use it with webpack.
255
+ The user should provide the semi-colon and the newline character if needed.
256
+
257
+ For example:
258
+
259
+ ```yaml
260
+ translations:
261
+ - file: "public/javascripts/i18n/translations.js"
262
+ prefix: "import I18n from 'i18n-js';\n"
263
+ ```
264
+
265
+ will create:
266
+
267
+ ```
268
+ import I18n from 'i18n-js';
269
+ I18n.translations || (I18n.translations = {});
270
+
271
+
248
272
  #### Pretty Print
249
273
 
250
274
  Set the `pretty_print` option if you would like whitespace and indentation in your output file (default: false)
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "i18n", "~> 1.7.0"
6
+
7
+ gemspec path: "../"
@@ -2,10 +2,11 @@ module I18n
2
2
  module JS
3
3
  module Formatters
4
4
  class Base
5
- def initialize(js_extend: false, namespace: nil, pretty_print: false)
5
+ def initialize(js_extend: false, namespace: nil, pretty_print: false, prefix: nil)
6
6
  @js_extend = js_extend
7
7
  @namespace = namespace
8
8
  @pretty_print = pretty_print
9
+ @prefix = prefix
9
10
  end
10
11
 
11
12
  protected
@@ -15,7 +15,8 @@ module I18n
15
15
  protected
16
16
 
17
17
  def header
18
- %(#{@namespace}.translations || (#{@namespace}.translations = {});\n)
18
+ text = @prefix || ''
19
+ text + %(#{@namespace}.translations || (#{@namespace}.translations = {});\n)
19
20
  end
20
21
 
21
22
  def line(locale, translations)
@@ -7,7 +7,7 @@ module I18n
7
7
 
8
8
  # Class which enscapulates a translations hash and outputs a single JSON translation file
9
9
  class Segment
10
- OPTIONS = [:namespace, :pretty_print, :js_extend, :sort_translation_keys, :json_only].freeze
10
+ OPTIONS = [:namespace, :pretty_print, :js_extend, :prefix, :sort_translation_keys, :json_only].freeze
11
11
  LOCALE_INTERPOLATOR = /%\{locale\}/
12
12
 
13
13
  attr_reader *([:file, :translations] | OPTIONS)
@@ -24,6 +24,7 @@ module I18n
24
24
  @namespace = options[:namespace] || 'I18n'
25
25
  @pretty_print = !!options[:pretty_print]
26
26
  @js_extend = options.key?(:js_extend) ? !!options[:js_extend] : true
27
+ @prefix = options.key?(:prefix) ? options[:prefix] : nil
27
28
  @sort_translation_keys = options.key?(:sort_translation_keys) ? !!options[:sort_translation_keys] : true
28
29
  @json_only = options.key?(:json_only) ? !!options[:json_only] : false
29
30
  end
@@ -68,7 +69,8 @@ module I18n
68
69
  def formatter_options
69
70
  { js_extend: @js_extend,
70
71
  namespace: @namespace,
71
- pretty_print: @pretty_print }
72
+ pretty_print: @pretty_print,
73
+ prefix: @prefix }
72
74
  end
73
75
  end
74
76
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module JS
5
- VERSION = "3.3.0"
5
+ VERSION = "3.4.0"
6
6
  end
7
7
  end
@@ -5,3 +5,4 @@ translations:
5
5
  only: '*'
6
6
  namespace: "Foo"
7
7
  pretty_print: true
8
+ prefix: "import random from 'random-library';\n"
@@ -351,11 +351,11 @@ EOS
351
351
  end
352
352
  end
353
353
 
354
- context "namespace and pretty_print options" do
354
+ context "namespace, prefix and pretty_print options" do
355
355
 
356
356
  before do
357
357
  stub_const('I18n::JS::DEFAULT_EXPORT_DIR_PATH', temp_path)
358
- set_config "js_file_with_namespace_and_pretty_print.yml"
358
+ set_config "js_file_with_namespace_prefix_and_pretty_print.yml"
359
359
  end
360
360
 
361
361
  it "exports with defined locale as fallback when enabled" do
@@ -364,6 +364,7 @@ EOS
364
364
  output = File.read(File.join(I18n::JS.export_i18n_js_dir_path, "en.js"))
365
365
  expect(output).to match(/^#{
366
366
  <<EOS
367
+ import random from 'random-library';
367
368
  Foo.translations || (Foo.translations = {});
368
369
  Foo.translations["en"] = {
369
370
  "number": {
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.3.0
4
+ version: 3.4.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: 2019-06-06 00:00:00.000000000 Z
11
+ date: 2019-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -125,6 +125,7 @@ files:
125
125
  - gemfiles/i18n_1_4.gemfile
126
126
  - gemfiles/i18n_1_5.gemfile
127
127
  - gemfiles/i18n_1_6.gemfile
128
+ - gemfiles/i18n_1_7.gemfile
128
129
  - i18n-js.gemspec
129
130
  - lib/i18n-js.rb
130
131
  - lib/i18n/js.rb
@@ -158,7 +159,7 @@ files:
158
159
  - spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml
159
160
  - spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml
160
161
  - spec/fixtures/js_file_per_locale_without_fallbacks.yml
161
- - spec/fixtures/js_file_with_namespace_and_pretty_print.yml
162
+ - spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml
162
163
  - spec/fixtures/js_sort_translation_keys_false.yml
163
164
  - spec/fixtures/js_sort_translation_keys_true.yml
164
165
  - spec/fixtures/json_only.yml
@@ -218,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
219
  - !ruby/object:Gem::Version
219
220
  version: '0'
220
221
  requirements: []
221
- rubygems_version: 3.0.3
222
+ rubygems_version: 3.0.6
222
223
  signing_key:
223
224
  specification_version: 4
224
225
  summary: It's a small library to provide the Rails I18n translations on the Javascript.
@@ -238,7 +239,7 @@ test_files:
238
239
  - spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml
239
240
  - spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml
240
241
  - spec/fixtures/js_file_per_locale_without_fallbacks.yml
241
- - spec/fixtures/js_file_with_namespace_and_pretty_print.yml
242
+ - spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml
242
243
  - spec/fixtures/js_sort_translation_keys_false.yml
243
244
  - spec/fixtures/js_sort_translation_keys_true.yml
244
245
  - spec/fixtures/json_only.yml