No commit activity in last 3 years
No release in over 3 years
Find missing translations in your code more easily.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 0.6.0
 Project Readme

I18n::MissingTranslations

I18n::MissingTranslations is a simple tool that helps with finding missing translations in your application.

It consists of three parts:

  • a module that plugs into the I18n::ExceptionHandler class and logs I18n::MissingTranslationData exceptions
  • an in-memory logger that simply holds missing translations during a request or test run
  • a middleware that can be used to dump the contents of the logger to a file after each request

Installation

I18n::MissingTranslations requires I18n 0.5.0 which has not been released yet (2010-11-06). So you need to make sure you require the 0.5.0 branch from the I18n repository:

gem 'i18n', :git => 'git://github.com/svenfuchs/i18n.git', :ref => '0.5.0'

Usage in test environment

This is what you might want to put into your test_helper:

require 'i18n/missing_translations'
at_exit { I18n.missing_translations.dump }

If there are any missing translations then it will print out a YAML snippet for them that you can copy and paste to your locale file.

Usage in development environment

The following hooks up the I18n::MissingTranslations middleware in development mode. You might want to add these lines as an initializer:

require 'i18n/missing_translations'
config.app_middleware.use(I18n::MissingTranslations) if Rails.env.development?

The middleware will then log missing tranlations to a file missing_translations.yml in your locales dir (which is config/locales if present or the current directory otherwise). You can also pass the filename as an argument:

config.app_middleware.use(I18n::MissingTranslations, 'path/to/locales/missing.yml')

The middleware reads and writes per request. That means that on subsequent requests missing translations are added to the missing_translations.yml file. So if you go ahead and copy translations from the missing_translations.yml to your actual locale files you will also want to clear or delete missing_translations.yml.

NOTE Rails (3.0.1) does not pick up new locale files between requests. That effectively means that manual changes to the missing_translations.yml file might be overwritten unless you restart the server.

Thus your workflow for finding and moving missing translation keys might look something like this:

  • start the server
  • click around/work on stuff
  • check config/locales/missing_translations.yml
  • copy any missing translation keys to your actual locale files and correct the translations
  • delete or clear config/locales/missing_translations.yml
  • restart the server