【发布时间】:2020-07-07 05:33:48
【问题描述】:
在这里回答我自己的问题,因为我认为这可能对很多人有用。
如何让 rspec 验证语言环境是否具有相同的键,因此不会丢失任何翻译?
【问题讨论】:
标签: rspec rails-i18n
在这里回答我自己的问题,因为我认为这可能对很多人有用。
如何让 rspec 验证语言环境是否具有相同的键,因此不会丢失任何翻译?
【问题讨论】:
标签: rspec rails-i18n
这对我来说适用于 2 个语言环境,但可以轻松适应更多语言环境。
我们将 I18n 数据转换为像 ['key', 'key.key', 'key.other_key'] 这样的平面数组,现在我们可以检查两个数组是否包含相同的内容。
def print_tr(data, prefix = '')
if data.kind_of?(Hash)
results = data.map { |key, value| print_tr(value, prefix.empty? ? key : "#{prefix}.#{key}") }
return results.flatten
else
return prefix
end
end
RSpec.describe 'i18n' do
it 'has same keys in both locales' do
all_en = print_tr(I18n.t('.', locale: :en)).map(&:to_s).sort
all_ja = print_tr(I18n.t('.', locale: :ja)).map(&:to_s).sort
all_same = all_en == all_ja
expect(all_same).to be_truthy
unless all_same
p 'Translations missing in ja'
p all_en - all_ja
end
end
end
【讨论】: