~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb

  • Committer: Richard Lee (Canonical)
  • Date: 2010-10-15 15:17:58 UTC
  • mfrom: (190.1.3 use-case-mapper)
  • Revision ID: richard.lee@canonical.com-20101015151758-wcvmfxrexsongf9d
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
require 'action_view/helpers/tag_helper'
2
 
 
3
 
module ActionView
4
 
  module Helpers
5
 
    module TranslationHelper
6
 
      # Delegates to I18n#translate but also performs two additional functions. First, it'll catch MissingTranslationData exceptions 
7
 
      # and turn them into inline spans that contains the missing key, such that you can see in a view what is missing where.
8
 
      #
9
 
      # Second, it'll scope the key by the current partial if the key starts with a period. So if you call translate(".foo") from the
10
 
      # people/index.html.erb template, you'll actually be calling I18n.translate("people.index.foo"). This makes it less repetitive
11
 
      # to translate many keys within the same partials and gives you a simple framework for scoping them consistently. If you don't
12
 
      # prepend the key with a period, nothing is converted.
13
 
      def translate(key, options = {})
14
 
        options[:raise] = true
15
 
        I18n.translate(scope_key_by_partial(key), options)
16
 
      rescue I18n::MissingTranslationData => e
17
 
        keys = I18n.send(:normalize_translation_keys, e.locale, e.key, e.options[:scope])
18
 
        content_tag('span', keys.join(', '), :class => 'translation_missing')
19
 
      end
20
 
      alias :t :translate
21
 
 
22
 
      # Delegates to I18n.localize with no additional functionality.
23
 
      def localize(*args)
24
 
        I18n.localize(*args)
25
 
      end
26
 
      alias :l :localize
27
 
 
28
 
 
29
 
      private
30
 
        def scope_key_by_partial(key)
31
 
          if key.to_s.first == "."
32
 
            template.path_without_format_and_extension.gsub(%r{/_?}, ".") + key.to_s
33
 
          else
34
 
            key
35
 
          end
36
 
        end
37
 
    end
38
 
  end
39
 
end
 
 
b'\\ No newline at end of file'