Problem:
Lots of stuff does not need any translation, so we simply leave it untranslated (e.g. firstname shows as Firstname). But this leaves ugly “missing translation” spans in out html.
Instead of entering senseless translations for everything thats missing, we simply deactivate the tooltips in production, while also avoiding raising/rescuing theses MissingTranslation errors to improve performance(rescue/raise is not cheap).
Code:
# https://grosser.it/2012/02/04/do-not-show-i18n-missing-translation-tooltips-in-production/
# config/initializers/disable_i18n_tooltips.rb
# missing translations
# - Do not show tooltips in production/test
# - Do not raise ( speedup) for every missing translations
I18n::Backend::Base.class_eval do
def translate_with_default(locale, key, options = {})
if options[:rescue_format] == :html && ['test','production'].include?(Rails.env)
default = key.to_s.gsub('_', ' ').gsub(/\b('?[a-z])/) { $1.capitalize }
options.reverse_merge!(default: default)
end
translate_without_default(locale, key, options)
end
alias_method_chain :translate, :default
end