如何识别未使用的i18n密钥?

Nat*_*ong 16 ruby-on-rails internationalization ruby-on-rails-3.1

我正在使用现有的Rails应用程序并使用本地化文件en.yml来保存应用程序的大部分文本.目前,我们没有本地化为任何其他语言,因此只有一个文件,但我们将translate('some.key')视图放入视图意味着添加另一种语言就像添加另一种文件一样简单 - 比方说,sp.yml

问题是,en.yml已经发展到我怀疑所有键都被使用的程度.

除了git greppingtranslate使用每个键拨打电话,有一个快速的方法来识别没有被应用程序被明确要求本地化的钥匙?

soc*_*ata 13

看看这篇关于"国际化您的应用程序的关键问题"的文章.您感兴趣的段落是:" 摆脱未使用的翻译 ".

具体来说,它建议查看源代码并记录生产应用程序中使用的翻译键,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


Nat*_*ong 6

I18n-tasks宝石

我刚刚听说过这个宝石,其中包括一个显示"潜在未使用的翻译"的任务.

https://github.com/glebm/i18n-tasks

  • 在某种意义上可能未使用它会给难以检测的情况带来误报,例如`I18n.t(method_returning_the_key)`.用`config/i18n-tasks.yml`可以忽略这些键. (3认同)
  • 我在 SO 上搜索了这个名字:) (2认同)

Tom*_*rdt -1

获取活跃使用的那些,然后删除其余的。这就是我用的。

实际上我将它们设置为active=0但这可能不适合你

更新
结果发现我不清楚。

有两种方法可以查看此内容:从源文件或从翻译文件。如果您查看源文件,则需要识别所有正在使用的字符串,并最终删除所有未使用的字符串。

如果您查看翻译文件,则需要查看源代码并确定它们是否仍在使用,正如您在问题中提到的那样。

没有其他办法了。