<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/authlogic/i18n.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,10 +1,11 @@
-== 1.3.10
+== 1.4.0 released 2009-1-28
 
 * Added support for cookie domain, based on your frameworks session domain configuration
 * Updated test helper functions to use the persistence token config value
 * Check for UTC times when using Time.now for current_login_at and last_request_at
 * Single access now looks for a single_access_allowed? method in your controllers to determine if single access should be allowed or not. Allowing you to define exactly when single access is allowed.
 * Finding the authenticated record uses klass.primary_key instead of assuming id.
+* BREAKS BACKWARDS COMPATIBILITY: New I18n solution implemented. See Authlogic::I18n for more information.
 
 == 1.3.9 released 2009-1-9
 </diff>
      <filename>CHANGELOG.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -477,6 +477,10 @@ Obviously there is a little more to it than this, but hopefully this clarifies a
 
 When things come together like this I think its a sign that you are doing something right. Put that in your pipe and smoke it!
 
+== Internationalization (I18n)
+
+Please see Authlogic::I18n for more information. Internationalization is very easy to implement, in fact if you are using the default rails I18n library then you don't need to do anything other than defining the messages in your localization configuration files. See Authlogic::I18n for a complete list of keys you need to define.
+
 == Testing
 
 Testing with authlogic is easy, there is a helper file that will add some convenient test helpers for you. In your test_helper.rb file do the following:</diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -10,4 +10,5 @@ Echoe.new 'authlogic' do |p|
   p.summary = &quot;A clean, simple, and unobtrusive ruby authentication solution.&quot;
   p.url = &quot;http://github.com/binarylogic/authlogic&quot;
   p.dependencies = %w(activesupport echoe)
+  p.install_message = &quot;BREAKS BACKWARDS COMPATIBILITY! This is only for those using I18n. If you were using the Authlogic configuration to implement I18n you need to update your configuration. A new cleaner approach has been implemented for I18n in Authlogic. See Authlogic::I18n for more details.&quot;
 end
\ No newline at end of file</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 require &quot;active_support&quot;
 
 require File.dirname(__FILE__) + &quot;/authlogic/version&quot;
+require File.dirname(__FILE__) + &quot;/authlogic/i18n&quot;
 
 require File.dirname(__FILE__) + &quot;/authlogic/controller_adapters/abstract_adapter&quot;
 require File.dirname(__FILE__) + &quot;/authlogic/controller_adapters/rails_adapter&quot; if defined?(Rails)</diff>
      <filename>lib/authlogic.rb</filename>
    </modified>
    <modified>
      <diff>@@ -412,19 +412,19 @@ module Authlogic
           
           case authenticating_with
           when :password
