我正在使用现有的Rails应用程序并使用本地化文件en.yml
来保存应用程序的大部分文本。目前,我们没有本地化为任何其他语言,因此只有一个文件,但事实上我们将translate('some.key')
放入我们的视图意味着添加另一种语言就像添加另一个文件一样简单 - 比方说,sp.yml
问题是,en.yml
已经发展到我怀疑所有密钥都被使用的程度。
除了git grepping
使用每个密钥进行translate
次调用之外,还有一种快速方法可以识别应用未明确调用的本地化密钥吗?
答案 0 :(得分:13)
查看有关 "Key issues internationalizing your app"的这篇文章。您感兴趣的段落是:“摆脱未使用的翻译”。
具体来说,它建议查看您的源代码并记录生产应用中使用的翻译键,如下所示:
module I18n
module Registry
protected
def lookup(locale, key, scope = [], options = {})
@log ||= Logger.new(File.join(Rails.root, 'log', 'i18n_registry.log'))
@log.info key
super
end
end
end
I18n::Backend::Simple.send :include, I18n::Registry
希望有所帮助。
答案 1 :(得分:6)
答案 2 :(得分:0)
自从我第一次遇到这个问题已经很多年了,因为我遇到了同样的问题。这个问题并没有变得越来越小,我比以前更加沮丧。
这是一个实验项目,它挂钩到翻译查找并增加Redis中的翻译密钥计数器:
https://github.com/paladinsoftware/i18n-counter
这个想法是你可以提取统计数据并进行比较。 (WIP暂时,我很乐意帮助你)
您可能会问:“这不会减慢查找速度吗?”
当然你是对的,但是开销几乎不可察觉,请查看这个基准。
scales: {
xAxes: [{
type: "time",
time: {
format: "MM/DD/YYYY",
round: 'day',
tooltipFormat: 'll'
},
scaleLabel: {
display: true,
}
}],
}
开销约为3毫秒pr查找。它归结为每页/请求所执行的查找次数。
答案 3 :(得分:-1)
获取积极使用的,然后删除其余部分。这就是我使用的。
实际上我将它们设置为active=0
,但这可能不适合你
<强>更新强>
事实证明我不清楚。
有两种方法可以查看:源文件或翻译文件。如果从源文件中查找,则需要识别正在使用的所有字符串,最后删除所有未使用的字符串。
如果从翻译文件中查看,您需要查看来源并确定它们是否仍在使用,如问题中所述。
别无他法。
答案 4 :(得分:-2)
您可能想尝试
$ ruby script/plugin install http://github.com/o2sources/unused_translations/tree/master
$ script/unused_translations config/locales/en.yml
来源: http://www.railslodge.com/plugins/1547-unused-i18n-translations