Validate PO-variable usage in message ids

That way we can detect incorrect usage before the strings are added to
Crowdin for translation
This commit is contained in:
Bob Van Landuyt 2018-05-07 17:56:18 +02:00
parent ca065e493e
commit 3b5ce6945d
2 changed files with 26 additions and 0 deletions

View file

@ -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

View file

@ -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