l10n 1.4.1 → 2.0.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 +4 -4
- data/CHANGELOG.md +16 -0
- data/{MIT-LICENSE → LICENSE} +0 -0
- data/README.md +50 -17
- data/lib/install/install.rb +2 -0
- data/lib/install/l10n.js +45 -0
- data/lib/l10n/core_extensions/date_time_ext.rb +2 -2
- data/lib/l10n/core_extensions/numeric_ext.rb +6 -10
- data/lib/l10n/core_extensions/object_ext.rb +1 -1
- data/lib/l10n/forms.rb +1 -0
- data/lib/l10n/i18n_extensions.rb +1 -1
- data/lib/l10n/railtie.rb +11 -0
- data/lib/l10n/version.rb +1 -1
- data/lib/l10n.rb +9 -6
- data/lib/tasks/l10n.rake +8 -0
- metadata +33 -92
- data/CHANGELOG +0 -9
- data/app/assets/javascripts/i18n.js +0 -42
- data/lib/l10n/core_extensions/big_decimal_ext.rb +0 -17
- data/lib/l10n/core_extensions.rb +0 -6
- data/lib/l10n/engine.rb +0 -7
- data/lib/l10n/javascript_helper.rb +0 -17
- data/lib/locales/de.yml +0 -8
- data/lib/locales/en.yml +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 983a6cc561859d662fc97347df35643e42444b6c996b1ff224a327a0fe5dfe77
|
|
4
|
+
data.tar.gz: f4baa0c9c30895603cec6ec75c93236d1a9b8668e7d3f0912b2ae5303093cabe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9856cc22286c2cf3ec0731c46e047024f9963efdfd957126d6a0f659c0c435d8625b22b1aa2e2e70722b869d7663845c8879568fccab9e567450d1bdd73dc7df
|
|
7
|
+
data.tar.gz: 21bbb3ac8f822c9c70e2ce90fa74917bc621e86ea77dfd4ec87fcadbaf8d7cc39d0af425618bf2cae46b1736878b7680c1aa0f171fbea184abd982c3872260bd
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## 2.0.0 - Unreleased
|
|
2
|
+
|
|
3
|
+
- Support Rails 7
|
|
4
|
+
- use `to_lfs` instead of `to_formatted_s` which has been reclaimed by Rails
|
|
5
|
+
- JS: move implementation to ES module, drop JavaScriptHelper
|
|
6
|
+
- Inflections: drop ordinalization, provided by Rails now
|
|
7
|
+
|
|
8
|
+
## 1.4.0 - 2018-06-21
|
|
9
|
+
|
|
10
|
+
- Removing jQuery dependency from i18n javascript
|
|
11
|
+
|
|
12
|
+
## 1.1.0 - 2014-12-09
|
|
13
|
+
|
|
14
|
+
- Adding Time#l
|
|
15
|
+
- Adding I18n support for JavaScript
|
|
16
|
+
- Updating README
|
data/{MIT-LICENSE → LICENSE}
RENAMED
|
File without changes
|
data/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
[](http://badge.fury.io/rb/l10n)
|
|
2
|
+
[](https://github.com/mtgrosser/l10n/actions/workflows/build.yml)
|
|
3
|
+
|
|
1
4
|
# L10n - I18n that roarrrs
|
|
2
5
|
|
|
3
|
-
L10n provides some useful extensions for Rails I18n, including column translations,
|
|
6
|
+
L10n provides some useful extensions for Rails I18n, including column translations,
|
|
7
|
+
localization of numeric form fields and JavaScript translation support.
|
|
4
8
|
|
|
5
9
|
## Installation
|
|
6
10
|
|
|
@@ -97,18 +101,21 @@ I18n.locale = :de
|
|
|
97
101
|
|
|
98
102
|
#### Formatting of numbers
|
|
99
103
|
|
|
100
|
-
Calling `
|
|
104
|
+
Calling `to_lfs` on `Numeric`s returns the number as a localized formatted string.
|
|
105
|
+
The format is defined by the current locale and respects the decimal delimiters
|
|
106
|
+
and separators defined in your `<locale>.yml`.
|
|
101
107
|
|
|
102
108
|
```ruby
|
|
103
|
-
I18n.as('de') { 1234.5.
|
|
104
|
-
I18n.as('en') { 1234.5.
|
|
109
|
+
I18n.as('de') { 1234.5.to_lfs } => "1.234,50"
|
|
110
|
+
I18n.as('en') { 1234.5.to_lfs } => "1,234.50"
|
|
105
111
|
```
|
|
106
112
|
|
|
107
113
|
This also works with `BigDecimal`s.
|
|
108
114
|
|
|
109
115
|
#### Localization of decimal separator and delimiter for numbers
|
|
110
116
|
|
|
111
|
-
Localization converts decimal separators and delimiters between locales without
|
|
117
|
+
Localization converts decimal separators and delimiters between locales without
|
|
118
|
+
re-formatting strings. `to_localized_s` can be called on any object.
|
|
112
119
|
|
|
113
120
|
```ruby
|
|
114
121
|
I18n.as('de') { 1234.5.to_localized_s } => "1.234,5"
|
|
@@ -124,7 +131,9 @@ I18n.as(:en) { Numeric.localize('1,234.50') } => "1,234.50"
|
|
|
124
131
|
|
|
125
132
|
### Automatic localization of numeric values in Rails forms and models
|
|
126
133
|
|
|
127
|
-
The `amount_field` form helper automatically formats numbers in the current locale.
|
|
134
|
+
The `amount_field` form helper automatically formats numbers in the current locale.
|
|
135
|
+
Numeric columns automatically convert the localized strings into numbers,
|
|
136
|
+
respecting decimal delimiters and separators.
|
|
128
137
|
|
|
129
138
|
```ruby
|
|
130
139
|
# in your template
|
|
@@ -144,7 +153,8 @@ I18n.locale = :en
|
|
|
144
153
|
|
|
145
154
|
### Accept-Language header parsing in ActionDispatch::Request
|
|
146
155
|
|
|
147
|
-
The `Accept-Language` HTTP header will be parsed, and locales will be returned ordered
|
|
156
|
+
The `Accept-Language` HTTP header will be parsed, and locales will be returned ordered
|
|
157
|
+
by user preference. This comes in handy when setting the current locale in a `before_action`.
|
|
148
158
|
|
|
149
159
|
```ruby
|
|
150
160
|
# in your controller
|
|
@@ -153,14 +163,15 @@ request.accept_locales => ["en-US", "en", "en-GB"]
|
|
|
153
163
|
|
|
154
164
|
### Javascript I18n, interpolation and pluralization
|
|
155
165
|
|
|
156
|
-
|
|
166
|
+
Due to the many different options of integrating JavaScript, the `l10n.js` file
|
|
167
|
+
is no longer provided as a standard Rails asset. Instead, it can be installed
|
|
168
|
+
manually using
|
|
157
169
|
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
//= require i18n
|
|
170
|
+
```sh
|
|
171
|
+
rake l10n:install:js
|
|
161
172
|
```
|
|
162
173
|
|
|
163
|
-
|
|
174
|
+
Place your JavaScript translations below the `javascript` key:
|
|
164
175
|
|
|
165
176
|
```yaml
|
|
166
177
|
# en.yml
|
|
@@ -173,14 +184,36 @@ en:
|
|
|
173
184
|
other: '{count} apples'
|
|
174
185
|
```
|
|
175
186
|
|
|
187
|
+
Import the module:
|
|
188
|
+
|
|
189
|
+
```javascript
|
|
190
|
+
import I18n from 'l10n';
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Render the translations either as JSON via an endpoint, or include them in a
|
|
194
|
+
`script` tag:
|
|
195
|
+
|
|
176
196
|
```ruby
|
|
177
|
-
|
|
178
|
-
<%= i18n_script_tag %>
|
|
197
|
+
I18n.t(:javascript).to_json
|
|
179
198
|
```
|
|
180
199
|
|
|
200
|
+
Depending on the way the module is integrated, the translations can either be
|
|
201
|
+
set on the `I18n` object:
|
|
202
|
+
|
|
203
|
+
```javascript
|
|
204
|
+
import I18n from 'l10n';
|
|
205
|
+
window.I18n = I18n;
|
|
206
|
+
I18n.translations = { "hello": "Hello {name}!", "apple": { "one": "{count} apple", "other": "{count} apples" } };
|
|
207
|
+
|
|
208
|
+
I18n.t("hello", { name: "JS" }) => "Hello JS!"
|
|
209
|
+
I18n.t("apple", { count: 5 }) => "5 apples"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
or you can supply them as an argument to the `translate` function:
|
|
213
|
+
|
|
181
214
|
```javascript
|
|
182
|
-
|
|
183
|
-
"hello".t({ name: "JS" }) => "Hello JS!"
|
|
215
|
+
const translations = { "hello": "Hello {name}!", "apple": { "one": "{count} apple", "other": "{count} apples" } };
|
|
184
216
|
|
|
185
|
-
|
|
217
|
+
I18n.t("hello", { "name": "JS"}, translations) => "Hello JS!"
|
|
218
|
+
I18n.t("apple", { count: 5 }, translations) => "5 apples"
|
|
186
219
|
```
|
data/lib/install/l10n.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const I18n = {
|
|
2
|
+
translate: function(str, options, data) {
|
|
3
|
+
options = options || {};
|
|
4
|
+
var fallback = options['fallback'] || ('Translation missing: ' + str); // default is a JS reserved word
|
|
5
|
+
var translation, matches, method, match, interpolation_value;
|
|
6
|
+
var count = options['count'];
|
|
7
|
+
var keys = str.split('.');
|
|
8
|
+
var obj = data || this.translations;
|
|
9
|
+
|
|
10
|
+
var isString = function(value) {
|
|
11
|
+
return typeof value === 'string' || value instanceof String;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
var isObject = function(value) {
|
|
15
|
+
return value && typeof value === 'object' && value.constructor === Object;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
while(obj && keys.length) obj = obj[keys.shift()];
|
|
19
|
+
if (obj) {
|
|
20
|
+
if (isObject(obj) && count !== undefined) {
|
|
21
|
+
translation = obj[1 == count ? 'one' : 'other'];
|
|
22
|
+
} else {
|
|
23
|
+
translation = obj;
|
|
24
|
+
}
|
|
25
|
+
if (isString(translation) && (matches = translation.match(/{\w+?}/g))) {
|
|
26
|
+
while(match = matches.shift()) {
|
|
27
|
+
method = match.substr(1, match.length - 2);
|
|
28
|
+
interpolation_value = options[method];
|
|
29
|
+
if (interpolation_value == undefined) interpolation_value = ('undefined interpolation value: ' + method);
|
|
30
|
+
translation = translation.replace(new RegExp(match, 'g'), interpolation_value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return translation || fallback;
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
t: function(str, options, data) {
|
|
38
|
+
return this.translate(str, options, data);
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
translations: {}
|
|
42
|
+
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default I18n;
|
|
@@ -25,14 +25,16 @@ module L10n
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
module Formatting
|
|
28
|
-
|
|
29
|
-
def to_formatted_s(format = :rounded, options = nil)
|
|
28
|
+
def to_localized_formatted_s(format = :rounded, options = nil)
|
|
30
29
|
if options.nil? && format.is_a?(Hash)
|
|
31
30
|
options = format
|
|
32
31
|
format = :rounded
|
|
33
32
|
end
|
|
34
|
-
|
|
33
|
+
options ||= {}
|
|
34
|
+
options[:locale] ||= I18n.locale
|
|
35
|
+
to_fs(format, options)
|
|
35
36
|
end
|
|
37
|
+
alias_method :to_lfs, :to_localized_formatted_s
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
end
|
|
@@ -40,13 +42,7 @@ module L10n
|
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
Numeric.extend L10n::CoreExtensions::NumericExt::ClassMethods
|
|
43
|
-
|
|
44
|
-
# Ruby 2.4+ unifies Fixnum & Bignum into Integer.
|
|
45
|
-
numerics = 0.class == Integer ? [Integer] : [Fixnum, Bignum]
|
|
46
|
-
numerics << Float
|
|
47
|
-
numerics << Rational
|
|
48
|
-
|
|
49
|
-
numerics.each do |klass|
|
|
45
|
+
[Integer, Float, BigDecimal, Rational].each do |klass|
|
|
50
46
|
klass.include L10n::CoreExtensions::NumericExt::Localization
|
|
51
47
|
klass.prepend L10n::CoreExtensions::NumericExt::Formatting
|
|
52
48
|
end
|
data/lib/l10n/forms.rb
CHANGED
|
@@ -3,6 +3,7 @@ module L10n
|
|
|
3
3
|
module FormBuilder
|
|
4
4
|
|
|
5
5
|
def amount_field(field, options = {})
|
|
6
|
+
options = objectify_options(options)
|
|
6
7
|
format_options = options.extract!(:locale, :precision, :significant, :separator, :delimiter, :strip_insignificant_zeros)
|
|
7
8
|
value = L10n.number_to_rounded(object.public_send(field), format_options)
|
|
8
9
|
options[:value] = value
|
data/lib/l10n/i18n_extensions.rb
CHANGED
data/lib/l10n/railtie.rb
ADDED
data/lib/l10n/version.rb
CHANGED
data/lib/l10n.rb
CHANGED
|
@@ -6,19 +6,22 @@ require 'action_dispatch'
|
|
|
6
6
|
require 'active_support/all'
|
|
7
7
|
|
|
8
8
|
require_relative 'l10n/version'
|
|
9
|
-
require_relative 'l10n/core_extensions'
|
|
9
|
+
require_relative 'l10n/core_extensions/object_ext'
|
|
10
|
+
require_relative 'l10n/core_extensions/string_ext'
|
|
11
|
+
require_relative 'l10n/core_extensions/symbol_ext'
|
|
12
|
+
require_relative 'l10n/core_extensions/date_time_ext'
|
|
13
|
+
require_relative 'l10n/core_extensions/numeric_ext'
|
|
10
14
|
require_relative 'l10n/i18n_extensions'
|
|
11
|
-
require_relative 'l10n/inflections'
|
|
15
|
+
#require_relative 'l10n/inflections'
|
|
12
16
|
require_relative 'l10n/numeric_column_conversions'
|
|
13
17
|
require_relative 'l10n/column_translation'
|
|
14
18
|
require_relative 'l10n/translation_validator'
|
|
15
19
|
require_relative 'l10n/forms'
|
|
16
|
-
require_relative 'l10n/javascript_helper'
|
|
17
20
|
require_relative 'l10n/request'
|
|
18
|
-
require_relative 'l10n/
|
|
21
|
+
require_relative 'l10n/railtie'
|
|
19
22
|
|
|
20
|
-
files = Dir[File.join(File.dirname(__FILE__), 'locales/*.yml')]
|
|
21
|
-
I18n.load_path.concat(files)
|
|
23
|
+
#files = Dir[File.join(File.dirname(__FILE__), 'locales/*.yml')]
|
|
24
|
+
#I18n.load_path.concat(files)
|
|
22
25
|
|
|
23
26
|
module L10n
|
|
24
27
|
|
data/lib/tasks/l10n.rake
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: l10n
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthias Grosser
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-04-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: i18n
|
|
@@ -30,167 +30,108 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
34
|
-
- - "
|
|
33
|
+
version: 7.0.0
|
|
34
|
+
- - "<"
|
|
35
35
|
- !ruby/object:Gem::Version
|
|
36
|
-
version:
|
|
36
|
+
version: '7.1'
|
|
37
37
|
type: :runtime
|
|
38
38
|
prerelease: false
|
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
40
|
requirements:
|
|
41
41
|
- - ">="
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
|
-
version:
|
|
44
|
-
- - "
|
|
43
|
+
version: 7.0.0
|
|
44
|
+
- - "<"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
46
|
+
version: '7.1'
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: activesupport
|
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
54
|
-
- - "
|
|
53
|
+
version: 7.0.0
|
|
54
|
+
- - "<"
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
|
-
version:
|
|
56
|
+
version: '7.1'
|
|
57
57
|
type: :runtime
|
|
58
58
|
prerelease: false
|
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
60
|
requirements:
|
|
61
61
|
- - ">="
|
|
62
62
|
- !ruby/object:Gem::Version
|
|
63
|
-
version:
|
|
64
|
-
- - "
|
|
63
|
+
version: 7.0.0
|
|
64
|
+
- - "<"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
66
|
+
version: '7.1'
|
|
67
67
|
- !ruby/object:Gem::Dependency
|
|
68
68
|
name: actionpack
|
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
71
|
- - ">="
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
74
|
-
- - "
|
|
73
|
+
version: 7.0.0
|
|
74
|
+
- - "<"
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version:
|
|
76
|
+
version: '7.1'
|
|
77
77
|
type: :runtime
|
|
78
78
|
prerelease: false
|
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
|
81
81
|
- - ">="
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
|
-
version:
|
|
84
|
-
- - "
|
|
83
|
+
version: 7.0.0
|
|
84
|
+
- - "<"
|
|
85
85
|
- !ruby/object:Gem::Version
|
|
86
|
-
version:
|
|
86
|
+
version: '7.1'
|
|
87
87
|
- !ruby/object:Gem::Dependency
|
|
88
88
|
name: railties
|
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
|
90
90
|
requirements:
|
|
91
91
|
- - ">="
|
|
92
92
|
- !ruby/object:Gem::Version
|
|
93
|
-
version:
|
|
94
|
-
- - "
|
|
93
|
+
version: 7.0.0
|
|
94
|
+
- - "<"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: '7.1'
|
|
97
97
|
type: :runtime
|
|
98
98
|
prerelease: false
|
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
104
|
-
- - "
|
|
103
|
+
version: 7.0.0
|
|
104
|
+
- - "<"
|
|
105
105
|
- !ruby/object:Gem::Version
|
|
106
|
-
version:
|
|
107
|
-
- !ruby/object:Gem::Dependency
|
|
108
|
-
name: sqlite3
|
|
109
|
-
requirement: !ruby/object:Gem::Requirement
|
|
110
|
-
requirements:
|
|
111
|
-
- - ">="
|
|
112
|
-
- !ruby/object:Gem::Version
|
|
113
|
-
version: '0'
|
|
114
|
-
type: :development
|
|
115
|
-
prerelease: false
|
|
116
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
117
|
-
requirements:
|
|
118
|
-
- - ">="
|
|
119
|
-
- !ruby/object:Gem::Version
|
|
120
|
-
version: '0'
|
|
121
|
-
- !ruby/object:Gem::Dependency
|
|
122
|
-
name: byebug
|
|
123
|
-
requirement: !ruby/object:Gem::Requirement
|
|
124
|
-
requirements:
|
|
125
|
-
- - ">="
|
|
126
|
-
- !ruby/object:Gem::Version
|
|
127
|
-
version: '0'
|
|
128
|
-
type: :development
|
|
129
|
-
prerelease: false
|
|
130
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
131
|
-
requirements:
|
|
132
|
-
- - ">="
|
|
133
|
-
- !ruby/object:Gem::Version
|
|
134
|
-
version: '0'
|
|
135
|
-
- !ruby/object:Gem::Dependency
|
|
136
|
-
name: simplecov
|
|
137
|
-
requirement: !ruby/object:Gem::Requirement
|
|
138
|
-
requirements:
|
|
139
|
-
- - ">="
|
|
140
|
-
- !ruby/object:Gem::Version
|
|
141
|
-
version: '0'
|
|
142
|
-
type: :development
|
|
143
|
-
prerelease: false
|
|
144
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
145
|
-
requirements:
|
|
146
|
-
- - ">="
|
|
147
|
-
- !ruby/object:Gem::Version
|
|
148
|
-
version: '0'
|
|
149
|
-
- !ruby/object:Gem::Dependency
|
|
150
|
-
name: rake
|
|
151
|
-
requirement: !ruby/object:Gem::Requirement
|
|
152
|
-
requirements:
|
|
153
|
-
- - ">="
|
|
154
|
-
- !ruby/object:Gem::Version
|
|
155
|
-
version: 0.8.7
|
|
156
|
-
type: :development
|
|
157
|
-
prerelease: false
|
|
158
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
159
|
-
requirements:
|
|
160
|
-
- - ">="
|
|
161
|
-
- !ruby/object:Gem::Version
|
|
162
|
-
version: 0.8.7
|
|
106
|
+
version: '7.1'
|
|
163
107
|
description: Extensions for Rails I18n
|
|
164
108
|
email: mtgrosser@gmx.net
|
|
165
109
|
executables: []
|
|
166
110
|
extensions: []
|
|
167
111
|
extra_rdoc_files: []
|
|
168
112
|
files:
|
|
169
|
-
- CHANGELOG
|
|
170
|
-
-
|
|
113
|
+
- CHANGELOG.md
|
|
114
|
+
- LICENSE
|
|
171
115
|
- README.md
|
|
172
|
-
-
|
|
116
|
+
- lib/install/install.rb
|
|
117
|
+
- lib/install/l10n.js
|
|
173
118
|
- lib/l10n.rb
|
|
174
119
|
- lib/l10n/column_translation.rb
|
|
175
|
-
- lib/l10n/core_extensions.rb
|
|
176
|
-
- lib/l10n/core_extensions/big_decimal_ext.rb
|
|
177
120
|
- lib/l10n/core_extensions/date_time_ext.rb
|
|
178
121
|
- lib/l10n/core_extensions/numeric_ext.rb
|
|
179
122
|
- lib/l10n/core_extensions/object_ext.rb
|
|
180
123
|
- lib/l10n/core_extensions/string_ext.rb
|
|
181
124
|
- lib/l10n/core_extensions/symbol_ext.rb
|
|
182
|
-
- lib/l10n/engine.rb
|
|
183
125
|
- lib/l10n/forms.rb
|
|
184
126
|
- lib/l10n/i18n_extensions.rb
|
|
185
127
|
- lib/l10n/inflections.rb
|
|
186
|
-
- lib/l10n/javascript_helper.rb
|
|
187
128
|
- lib/l10n/numeric_column_conversions.rb
|
|
188
129
|
- lib/l10n/numericality_validator.rb
|
|
130
|
+
- lib/l10n/railtie.rb
|
|
189
131
|
- lib/l10n/request.rb
|
|
190
132
|
- lib/l10n/translation_validator.rb
|
|
191
133
|
- lib/l10n/version.rb
|
|
192
|
-
- lib/
|
|
193
|
-
- lib/locales/en.yml
|
|
134
|
+
- lib/tasks/l10n.rake
|
|
194
135
|
homepage: https://github.com/mtgrosser/l10n
|
|
195
136
|
licenses:
|
|
196
137
|
- MIT
|
|
@@ -210,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
210
151
|
- !ruby/object:Gem::Version
|
|
211
152
|
version: '0'
|
|
212
153
|
requirements: []
|
|
213
|
-
rubygems_version: 3.
|
|
154
|
+
rubygems_version: 3.1.4
|
|
214
155
|
signing_key:
|
|
215
156
|
specification_version: 4
|
|
216
157
|
summary: Make I18n roar again
|
data/CHANGELOG
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
var I18n = I18n || {};
|
|
2
|
-
|
|
3
|
-
I18n.translate = function(str, options) {
|
|
4
|
-
options = options || {};
|
|
5
|
-
var fallback = options['fallback'] || ('Translation missing: ' + str); // default is a JS reserved word
|
|
6
|
-
var translation, matches, method, match, interpolation_value;
|
|
7
|
-
var count = options['count'];
|
|
8
|
-
var keys = str.split('.');
|
|
9
|
-
var obj = this.translations;
|
|
10
|
-
|
|
11
|
-
var isString = function(value) {
|
|
12
|
-
return typeof value === 'string' || value instanceof String;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
var isObject = function(value) {
|
|
16
|
-
return value && typeof value === 'object' && value.constructor === Object;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
while(obj && keys.length) obj = obj[keys.shift()];
|
|
20
|
-
if (obj) {
|
|
21
|
-
if (isObject(obj) && count !== undefined) {
|
|
22
|
-
translation = obj[1 == count ? 'one' : 'other'];
|
|
23
|
-
} else {
|
|
24
|
-
translation = obj;
|
|
25
|
-
}
|
|
26
|
-
if (isString(translation) && (matches = translation.match(/{\w+?}/g))) {
|
|
27
|
-
while(match = matches.shift()) {
|
|
28
|
-
method = match.substr(1, match.length - 2);
|
|
29
|
-
interpolation_value = options[method];
|
|
30
|
-
if (interpolation_value == undefined) interpolation_value = ('undefined interpolation value: ' + method);
|
|
31
|
-
translation = translation.replace(new RegExp(match, 'g'), interpolation_value);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return translation || fallback;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
I18n.t = function(str, options) {
|
|
39
|
-
return this.translate(str, options);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
String.prototype.t = function(options){ return(I18n.translate(this, options)); }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module L10n
|
|
2
|
-
module CoreExtensions
|
|
3
|
-
module BigDecimalExt
|
|
4
|
-
|
|
5
|
-
def to_localized_s
|
|
6
|
-
Numeric.localize(self)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def to_formatted_s(*args)
|
|
10
|
-
L10n.number_to_rounded(self, *args)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
BigDecimal.prepend L10n::CoreExtensions::BigDecimalExt
|
data/lib/l10n/core_extensions.rb
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
require 'l10n/core_extensions/object_ext'
|
|
2
|
-
require 'l10n/core_extensions/string_ext'
|
|
3
|
-
require 'l10n/core_extensions/symbol_ext'
|
|
4
|
-
require 'l10n/core_extensions/date_time_ext'
|
|
5
|
-
require 'l10n/core_extensions/numeric_ext'
|
|
6
|
-
require 'l10n/core_extensions/big_decimal_ext'
|
data/lib/l10n/engine.rb
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module L10n
|
|
2
|
-
module JavaScriptHelper
|
|
3
|
-
|
|
4
|
-
def i18n_script_tag
|
|
5
|
-
javascript_tag %<
|
|
6
|
-
var I18n = I18n || {};
|
|
7
|
-
|
|
8
|
-
I18n.locale = function() {
|
|
9
|
-
return("#{I18n.locale}");
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
I18n.translations = #{I18n.t(:javascript).to_json};
|
|
13
|
-
>
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
end
|
|
17
|
-
end
|
data/lib/locales/de.yml
DELETED