它已经很多年以来我第一次来到这个问题,因为我有完全相同的问题。问题并没有变小,我比以往更加沮丧。
这是一个实验性项目,它挂钩到翻译查找并增加在Redis的翻译钥匙计数器:
https://github.com/paladinsoftware/i18n-counter
的想法是,你可以拉的统计和比较。 (WIP的时刻,我很乐意帮助OFC)
你可能会问:“不会的查找放慢”
而你是对的,当然,但开销几乎无法察觉,看看这个基准。
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 ms pr查找。它归结为每页/请求所做的查找次数。
来源
2017-09-28 14:50:18
oma
我不明白你的意思。我正在谈论文件中的行。你在谈论数据库行吗? – 2011-12-28 20:57:02
我没有任何使用rails的经验,但我知道的大多数i18n解决方案都有导出所有可翻译字符串的方法。导出所有可翻译的字符串,然后循环遍历所有字符串,并检查哪些不再使用(查看您的导出)。 – 2011-12-28 21:00:33
我不问如何比较两个本地化文件;我在问如何检查应用程序代码使用哪些本地化密钥。 – 2011-12-28 21:14:56