summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2018-05-07 17:56:18 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2018-06-15 14:58:46 +0200
commit3b5ce6945dee059717855962271245bbb29f24e1 (patch)
treec499b124287fa38686556fa62d03d0825aaaf284
parentca065e493e7a62f22cb330659e75f8567fa6131f (diff)
downloadgitlab-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.rb4
-rw-r--r--spec/lib/gitlab/i18n/po_linter_spec.rb22
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