<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -107,7 +107,7 @@ module Globalize # :nodoc:
       #   * textilize_without_paragraph (textile)
       #   * markdown (markdown)
       def formatting_method
-        case @@formatting
+        @@formatting_method ||= case @@formatting
           when :textile  then :textilize_without_paragraph
           when :markdown then :markdown
         end
@@ -205,14 +205,24 @@ module Globalize # :nodoc:
       def observe_locales
         return unless globalize?
         locale_observer = LocaleObserver.new
-        Globalize::Locale.add_observer(locale_observer)
+        Locale.add_observer(locale_observer)
         yield
-        Globalize::Locale.remove_observer(locale_observer)
-        session[:__globalize_translations] = if Locale.formatting
-                                               locale_observer.translations.each{|key, translation| locale_observer.translations[key] = strip_tags(self.send(Locale.formatting_method, translation)) }
-                                             else
-                                               locale_observer.translations
-                                             end
+        Locale.remove_observer(locale_observer)
+        session[:__globalize_translations] = format_translations(locale_observer)
+      end
+      
+      # Fetch the translations from the given LocaleObserver.
+      # If the formatting feature is turned on it also provide to textilize or markdown.
+      def format_translations(locale_observer)
+        if Locale.formatting
+          formatting_method = Locale.formatting_method
+          locale_observer.translations.inject({}) do |result, translation|
+            result[translation.first] = self.send(formatting_method, strip_tags(translation.last))
+            result
+          end
+        else
+          locale_observer.translations
+        end
       end
     end
   end</diff>
      <filename>lib/click_to_globalize.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,8 +6,8 @@ class ClickToGlobalizeController &lt; ApplicationController
   around_filter :observe_locales
   def index
     Locale.set(params[:locale])
-    hello_world = Translation.find_by_tr_key_and_language_id(params[:key], params[:language_id])
-    @greet = hello_world.tr_key.t
+    translation = Translation.find_by_tr_key_and_language_id(params[:key], params[:language_id])
+    @greet = translation.tr_key.t
     render :nothing =&gt; true, :status =&gt; 200
   end
 end
@@ -222,6 +222,31 @@ class ClickToGlobalizeTest &lt; Test::Unit::TestCase
     assert_equal expected, @request.session[:__globalize_translations]
   end
 
+  def test_should_return_formatted_translations
+    create_translation('hello_mars', '*Hello Mars!*')
+    with_formatting :textile do
+      get :index, params(:key =&gt; 'hello_mars')
+      assert_response :success
+      
+      expected = { 'hello_mars' =&gt; %(&lt;strong&gt;Hello Mars!&lt;/strong&gt;) }
+      assert_equal expected, @request.session[:__globalize_translations]
+    end
+  end
+
+  uses_mocha 'ClickToGlobalizeFormattingTest' do
+    def test_should_return_plain_translations
+      Locale.stubs(:formatting).returns nil
+      create_translation('hello_moon', '*Hello Moon!*')
+      with_formatting :unexistent do
+        get :index, params(:key =&gt; 'hello_moon')
+        assert_response :success
+
+        expected = { 'hello_moon' =&gt; '*Hello Moon!*' }
+        assert_equal expected, @request.session[:__globalize_translations]      
+      end
+    end
+  end
+
   ### LOCALE_CONTROLLER
 
   def test_check_globalize
@@ -252,7 +277,15 @@ class ClickToGlobalizeTest &lt; Test::Unit::TestCase
       @locale_observer ||= LocaleObserver.new
     end
 
-    def params
-      { :key =&gt; @hello_world.tr_key, :language_id =&gt; 1, :locale =&gt; @default_locale.code }
+    def params(options = {})
+      { :key =&gt; @hello_world.tr_key, :language_id =&gt; 1, :locale =&gt; @default_locale.code }.merge!(options)
+    end
+    
+    def create_translation(key, text)
+      translation = Translation.new(:tr_key =&gt; key, :text =&gt; text,
+        :language_id =&gt; 1, :pluralization_index =&gt; 1) do |t|
+        t.type = 'ViewTranslation'
+      end
+      translation.save
     end
 end</diff>
      <filename>test/click_to_globalize_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -52,6 +52,15 @@ class Test::Unit::TestCase
   end
 end
 
+# Thanks to Rails Core Team
+def uses_mocha(description)
+  require 'rubygems'
+  require 'mocha'
+  yield
+rescue LoadError
+  $stderr.puts &quot;Skipping #{description} tests. `gem install mocha` and try again.&quot;
+end
+
 LocalesController.class_eval do #:nodoc:
   public :clear_cache, :inline
 end</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>049a81063b80561132cbdb8d38e424c4ae8dfb6a</id>
    </parent>
  </parents>
  <author>
    <name>Luca Guidi</name>
    <email>guidi.luca@gmail.com</email>
  </author>
  <url>http://github.com/jodosha/click-to-globalize/commit/5bd9bc33b696264e5a54a42383f42627590ca5df</url>
  <id>5bd9bc33b696264e5a54a42383f42627590ca5df</id>
  <committed-date>2008-07-17T08:27:38-07:00</committed-date>
  <authored-date>2008-07-17T08:27:38-07:00</authored-date>
  <message>Extracted formatting logic in #format_translations</message>
  <tree>b249af6c4759d11d63d6399d8eb42f9f1111dc26</tree>
  <committer>
    <name>Luca Guidi</name>
    <email>guidi.luca@gmail.com</email>
  </committer>
</commit>
