<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -43,7 +43,7 @@ require 'action_view/base'
 require 'action_view/partials'
 require 'action_view/template_error'
 
-I18n.load_translations &quot;#{File.dirname(__FILE__)}/action_view/locale/en-US.yml&quot;
+I18n.load_path &lt;&lt; &quot;#{File.dirname(__FILE__)}/action_view/locale/en-US.yml&quot;
 
 require 'action_view/helpers'
 </diff>
      <filename>actionpack/lib/action_view.rb</filename>
    </modified>
    <modified>
      <diff>@@ -78,4 +78,4 @@ require 'active_record/connection_adapters/abstract_adapter'
 require 'active_record/schema_dumper'
 
 require 'active_record/i18n_interpolation_deprecation'
-I18n.load_translations File.dirname(__FILE__) + '/active_record/locale/en-US.yml'
+I18n.load_path &lt;&lt; File.dirname(__FILE__) + '/active_record/locale/en-US.yml'</diff>
      <filename>activerecord/lib/active_record.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,12 +6,16 @@ class ActiveRecordValidationsI18nTests &lt; Test::Unit::TestCase
   def setup
     reset_callbacks Topic
     @topic = Topic.new
+    @old_load_path, @old_backend = I18n.load_path, I18n.backend
+    I18n.load_path.clear
+    I18n.backend = I18n::Backend::Simple.new
     I18n.backend.store_translations('en-US', :activerecord =&gt; {:errors =&gt; {:messages =&gt; {:custom =&gt; nil}}})
   end
 
   def teardown
     reset_callbacks Topic
-    I18n.load_translations File.dirname(__FILE__) + '/../../lib/active_record/locale/en-US.yml'
+    I18n.load_path.replace @old_load_path
+    I18n.backend = @old_backend
   end
 
   def unique_topic</diff>
      <filename>activerecord/test/cases/validations_i18n_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,7 @@ require 'active_support/time_with_zone'
 
 require 'active_support/secure_random'
 
-I18n.load_translations File.dirname(__FILE__) + '/active_support/locale/en-US.yml'
+I18n.load_path &lt;&lt; File.dirname(__FILE__) + '/active_support/locale/en-US.yml'
 
 Inflector = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('Inflector', 'ActiveSupport::Inflector')
 Dependencies = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('Dependencies', 'ActiveSupport::Dependencies')</diff>
      <filename>activesupport/lib/active_support.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,8 @@ require 'i18n/exceptions'
 
 module I18n  
   @@backend = nil
-  @@default_locale = 'en-US'
+  @@load_path = nil
+  @@default_locale = :'en-US'
   @@exception_handler = :default_exception_handler
     
   class &lt;&lt; self
@@ -49,14 +50,22 @@ module I18n
       @@exception_handler = exception_handler
     end
     
-    # Allows client libraries to pass arguments that specify a source for 
-    # translation data to be loaded by the backend. The backend defines
-    # acceptable sources. 
+    # Allow clients to register paths providing translation data sources. The
+    # backend defines acceptable sources.
+    #
     # E.g. the provided SimpleBackend accepts a list of paths to translation
     # files which are either named *.rb and contain plain Ruby Hashes or are
-    # named *.yml and contain YAML data.)
-    def load_translations(*args)
-      backend.load_translations(*args)
+    # named *.yml and contain YAML data. So for the SimpleBackend clients may
+    # register translation files like this:
+    #   I18n.load_path &lt;&lt; 'path/to/locale/en-US.yml'
+    def load_path
+      @@load_path ||= []
+    end
+
+    # Sets the load path instance. Custom implementations are expected to
+    # behave like a Ruby Array.
+    def load_path=(load_path)
+      @@load_path = load_path
     end
     
     # Translates, pluralizes and interpolates a given key using a given locale, 
@@ -175,6 +184,4 @@ module I18n
       keys.flatten.map{|k| k.to_sym}
     end
   end
-end
-
-
+end
\ No newline at end of file</diff>
      <filename>activesupport/lib/active_support/vendor/i18n-0.0.1/i18n.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-require 'strscan'
+require 'yaml'
 
 module I18n
   module Backend
@@ -59,7 +59,16 @@ module I18n
         object.strftime(format)
       end
       
+      def initialized?
+        @initialized ||= false
+      end
+
       protected
+
+        def init_translations
+          load_translations(*I18n.load_path)
+          @initialized = true
+        end
         
         def translations
           @translations ||= {}
@@ -72,6 +81,7 @@ module I18n
         # &lt;tt&gt;%w(currency format)&lt;/tt&gt;.
         def lookup(locale, key, scope = [])
           return unless key
+          init_translations unless initialized?
           keys = I18n.send :normalize_translation_keys, locale, key, scope
           keys.inject(translations){|result, k| result[k.to_sym] or return nil }
         end
@@ -94,7 +104,7 @@ module I18n
         rescue MissingTranslationData
           nil
         end
-      
+
         # Picks a translation from an array according to English pluralization
         # rules. It will pick the first translation if count is not equal to 1
         # and the second translation if it is equal to 1. Other backends can</diff>
      <filename>activesupport/lib/active_support/vendor/i18n-0.0.1/i18n/backend/simple.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8cb7d460439a9b20a80a77b6370c1107233d1cbd</id>
    </parent>
  </parents>
  <author>
    <name>Sven Fuchs</name>
    <email>svenfuchs@artweb-design.de</email>
  </author>
  <url>http://github.com/rails/rails/commit/a3b7fa78bfdc33e45e39c095b67e02d50a2c7bea</url>
  <id>a3b7fa78bfdc33e45e39c095b67e02d50a2c7bea</id>
  <committed-date>2008-09-20T11:26:16-07:00</committed-date>
  <authored-date>2008-09-15T01:26:50-07:00</authored-date>
  <message>I18n: Introduce I18n.load_path in favor of I18n.load_translations and change Simple backend to load translations lazily. [#1048 state:resolved]

Signed-off-by: Pratik Naik &lt;pratiknaik@gmail.com&gt;</message>
  <tree>0de20fad9f3a7ce2e49d660d1243b5b02a32e290</tree>
  <committer>
    <name>Pratik Naik</name>
    <email>pratiknaik@gmail.com</email>
  </committer>
</commit>
