diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-05-07 17:56:18 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-06-15 14:58:46 +0200 |
commit | 3b5ce6945dee059717855962271245bbb29f24e1 (patch) | |
tree | c499b124287fa38686556fa62d03d0825aaaf284 | |
parent | ca065e493e7a62f22cb330659e75f8567fa6131f (diff) | |
download | gitlab-ce-3b5ce6945dee059717855962271245bbb29f24e1.tar.gz |
Validate PO-variable usage in message ids
That way we can detect incorrect usage before the strings are added to
Crowdin for translation
-rw-r--r-- | lib/gitlab/i18n/po_linter.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/i18n/po_linter_spec.rb | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/gitlab/i18n/po_linter.rb b/lib/gitlab/i18n/po_linter.rb index ab79d4188dc..ba08ef59776 100644 --- a/lib/gitlab/i18n/po_linter.rb +++ b/lib/gitlab/i18n/po_linter.rb @@ -109,10 +109,14 @@ module Gitlab def validate_variables(errors, entry) if entry.has_singular_translation? + validate_variables_in_message(errors, entry.msgid, entry.msgid) + validate_variables_in_message(errors, entry.msgid, entry.singular_translation) end if entry.has_plural? + validate_variables_in_message(errors, entry.plural_id, entry.plural_id) + entry.plural_translations.each do |translation| validate_variables_in_message(errors, entry.plural_id, translation) end diff --git a/spec/lib/gitlab/i18n/po_linter_spec.rb b/spec/lib/gitlab/i18n/po_linter_spec.rb index 9bbd51fe212..045916e6dc2 100644 --- a/spec/lib/gitlab/i18n/po_linter_spec.rb +++ b/spec/lib/gitlab/i18n/po_linter_spec.rb @@ -220,6 +220,10 @@ describe Gitlab::I18n::PoLinter do end describe '#validate_variables' do + before do + allow(linter).to receive(:validate_variables_in_message).and_call_original + end + it 'validates both singular and plural in a pluralized string when the entry has a singular' do pluralized_entry = fake_translation( id: 'Hello %{world}', @@ -259,6 +263,24 @@ describe Gitlab::I18n::PoLinter do linter.validate_variables([], entry) end + + it 'validates variable usage in message ids' do + entry = fake_translation( + id: 'Hello %{world}', + translation: 'Bonjour %{world}', + plural_id: 'Hello all %{world}', + plurals: ['Bonjour tous %{world}'] + ) + + expect(linter).to receive(:validate_variables_in_message) + .with([], 'Hello %{world}', 'Hello %{world}') + .and_call_original + expect(linter).to receive(:validate_variables_in_message) + .with([], 'Hello all %{world}', 'Hello all %{world}') + .and_call_original + + linter.validate_variables([], entry) + end end describe '#validate_variables_in_message' do |