Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I identify unused i18n keys?

Tags:

I'm working on an existing Rails app and am using a localization file, en.yml, to hold most of the app's text. At the moment, we aren't localizing into any other languages, so there's just the one file, but the fact that we're putting translate('some.key') into our views means that adding another language will be as simple as adding another file - say, sp.yml

The problem is, en.yml has grown to the point that I doubt all the keys are being used.

Apart from git grepping for translate calls using each key, is there a quick way to identify localization keys that aren't being explicitly called by the app?

like image 648
Nathan Long Avatar asked Dec 28 '11 19:12

Nathan Long


2 Answers

Take a look at this article about "Key issues internationalizing your app". The paragraph that interests you is: "Getting rid of unused translations".

Specifically, it recommends looking through your source code and also logging what translation keys get used in your production app, as follows:

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 

Hope that helps.

like image 113
socjopata Avatar answered Sep 26 '22 17:09

socjopata


I18n-tasks gem

I just heard about this gem, which includes a task to show "potentially unused translations".

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

like image 42
Nathan Long Avatar answered Sep 22 '22 17:09

Nathan Long