<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>railties/configs/locales/en.yml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,7 @@
 *2.3.0/3.0*
 
+* Added config.i18n settings gatherer to config/environment, auto-loading of all locales in config/locales/*.rb,yml, and config/locales/en.yml as a sample locale [DHH]
+
 * BACKWARDS INCOMPATIBLE: Renamed application.rb to application_controller.rb and removed all the special casing that was in place to support the former. You must do this rename in your own application when you upgrade to this version [DHH]
 
 </diff>
      <filename>railties/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -44,6 +44,7 @@ BASE_DIRS = %w(
   app
   config/environments
   config/initializers
+  config/locales
   components
   db
   doc
@@ -199,6 +200,8 @@ task :copy_configs do
   cp &quot;configs/initializers/inflections.rb&quot;, &quot;#{PKG_DESTINATION}/config/initializers/inflections.rb&quot;
   cp &quot;configs/initializers/mime_types.rb&quot;,  &quot;#{PKG_DESTINATION}/config/initializers/mime_types.rb&quot;
 
+  cp &quot;configs/locales/en.yml&quot;, &quot;#{PKG_DESTINATION}/config/locales/en.yml&quot;
+
   cp &quot;environments/boot.rb&quot;,        &quot;#{PKG_DESTINATION}/config/boot.rb&quot;
   cp &quot;environments/environment.rb&quot;, &quot;#{PKG_DESTINATION}/config/environment.rb&quot;
   cp &quot;environments/production.rb&quot;,  &quot;#{PKG_DESTINATION}/config/environments/production.rb&quot;</diff>
      <filename>railties/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -45,6 +45,11 @@ Rails::Initializer.run do |config|
   # Run &quot;rake -D time&quot; for a list of tasks for finding time zone names. Comment line to use default local time.
   config.time_zone = 'UTC'
 
+  # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
+  # All files from config/locales/*.rb,yml are added automatically.
+  # config.i18n.load_path &lt;&lt; Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')]
+  # config.i18n.default_locale = :de
+
   # Your secret key for verifying cookie session data integrity.
   # If you change this key, all old sessions will become invalid!
   # Make sure the secret is at least 30 characters and all random, </diff>
      <filename>railties/environments/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -147,7 +147,10 @@ module Rails
       initialize_dependency_mechanism
       initialize_whiny_nils
       initialize_temporary_session_directory
+
       initialize_time_zone
+      initialize_i18n
+
       initialize_framework_settings
       initialize_framework_views
 
@@ -504,6 +507,18 @@ Run `rake gems:install` to install the missing gems.
       end
     end
 
+    # Set the i18n configuration from config.i18n but special-case for the load_path which should be 
+    # appended to what's already set instead of overwritten.
+    def initialize_i18n
+      configuration.i18n.each do |setting, value|
+        if setting == :load_path
+          I18n.load_path += value
+        else
+          I18n.send(&quot;#{setting}=&quot;, value)
+        end
+      end
+    end
+
     # Initializes framework-specific settings for each of the loaded frameworks
     # (Configuration#frameworks). The available settings map to the accessors
     # on each of the corresponding Base classes.
@@ -732,6 +747,9 @@ Run `rake gems:install` to install the missing gems.
     # timezone to &lt;tt&gt;:utc&lt;/tt&gt;.
     attr_accessor :time_zone
 
+    # Accessor for i18n settings.
+    attr_accessor :i18n
+
     # Create a new Configuration instance, initialized with the default
     # values.
     def initialize
@@ -755,6 +773,7 @@ Run `rake gems:install` to install the missing gems.
       self.database_configuration_file  = default_database_configuration_file
       self.routes_configuration_file    = default_routes_configuration_file
       self.gems                         = default_gems
+      self.i18n                         = default_i18n
 
       for framework in default_frameworks
         self.send(&quot;#{framework}=&quot;, Rails::OrderedOptions.new)
@@ -967,6 +986,18 @@ Run `rake gems:install` to install the missing gems.
       def default_gems
         []
       end
+
+      def default_i18n
+        i18n = Rails::OrderedOptions.new
+        i18n.load_path = []
+
+        if File.exist?(File.join(RAILS_ROOT, 'config', 'locales'))
+          i18n.load_path &lt;&lt; Dir[File.join(RAILS_ROOT, 'config', 'locales', '*.{rb,yml}')]
+          i18n.load_path.flatten!
+        end
+
+        i18n
+      end
   end
 end
 </diff>
      <filename>railties/lib/initializer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -65,6 +65,9 @@ class AppGenerator &lt; Rails::Generator::Base
       m.template &quot;configs/initializers/mime_types.rb&quot;, &quot;config/initializers/mime_types.rb&quot;
       m.template &quot;configs/initializers/new_rails_defaults.rb&quot;, &quot;config/initializers/new_rails_defaults.rb&quot;
 
+      # Locale
+      m.template &quot;configs/locales/en.yml&quot;, &quot;config/locales/en.yml&quot;
+
       # Environments
       m.file &quot;environments/boot.rb&quot;,    &quot;config/boot.rb&quot;
       m.template &quot;environments/environment.rb&quot;, &quot;config/environment.rb&quot;, :assigns =&gt; { :freeze =&gt; options[:freeze], :app_name =&gt; @app_name, :app_secret =&gt; secret }
@@ -143,6 +146,7 @@ class AppGenerator &lt; Rails::Generator::Base
     app/views/layouts
     config/environments
     config/initializers
+    config/locales
     db
     doc
     lib</diff>
      <filename>railties/lib/rails_generator/generators/applications/app/app_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,6 @@ class ConfigurationMock &lt; Rails::Configuration
 end
 
 class Initializer_load_environment_Test &lt; Test::Unit::TestCase
-
   def test_load_environment_with_constant
     config = ConfigurationMock.new(&quot;#{File.dirname(__FILE__)}/fixtures/environment_with_constant.rb&quot;)
     assert_nil $initialize_test_set_from_env
@@ -260,5 +259,51 @@ uses_mocha &quot;Initializer plugin loading tests&quot; do
         @initializer.load_plugins
       end
   end
-
 end
+
+uses_mocha 'i18n settings' do
+  class InitializerSetupI18nTests &lt; Test::Unit::TestCase
+    def test_no_config_locales_dir_present_should_return_empty_load_path
+      File.stubs(:exist?).returns(false)
+      assert_equal [], Rails::Configuration.new.i18n.load_path
+    end
+
+    def test_config_locales_dir_present_should_be_added_to_load_path
+      File.stubs(:exist?).returns(true)
+      Dir.stubs(:[]).returns([ &quot;my/test/locale.yml&quot; ])
+      assert_equal [ &quot;my/test/locale.yml&quot; ], Rails::Configuration.new.i18n.load_path
+    end
+    
+    def test_config_defaults_should_be_added_with_config_settings
+      File.stubs(:exist?).returns(true)
+      Dir.stubs(:[]).returns([ &quot;my/test/locale.yml&quot; ])
+
+      config = Rails::Configuration.new
+      config.i18n.load_path &lt;&lt; &quot;my/other/locale.yml&quot;
+
+      assert_equal [ &quot;my/test/locale.yml&quot;, &quot;my/other/locale.yml&quot; ], config.i18n.load_path
+    end
+    
+    def test_config_defaults_and_settings_should_be_added_to_i18n_defaults
+      File.stubs(:exist?).returns(true)
+      Dir.stubs(:[]).returns([ &quot;my/test/locale.yml&quot; ])
+
+      config = Rails::Configuration.new
+      config.i18n.load_path &lt;&lt; &quot;my/other/locale.yml&quot;
+
+      Rails::Initializer.run(:initialize_i18n, config)
+      assert_equal [ 
+       &quot;./test/../../activesupport/lib/active_support/locale/en-US.yml&quot;,
+       &quot;./test/../../actionpack/lib/action_view/locale/en-US.yml&quot;,
+       &quot;my/test/locale.yml&quot;,
+       &quot;my/other/locale.yml&quot; ], I18n.load_path
+    end
+    
+    def test_setting_another_default_locale
+      config = Rails::Configuration.new
+      config.i18n.default_locale = :de
+      Rails::Initializer.run(:initialize_i18n, config)
+      assert_equal :de, I18n.default_locale
+    end
+  end
+end
\ No newline at end of file</diff>
      <filename>railties/test/initializer_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>75fb8dfb996f5c5d8b64d10ce7b27eeb681d5316</id>
    </parent>
  </parents>
  <author>
    <name>David Heinemeier Hansson</name>
    <email>david@loudthinking.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/d9b92ee11b33fed5c7a94a91415fa846705f7dd3</url>
  <id>d9b92ee11b33fed5c7a94a91415fa846705f7dd3</id>
  <committed-date>2008-11-18T05:23:13-08:00</committed-date>
  <authored-date>2008-11-18T05:23:13-08:00</authored-date>
  <message>Added config.i18n settings gatherer to config/environment, auto-loading of all locales in config/locales/*.rb,yml, and config/locales/en.yml as a sample locale [DHH]</message>
  <tree>b936c0e1b7c9d3fbe8656a1b3a449383dcc00d55</tree>
  <committer>
    <name>David Heinemeier Hansson</name>
    <email>david@loudthinking.com</email>
  </committer>
</commit>
