diff --git a/lib/gitlab/i18n/po_linter.rb b/lib/gitlab/i18n/po_linter.rb
index 3e9a035010f1507e5ebc16cb502711b6cab34745..c0687cd9b79a238001e74d4e20851eb1f4d30dd6 100644
--- a/lib/gitlab/i18n/po_linter.rb
+++ b/lib/gitlab/i18n/po_linter.rb
@@ -170,13 +170,13 @@ module Gitlab
       end
 
       def translate_plural(entry)
-        used_variables = entry.plural_id.scan(VARIABLE_REGEX)
-        variables = fill_in_variables(used_variables)
-
         numbers_covering_all_plurals.map do |number|
           translation = FastGettext::Translation.n_(entry.msgid, entry.plural_id, number)
+          index = index_for_pluralization(number)
+          used_variables = index == 0 ? entry.msgid.scan(VARIABLE_REGEX) : entry.plural_id.scan(VARIABLE_REGEX)
+          variables = fill_in_variables(used_variables)
 
-          translation % variables if used_variables.any?
+          translation % variables if variables.any?
         end
       end
 
diff --git a/spec/fixtures/valid.po b/spec/fixtures/valid.po
index 155b6cbb95d55b4940e9ee8518fee45c02d1d5fb..28826f05595a81ed1b4ebd09da683b1c6918601d 100644
--- a/spec/fixtures/valid.po
+++ b/spec/fixtures/valid.po
@@ -1128,3 +1128,8 @@ msgid "parent"
 msgid_plural "parents"
 msgstr[0] "padre"
 msgstr[1] "padres"
+
+msgid "CycleAnalytics|%{stageName}"
+msgid_plural "CycleAnalytics|%d stages selected"
+msgstr[0] "%{stageName}"
+msgstr[1] "%d stages selected"