i18n-js 3.7.1 → 4.0.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +4 -0
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/ruby-tests.yml +61 -0
- data/.gitignore +11 -7
- data/.rubocop.yml +12 -0
- data/CHANGELOG.md +12 -495
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +79 -0
- data/Gemfile +3 -0
- data/LICENSE.md +20 -0
- data/README.md +89 -903
- data/Rakefile +10 -20
- data/exe/i18n +5 -0
- data/i18n-js.gemspec +47 -29
- data/lib/guard/i18n-js.rb +78 -0
- data/lib/guard/i18n-js/templates/Guardfile +10 -0
- data/lib/guard/i18n-js/version.rb +13 -0
- data/lib/i18n-js.rb +66 -1
- data/lib/i18n-js/cli.rb +47 -0
- data/lib/i18n-js/cli/command.rb +43 -0
- data/lib/i18n-js/cli/export_command.rb +108 -0
- data/lib/i18n-js/cli/init_command.rb +50 -0
- data/lib/i18n-js/cli/ui.rb +30 -0
- data/lib/i18n-js/cli/version_command.rb +18 -0
- data/lib/i18n-js/listen.rb +80 -0
- data/lib/i18n-js/schema.rb +92 -0
- data/lib/i18n-js/version.rb +5 -0
- metadata +123 -190
- data/.editorconfig +0 -24
- data/.npmignore +0 -27
- data/.travis.yml +0 -39
- data/Appraisals +0 -44
- data/app/assets/javascripts/i18n.js +0 -1092
- data/app/assets/javascripts/i18n/filtered.js.erb +0 -23
- data/app/assets/javascripts/i18n/shims.js +0 -240
- data/app/assets/javascripts/i18n/translations.js +0 -3
- data/gemfiles/i18n_0_6.gemfile +0 -7
- data/gemfiles/i18n_0_7.gemfile +0 -7
- data/gemfiles/i18n_0_8.gemfile +0 -7
- data/gemfiles/i18n_0_9.gemfile +0 -7
- data/gemfiles/i18n_1_0.gemfile +0 -7
- data/gemfiles/i18n_1_1.gemfile +0 -7
- data/gemfiles/i18n_1_2.gemfile +0 -7
- data/gemfiles/i18n_1_3.gemfile +0 -7
- data/gemfiles/i18n_1_4.gemfile +0 -7
- data/gemfiles/i18n_1_5.gemfile +0 -7
- data/gemfiles/i18n_1_6.gemfile +0 -7
- data/gemfiles/i18n_1_7.gemfile +0 -7
- data/gemfiles/i18n_1_8.gemfile +0 -7
- data/lib/i18n/js.rb +0 -259
- data/lib/i18n/js/dependencies.rb +0 -63
- data/lib/i18n/js/engine.rb +0 -87
- data/lib/i18n/js/fallback_locales.rb +0 -70
- data/lib/i18n/js/formatters/base.rb +0 -25
- data/lib/i18n/js/formatters/js.rb +0 -32
- data/lib/i18n/js/formatters/json.rb +0 -13
- data/lib/i18n/js/middleware.rb +0 -82
- data/lib/i18n/js/private/hash_with_symbol_keys.rb +0 -36
- data/lib/i18n/js/segment.rb +0 -80
- data/lib/i18n/js/utils.rb +0 -78
- data/lib/i18n/js/version.rb +0 -7
- data/lib/rails/generators/i18n/js/config/config_generator.rb +0 -19
- data/lib/rails/generators/i18n/js/config/templates/i18n-js.yml +0 -27
- data/lib/tasks/export.rake +0 -8
- data/package.json +0 -25
- data/spec/fixtures/custom_path.yml +0 -5
- data/spec/fixtures/default.yml +0 -5
- data/spec/fixtures/erb.yml +0 -5
- data/spec/fixtures/except_condition.yml +0 -7
- data/spec/fixtures/js_export_dir_custom.yml +0 -7
- data/spec/fixtures/js_export_dir_none.yml +0 -6
- data/spec/fixtures/js_extend_parent.yml +0 -6
- data/spec/fixtures/js_extend_segment.yml +0 -6
- data/spec/fixtures/js_file_per_locale.yml +0 -7
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_default_locale_symbol.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_hash.yml +0 -6
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml +0 -4
- data/spec/fixtures/js_file_per_locale_without_fallbacks.yml +0 -4
- data/spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml +0 -9
- data/spec/fixtures/js_sort_translation_keys_false.yml +0 -6
- data/spec/fixtures/js_sort_translation_keys_true.yml +0 -6
- data/spec/fixtures/json_only.yml +0 -18
- data/spec/fixtures/locales.yml +0 -133
- data/spec/fixtures/merge_plurals.yml +0 -6
- data/spec/fixtures/merge_plurals_with_no_overrides.yml +0 -4
- data/spec/fixtures/merge_plurals_with_partial_overrides.yml +0 -4
- data/spec/fixtures/millions.yml +0 -4
- data/spec/fixtures/multiple_conditions.yml +0 -7
- data/spec/fixtures/multiple_conditions_per_locale.yml +0 -7
- data/spec/fixtures/multiple_files.yml +0 -7
- data/spec/fixtures/no_config.yml +0 -2
- data/spec/fixtures/no_scope.yml +0 -4
- data/spec/fixtures/simple_scope.yml +0 -5
- data/spec/js/currency.spec.js +0 -62
- data/spec/js/current_locale.spec.js +0 -19
- data/spec/js/dates.spec.js +0 -276
- data/spec/js/defaults.spec.js +0 -31
- data/spec/js/extend.spec.js +0 -110
- data/spec/js/interpolation.spec.js +0 -124
- data/spec/js/jasmine/MIT.LICENSE +0 -20
- data/spec/js/jasmine/jasmine-html.js +0 -190
- data/spec/js/jasmine/jasmine.css +0 -166
- data/spec/js/jasmine/jasmine.js +0 -2476
- data/spec/js/jasmine/jasmine_favicon.png +0 -0
- data/spec/js/locales.spec.js +0 -31
- data/spec/js/localization.spec.js +0 -78
- data/spec/js/numbers.spec.js +0 -170
- data/spec/js/placeholder.spec.js +0 -24
- data/spec/js/pluralization.spec.js +0 -219
- data/spec/js/prepare_options.spec.js +0 -41
- data/spec/js/require.js +0 -2083
- data/spec/js/specs.html +0 -49
- data/spec/js/specs_requirejs.html +0 -72
- data/spec/js/translate.spec.js +0 -299
- data/spec/js/translations.js +0 -172
- data/spec/js/utility_functions.spec.js +0 -20
- data/spec/ruby/i18n/js/fallback_locales_spec.rb +0 -84
- data/spec/ruby/i18n/js/segment_spec.rb +0 -219
- data/spec/ruby/i18n/js/utils_spec.rb +0 -106
- data/spec/ruby/i18n/js_spec.rb +0 -748
- data/spec/spec_helper.rb +0 -79
- data/yarn.lock +0 -131
data/lib/i18n/js/utils.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
module I18n
|
2
|
-
module JS
|
3
|
-
module Utils
|
4
|
-
PLURAL_KEYS = %i[zero one two few many other].freeze
|
5
|
-
|
6
|
-
# Based on deep_merge by Stefan Rusterholz, see <http://www.ruby-forum.com/topic/142809>.
|
7
|
-
# This method is used to handle I18n fallbacks. Given two equivalent path nodes in two locale trees:
|
8
|
-
# 1. If the node in the current locale appears to be an I18n pluralization (:one, :other, etc.),
|
9
|
-
# use the node, but merge in any missing/non-nil keys from the fallback (default) locale.
|
10
|
-
# 2. Else if both nodes are Hashes, combine (merge) the key-value pairs of the two nodes into one,
|
11
|
-
# prioritizing the current locale.
|
12
|
-
# 3. Else if either node is nil, use the other node.
|
13
|
-
PLURAL_MERGER = proc do |_key, v1, v2|
|
14
|
-
v1 || v2
|
15
|
-
end
|
16
|
-
MERGER = proc do |_key, v1, v2|
|
17
|
-
if Hash === v1 && Hash === v2
|
18
|
-
if (v2.keys - PLURAL_KEYS).empty?
|
19
|
-
slice(v2.merge(v1, &PLURAL_MERGER), v2.keys)
|
20
|
-
else
|
21
|
-
v1.merge(v2, &MERGER)
|
22
|
-
end
|
23
|
-
else
|
24
|
-
v2 || v1
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
HASH_NIL_VALUE_CLEANER_PROC = proc do |k, v|
|
29
|
-
v.kind_of?(Hash) ? (v.delete_if(&HASH_NIL_VALUE_CLEANER_PROC); false) : v.nil?
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.slice(hash, keys)
|
33
|
-
if hash.respond_to?(:slice) # ruby 2.5 onwards
|
34
|
-
hash.slice(*keys)
|
35
|
-
else
|
36
|
-
hash.select {|key, _| keys.include?(key)}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.strip_keys_with_nil_values(hash)
|
41
|
-
hash.dup.delete_if(&HASH_NIL_VALUE_CLEANER_PROC)
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.deep_merge(target_hash, hash) # :nodoc:
|
45
|
-
target_hash.merge(hash, &MERGER)
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.deep_merge!(target_hash, hash) # :nodoc:
|
49
|
-
target_hash.merge!(hash, &MERGER)
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.deep_reject(hash, scopes = [], &block)
|
53
|
-
hash.each_with_object({}) do |(k, v), memo|
|
54
|
-
unless block.call(k, v, scopes + [k.to_s])
|
55
|
-
memo[k] = v.kind_of?(Hash) ? deep_reject(v, scopes + [k.to_s], &block) : v
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def self.scopes_match?(scopes1, scopes2)
|
61
|
-
if scopes1.length == scopes2.length
|
62
|
-
[scopes1, scopes2].transpose.all? do |scope1, scope2|
|
63
|
-
scope1.to_s == '*' || scope2.to_s == '*' || scope1.to_s == scope2.to_s
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.deep_key_sort(hash)
|
69
|
-
# Avoid things like `true` or `1` from YAML which causes error
|
70
|
-
hash.keys.sort {|a, b| a.to_s <=> b.to_s}.
|
71
|
-
each_with_object({}) do |key, seed|
|
72
|
-
value = hash[key]
|
73
|
-
seed[key] = value.is_a?(Hash) ? deep_key_sort(value) : value
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/lib/i18n/js/version.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module I18n
|
2
|
-
module Js
|
3
|
-
class ConfigGenerator < Rails::Generators::Base
|
4
|
-
# Copied files come from templates folder
|
5
|
-
source_root File.expand_path('../templates', __FILE__)
|
6
|
-
|
7
|
-
# Generator desc
|
8
|
-
desc <<-DESC
|
9
|
-
Creates a default i18n-js.yml configuration file in your app's config
|
10
|
-
folder. This file allows you to customize i18n:js:export rake task
|
11
|
-
outputted files.
|
12
|
-
DESC
|
13
|
-
|
14
|
-
def copy_initializer_file
|
15
|
-
copy_file "i18n-js.yml", "config/i18n-js.yml"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# Split context in several files.
|
2
|
-
#
|
3
|
-
# By default only one file with all translations is exported and
|
4
|
-
# no configuration is required. Your settings for asset pipeline
|
5
|
-
# are automatically recognized.
|
6
|
-
#
|
7
|
-
# If you want to split translations into several files or specify
|
8
|
-
# locale contexts that will be exported, just use this file to do
|
9
|
-
# so.
|
10
|
-
#
|
11
|
-
# For more informations about the export options with this file, please
|
12
|
-
# refer to the README
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# If you're going to use the Rails 3.1 asset pipeline, change
|
16
|
-
# the following configuration to something like this:
|
17
|
-
#
|
18
|
-
# translations:
|
19
|
-
# - file: "app/assets/javascripts/i18n/translations.js"
|
20
|
-
#
|
21
|
-
# If you're running an old version, you can use something
|
22
|
-
# like this:
|
23
|
-
#
|
24
|
-
# translations:
|
25
|
-
# - file: "app/assets/javascripts/i18n/translations.js"
|
26
|
-
# only: "*"
|
27
|
-
#
|
data/lib/tasks/export.rake
DELETED
data/package.json
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "i18n-js",
|
3
|
-
"version": "3.7.1",
|
4
|
-
"description": "A javascript library similar to Ruby on Rails i18n gem",
|
5
|
-
"author": "Nando Vieira",
|
6
|
-
"license": "MIT",
|
7
|
-
"keywords": [
|
8
|
-
"i18n"
|
9
|
-
],
|
10
|
-
"devDependencies": {
|
11
|
-
"jasmine-node": "^1.14.5"
|
12
|
-
},
|
13
|
-
"main": "app/assets/javascripts/i18n.js",
|
14
|
-
"scripts": {
|
15
|
-
"test": "./node_modules/.bin/jasmine-node spec/js"
|
16
|
-
},
|
17
|
-
"homepage": "https://github.com/fnando/i18n-js",
|
18
|
-
"bugs": {
|
19
|
-
"url": "https://github.com/fnando/i18n-js/issues"
|
20
|
-
},
|
21
|
-
"repository": {
|
22
|
-
"type": "git",
|
23
|
-
"url": "https://github.com/fnando/i18n-js.git"
|
24
|
-
}
|
25
|
-
}
|
data/spec/fixtures/default.yml
DELETED
data/spec/fixtures/erb.yml
DELETED
data/spec/fixtures/json_only.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
fallbacks: false
|
2
|
-
json_only: true
|
3
|
-
|
4
|
-
translations:
|
5
|
-
- file: "tmp/i18n-js/json_only.%{locale}.js"
|
6
|
-
only:
|
7
|
-
- "*.date.formats.*"
|
8
|
-
- "*.number.currency.*"
|
9
|
-
|
10
|
-
- file: "tmp/i18n-js/json_only_multi.js"
|
11
|
-
only:
|
12
|
-
- "*.date.formats.*"
|
13
|
-
- "*.number.currency.*"
|
14
|
-
|
15
|
-
- file: "tmp/i18n-js/json_only_multi_pretty.js"
|
16
|
-
only:
|
17
|
-
- "*.date.formats.*"
|
18
|
-
- "*.number.currency.*"
|
data/spec/fixtures/locales.yml
DELETED
@@ -1,133 +0,0 @@
|
|
1
|
-
en:
|
2
|
-
number:
|
3
|
-
human:
|
4
|
-
decimal_units:
|
5
|
-
units:
|
6
|
-
million: Million
|
7
|
-
format:
|
8
|
-
separator: "."
|
9
|
-
delimiter: ","
|
10
|
-
precision: 3
|
11
|
-
currency:
|
12
|
-
format:
|
13
|
-
format: "%u%n"
|
14
|
-
unit: "$"
|
15
|
-
separator: "."
|
16
|
-
delimiter: ","
|
17
|
-
precision: 2
|
18
|
-
date:
|
19
|
-
formats:
|
20
|
-
default: "%Y-%m-%d"
|
21
|
-
short: "%b %d"
|
22
|
-
long: "%B %d, %Y"
|
23
|
-
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
|
24
|
-
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
25
|
-
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
26
|
-
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
27
|
-
# order: [ :year, :month, :day ]
|
28
|
-
time:
|
29
|
-
formats:
|
30
|
-
default: "%a, %d %b %Y %H:%M:%S %z"
|
31
|
-
short: "%d %b %H:%M"
|
32
|
-
long: "%B %d, %Y %H:%M"
|
33
|
-
am: "am"
|
34
|
-
pm: "pm"
|
35
|
-
admin:
|
36
|
-
show:
|
37
|
-
title: "Show"
|
38
|
-
note: "more details"
|
39
|
-
edit:
|
40
|
-
title: "Edit"
|
41
|
-
foo: "Foo"
|
42
|
-
fallback_test: "Success"
|
43
|
-
null_test: "fallback for null"
|
44
|
-
merge_plurals:
|
45
|
-
one: Apple
|
46
|
-
other: Apples
|
47
|
-
merge_plurals_with_no_overrides:
|
48
|
-
zero: "No Apple"
|
49
|
-
one: Apple
|
50
|
-
other: Apples
|
51
|
-
merge_plurals_with_partial_overrides:
|
52
|
-
one: Cat
|
53
|
-
other: Cats
|
54
|
-
|
55
|
-
es:
|
56
|
-
number:
|
57
|
-
human:
|
58
|
-
decimal_units:
|
59
|
-
units:
|
60
|
-
million:
|
61
|
-
one: millón
|
62
|
-
other: millones
|
63
|
-
|
64
|
-
ru:
|
65
|
-
merge_plurals_with_no_overrides:
|
66
|
-
one: кот
|
67
|
-
few: кошек
|
68
|
-
many: кошка
|
69
|
-
other: кошек
|
70
|
-
|
71
|
-
de:
|
72
|
-
fallback_test: "Erfolg"
|
73
|
-
null_test: ~
|
74
|
-
|
75
|
-
fr:
|
76
|
-
date:
|
77
|
-
formats:
|
78
|
-
default: "%d/%m/%Y"
|
79
|
-
short: "%e %b"
|
80
|
-
long: "%e %B %Y"
|
81
|
-
long_ordinal: "%e %B %Y"
|
82
|
-
only_day: "%e"
|
83
|
-
day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
|
84
|
-
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
|
85
|
-
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
|
86
|
-
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
|
87
|
-
# order: [ :day, :month, :year ]
|
88
|
-
time:
|
89
|
-
formats:
|
90
|
-
default: "%d %B %Y %H:%M"
|
91
|
-
time: "%H:%M"
|
92
|
-
short: "%d %b %H:%M"
|
93
|
-
long: "%A %d %B %Y %H:%M:%S %Z"
|
94
|
-
long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
|
95
|
-
only_second: "%S"
|
96
|
-
am: 'am'
|
97
|
-
pm: 'pm'
|
98
|
-
number:
|
99
|
-
format:
|
100
|
-
precision: 3
|
101
|
-
separator: ','
|
102
|
-
delimiter: ' '
|
103
|
-
currency:
|
104
|
-
format:
|
105
|
-
unit: '€'
|
106
|
-
precision: 2
|
107
|
-
format: '%n %u'
|
108
|
-
admin:
|
109
|
-
show:
|
110
|
-
title: "Visualiser"
|
111
|
-
note: "plus de détails"
|
112
|
-
edit:
|
113
|
-
title: "Editer"
|
114
|
-
merge_plurals:
|
115
|
-
zero: Pomme
|
116
|
-
one: Pomme
|
117
|
-
other: Pommes
|
118
|
-
|
119
|
-
en-US:
|
120
|
-
merge_plurals_with_no_overrides:
|
121
|
-
zero:
|
122
|
-
one:
|
123
|
-
other:
|
124
|
-
merge_plurals_with_partial_overrides:
|
125
|
-
one: Cat
|
126
|
-
few:
|
127
|
-
many:
|
128
|
-
other:
|
129
|
-
|
130
|
-
ja:
|
131
|
-
admin:
|
132
|
-
show:
|
133
|
-
title: "Ignore me"
|