Skip to content

Commit 6cf2d85

Browse files
committed
Ignore specific plural parts
1 parent 179e0b1 commit 6cf2d85

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

lib/i18n/tasks/missing_keys.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,17 +117,23 @@ def missing_plural_tree(locale, base = base_locale, _skip_interpolation = false)
117117
Set.new
118118
end
119119
# Compare the keys to those existing in base
120-
next if ignore_key?(node.full_key(root: false), :missing, locale)
121120
next if present_keys.superset?(required_keys)
122121

123122
# Mark for removal any existing keys that are not required
124123
base_keys = Set.new(node.children.map { |c| c.key.to_sym })
124+
missing_keys = (required_keys - present_keys).to_a
125125
remove_keys = (present_keys + base_keys) - required_keys
126126

127+
# Remove any ignored plural keys, eg: 'something.key.few' or '*.many'
128+
missing_keys.reject! do |plural_key|
129+
ignore_key?("#{node.full_key(root: false)}.#{plural_key}", :missing, locale)
130+
end
131+
next if missing_keys.empty? && remove_keys.empty?
132+
127133
tree[node.full_key] = node.derive(
128134
value: children.to_hash,
129135
children: nil,
130-
data: node.data.merge(missing_keys: (required_keys - present_keys).to_a, remove_keys: remove_keys)
136+
data: node.data.merge(missing_keys: missing_keys, remove_keys: remove_keys)
131137
)
132138
end
133139
tree.set_root_key!(locale, type: :missing_plural)

spec/plural_keys_spec.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
'config/i18n-tasks.yml' => {
4141
base_locale: 'en',
4242
locales: %w[en ar],
43-
ignore_missing: ['ignored_pattern.*']
43+
ignore_missing: ['ignored_pattern.*', '*.plural_key.two']
4444
}.to_yaml,
4545
'config/locales/en.yml' => { en: base_keys }.to_yaml,
4646
'config/locales/ar.yml' => { ar: base_keys }.to_yaml
@@ -75,8 +75,15 @@ def depluralize(key)
7575
expect(leaves.size).to eq 2
7676
expect(leaves[0].full_key).to eq 'ar.plural_key'
7777
expect(leaves[0].data[:missing_keys]).to eq %i[zero two few many]
78+
end
79+
80+
it 'ignores specified pluralizations' do
81+
wrong = task.missing_plural_forest(%w[en ar])
82+
leaves = wrong.leaves.to_a
83+
84+
expect(leaves.size).to eq 2
7885
expect(leaves[1].full_key).to eq 'ar.nested.plural_key'
79-
expect(leaves[1].data[:missing_keys]).to eq %i[two few many]
86+
expect(leaves[1].data[:missing_keys]).to eq %i[few many]
8087
end
8188

8289
it 'ignores keys with a single interpolation string' do

0 commit comments

Comments
 (0)