Skip to content

Commit 6989a21

Browse files
authored
Merge pull request #419 from jozzi05/fix-rules-translation-while-using-i18n
Return correct rule name while using i18n
2 parents 5ae8a8e + 6c35f1f commit 6989a21

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

lib/dry/validation/messages/i18n.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ def get(key, options = {})
1717
t.(key, options) if key
1818
end
1919

20+
def rule(name, options = {})
21+
path = "rules.#{name}"
22+
get(path, options) if key?(path, options)
23+
end
24+
2025
def key?(key, options)
2126
::I18n.exists?(key, options.fetch(:locale, default_locale)) ||
2227
::I18n.exists?(key, I18n.default_locale)

spec/fixtures/locales/pl.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ pl:
1616
rules:
1717
email:
1818
filled?: "Hej user! Dawaj ten email no!"
19+
20+
rules:
21+
email:
22+
'Adres email'

spec/integration/messages/i18n_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@
4747
end
4848
end
4949

50+
context 'rule name translations' do
51+
it 'translates rule name' do
52+
msg = messages.rule('email')
53+
54+
expect(msg).to eql('Adres email')
55+
end
56+
end
57+
5058
context 'with a different locale' do
5159
it 'returns a message for a predicate' do
5260
message = messages[:filled?, rule: :name, locale: :en]

0 commit comments

Comments
 (0)