i18n 1.8.3 → 1.8.8
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/lib/i18n.rb +6 -5
- data/lib/i18n/backend/cache.rb +3 -3
- data/lib/i18n/backend/cache_file.rb +2 -2
- data/lib/i18n/backend/fallbacks.rb +3 -1
- data/lib/i18n/backend/simple.rb +2 -2
- data/lib/i18n/interpolate/ruby.rb +1 -1
- data/lib/i18n/locale/fallbacks.rb +1 -1
- data/lib/i18n/version.rb +1 -1
- metadata +9 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d85e42515b239906cad750dc259b33896b1af0f323bb0dfa76e00e25fffc4745
|
|
4
|
+
data.tar.gz: 9f7b02056b8d9efe5e753fa21c4d7e40abc1ac7ff5bb219b350d7424a9d8abc8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 20ec433c6d838fcbb62815541827634e38740ceb02c9e8c2f020a72da6d41316016ff89399fc4baaea23150ae6be020a77c8dc7855d1d1da7a5d72f7a3834b30
|
|
7
|
+
data.tar.gz: 27300973f400a0804fed69ab7e522bf2f3e60718a541245f8d6874c244b9a5aff67dbebfc5c503dc82336b962349e23e4d046ee688e2af03840bd9d7528e2a8b
|
data/lib/i18n.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'concurrent/map'
|
|
4
|
+
require 'concurrent/hash'
|
|
4
5
|
|
|
5
6
|
require 'i18n/version'
|
|
6
7
|
require 'i18n/exceptions'
|
|
@@ -33,7 +34,7 @@ module I18n
|
|
|
33
34
|
EMPTY_HASH = {}.freeze
|
|
34
35
|
|
|
35
36
|
def self.new_double_nested_cache # :nodoc:
|
|
36
|
-
Concurrent::Map.new { |h,k| h[k] = Concurrent::Map.new }
|
|
37
|
+
Concurrent::Map.new { |h, k| h[k] = Concurrent::Map.new }
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
module Base
|
|
@@ -192,7 +193,7 @@ module I18n
|
|
|
192
193
|
# I18n.t(:salutation, { :gender => 'w', :name => 'Smith' })
|
|
193
194
|
# I18n.t(:salutation, any_hash)
|
|
194
195
|
#
|
|
195
|
-
def translate(key = nil,
|
|
196
|
+
def translate(key = nil, throw: false, raise: false, locale: nil, **options) # TODO deprecate :raise
|
|
196
197
|
locale ||= config.locale
|
|
197
198
|
raise Disabled.new('t') if locale == false
|
|
198
199
|
enforce_available_locales!(locale)
|
|
@@ -217,8 +218,8 @@ module I18n
|
|
|
217
218
|
|
|
218
219
|
# Wrapper for <tt>translate</tt> that adds <tt>:raise => true</tt>. With
|
|
219
220
|
# this option, if no translation is found, it will raise <tt>I18n::MissingTranslationData</tt>
|
|
220
|
-
def translate!(key, options
|
|
221
|
-
translate(key, **options
|
|
221
|
+
def translate!(key, **options)
|
|
222
|
+
translate(key, **options, raise: true)
|
|
222
223
|
end
|
|
223
224
|
alias :t! :translate!
|
|
224
225
|
|
|
@@ -281,7 +282,7 @@ module I18n
|
|
|
281
282
|
# I18n.transliterate("Jürgen") # => "Juergen"
|
|
282
283
|
# I18n.transliterate("Jürgen", :locale => :en) # => "Jurgen"
|
|
283
284
|
# I18n.transliterate("Jürgen", :locale => :de) # => "Juergen"
|
|
284
|
-
def transliterate(key,
|
|
285
|
+
def transliterate(key, throw: false, raise: false, locale: nil, replacement: nil, **options)
|
|
285
286
|
locale ||= config.locale
|
|
286
287
|
raise Disabled.new('transliterate') if locale == false
|
|
287
288
|
enforce_available_locales!(locale)
|
data/lib/i18n/backend/cache.rb
CHANGED
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
#
|
|
18
18
|
# The cache_key implementation by default assumes you pass values that return
|
|
19
19
|
# a valid key from #hash (see
|
|
20
|
-
#
|
|
20
|
+
# https://www.ruby-doc.org/core/classes/Object.html#M000337). However, you can
|
|
21
21
|
# configure your own digest method via which responds to #hexdigest (see
|
|
22
|
-
#
|
|
22
|
+
# https://ruby-doc.org/stdlib/libdoc/openssl/rdoc/OpenSSL/Digest.html):
|
|
23
23
|
#
|
|
24
|
-
# I18n.cache_key_digest = Digest::
|
|
24
|
+
# I18n.cache_key_digest = OpenSSL::Digest::SHA256.new
|
|
25
25
|
#
|
|
26
26
|
# If you use a lambda as a default value in your translation like this:
|
|
27
27
|
#
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'openssl'
|
|
4
4
|
|
|
5
5
|
module I18n
|
|
6
6
|
module Backend
|
|
@@ -19,7 +19,7 @@ module I18n
|
|
|
19
19
|
key = I18n::Backend::Flatten.escape_default_separator(normalized_path(filename))
|
|
20
20
|
old_mtime, old_digest = initialized && lookup(:i18n, key, :load_file)
|
|
21
21
|
return if (mtime = File.mtime(filename).to_i) == old_mtime ||
|
|
22
|
-
(digest = Digest::
|
|
22
|
+
(digest = OpenSSL::Digest::SHA256.file(filename).hexdigest) == old_digest
|
|
23
23
|
super
|
|
24
24
|
store_translations(:i18n, load_file: { key => [mtime, digest] })
|
|
25
25
|
end
|
|
@@ -16,11 +16,13 @@ module I18n
|
|
|
16
16
|
# Returns the current fallbacks implementation. Defaults to +I18n::Locale::Fallbacks+.
|
|
17
17
|
def fallbacks
|
|
18
18
|
@@fallbacks ||= I18n::Locale::Fallbacks.new
|
|
19
|
+
Thread.current[:i18n_fallbacks] || @@fallbacks
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
# Sets the current fallbacks implementation. Use this to set a different fallbacks implementation.
|
|
22
23
|
def fallbacks=(fallbacks)
|
|
23
|
-
@@fallbacks = fallbacks
|
|
24
|
+
@@fallbacks = fallbacks.is_a?(Array) ? I18n::Locale::Fallbacks.new(fallbacks) : fallbacks
|
|
25
|
+
Thread.current[:i18n_fallbacks] = @@fallbacks
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
|
data/lib/i18n/backend/simple.rb
CHANGED
|
@@ -40,7 +40,7 @@ module I18n
|
|
|
40
40
|
return data
|
|
41
41
|
end
|
|
42
42
|
locale = locale.to_sym
|
|
43
|
-
translations[locale] ||=
|
|
43
|
+
translations[locale] ||= Concurrent::Hash.new
|
|
44
44
|
data = data.deep_symbolize_keys
|
|
45
45
|
translations[locale].deep_merge!(data)
|
|
46
46
|
end
|
|
@@ -71,7 +71,7 @@ module I18n
|
|
|
71
71
|
# call `init_translations`
|
|
72
72
|
init_translations if do_init && !initialized?
|
|
73
73
|
|
|
74
|
-
@translations ||= {}
|
|
74
|
+
@translations ||= Concurrent::Hash.new { |h, k| h[k] = Concurrent::Hash.new }
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
protected
|
|
@@ -8,7 +8,7 @@ module I18n
|
|
|
8
8
|
/%<(\w+)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/ # matches placeholders like "%<foo>.d"
|
|
9
9
|
].freeze
|
|
10
10
|
INTERPOLATION_PATTERN = Regexp.union(DEFAULT_INTERPOLATION_PATTERNS)
|
|
11
|
-
deprecate_constant :INTERPOLATION_PATTERN
|
|
11
|
+
deprecate_constant :INTERPOLATION_PATTERN
|
|
12
12
|
|
|
13
13
|
class << self
|
|
14
14
|
# Return String or raises MissingInterpolationArgument exception.
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
#
|
|
27
27
|
# I18n.default_locale = :"en-US"
|
|
28
28
|
# I18n.fallbacks = I18n::Locale::Fallbacks.new(:"de-AT" => :"de-DE")
|
|
29
|
-
# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :
|
|
29
|
+
# I18n.fallbacks[:"de-AT"] # => [:"de-AT", :de, :"de-DE"]
|
|
30
30
|
#
|
|
31
31
|
# # using a custom locale as default fallback locale
|
|
32
32
|
#
|
data/lib/i18n/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: i18n
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.8.
|
|
4
|
+
version: 1.8.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sven Fuchs
|
|
@@ -10,10 +10,10 @@ authors:
|
|
|
10
10
|
- Stephan Soller
|
|
11
11
|
- Saimon Moore
|
|
12
12
|
- Ryan Bigg
|
|
13
|
-
autorequire:
|
|
13
|
+
autorequire:
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
|
-
date:
|
|
16
|
+
date: 2021-02-02 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: concurrent-ruby
|
|
@@ -86,27 +86,11 @@ homepage: https://github.com/ruby-i18n/i18n
|
|
|
86
86
|
licenses:
|
|
87
87
|
- MIT
|
|
88
88
|
metadata:
|
|
89
|
-
bug_tracker_uri: https://github.com/
|
|
90
|
-
changelog_uri: https://github.com/
|
|
89
|
+
bug_tracker_uri: https://github.com/ruby-i18n/i18n/issues
|
|
90
|
+
changelog_uri: https://github.com/ruby-i18n/i18n/releases
|
|
91
91
|
documentation_uri: https://guides.rubyonrails.org/i18n.html
|
|
92
|
-
source_code_uri: https://github.com/
|
|
93
|
-
post_install_message:
|
|
94
|
-
|
|
95
|
-
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
|
|
96
|
-
But that may break your application.
|
|
97
|
-
|
|
98
|
-
If you are upgrading your Rails application from an older version of Rails:
|
|
99
|
-
|
|
100
|
-
Please check your Rails app for 'config.i18n.fallbacks = true'.
|
|
101
|
-
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
|
|
102
|
-
'config.i18n.fallbacks = [I18n.default_locale]'.
|
|
103
|
-
If not, fallbacks will be broken in your app by I18n 1.1.x.
|
|
104
|
-
|
|
105
|
-
If you are starting a NEW Rails application, you can ignore this notice.
|
|
106
|
-
|
|
107
|
-
For more info see:
|
|
108
|
-
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
|
|
109
|
-
|
|
92
|
+
source_code_uri: https://github.com/ruby-i18n/i18n
|
|
93
|
+
post_install_message:
|
|
110
94
|
rdoc_options: []
|
|
111
95
|
require_paths:
|
|
112
96
|
- lib
|
|
@@ -121,8 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
121
105
|
- !ruby/object:Gem::Version
|
|
122
106
|
version: 1.3.5
|
|
123
107
|
requirements: []
|
|
124
|
-
rubygems_version: 3.
|
|
125
|
-
signing_key:
|
|
108
|
+
rubygems_version: 3.2.3
|
|
109
|
+
signing_key:
|
|
126
110
|
specification_version: 4
|
|
127
111
|
summary: New wave Internationalization support for Ruby
|
|
128
112
|
test_files: []
|