i18n-js 3.8.2 → 4.2.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.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +4 -0
- data/.github/FUNDING.yml +1 -1
- data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- data/.github/ISSUE_TEMPLATE/config.yml +5 -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 +73 -0
- data/.gitignore +13 -7
- data/.rubocop.yml +19 -0
- data/CHANGELOG.md +47 -512
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +79 -0
- data/Gemfile +3 -0
- data/LICENSE.md +20 -0
- data/MIGRATING_FROM_V3_TO_V4.md +192 -0
- data/README.md +425 -921
- data/Rakefile +10 -20
- data/bin/release +81 -0
- data/exe/i18n +5 -0
- data/i18n-js.gemspec +51 -29
- data/lib/guard/i18n-js/templates/Guardfile +10 -0
- data/lib/guard/i18n-js/version.rb +13 -0
- data/lib/guard/i18n-js.rb +95 -0
- data/lib/i18n-js/clean_hash.rb +13 -0
- data/lib/i18n-js/cli/check_command.rb +17 -0
- data/lib/i18n-js/cli/command.rb +79 -0
- data/lib/i18n-js/cli/export_command.rb +95 -0
- data/lib/i18n-js/cli/init_command.rb +52 -0
- data/lib/i18n-js/cli/lint_scripts_command.rb +159 -0
- data/lib/i18n-js/cli/lint_translations_command.rb +157 -0
- data/lib/i18n-js/cli/plugins_command.rb +67 -0
- data/lib/i18n-js/cli/ui.rb +64 -0
- data/lib/i18n-js/cli/version_command.rb +18 -0
- data/lib/i18n-js/cli.rb +66 -0
- data/lib/i18n-js/embed_fallback_translations_plugin.rb +70 -0
- data/lib/i18n-js/export_files_plugin.rb +103 -0
- data/lib/i18n-js/lint.js +150645 -0
- data/lib/i18n-js/lint.ts +196 -0
- data/lib/i18n-js/listen.rb +96 -0
- data/lib/i18n-js/plugin.rb +103 -0
- data/lib/i18n-js/schema.rb +216 -0
- data/lib/i18n-js/sort_hash.rb +12 -0
- data/lib/i18n-js/version.rb +5 -0
- data/lib/i18n-js.rb +107 -1
- data/package.json +5 -20
- metadata +149 -189
- data/.editorconfig +0 -24
- data/.github/workflows/tests.yaml +0 -100
- data/.npmignore +0 -27
- data/Appraisals +0 -44
- 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/app/assets/javascripts/i18n.js +0 -1095
- 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/i18njs.png +0 -0
- 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/config_store.rb +0 -31
- 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/i18n/js.rb +0 -264
- 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/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 -174
- 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 -304
- data/spec/js/translations.js +0 -188
- 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 -80
- 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
data/lib/i18n/js.rb
DELETED
@@ -1,264 +0,0 @@
|
|
1
|
-
require "yaml"
|
2
|
-
require "fileutils"
|
3
|
-
require "i18n"
|
4
|
-
|
5
|
-
require "i18n/js/utils"
|
6
|
-
require "i18n/js/private/hash_with_symbol_keys"
|
7
|
-
require "i18n/js/private/config_store"
|
8
|
-
|
9
|
-
module I18n
|
10
|
-
module JS
|
11
|
-
require "i18n/js/dependencies"
|
12
|
-
require "i18n/js/fallback_locales"
|
13
|
-
require "i18n/js/segment"
|
14
|
-
if JS::Dependencies.rails?
|
15
|
-
require "i18n/js/middleware"
|
16
|
-
require "i18n/js/engine"
|
17
|
-
end
|
18
|
-
|
19
|
-
DEFAULT_CONFIG_PATH = "config/i18n-js.yml"
|
20
|
-
DEFAULT_EXPORT_DIR_PATH = "public/javascripts"
|
21
|
-
|
22
|
-
# The configuration file. This defaults to the `config/i18n-js.yml` file.
|
23
|
-
#
|
24
|
-
def self.config_file_path
|
25
|
-
@config_file_path ||= DEFAULT_CONFIG_PATH
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.config_file_path=(new_path)
|
29
|
-
@config_file_path = new_path
|
30
|
-
# new config file path = need to re-read config from new file
|
31
|
-
Private::ConfigStore.instance.flush_cache
|
32
|
-
end
|
33
|
-
|
34
|
-
# Allow using a different backend than the one globally configured
|
35
|
-
def self.backend
|
36
|
-
@backend ||= I18n.backend
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.backend=(alternative_backend)
|
40
|
-
@backend = alternative_backend
|
41
|
-
end
|
42
|
-
|
43
|
-
# Export translations to JavaScript, considering settings
|
44
|
-
# from configuration file
|
45
|
-
def self.export
|
46
|
-
export_i18n_js
|
47
|
-
|
48
|
-
translation_segments.each(&:save!)
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.segment_for_scope(scope, exceptions)
|
52
|
-
if scope == "*"
|
53
|
-
exclude(translations, exceptions)
|
54
|
-
else
|
55
|
-
scoped_translations(scope, exceptions)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.configured_segments
|
60
|
-
config[:translations].inject([]) do |segments, options_hash|
|
61
|
-
options_hash_with_symbol_keys = Private::HashWithSymbolKeys.new(options_hash)
|
62
|
-
file = options_hash_with_symbol_keys[:file]
|
63
|
-
only = options_hash_with_symbol_keys[:only] || '*'
|
64
|
-
exceptions = [options_hash_with_symbol_keys[:except] || []].flatten
|
65
|
-
|
66
|
-
result = segment_for_scope(only, exceptions)
|
67
|
-
|
68
|
-
merge_with_fallbacks!(result) if fallbacks
|
69
|
-
|
70
|
-
unless result.empty?
|
71
|
-
segments << Segment.new(
|
72
|
-
file,
|
73
|
-
result,
|
74
|
-
extract_segment_options(options_hash_with_symbol_keys),
|
75
|
-
)
|
76
|
-
end
|
77
|
-
|
78
|
-
segments
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# deep_merge! given result with result for fallback locale
|
83
|
-
def self.merge_with_fallbacks!(result)
|
84
|
-
I18n.available_locales.each do |locale|
|
85
|
-
fallback_locales = FallbackLocales.new(fallbacks, locale)
|
86
|
-
fallback_locales.each do |fallback_locale|
|
87
|
-
# `result[fallback_locale]` could be missing
|
88
|
-
result[locale] = Utils.deep_merge(result[fallback_locale] || {}, result[locale] || {})
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.filtered_translations
|
94
|
-
translations = {}.tap do |result|
|
95
|
-
translation_segments.each do |segment|
|
96
|
-
Utils.deep_merge!(result, segment.translations)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
return Utils.deep_key_sort(translations) if I18n::JS.sort_translation_keys?
|
100
|
-
translations
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.translation_segments
|
104
|
-
if config_file_exists? && config[:translations]
|
105
|
-
configured_segments
|
106
|
-
else
|
107
|
-
[Segment.new("#{DEFAULT_EXPORT_DIR_PATH}/translations.js", translations)]
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
# Load configuration file for partial exporting and
|
112
|
-
# custom output directory
|
113
|
-
def self.config
|
114
|
-
Private::ConfigStore.instance.fetch do
|
115
|
-
if config_file_exists?
|
116
|
-
erb_result_from_yaml_file = ERB.new(File.read(config_file_path)).result
|
117
|
-
Private::HashWithSymbolKeys.new(
|
118
|
-
(::YAML.load(erb_result_from_yaml_file) || {})
|
119
|
-
)
|
120
|
-
else
|
121
|
-
Private::HashWithSymbolKeys.new({})
|
122
|
-
end.freeze
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
# @api private
|
127
|
-
# Check if configuration file exist
|
128
|
-
def self.config_file_exists?
|
129
|
-
File.file? config_file_path
|
130
|
-
end
|
131
|
-
|
132
|
-
def self.scoped_translations(scopes, exceptions = []) # :nodoc:
|
133
|
-
result = {}
|
134
|
-
|
135
|
-
[scopes].flatten.each do |scope|
|
136
|
-
translations_without_exceptions = exclude(translations, exceptions)
|
137
|
-
filtered_translations = filter(translations_without_exceptions, scope) || {}
|
138
|
-
|
139
|
-
Utils.deep_merge!(result, filtered_translations)
|
140
|
-
end
|
141
|
-
|
142
|
-
result
|
143
|
-
end
|
144
|
-
|
145
|
-
# Exclude keys from translations listed in the `except:` section in the config file
|
146
|
-
def self.exclude(translations, exceptions)
|
147
|
-
return translations if exceptions.empty?
|
148
|
-
|
149
|
-
exceptions.inject(translations) do |memo, exception|
|
150
|
-
exception_scopes = exception.to_s.split(".")
|
151
|
-
Utils.deep_reject(memo) do |key, value, scopes|
|
152
|
-
Utils.scopes_match?(scopes, exception_scopes)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
# Filter translations according to the specified scope.
|
158
|
-
def self.filter(translations, scopes)
|
159
|
-
scopes = scopes.split(".") if scopes.is_a?(String)
|
160
|
-
scopes = scopes.clone
|
161
|
-
scope = scopes.shift
|
162
|
-
|
163
|
-
if scope == "*"
|
164
|
-
results = {}
|
165
|
-
translations.each do |scope, translations|
|
166
|
-
tmp = scopes.empty? ? translations : filter(translations, scopes)
|
167
|
-
results[scope.to_sym] = tmp unless tmp.nil?
|
168
|
-
end
|
169
|
-
return results
|
170
|
-
elsif translations.respond_to?(:key?) && translations.key?(scope.to_sym)
|
171
|
-
return {scope.to_sym => scopes.empty? ? translations[scope.to_sym] : filter(translations[scope.to_sym], scopes)}
|
172
|
-
end
|
173
|
-
nil
|
174
|
-
end
|
175
|
-
|
176
|
-
# Initialize and return translations
|
177
|
-
def self.translations
|
178
|
-
self.backend.instance_eval do
|
179
|
-
init_translations unless initialized?
|
180
|
-
# When activesupport is absent,
|
181
|
-
# the core extension (`#slice`) from `i18n` gem will be used instead
|
182
|
-
# And it's causing errors (at least in test)
|
183
|
-
#
|
184
|
-
# So the input is wrapped by our class for better `#slice`
|
185
|
-
Private::HashWithSymbolKeys.new(translations).
|
186
|
-
slice(*::I18n.available_locales).
|
187
|
-
to_h
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
def self.use_fallbacks?
|
192
|
-
fallbacks != false
|
193
|
-
end
|
194
|
-
|
195
|
-
def self.json_only
|
196
|
-
config.fetch(:json_only) do
|
197
|
-
# default value
|
198
|
-
false
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
def self.fallbacks
|
203
|
-
config.fetch(:fallbacks) do
|
204
|
-
# default value
|
205
|
-
true
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
def self.js_extend
|
210
|
-
config.fetch(:js_extend) do
|
211
|
-
# default value
|
212
|
-
true
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
|
-
def self.sort_translation_keys?
|
217
|
-
@sort_translation_keys ||= (config[:sort_translation_keys]) if config.key?(:sort_translation_keys)
|
218
|
-
@sort_translation_keys = true if @sort_translation_keys.nil?
|
219
|
-
@sort_translation_keys
|
220
|
-
end
|
221
|
-
|
222
|
-
def self.sort_translation_keys=(value)
|
223
|
-
@sort_translation_keys = !!value
|
224
|
-
end
|
225
|
-
|
226
|
-
def self.extract_segment_options(options)
|
227
|
-
segment_options = Private::HashWithSymbolKeys.new({
|
228
|
-
js_extend: js_extend,
|
229
|
-
sort_translation_keys: sort_translation_keys?,
|
230
|
-
json_only: json_only
|
231
|
-
}).freeze
|
232
|
-
segment_options.merge(options.slice(*Segment::OPTIONS))
|
233
|
-
end
|
234
|
-
|
235
|
-
### Export i18n.js
|
236
|
-
begin
|
237
|
-
|
238
|
-
# Copy i18n.js
|
239
|
-
def self.export_i18n_js
|
240
|
-
return unless export_i18n_js_dir_path.is_a? String
|
241
|
-
|
242
|
-
FileUtils.mkdir_p(export_i18n_js_dir_path)
|
243
|
-
|
244
|
-
i18n_js_path = File.expand_path('../../../app/assets/javascripts/i18n.js', __FILE__)
|
245
|
-
destination_path = File.expand_path("i18n.js", export_i18n_js_dir_path)
|
246
|
-
return if File.exist?(destination_path) && FileUtils.identical?(i18n_js_path, destination_path)
|
247
|
-
|
248
|
-
FileUtils.cp(i18n_js_path, export_i18n_js_dir_path)
|
249
|
-
end
|
250
|
-
|
251
|
-
def self.export_i18n_js_dir_path
|
252
|
-
@export_i18n_js_dir_path ||= (config[:export_i18n_js] || :none) if config.key?(:export_i18n_js)
|
253
|
-
@export_i18n_js_dir_path ||= DEFAULT_EXPORT_DIR_PATH
|
254
|
-
@export_i18n_js_dir_path
|
255
|
-
end
|
256
|
-
|
257
|
-
# Setting this to nil would disable i18n.js exporting
|
258
|
-
def self.export_i18n_js_dir_path=(new_path)
|
259
|
-
new_path = :none unless new_path.is_a? String
|
260
|
-
@export_i18n_js_dir_path = new_path
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
@@ -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/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.*"
|