hanami-i18n 0.1.1 → 0.1.2
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/.byebug_history +170 -0
- data/.tool-versions +1 -0
- data/Appraisals +7 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +66 -83
- data/README.md +40 -50
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/hanami_1.3.gemfile +10 -0
- data/gemfiles/hanami_1.3.gemfile.lock +201 -0
- data/hanami-i18n.gemspec +9 -7
- data/lib/hanami/i18n.rb +4 -7
- data/lib/hanami/i18n/helpers/form.rb +40 -0
- data/lib/hanami/i18n/validations.rb +45 -0
- data/lib/hanami/i18n/version.rb +1 -1
- data/templates/locale.rb +2 -0
- metadata +70 -40
- data/lib/hanami/i18n/dry/validation/result.rb +0 -12
- data/lib/hanami/i18n/entity.rb +0 -41
- data/lib/hanami/i18n/form.rb +0 -15
- data/lib/hanami/i18n/helpers/form_helper/form_builder.rb +0 -14
- data/lib/hanami/i18n/validation.rb +0 -29
- data/lib/hanami/i18n/view.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02fb431b3963d4308fffc13818866cb21f3e716fd97de6f189a29ba5dfccf8f1
|
4
|
+
data.tar.gz: f86ff8f554804468dabc7b2809fc98792990d87ed16f390e35171f35937e9d74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 054aa463996ea4d9d2c23113f1a7e4b1f54d4da0e53afb9d953280de740d0611c944e62293fe1509e189a2df6dd4234d39be630db0c842c901ef0fd99c3d3aa1
|
7
|
+
data.tar.gz: 694fe6e8daf80f97a3c8fc27b34dcb93e07594362ed3d6711519714509313d40da83d758a798d255628e5079c72b024a0821517f02d41ddc801901d25e1fc081
|
data/.byebug_history
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
continue
|
2
|
+
validator.validate.errors(full: true)
|
3
|
+
validator.validate.errors
|
4
|
+
validator.validate
|
5
|
+
continue
|
6
|
+
validator.validate.errors(full: true)
|
7
|
+
validator.validate.errors
|
8
|
+
validator.validate
|
9
|
+
validator
|
10
|
+
continue
|
11
|
+
validator.validate
|
12
|
+
validator
|
13
|
+
continue
|
14
|
+
n
|
15
|
+
s
|
16
|
+
validator.validate.errors(full: true)
|
17
|
+
validator.validate.errors
|
18
|
+
continue
|
19
|
+
validator.validate.errors(full: true)
|
20
|
+
validator.validate.errors
|
21
|
+
continue
|
22
|
+
validator.validate.errors
|
23
|
+
validator.validate
|
24
|
+
continue
|
25
|
+
validator.validate.errors(full: true)
|
26
|
+
continue
|
27
|
+
self
|
28
|
+
messages.rule('テスト')
|
29
|
+
rule
|
30
|
+
messages.rule(rule, opts)
|
31
|
+
messages.rule
|
32
|
+
messages
|
33
|
+
n
|
34
|
+
full?
|
35
|
+
n
|
36
|
+
template
|
37
|
+
teampltea
|
38
|
+
teamplate
|
39
|
+
template
|
40
|
+
tokens
|
41
|
+
rule
|
42
|
+
tokens
|
43
|
+
template
|
44
|
+
text
|
45
|
+
s
|
46
|
+
message_text(rule, template, tokens, options)
|
47
|
+
options
|
48
|
+
tokens
|
49
|
+
template
|
50
|
+
rule
|
51
|
+
n
|
52
|
+
template
|
53
|
+
n
|
54
|
+
path
|
55
|
+
rule
|
56
|
+
n
|
57
|
+
options.update(tokens)
|
58
|
+
n
|
59
|
+
base_opts.update(lookup_options(arg_vals: arg_vals, input: input))
|
60
|
+
input
|
61
|
+
n
|
62
|
+
message_tokens(args)
|
63
|
+
n
|
64
|
+
val
|
65
|
+
arg_vals
|
66
|
+
n
|
67
|
+
args.map(&:last)
|
68
|
+
args
|
69
|
+
predicate
|
70
|
+
n
|
71
|
+
s
|
72
|
+
n
|
73
|
+
s
|
74
|
+
merge(other.update(path: [*path, *other[:path]]))
|
75
|
+
s
|
76
|
+
other
|
77
|
+
oTHer
|
78
|
+
rule
|
79
|
+
n
|
80
|
+
s
|
81
|
+
args
|
82
|
+
node[1]
|
83
|
+
node
|
84
|
+
s
|
85
|
+
n
|
86
|
+
s
|
87
|
+
merge(other.update(path: [*path, *other[:path]]))
|
88
|
+
s
|
89
|
+
visit(other, opts.(rule: rule))
|
90
|
+
n
|
91
|
+
s
|
92
|
+
n
|
93
|
+
s
|
94
|
+
n
|
95
|
+
s
|
96
|
+
n
|
97
|
+
s
|
98
|
+
continue
|
99
|
+
left
|
100
|
+
n
|
101
|
+
right
|
102
|
+
left
|
103
|
+
s
|
104
|
+
node
|
105
|
+
self.dump
|
106
|
+
self
|
107
|
+
node
|
108
|
+
n
|
109
|
+
merge(other.update(path: [*path, *other[:path]]))
|
110
|
+
other
|
111
|
+
s
|
112
|
+
visit(other, opts.(rule: rule))
|
113
|
+
other
|
114
|
+
rule
|
115
|
+
n
|
116
|
+
node
|
117
|
+
s
|
118
|
+
node[0]
|
119
|
+
args
|
120
|
+
node
|
121
|
+
s
|
122
|
+
n
|
123
|
+
s
|
124
|
+
n
|
125
|
+
s
|
126
|
+
n
|
127
|
+
s
|
128
|
+
continue
|
129
|
+
messages.flatten
|
130
|
+
messages
|
131
|
+
n
|
132
|
+
__send__(:"visit_#{node[0]}", node[1], *args)
|
133
|
+
s
|
134
|
+
ast
|
135
|
+
MessageSet[ast.map { |node| visit(node) }, failures: options.fetch(:failures, true)].dump
|
136
|
+
MessageSet[ast.map { |node| visit(node) }, failures: options.fetch(:failures, true)]
|
137
|
+
n
|
138
|
+
results.map(&:to_ast)
|
139
|
+
n
|
140
|
+
self
|
141
|
+
options
|
142
|
+
messages
|
143
|
+
s
|
144
|
+
self
|
145
|
+
n
|
146
|
+
s
|
147
|
+
message_compiler.with(options).(result_ast).dump
|
148
|
+
message_compiler.with(options).(result_ast)
|
149
|
+
s
|
150
|
+
message_set(options.merge(hints: false)).dump
|
151
|
+
message_set(options.merge(hints: false))
|
152
|
+
n
|
153
|
+
s
|
154
|
+
continue
|
155
|
+
n
|
156
|
+
ast
|
157
|
+
n
|
158
|
+
results.map(&:to_ast)
|
159
|
+
results
|
160
|
+
n
|
161
|
+
s
|
162
|
+
messages
|
163
|
+
self
|
164
|
+
n
|
165
|
+
new_options
|
166
|
+
s
|
167
|
+
options
|
168
|
+
n
|
169
|
+
step
|
170
|
+
h
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 2.6.6
|
data/Appraisals
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,132 +1,115 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hanami-i18n (0.1.
|
4
|
+
hanami-i18n (0.1.2)
|
5
5
|
dry-inflector
|
6
|
-
|
7
|
-
hanami-
|
8
|
-
hanami-model (~> 1.2)
|
6
|
+
hanami-helpers
|
7
|
+
hanami-validations
|
9
8
|
i18n
|
10
9
|
|
11
10
|
GEM
|
12
11
|
remote: https://rubygems.org/
|
13
12
|
specs:
|
13
|
+
appraisal (2.2.0)
|
14
|
+
bundler
|
15
|
+
rake
|
16
|
+
thor (>= 0.14.0)
|
14
17
|
ast (2.4.0)
|
15
|
-
|
18
|
+
byebug (11.1.3)
|
19
|
+
coderay (1.1.2)
|
20
|
+
concurrent-ruby (1.1.6)
|
16
21
|
diff-lcs (1.3)
|
17
|
-
dry-configurable (0.
|
22
|
+
dry-configurable (0.11.5)
|
18
23
|
concurrent-ruby (~> 1.0)
|
19
|
-
|
24
|
+
dry-core (~> 0.4, >= 0.4.7)
|
25
|
+
dry-equalizer (~> 0.2)
|
26
|
+
dry-container (0.7.2)
|
20
27
|
concurrent-ruby (~> 1.0)
|
21
28
|
dry-configurable (~> 0.1, >= 0.1.3)
|
22
|
-
dry-core (0.4.
|
29
|
+
dry-core (0.4.9)
|
23
30
|
concurrent-ruby (~> 1.0)
|
24
|
-
dry-equalizer (0.
|
25
|
-
dry-inflector (0.
|
26
|
-
dry-initializer (1.4.1)
|
31
|
+
dry-equalizer (0.3.0)
|
32
|
+
dry-inflector (0.2.0)
|
27
33
|
dry-logic (0.4.2)
|
28
34
|
dry-container (~> 0.2, >= 0.2.6)
|
29
35
|
dry-core (~> 0.2)
|
30
36
|
dry-equalizer (~> 0.2)
|
31
|
-
dry-
|
32
|
-
dry-configurable (~> 0.1)
|
33
|
-
dry-core (~> 0.3)
|
34
|
-
dry-equalizer (~> 0.2)
|
35
|
-
dry-types (~> 0.9, >= 0.9.0)
|
36
|
-
ice_nine (~> 0.11)
|
37
|
-
dry-types (0.11.1)
|
37
|
+
dry-types (0.12.3)
|
38
38
|
concurrent-ruby (~> 1.0)
|
39
39
|
dry-configurable (~> 0.1)
|
40
40
|
dry-container (~> 0.3)
|
41
41
|
dry-core (~> 0.2, >= 0.2.1)
|
42
42
|
dry-equalizer (~> 0.2)
|
43
|
-
dry-logic (~> 0.4, >= 0.4.
|
43
|
+
dry-logic (~> 0.4, >= 0.4.2)
|
44
44
|
inflecto (~> 0.0.0, >= 0.0.2)
|
45
|
-
dry-validation (0.11.
|
45
|
+
dry-validation (0.11.2)
|
46
46
|
concurrent-ruby (~> 1.0)
|
47
47
|
dry-configurable (~> 0.1, >= 0.1.3)
|
48
48
|
dry-core (~> 0.2, >= 0.2.1)
|
49
49
|
dry-equalizer (~> 0.2)
|
50
|
-
dry-logic (~> 0.4
|
51
|
-
dry-types (~> 0.
|
52
|
-
hanami-helpers (1.
|
53
|
-
hanami-utils (~> 1.
|
54
|
-
hanami-
|
55
|
-
concurrent-ruby (~> 1.0)
|
56
|
-
dry-types (~> 0.11.0)
|
57
|
-
hanami-utils (~> 1.2)
|
58
|
-
rom (~> 3.3, >= 3.3.3)
|
59
|
-
rom-repository (~> 1.4)
|
60
|
-
rom-sql (~> 1.3, >= 1.3.5)
|
61
|
-
hanami-utils (1.2.0)
|
50
|
+
dry-logic (~> 0.4.2)
|
51
|
+
dry-types (~> 0.12.0)
|
52
|
+
hanami-helpers (1.3.3)
|
53
|
+
hanami-utils (~> 1.3)
|
54
|
+
hanami-utils (1.3.6)
|
62
55
|
concurrent-ruby (~> 1.0)
|
63
56
|
transproc (~> 1.0)
|
64
|
-
|
57
|
+
hanami-validations (1.3.6)
|
58
|
+
dry-logic (~> 0.4.2, < 0.5)
|
59
|
+
dry-validation (~> 0.11, < 0.12)
|
60
|
+
hanami-utils (~> 1.3)
|
61
|
+
i18n (1.8.2)
|
65
62
|
concurrent-ruby (~> 1.0)
|
66
|
-
ice_nine (0.11.2)
|
67
63
|
inflecto (0.0.2)
|
68
|
-
|
69
|
-
|
64
|
+
jaro_winkler (1.5.4)
|
65
|
+
method_source (1.0.0)
|
66
|
+
parallel (1.19.1)
|
67
|
+
parser (2.7.1.1)
|
70
68
|
ast (~> 2.4.0)
|
71
|
-
|
69
|
+
pry (0.13.1)
|
70
|
+
coderay (~> 1.1)
|
71
|
+
method_source (~> 1.0)
|
72
72
|
rainbow (3.0.0)
|
73
|
-
rake (
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
dry-core (~> 0.2, >= 0.2.3)
|
83
|
-
dry-equalizer (~> 0.2)
|
84
|
-
transproc (~> 1.0)
|
85
|
-
rom-repository (1.4.0)
|
86
|
-
dry-core (~> 0.3, >= 0.3.1)
|
87
|
-
dry-struct (~> 0.3)
|
88
|
-
rom (~> 3.3)
|
89
|
-
rom-mapper (~> 0.5)
|
90
|
-
rom-sql (1.3.5)
|
91
|
-
dry-core (~> 0.3)
|
92
|
-
dry-equalizer (~> 0.2)
|
93
|
-
dry-types (~> 0.11.0)
|
94
|
-
rom (~> 3.2, >= 3.2.2)
|
95
|
-
sequel (~> 4.43)
|
96
|
-
rspec (3.7.0)
|
97
|
-
rspec-core (~> 3.7.0)
|
98
|
-
rspec-expectations (~> 3.7.0)
|
99
|
-
rspec-mocks (~> 3.7.0)
|
100
|
-
rspec-core (3.7.1)
|
101
|
-
rspec-support (~> 3.7.0)
|
102
|
-
rspec-expectations (3.7.0)
|
73
|
+
rake (13.0.1)
|
74
|
+
rexml (3.2.4)
|
75
|
+
rspec (3.9.0)
|
76
|
+
rspec-core (~> 3.9.0)
|
77
|
+
rspec-expectations (~> 3.9.0)
|
78
|
+
rspec-mocks (~> 3.9.0)
|
79
|
+
rspec-core (3.9.1)
|
80
|
+
rspec-support (~> 3.9.1)
|
81
|
+
rspec-expectations (3.9.1)
|
103
82
|
diff-lcs (>= 1.2.0, < 2.0)
|
104
|
-
rspec-support (~> 3.
|
105
|
-
rspec-mocks (3.
|
83
|
+
rspec-support (~> 3.9.0)
|
84
|
+
rspec-mocks (3.9.1)
|
106
85
|
diff-lcs (>= 1.2.0, < 2.0)
|
107
|
-
rspec-support (~> 3.
|
108
|
-
rspec-support (3.
|
109
|
-
rubocop (0.
|
86
|
+
rspec-support (~> 3.9.0)
|
87
|
+
rspec-support (3.9.2)
|
88
|
+
rubocop (0.82.0)
|
89
|
+
jaro_winkler (~> 1.5.1)
|
110
90
|
parallel (~> 1.10)
|
111
|
-
parser (>= 2.
|
112
|
-
powerpack (~> 0.1)
|
91
|
+
parser (>= 2.7.0.1)
|
113
92
|
rainbow (>= 2.2.2, < 4.0)
|
93
|
+
rexml
|
114
94
|
ruby-progressbar (~> 1.7)
|
115
|
-
unicode-display_width (
|
116
|
-
ruby-progressbar (1.
|
117
|
-
|
118
|
-
transproc (1.
|
119
|
-
unicode-display_width (1.
|
95
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
96
|
+
ruby-progressbar (1.10.1)
|
97
|
+
thor (1.0.1)
|
98
|
+
transproc (1.1.1)
|
99
|
+
unicode-display_width (1.7.0)
|
120
100
|
|
121
101
|
PLATFORMS
|
122
102
|
ruby
|
123
103
|
|
124
104
|
DEPENDENCIES
|
125
|
-
|
105
|
+
appraisal
|
106
|
+
bundler
|
107
|
+
byebug
|
126
108
|
hanami-i18n!
|
127
|
-
|
128
|
-
|
109
|
+
pry
|
110
|
+
rake
|
111
|
+
rspec
|
129
112
|
rubocop
|
130
113
|
|
131
114
|
BUNDLED WITH
|
132
|
-
1.
|
115
|
+
2.1.4
|
data/README.md
CHANGED
@@ -1,83 +1,73 @@
|
|
1
1
|
# Hanami::I18n
|
2
2
|
|
3
|
-
|
3
|
+
It is a gem that integrates Hanami and i18n.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Getting start
|
6
6
|
|
7
|
-
Add
|
7
|
+
Add Gemfile
|
8
8
|
|
9
9
|
```ruby
|
10
10
|
gem 'hanami-i18n'
|
11
11
|
```
|
12
12
|
|
13
|
-
|
13
|
+
Next, put the initialization file of I18n in `config/locale.rb`.
|
14
|
+
Then place the locale file in any location.
|
15
|
+
*Important: `config/initalizers` will not work.*
|
14
16
|
|
15
|
-
|
17
|
+
例:
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
```ruby
|
20
|
+
# config/locale.rb
|
21
|
+
I18n.load_path << Dir[File.expand_path("config/locales") + "/*.yml"]
|
22
|
+
I18n.default_locale = :en # (note that `en` is already the default!)
|
23
|
+
```
|
22
24
|
|
23
|
-
### Prepare locales file
|
24
25
|
|
25
|
-
|
26
|
+
```yaml
|
27
|
+
# config/locales/en.yml
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
-
model:
|
30
|
-
entities:
|
31
|
-
user: ユーザー
|
32
|
-
book: 本
|
29
|
+
en:
|
30
|
+
models:
|
33
31
|
attributes:
|
34
32
|
user:
|
35
|
-
name:
|
36
|
-
email:
|
37
|
-
book:
|
38
|
-
title: タイトル
|
39
|
-
auther: 著者
|
33
|
+
name: "My name"
|
34
|
+
email: "My E-mail"
|
40
35
|
|
36
|
+
errors:
|
37
|
+
filled?: "MUST be filled!"
|
41
38
|
```
|
42
39
|
|
43
|
-
|
40
|
+
Then it can be used as follows.
|
44
41
|
|
45
|
-
|
42
|
+
### form
|
46
43
|
|
47
44
|
```ruby
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
I18n.load_path += Dir[Hanami.root.join('config', 'locale', '*.{rb,yml}')]
|
53
|
-
|
45
|
+
form_for :user, routes.users_path do
|
46
|
+
label :name
|
47
|
+
label :email
|
48
|
+
end
|
54
49
|
```
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
```html
|
52
|
+
<form>
|
53
|
+
<label>My name</label>
|
54
|
+
<label>My E-mail</label>
|
55
|
+
</form>
|
56
|
+
```
|
59
57
|
|
60
|
-
|
58
|
+
### validation
|
61
59
|
|
62
|
-
```
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
label :email # => メールアドレス
|
69
|
-
text_field :email
|
60
|
+
```ruby
|
61
|
+
params do
|
62
|
+
required(:user).schema do
|
63
|
+
required(:name).filled(:str?)
|
64
|
+
required(:email).filled(:str?)
|
70
65
|
end
|
71
|
-
|
72
|
-
```
|
66
|
+
end
|
73
67
|
|
74
|
-
## View
|
75
68
|
|
76
|
-
```rhtml
|
77
|
-
<%= Book.t %> <% # => 本 %>
|
78
|
-
<%= Book.t(:title) %> <% # => タイトル %>
|
79
|
-
<%= Book.t(:auther) %> <% # => 著者 %>
|
80
69
|
|
70
|
+
params.errors(full: true) # => { user: {:email=>["My name MUST be filled!"], :post=>{:title=>["My E-mail MUST be filled!"]}} }
|
81
71
|
```
|
82
72
|
|
83
73
|
## Development
|
@@ -0,0 +1,201 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
hanami-i18n (0.1.1)
|
5
|
+
dry-inflector
|
6
|
+
hanami-helpers
|
7
|
+
hanami-validations
|
8
|
+
i18n
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
appraisal (2.2.0)
|
14
|
+
bundler
|
15
|
+
rake
|
16
|
+
thor (>= 0.14.0)
|
17
|
+
ast (2.4.0)
|
18
|
+
byebug (11.1.3)
|
19
|
+
coderay (1.1.2)
|
20
|
+
concurrent-ruby (1.1.6)
|
21
|
+
diff-lcs (1.3)
|
22
|
+
dry-configurable (0.11.5)
|
23
|
+
concurrent-ruby (~> 1.0)
|
24
|
+
dry-core (~> 0.4, >= 0.4.7)
|
25
|
+
dry-equalizer (~> 0.2)
|
26
|
+
dry-container (0.7.2)
|
27
|
+
concurrent-ruby (~> 1.0)
|
28
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
29
|
+
dry-core (0.4.9)
|
30
|
+
concurrent-ruby (~> 1.0)
|
31
|
+
dry-equalizer (0.3.0)
|
32
|
+
dry-inflector (0.2.0)
|
33
|
+
dry-initializer (1.4.1)
|
34
|
+
dry-logic (0.4.2)
|
35
|
+
dry-container (~> 0.2, >= 0.2.6)
|
36
|
+
dry-core (~> 0.2)
|
37
|
+
dry-equalizer (~> 0.2)
|
38
|
+
dry-struct (0.3.1)
|
39
|
+
dry-configurable (~> 0.1)
|
40
|
+
dry-core (~> 0.3)
|
41
|
+
dry-equalizer (~> 0.2)
|
42
|
+
dry-types (~> 0.9, >= 0.9.0)
|
43
|
+
ice_nine (~> 0.11)
|
44
|
+
dry-types (0.11.1)
|
45
|
+
concurrent-ruby (~> 1.0)
|
46
|
+
dry-configurable (~> 0.1)
|
47
|
+
dry-container (~> 0.3)
|
48
|
+
dry-core (~> 0.2, >= 0.2.1)
|
49
|
+
dry-equalizer (~> 0.2)
|
50
|
+
dry-logic (~> 0.4, >= 0.4.0)
|
51
|
+
inflecto (~> 0.0.0, >= 0.0.2)
|
52
|
+
dry-validation (0.11.0)
|
53
|
+
concurrent-ruby (~> 1.0)
|
54
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
55
|
+
dry-core (~> 0.2, >= 0.2.1)
|
56
|
+
dry-equalizer (~> 0.2)
|
57
|
+
dry-logic (~> 0.4, >= 0.4.0)
|
58
|
+
dry-types (~> 0.11.0)
|
59
|
+
hanami (1.3.3)
|
60
|
+
bundler (>= 1.6, < 3)
|
61
|
+
concurrent-ruby (~> 1.0)
|
62
|
+
hanami-assets (~> 1.3)
|
63
|
+
hanami-cli (~> 0.3)
|
64
|
+
hanami-controller (~> 1.3)
|
65
|
+
hanami-helpers (~> 1.3)
|
66
|
+
hanami-mailer (~> 1.3)
|
67
|
+
hanami-router (~> 1.3)
|
68
|
+
hanami-utils (~> 1.3)
|
69
|
+
hanami-validations (>= 1.3, < 3)
|
70
|
+
hanami-view (~> 1.3)
|
71
|
+
hanami-assets (1.3.4)
|
72
|
+
hanami-helpers (~> 1.3)
|
73
|
+
hanami-utils (~> 1.3)
|
74
|
+
tilt (~> 2.0, >= 2.0.2)
|
75
|
+
hanami-cli (0.3.1)
|
76
|
+
concurrent-ruby (~> 1.0)
|
77
|
+
hanami-utils (~> 1.3)
|
78
|
+
hanami-controller (1.3.3)
|
79
|
+
hanami-utils (~> 1.3)
|
80
|
+
rack (~> 2.0)
|
81
|
+
hanami-helpers (1.3.3)
|
82
|
+
hanami-utils (~> 1.3)
|
83
|
+
hanami-mailer (1.3.2)
|
84
|
+
hanami-utils (~> 1.3)
|
85
|
+
mail (~> 2.6)
|
86
|
+
tilt (~> 2.0, >= 2.0.1)
|
87
|
+
hanami-model (1.3.2)
|
88
|
+
concurrent-ruby (~> 1.0)
|
89
|
+
dry-logic (~> 0.4.2, < 0.5)
|
90
|
+
dry-types (~> 0.11.0)
|
91
|
+
hanami-utils (~> 1.3)
|
92
|
+
rom (~> 3.3, >= 3.3.3)
|
93
|
+
rom-repository (~> 1.4)
|
94
|
+
rom-sql (~> 1.3, >= 1.3.5)
|
95
|
+
hanami-router (1.3.2)
|
96
|
+
hanami-utils (~> 1.3)
|
97
|
+
http_router (= 0.11.2)
|
98
|
+
rack (~> 2.0)
|
99
|
+
hanami-utils (1.3.6)
|
100
|
+
concurrent-ruby (~> 1.0)
|
101
|
+
transproc (~> 1.0)
|
102
|
+
hanami-validations (1.3.6)
|
103
|
+
dry-logic (~> 0.4.2, < 0.5)
|
104
|
+
dry-validation (~> 0.11, < 0.12)
|
105
|
+
hanami-utils (~> 1.3)
|
106
|
+
hanami-view (1.3.3)
|
107
|
+
hanami-utils (~> 1.3)
|
108
|
+
tilt (~> 2.0, >= 2.0.1)
|
109
|
+
http_router (0.11.2)
|
110
|
+
rack (>= 1.0.0)
|
111
|
+
url_mount (~> 0.2.1)
|
112
|
+
i18n (1.8.2)
|
113
|
+
concurrent-ruby (~> 1.0)
|
114
|
+
ice_nine (0.11.2)
|
115
|
+
inflecto (0.0.2)
|
116
|
+
jaro_winkler (1.5.4)
|
117
|
+
mail (2.7.1)
|
118
|
+
mini_mime (>= 0.1.1)
|
119
|
+
method_source (1.0.0)
|
120
|
+
mini_mime (1.0.2)
|
121
|
+
parallel (1.19.1)
|
122
|
+
parser (2.7.1.1)
|
123
|
+
ast (~> 2.4.0)
|
124
|
+
pry (0.13.1)
|
125
|
+
coderay (~> 1.1)
|
126
|
+
method_source (~> 1.0)
|
127
|
+
rack (2.2.2)
|
128
|
+
rainbow (3.0.0)
|
129
|
+
rake (13.0.1)
|
130
|
+
rexml (3.2.4)
|
131
|
+
rom (3.3.3)
|
132
|
+
concurrent-ruby (~> 1.0)
|
133
|
+
dry-core (~> 0.3)
|
134
|
+
dry-equalizer (~> 0.2)
|
135
|
+
dry-initializer (~> 1.3)
|
136
|
+
dry-types (~> 0.9, >= 0.9.4)
|
137
|
+
rom-mapper (~> 0.5, >= 0.5.1)
|
138
|
+
rom-mapper (0.5.1)
|
139
|
+
dry-core (~> 0.2, >= 0.2.3)
|
140
|
+
dry-equalizer (~> 0.2)
|
141
|
+
transproc (~> 1.0)
|
142
|
+
rom-repository (1.4.0)
|
143
|
+
dry-core (~> 0.3, >= 0.3.1)
|
144
|
+
dry-struct (~> 0.3)
|
145
|
+
rom (~> 3.3)
|
146
|
+
rom-mapper (~> 0.5)
|
147
|
+
rom-sql (1.3.5)
|
148
|
+
dry-core (~> 0.3)
|
149
|
+
dry-equalizer (~> 0.2)
|
150
|
+
dry-types (~> 0.11.0)
|
151
|
+
rom (~> 3.2, >= 3.2.2)
|
152
|
+
sequel (~> 4.43)
|
153
|
+
rspec (3.9.0)
|
154
|
+
rspec-core (~> 3.9.0)
|
155
|
+
rspec-expectations (~> 3.9.0)
|
156
|
+
rspec-mocks (~> 3.9.0)
|
157
|
+
rspec-core (3.9.1)
|
158
|
+
rspec-support (~> 3.9.1)
|
159
|
+
rspec-expectations (3.9.1)
|
160
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
161
|
+
rspec-support (~> 3.9.0)
|
162
|
+
rspec-mocks (3.9.1)
|
163
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
164
|
+
rspec-support (~> 3.9.0)
|
165
|
+
rspec-support (3.9.2)
|
166
|
+
rubocop (0.82.0)
|
167
|
+
jaro_winkler (~> 1.5.1)
|
168
|
+
parallel (~> 1.10)
|
169
|
+
parser (>= 2.7.0.1)
|
170
|
+
rainbow (>= 2.2.2, < 4.0)
|
171
|
+
rexml
|
172
|
+
ruby-progressbar (~> 1.7)
|
173
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
174
|
+
ruby-progressbar (1.10.1)
|
175
|
+
sequel (4.49.0)
|
176
|
+
sqlite3 (1.4.2)
|
177
|
+
thor (1.0.1)
|
178
|
+
tilt (2.0.10)
|
179
|
+
transproc (1.1.1)
|
180
|
+
unicode-display_width (1.7.0)
|
181
|
+
url_mount (0.2.1)
|
182
|
+
rack
|
183
|
+
|
184
|
+
PLATFORMS
|
185
|
+
ruby
|
186
|
+
|
187
|
+
DEPENDENCIES
|
188
|
+
appraisal
|
189
|
+
bundler
|
190
|
+
byebug
|
191
|
+
hanami (~> 1.3)
|
192
|
+
hanami-i18n!
|
193
|
+
hanami-model (~> 1.3)
|
194
|
+
pry
|
195
|
+
rake
|
196
|
+
rspec
|
197
|
+
rubocop
|
198
|
+
sqlite3
|
199
|
+
|
200
|
+
BUNDLED WITH
|
201
|
+
2.1.4
|
data/hanami-i18n.gemspec
CHANGED
@@ -31,14 +31,16 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ['lib']
|
33
33
|
|
34
|
-
spec.add_dependency 'dry-validation'
|
35
|
-
spec.add_dependency 'dry-inflector'
|
36
|
-
spec.add_dependency 'hanami-helpers', '~> 1.2'
|
37
|
-
spec.add_dependency 'hanami-model', '~> 1.2'
|
38
34
|
spec.add_dependency 'i18n'
|
35
|
+
spec.add_dependency 'hanami-helpers'
|
36
|
+
spec.add_dependency 'hanami-validations'
|
37
|
+
spec.add_dependency 'dry-inflector'
|
39
38
|
|
40
|
-
spec.add_development_dependency 'bundler'
|
41
|
-
spec.add_development_dependency 'rake'
|
42
|
-
spec.add_development_dependency 'rspec'
|
39
|
+
spec.add_development_dependency 'bundler'
|
40
|
+
spec.add_development_dependency 'rake'
|
41
|
+
spec.add_development_dependency 'rspec'
|
43
42
|
spec.add_development_dependency 'rubocop'
|
43
|
+
spec.add_development_dependency "appraisal"
|
44
|
+
spec.add_development_dependency "pry"
|
45
|
+
spec.add_development_dependency "byebug"
|
44
46
|
end
|
data/lib/hanami/i18n.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'hanami/i18n/version'
|
4
|
-
require 'hanami/i18n/
|
5
|
-
require 'hanami/i18n/
|
6
|
-
require 'hanami/i18n/view'
|
4
|
+
require 'hanami/i18n/helpers/form'
|
5
|
+
require 'hanami/i18n/validations'
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
include Hanami::I18n::View
|
11
|
-
end
|
7
|
+
if Hanami.respond_to?(:root)
|
8
|
+
require Hanami.root.join('config/locale.rb')
|
12
9
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'dry/inflector'
|
2
|
+
|
3
|
+
module Hanami
|
4
|
+
module I18n
|
5
|
+
module Form
|
6
|
+
def self.prepended(_klass)
|
7
|
+
private :_i18n_content, :_model_name
|
8
|
+
end
|
9
|
+
|
10
|
+
def label(content = nil, **attributes, &blk)
|
11
|
+
attributes[:for] ||= content
|
12
|
+
super(_i18n_content(content), **attributes, &blk)
|
13
|
+
end
|
14
|
+
|
15
|
+
def _i18n_content(content)
|
16
|
+
::I18n.t("models.attributes.#{_model_name}.#{content}",
|
17
|
+
default: nil) || content
|
18
|
+
end
|
19
|
+
|
20
|
+
def _model_name
|
21
|
+
model = @name.to_s
|
22
|
+
.gsub('[', '.')
|
23
|
+
.delete(']')
|
24
|
+
.split('.')
|
25
|
+
.last
|
26
|
+
Dry::Inflector.new.singularize(model)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Hanami
|
33
|
+
module Helpers
|
34
|
+
module FormHelper
|
35
|
+
class FormBuilder
|
36
|
+
prepend Hanami::I18n::Form
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Hanami
|
2
|
+
module I18n
|
3
|
+
module Validations
|
4
|
+
module Settings
|
5
|
+
def self.prepended(klass)
|
6
|
+
klass.singleton_class.alias_method :_included, :included
|
7
|
+
klass.singleton_class.prepend ClassMethods
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def included(klass)
|
12
|
+
_included(klass)
|
13
|
+
|
14
|
+
klass.messages :i18n
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module MessageCompiler
|
20
|
+
def message_text(rule, template, tokens, opts)
|
21
|
+
model_name = (opts.path - [rule]).last
|
22
|
+
rule = ::I18n.t("models.attributes.#{model_name}.#{rule}", default: nil) ||
|
23
|
+
::I18n.t("models.entities.#{rule}", default: nil) ||
|
24
|
+
rule
|
25
|
+
|
26
|
+
super(rule, template, tokens, opts)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module Hanami
|
34
|
+
module Validations
|
35
|
+
prepend Hanami::I18n::Validations::Settings
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module Dry
|
40
|
+
module Validation
|
41
|
+
class MessageCompiler
|
42
|
+
prepend Hanami::I18n::Validations::MessageCompiler
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/hanami/i18n/version.rb
CHANGED
data/templates/locale.rb
ADDED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ippachi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: i18n
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: hanami-helpers
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,41 +39,41 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: hanami-
|
42
|
+
name: hanami-validations
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: dry-inflector
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
|
-
type: :
|
76
|
+
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
@@ -81,49 +81,77 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rubocop
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: appraisal
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pry
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: byebug
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - ">="
|
@@ -143,11 +171,14 @@ executables: []
|
|
143
171
|
extensions: []
|
144
172
|
extra_rdoc_files: []
|
145
173
|
files:
|
174
|
+
- ".byebug_history"
|
146
175
|
- ".gitignore"
|
147
176
|
- ".rspec"
|
148
177
|
- ".rubocop.yml"
|
149
178
|
- ".rubocop_todo.yml"
|
179
|
+
- ".tool-versions"
|
150
180
|
- ".travis.yml"
|
181
|
+
- Appraisals
|
151
182
|
- CODE_OF_CONDUCT.md
|
152
183
|
- Gemfile
|
153
184
|
- Gemfile.lock
|
@@ -155,16 +186,16 @@ files:
|
|
155
186
|
- Rakefile
|
156
187
|
- bin/console
|
157
188
|
- bin/setup
|
189
|
+
- gemfiles/.bundle/config
|
190
|
+
- gemfiles/hanami_1.3.gemfile
|
191
|
+
- gemfiles/hanami_1.3.gemfile.lock
|
158
192
|
- hanami-i18n.gemspec
|
159
193
|
- lib/hanami/i18n.rb
|
160
|
-
- lib/hanami/i18n/
|
161
|
-
- lib/hanami/i18n/
|
162
|
-
- lib/hanami/i18n/form.rb
|
163
|
-
- lib/hanami/i18n/helpers/form_helper/form_builder.rb
|
164
|
-
- lib/hanami/i18n/validation.rb
|
194
|
+
- lib/hanami/i18n/helpers/form.rb
|
195
|
+
- lib/hanami/i18n/validations.rb
|
165
196
|
- lib/hanami/i18n/version.rb
|
166
|
-
- lib/hanami/i18n/view.rb
|
167
197
|
- locale/ja.yml
|
198
|
+
- templates/locale.rb
|
168
199
|
homepage: https://github.com/ippachi/hanami-i18n
|
169
200
|
licenses: []
|
170
201
|
metadata:
|
@@ -184,8 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
215
|
- !ruby/object:Gem::Version
|
185
216
|
version: '0'
|
186
217
|
requirements: []
|
187
|
-
|
188
|
-
rubygems_version: 2.7.6
|
218
|
+
rubygems_version: 3.0.3
|
189
219
|
signing_key:
|
190
220
|
specification_version: 4
|
191
221
|
summary: i18n for hanami
|
data/lib/hanami/i18n/entity.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'i18n'
|
4
|
-
require 'dry/inflector'
|
5
|
-
require 'hanami/model'
|
6
|
-
|
7
|
-
module Hanami
|
8
|
-
class Entity
|
9
|
-
# Translate entity name and attribute names.
|
10
|
-
#
|
11
|
-
# @param attribute [Symbol] attribute name you want translate.
|
12
|
-
#
|
13
|
-
# @return [String] translated entity name or attribute name.
|
14
|
-
#
|
15
|
-
# @example
|
16
|
-
#
|
17
|
-
# # en:
|
18
|
-
# # model:
|
19
|
-
# # entities:
|
20
|
-
# # user: 'User'
|
21
|
-
# # attributes:
|
22
|
-
# # user:
|
23
|
-
# # name: 'Name'
|
24
|
-
#
|
25
|
-
# User.t # => 'User'
|
26
|
-
# User.t(:name) # => 'Name'
|
27
|
-
#
|
28
|
-
def self.t(attribute = nil)
|
29
|
-
inflector = Dry::Inflector.new
|
30
|
-
entity_name = inflector.singularize(inflector.tableize(name))
|
31
|
-
|
32
|
-
if attribute
|
33
|
-
::I18n.t(attribute,
|
34
|
-
scope: "model.attributes.#{entity_name}")
|
35
|
-
else
|
36
|
-
::I18n.t(entity_name,
|
37
|
-
scope: 'model.entities')
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
data/lib/hanami/i18n/form.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Hanami::I18n
|
4
|
-
module Form
|
5
|
-
# Translate form label
|
6
|
-
#
|
7
|
-
# override Hanami::Helpers::FormHelper::FormBuilder#label
|
8
|
-
def label(content, attributes = {})
|
9
|
-
content = I18n.t(content,
|
10
|
-
scope: "model.attributes.#{@name}",
|
11
|
-
default: Hanami::Utils::String.capitalize(content))
|
12
|
-
super(content, attributes)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'i18n'
|
4
|
-
|
5
|
-
module Hanami::I18n
|
6
|
-
module Validation
|
7
|
-
def errors(options = {}.freeze)
|
8
|
-
h = super(options)
|
9
|
-
h.each_with_object({}) do |(k1, v1), hash1|
|
10
|
-
hash1[k1] = v1.each_with_object({}) do |(k2, v2), hash2|
|
11
|
-
hash2[I18n.t(k2,
|
12
|
-
scope: "model.attributes.#{k1}",
|
13
|
-
default: Hanami::Utils::String.capitalize(k2))] = v2[0]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def messages(options = {}.freeze)
|
19
|
-
h = super(options)
|
20
|
-
h.each_with_object({}) do |(k1, v1), hash1|
|
21
|
-
hash1[k1] = v1.each_with_object({}) do |(k2, v2), hash2|
|
22
|
-
hash2[I18n.t(k2,
|
23
|
-
scope: "model.attributes.#{k1}",
|
24
|
-
default: Hanami::Utils::String.capitalize(k2))] = v2[0]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/hanami/i18n/view.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Hanami::I18n
|
4
|
-
module View
|
5
|
-
# Translate specific word
|
6
|
-
#
|
7
|
-
# @param object_str [String] i18n string you want translate
|
8
|
-
# @param options [Hash] i18n options
|
9
|
-
#
|
10
|
-
# @return [String] translated word
|
11
|
-
#
|
12
|
-
# @example
|
13
|
-
# # apps/web/templates/users/index.html.erb
|
14
|
-
# # en:
|
15
|
-
# # users:
|
16
|
-
# # index:
|
17
|
-
# # title: hello
|
18
|
-
#
|
19
|
-
# <%= t('.title') %> # => 'hello'
|
20
|
-
# <%= t('users.index.title') %> # => 'hello'
|
21
|
-
#
|
22
|
-
def t(object_str, options = {})
|
23
|
-
if object_str[0] == '.'
|
24
|
-
file_path = template.instance_variable_get(:@_template).file
|
25
|
-
|
26
|
-
dir_structure = file_path.gsub(/\.html\..*/, '').split('/')
|
27
|
-
|
28
|
-
index = dir_structure.index('templates')
|
29
|
-
translation_path = dir_structure[index + 1..-1].join('.')
|
30
|
-
options[:scope] = translation_path
|
31
|
-
end
|
32
|
-
|
33
|
-
I18n.t(object_str, options)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|