Прошло много лет с тех пор, как я впервые пришел к этому вопросу, поскольку у меня была точно такая же проблема.Проблема не стала меньше, я больше разочарован, чем когда-либо.
Вот экспериментальный проект, он подключается к поиску перевода и увеличивает счетчик ключа перевода в Redis:
https://github.com/paladinsoftware/i18n-counter
Идея в том, что вы можете получить статистику и сравнить.(На данный момент, я бы хотел помочь)
Вы можете спросить: «Разве это не замедлит поиск?»
И вы правы, конечно, но накладные расходыедва заметный, проверьте этот тест.
require 'benchmark'
n = 100000
Benchmark.bm do |x|
x.report { ENV['ENABLE_I18N_COUNTER'] = 'true'; n.times do ; I18n.translate('application.contract_not_available.header'); end }
x.report { ENV['ENABLE_I18N_COUNTER'] = 'false'; n.times do ; I18n.translate('application.contract_not_available.header'); end }
end
---------------------------------------------
| Benchmark | Seconds | Sec pr translation |
|------------| --------- | ------------------ |
| with redis | 48.280000 | 0.0004828 |
| without | 9.010000 | 0.0000901 |
---------------------------------------------
Издержки составляют около 3 мс при поиске.Это сводится к количеству поисков, выполненных вами на странице / запросе.