-            errors.add(login_field, login_blank_message) if send(login_field).blank?
-            errors.add(password_field, password_blank_message) if send(&quot;protected_#{password_field}&quot;).blank?
+            errors.add(login_field, I18n.t('error_messages.login_blank', :default =&gt; &quot;can not be blank&quot;)) if send(login_field).blank?
+            errors.add(password_field, I18n.t('error_messages.password_blank', :default =&gt; &quot;can not be blank&quot;)) if send(&quot;protected_#{password_field}&quot;).blank?
             return false if errors.count &gt; 0
             
             unchecked_record = search_for_record(find_by_login_method, send(login_field))
             
             if unchecked_record.blank?
-              errors.add(login_field, login_not_found_message)
+              errors.add(login_field, I18n.t('error_messages.login_not_found', :default =&gt; &quot;does not exist&quot;))
               return false
             end
             
             unless unchecked_record.send(verify_password_method, send(&quot;protected_#{password_field}&quot;))
-              errors.add(password_field, password_invalid_message)
+              errors.add(password_field, I18n.t('error_messages.password_invalid', :default =&gt; &quot;is not valid&quot;))
               return false
             end
             
@@ -433,12 +433,12 @@ module Authlogic
             unchecked_record = unauthorized_record
             
             if unchecked_record.blank?
-              errors.add_to_base(&quot;You can not login with a blank record.&quot;)
+              errors.add_to_base(I18n.t('error_messages.blank_record', :default =&gt; &quot;You can not login with a blank record&quot;))
               return false
             end
             
             if unchecked_record.new_record?
-              errors.add_to_base(&quot;You can not login with a new record.&quot;)
+              errors.add_to_base(I18n.t('error_messages.new_record', :default =&gt; &quot;You can not login with a new record&quot;))
               return false
             end
             
@@ -452,7 +452,7 @@ module Authlogic
           return true if disable_magic_states?
           [:active, :approved, :confirmed].each do |required_status|
             if record.respond_to?(&quot;#{required_status}?&quot;) &amp;&amp; !record.send(&quot;#{required_status}?&quot;)
-              errors.add_to_base(send(&quot;not_#{required_status}_message&quot;))
+              errors.add_to_base(I18n.t(&quot;errors_messages.not_#{required_status}&quot;, :default =&gt; &quot;Your account is not #{required_status}&quot;))
               return false
             end
           end</diff>
      <filename>lib/authlogic/session/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -134,29 +134,13 @@ module Authlogic
         end
         alias_method :last_request_at_threshold=, :last_request_at_threshold
         
-        # The error message used when the login is left blank.
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;can not be blank&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def login_blank_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:login_blank_message) || login_blank_message(&quot;can not be blank&quot;)
-          else
-            write_inheritable_attribute(:login_blank_message, value)
-          end
+        def login_blank_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :login_blank_message=, :login_blank_message
         
-        # The error message used when the login could not be found in the database.
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;does not exist&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def login_not_found_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:login_not_found_message) || login_not_found_message(&quot;does not exist&quot;)
-          else
-            write_inheritable_attribute(:login_not_found_message, value)
-          end
+        def login_not_found_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :login_not_found_message=, :login_not_found_message
         
@@ -196,42 +180,18 @@ module Authlogic
         end
         alias_method :logout_on_timeout=, :logout_on_timeout
         
-        # The error message used when the record returns false to active?
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;Your account is not active&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def not_active_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:not_active_message) || not_active_message(&quot;Your account is not active&quot;)
-          else
-            write_inheritable_attribute(:not_active_message, value)
-          end
+        def not_active_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :not_active_message=, :not_active_message
         
-        # The error message used when the record returns false to approved?
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;Your account is not approved&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def not_approved_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:not_approved_message) || not_approved_message(&quot;Your account is not approved&quot;)
-          else
-            write_inheritable_attribute(:not_approved_message, value)
-          end
+        def not_approved_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :not_approved_message=, :not_approved_message
         
-        # The error message used when the record returns false to confirmed?
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;Your account is not confirmed&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def not_confirmed_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:not_confirmed_message) || not_confirmed_message(&quot;Your account is not confirmed&quot;)
-          else
-            write_inheritable_attribute(:not_confirmed_message, value)
-          end
+        def not_confirmed_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :not_confirmed_message=, :not_confirmed_message
         
@@ -253,16 +213,8 @@ module Authlogic
         end
         alias_method :params_key=, :params_key
         
-        # The error message used when the password is left blank.
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;can not be blank&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def password_blank_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:password_blank_message) || password_blank_message(&quot;can not be blank&quot;)
-          else
-            write_inheritable_attribute(:password_blank_message, value)
-          end
+        def password_blank_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :password_blank_message=, :password_blank_message
         
@@ -279,16 +231,8 @@ module Authlogic
         end
         alias_method :password_field=, :password_field
         
-        # The error message used when the password is invalid.
-        #
-        # * &lt;tt&gt;Default:&lt;/tt&gt; &quot;is invalid&quot;
-        # * &lt;tt&gt;Accepts:&lt;/tt&gt; String
-        def password_invalid_message(value = nil)
-          if value.nil?
-            read_inheritable_attribute(:password_invalid_message) || password_invalid_message(&quot;is invalid&quot;)
-          else
-            write_inheritable_attribute(:password_invalid_message, value)
-          end
+        def password_invalid_message(value = nil) # :nodoc:
+          new_i18n_error
         end
         alias_method :password_invalid_message=, :password_invalid_message
         
@@ -357,6 +301,11 @@ module Authlogic
           end
         end
         alias_method :verify_password_method=, :verify_password_method
+        
+        private
+          def new_i18n_error
+            raise NotImplementedError.new(&quot;As of v 1.4.0 Authlogic implements a new I18n solution that is much cleaner and easier. Please see Authlogic::I18n for more information on how to provide internationalization in Authlogic.&quot;)
+          end
       end
       
       module InstanceMethods # :nodoc:
@@ -383,14 +332,6 @@ module Authlogic
         def last_request_at_threshold
           self.class.last_request_at_threshold
         end
-        
-        def login_blank_message
-          self.class.login_blank_message
-        end
-        
-        def login_not_found_message
-          self.class.login_not_found_message
-        end
       
         def login_field
           self.class.login_field
@@ -400,18 +341,6 @@ module Authlogic
           self.class.logout_on_timeout == true
         end
         
-        def not_active_message
-          self.class.not_active_message
-        end
-        
-        def not_approved_message
-          self.class.not_approved_message
-        end
-        
-        def not_confirmed_message
-          self.class.not_confirmed_message
-        end
-        
         def params_allowed_request_types
           build_key(self.class.params_allowed_request_types)
         end
@@ -419,19 +348,11 @@ module Authlogic
         def params_key
           build_key(self.class.params_key)
         end
-        
-        def password_blank_message
-          self.class.password_blank_message
-        end
       
         def password_field
           self.class.password_field
         end
         
-        def password_invalid_message
-          self.class.password_invalid_message
-        end
-        
         def perishable_token_field
           klass.acts_as_authentic_config[:perishable_token_field]
         end</diff>
      <filename>lib/authlogic/session/config.rb</filename>
    </modified>
    <modified>
      <diff>@@ -43,8 +43,8 @@ module Authlogic # :nodoc:
     end
 
     MAJOR = 1
-    MINOR = 3
-    TINY  = 9
+    MINOR = 4
+    TINY  = 0
 
     # The current version as a Version instance
     CURRENT = new(MAJOR, MINOR, TINY)</diff>
      <filename>lib/authlogic/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -76,30 +76,6 @@ module SessionTests
       session = UserSession.new
       assert_equal 0, session.last_request_at_threshold
     end
-  
-    def test_login_blank_message
-      UserSession.login_blank_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.login_blank_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.login_blank_message
-    
-      UserSession.login_blank_message &quot;can not be blank&quot;
-      assert_equal &quot;can not be blank&quot;, UserSession.login_blank_message
-      session = UserSession.new
-      assert_equal &quot;can not be blank&quot;, session.login_blank_message
-    end
-    
-    def test_login_not_found_message
-      UserSession.login_not_found_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.login_not_found_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.login_not_found_message
-    
-      UserSession.login_not_found_message &quot;does not exist&quot;
-      assert_equal &quot;does not exist&quot;, UserSession.login_not_found_message
-      session = UserSession.new
-      assert_equal &quot;does not exist&quot;, session.login_not_found_message
-    end
     
     def test_login_field
       UserSession.methods_configured = false
@@ -116,42 +92,6 @@ module SessionTests
       assert session.respond_to?(:login)
     end
     
-    def test_not_active_message
-      UserSession.not_active_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.not_active_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.not_active_message
-    
-      UserSession.not_active_message &quot;Your account is not active&quot;
-      assert_equal &quot;Your account is not active&quot;, UserSession.not_active_message
-      session = UserSession.new
-      assert_equal &quot;Your account is not active&quot;, session.not_active_message
-    end
-    
-    def test_not_approved_message
-      UserSession.not_approved_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.not_approved_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.not_approved_message
-    
-      UserSession.not_approved_message &quot;Your account is not approved&quot;
-      assert_equal &quot;Your account is not approved&quot;, UserSession.not_approved_message
-      session = UserSession.new
-      assert_equal &quot;Your account is not approved&quot;, session.not_approved_message
-    end
-    
-    def test_not_confirmed_message
-      UserSession.not_confirmed_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.not_confirmed_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.not_confirmed_message
-    
-      UserSession.not_confirmed_message &quot;Your account is not confirmed&quot;
-      assert_equal &quot;Your account is not confirmed&quot;, UserSession.not_confirmed_message
-      session = UserSession.new
-      assert_equal &quot;Your account is not confirmed&quot;, session.not_confirmed_message
-    end
-    
     def test_params_key
       UserSession.params_key = &quot;my_params_key&quot;
       assert_equal &quot;my_params_key&quot;, UserSession.params_key
@@ -163,18 +103,6 @@ module SessionTests
       session = UserSession.new
       assert_equal &quot;user_credentials&quot;, session.params_key
     end
-    
-    def test_password_blank_message
-      UserSession.password_blank_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.password_blank_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.password_blank_message
-    
-      UserSession.password_blank_message &quot;can not be blank&quot;
-      assert_equal &quot;can not be blank&quot;, UserSession.password_blank_message
-      session = UserSession.new
-      assert_equal &quot;can not be blank&quot;, session.password_blank_message
-    end
   
     def test_password_field
       UserSession.methods_configured = false
@@ -190,18 +118,6 @@ module SessionTests
       assert_equal :password, session.password_field
       assert session.respond_to?(:password)
     end
-    
-    def test_password_invalid_message
-      UserSession.password_invalid_message = &quot;message&quot;
-      assert_equal &quot;message&quot;, UserSession.password_invalid_message
-      session = UserSession.new
-      assert_equal &quot;message&quot;, session.password_invalid_message
-    
-      UserSession.password_invalid_message &quot;is invalid&quot;
-      assert_equal &quot;is invalid&quot;, UserSession.password_invalid_message
-      session = UserSession.new
-      assert_equal &quot;is invalid&quot;, session.password_invalid_message
-    end
   
     def test_remember_me
       UserSession.remember_me = true</diff>
      <filename>test/session_tests/config_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b5dd3742438ee4552c8033cd5cf38b400f77495f</id>
    </parent>
  </parents>
  <author>
    <name>binarylogic</name>
    <email>bjohnson@binarylogic.com</email>
  </author>
  <url>http://github.com/binarylogic/authlogic/commit/7717a1b8b3ed297199cf46a5574398d188eec5a4</url>
  <id>7717a1b8b3ed297199cf46a5574398d188eec5a4</id>
  <committed-date>2009-01-28T16:33:07-08:00</committed-date>
  <authored-date>2009-01-28T16:33:07-08:00</authored-date>
  <message>Released v1.4.0. A new I18n soluton has been added. Please see Authlogic::I18n for more info. The old solution via configuration is no longer supported.</message>
  <tree>bc951d6b1209198c21c35a3d7ddaceef0ca67805</tree>
  <committer>
    <name>binarylogic</name>
    <email>bjohnson@binarylogic.com</email>
  </committer>
</commit>
