<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -25,15 +25,10 @@ using Ruby-GetText-Package.
     (sudo/su on POSIX system)
     gem uninstall gettext
 
-    #from github (edge/unstable)
+    #from rubyforge 
     (sudo/su on POSIX system)
     gem install locale
-    gem install mutoh-gettext -s http://gems.github.com/
-
-    #from rubyforge (stable)
-    (sudo/su on POSIX system)
-    gem install locale
-    gem install gettext
+    gem install gettext_activerecord
 
 == Usage
 === without Rails
@@ -88,6 +83,7 @@ using Ruby-GetText-Package.
 See gettext_rails [http://github.com/mutoh/gettext_rails/tree/master]
 
 == Support matrix
+* gettext_activerecord-2.1.0 - rails-2.3.2,2.3.3,2.3.4
 * gettext_activerecord-2.0.2 - rails-2.3.2
 * gettext_activerecord-2.0.1 - rails-2.3.2
 * gettext_activerecord-2.0.0 - rails-2.3.2</diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,7 @@ spec = Gem::Specification.new do |s|
   s.rubyforge_project = &quot;gettext&quot;
   s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|git/}
   s.require_path = 'lib'
-  s.add_dependency('gettext', '&gt;= 2.0.4')
+  s.add_dependency('gettext', '&gt;= 2.1.0')
   s.add_dependency('activerecord', '&gt;= 2.3.2')
   s.has_rdoc = true
   s.description = 'Localization support for ActiveRecord by Ruby-GetText-Package.'</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
   Copyright (C) 2009  Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 
 =end
 </diff>
      <filename>lib/gettext_activerecord.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,9 +4,7 @@
   Copyright (C) 2009  Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
-
-  $Id$
+  license terms as Ruby or LGPL.
 =end
 
 module ActiveRecord #:nodoc:</diff>
      <filename>lib/gettext_activerecord/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
   Copyright (C) 2009 Masao Mutoh
  
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 =end
  
 module I18n  #:nodoc:</diff>
      <filename>lib/gettext_activerecord/i18n.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
   Copyright (C) 2009  Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 
 =end
 </diff>
      <filename>lib/gettext_activerecord/migration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,14 +4,13 @@
   Copyright (C) 2005-2009  Masao Mutoh
  
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 
-  $Id$
 =end
 
 require 'gettext'
 require 'gettext/tools/rgettext'
-require 'gettext/parser/ruby'
+require 'gettext/tools/parser/ruby'
 
 include GetText
 
@@ -146,22 +145,16 @@ module GetText
         end
       end
       if RubyParser.target?(file)
-        targets = RubyParser.parse(file, targets)
+        targets += RubyParser.parse(file)
       end
-      targets.uniq!
       targets
     end
 
     def add_target(targets, file, msgid) # :nodoc:
-      file_lineno = &quot;#{file}:-&quot;
-      key_existed = targets.assoc(msgid)
-      if key_existed 
-        unless targets[targets.index(key_existed)].include?(file_lineno)
-          targets[targets.index(key_existed)] = key_existed &lt;&lt; file_lineno
-        end
-      else
-        targets &lt;&lt; [msgid, &quot;#{file}:-&quot;]
-      end
+      po = PoMessage.new(:normal)
+      po.msgid = msgid
+      po.sources &lt;&lt; &quot;#{file}:-&quot;
+      targets &lt;&lt; po
       targets
     end
 </diff>
      <filename>lib/gettext_activerecord/parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
   Copyright (C) 2009  Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 
 =end
 </diff>
      <filename>lib/gettext_activerecord/schema_definitions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
   Copyright (C) 2009 Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 =end
 
 require 'gettext/tools'</diff>
      <filename>lib/gettext_activerecord/tools.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,9 +4,7 @@
   Copyright (C) 2006-2009  Masao Mutoh
 
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
-
-  $Id$
+  license terms as Ruby or LGPL.
 =end
 
 module ActiveRecord #:nodoc:</diff>
      <filename>lib/gettext_activerecord/validations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,9 +4,9 @@
   Copyright (C) 2009 Masao Mutoh
  
   You may redistribute it and/or modify it under the same
-  license terms as Ruby.
+  license terms as Ruby or LGPL.
 =end
 module GetTextActiveRecord
-  RAILS_VERSION = &quot;2.3.2&quot;
-  VERSION = &quot;2.0.4&quot;
+  RAILS_VERSION = &quot;2.3.4&quot;
+  VERSION = &quot;2.1.0&quot;
 end</diff>
      <filename>lib/gettext_activerecord/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ require 'active_record'
 
 # use local gettext or current gettext gem
 begin
-  $LOAD_PATH.unshift ENV[&quot;GETTEXT_LIB_PATH&quot;] || &quot;../../gettext/lib&quot;
+  $LOAD_PATH.unshift ENV[&quot;GETTEXT_LIB_PATH&quot;] || &quot;../../gettext/lib:../&quot;
   require 'gettext'
 rescue LoadError
   gem 'gettext', '&gt;=2.0.0'</diff>
      <filename>test/helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 require 'models/topic'
 
-class Reply &lt; Topic
+class Reply &lt; Topic  # ActiveRecord::Base
   N_(&quot;Reply|Topic&quot;)  # Need to define relation table names explicity 
                      # if you use it in validations.
 </diff>
      <filename>test/models/reply.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,65 +10,68 @@ require 'gettext_activerecord/tools'
 #)
 
 class TestGetTextParser &lt; Test::Unit::TestCase
+  def assert_parser(ary, po)
+    poary = [po.msgid, *po.sources]
+    assert_equal(ary, poary)
+  end
+
   def test_class
-    GetText::ActiveRecordParser.target?(&quot;models/topic.rb&quot;)
-    ary = GetText::ActiveRecordParser.parse(&quot;models/topic.rb&quot;)
+    ary = GetText::RGetText.parse(&quot;models/topic.rb&quot;)
     assert_equal(14, ary.size)
-    assert_equal([&quot;topic&quot;, &quot;models/topic.rb:-&quot;], ary[0])
-    assert_equal([&quot;Topic|Title&quot;, &quot;models/topic.rb:-&quot;], ary[1])
-    assert_equal([&quot;Topic|Author name&quot;, &quot;models/topic.rb:-&quot;], ary[2])
-    assert_equal([&quot;Topic|Author email address&quot;, &quot;models/topic.rb:-&quot;], ary[3])
-    assert_equal([&quot;Topic|Written on&quot;, &quot;models/topic.rb:-&quot;], ary[4])
-    assert_equal([&quot;Topic|Bonus time&quot;, &quot;models/topic.rb:-&quot;], ary[5])
-    assert_equal([&quot;Topic|Last read&quot;, &quot;models/topic.rb:-&quot;], ary[6])
-    assert_equal([&quot;Topic|Content&quot;, &quot;models/topic.rb:-&quot;], ary[7])
-    assert_equal([&quot;Topic|Approved&quot;, &quot;models/topic.rb:-&quot;], ary[8])
-    assert_equal([&quot;Topic|Replies count&quot;, &quot;models/topic.rb:-&quot;], ary[9])
-    assert_equal([&quot;Topic|Parent&quot;, &quot;models/topic.rb:-&quot;], ary[10])
-    assert_equal([&quot;Topic|Type&quot;, &quot;models/topic.rb:-&quot;], ary[11])
-    assert_equal([&quot;Topic|Terms of service&quot;, &quot;models/topic.rb:35&quot;], ary[12])
-    assert_equal([&quot;must be abided&quot;, &quot;models/topic.rb:36&quot;], ary[13])
+    assert_parser([&quot;topic&quot;, &quot;models/topic.rb:-&quot;], ary[0])
+    assert_parser([&quot;Topic|Title&quot;, &quot;models/topic.rb:-&quot;], ary[1])
+    assert_parser([&quot;Topic|Author name&quot;, &quot;models/topic.rb:-&quot;], ary[2])
+    assert_parser([&quot;Topic|Author email address&quot;, &quot;models/topic.rb:-&quot;], ary[3])
+    assert_parser([&quot;Topic|Written on&quot;, &quot;models/topic.rb:-&quot;], ary[4])
+    assert_parser([&quot;Topic|Bonus time&quot;, &quot;models/topic.rb:-&quot;], ary[5])
+    assert_parser([&quot;Topic|Last read&quot;, &quot;models/topic.rb:-&quot;], ary[6])
+    assert_parser([&quot;Topic|Content&quot;, &quot;models/topic.rb:-&quot;], ary[7])
+    assert_parser([&quot;Topic|Approved&quot;, &quot;models/topic.rb:-&quot;], ary[8])
+    assert_parser([&quot;Topic|Replies count&quot;, &quot;models/topic.rb:-&quot;], ary[9])
+    assert_parser([&quot;Topic|Parent&quot;, &quot;models/topic.rb:-&quot;], ary[10])
+    assert_parser([&quot;Topic|Type&quot;, &quot;models/topic.rb:-&quot;], ary[11])
+    assert_parser([&quot;Topic|Terms of service&quot;, &quot;models/topic.rb:35&quot;], ary[12])
+    assert_parser([&quot;must be abided&quot;, &quot;models/topic.rb:36&quot;], ary[13])
   end
 
   def test_subclass
-    GetText::ActiveRecordParser.target?(&quot;models/reply.rb&quot;)
-    ary = GetText::ActiveRecordParser.parse(&quot;models/reply.rb&quot;)
+    ary = GetText::RGetText.parse(&quot;models/reply.rb&quot;)
     ary.sort!{|a, b| a[0].downcase &lt;=&gt; b[0].downcase}
 
     assert_equal(30, ary.size)
-    assert_equal([&quot;Empty&quot;, &quot;models/reply.rb:16&quot;, &quot;models/reply.rb:20&quot;], ary[0])
-    assert_equal([&quot;is Content Mismatch&quot;, &quot;models/reply.rb:25&quot;], ary[1])
-    assert_equal([&quot;is Wrong Create&quot;, &quot;models/reply.rb:30&quot;], ary[2])
-    assert_equal([&quot;is Wrong Update&quot;, &quot;models/reply.rb:34&quot;], ary[3])
-    assert_equal([&quot;reply&quot;, &quot;models/reply.rb:-&quot;], ary[4])
-    assert_equal([&quot;Reply|Approved&quot;, &quot;models/reply.rb:-&quot;], ary[5])
-    assert_equal([&quot;Reply|Author email address&quot;, &quot;models/reply.rb:-&quot;], ary[6])
-    assert_equal([&quot;Reply|Author name&quot;, &quot;models/reply.rb:-&quot;], ary[7])
-    assert_equal([&quot;Reply|Bonus time&quot;, &quot;models/reply.rb:-&quot;], ary[8])
-    assert_equal([&quot;Reply|Content&quot;, &quot;models/reply.rb:-&quot;], ary[9])
-    assert_equal([&quot;Reply|Last read&quot;, &quot;models/reply.rb:-&quot;], ary[10])
-    assert_equal([&quot;Reply|Parent&quot;, &quot;models/reply.rb:-&quot;], ary[11])
-    assert_equal([&quot;Reply|Replies count&quot;, &quot;models/reply.rb:-&quot;], ary[12])
-    assert_equal([&quot;Reply|Title&quot;, &quot;models/reply.rb:-&quot;], ary[13])
+    assert_parser([&quot;Empty&quot;, &quot;models/reply.rb:16&quot;, &quot;models/reply.rb:20&quot;], ary[0])
+    assert_parser([&quot;is Content Mismatch&quot;, &quot;models/reply.rb:25&quot;], ary[1])
+    assert_parser([&quot;is Wrong Create&quot;, &quot;models/reply.rb:30&quot;], ary[2])
+    assert_parser([&quot;is Wrong Update&quot;, &quot;models/reply.rb:34&quot;], ary[3])
+    assert_parser([&quot;reply&quot;, &quot;models/reply.rb:-&quot;], ary[4])
+    assert_parser([&quot;Reply|Approved&quot;, &quot;models/reply.rb:-&quot;], ary[5])
+    assert_parser([&quot;Reply|Author email address&quot;, &quot;models/reply.rb:-&quot;], ary[6])
+    assert_parser([&quot;Reply|Author name&quot;, &quot;models/reply.rb:-&quot;], ary[7])
+    assert_parser([&quot;Reply|Bonus time&quot;, &quot;models/reply.rb:-&quot;], ary[8])
+    assert_parser([&quot;Reply|Content&quot;, &quot;models/reply.rb:-&quot;], ary[9])
+    assert_parser([&quot;Reply|Last read&quot;, &quot;models/reply.rb:-&quot;], ary[10])
+    assert_parser([&quot;Reply|Parent&quot;, &quot;models/reply.rb:-&quot;], ary[11])
+    assert_parser([&quot;Reply|Replies count&quot;, &quot;models/reply.rb:-&quot;], ary[12])
+    assert_parser([&quot;Reply|Title&quot;, &quot;models/reply.rb:-&quot;], ary[13])
     # this target is from N_().
-    assert_equal([&quot;Reply|Topic&quot;, &quot;models/reply.rb:4&quot;], ary[14])
-    assert_equal([&quot;Reply|Type&quot;, &quot;models/reply.rb:-&quot;], ary[15])
-    assert_equal([&quot;Reply|Written on&quot;, &quot;models/reply.rb:-&quot;], ary[16])
+    assert_parser([&quot;Reply|Topic&quot;, &quot;models/reply.rb:4&quot;], ary[14])
+    assert_parser([&quot;Reply|Type&quot;, &quot;models/reply.rb:-&quot;], ary[15])
+    assert_parser([&quot;Reply|Written on&quot;, &quot;models/reply.rb:-&quot;], ary[16])
 
-    assert_equal([&quot;sillyreply&quot;, &quot;models/reply.rb:-&quot;], ary[17])
-    assert_equal([&quot;SillyReply|Approved&quot;, &quot;models/reply.rb:-&quot;], ary[18])
-    assert_equal([&quot;SillyReply|Author email address&quot;, &quot;models/reply.rb:-&quot;], ary[19])
-    assert_equal([&quot;SillyReply|Author name&quot;, &quot;models/reply.rb:-&quot;], ary[20])
-    assert_equal([&quot;SillyReply|Bonus time&quot;, &quot;models/reply.rb:-&quot;], ary[21])
-    assert_equal([&quot;SillyReply|Content&quot;, &quot;models/reply.rb:-&quot;], ary[22])
-    assert_equal([&quot;SillyReply|Last read&quot;, &quot;models/reply.rb:-&quot;], ary[23])
-    assert_equal([&quot;SillyReply|Parent&quot;, &quot;models/reply.rb:-&quot;], ary[24])
-    assert_equal([&quot;SillyReply|Replies count&quot;, &quot;models/reply.rb:-&quot;], ary[25])
-    assert_equal([&quot;SillyReply|Title&quot;, &quot;models/reply.rb:-&quot;], ary[26])
-    assert_equal([&quot;SillyReply|Type&quot;, &quot;models/reply.rb:-&quot;], ary[27])
-    assert_equal([&quot;SillyReply|Written on&quot;, &quot;models/reply.rb:-&quot;], ary[28])
+    assert_parser([&quot;sillyreply&quot;, &quot;models/reply.rb:-&quot;], ary[17])
+    assert_parser([&quot;SillyReply|Approved&quot;, &quot;models/reply.rb:-&quot;], ary[18])
+    assert_parser([&quot;SillyReply|Author email address&quot;, &quot;models/reply.rb:-&quot;], ary[19])
+    assert_parser([&quot;SillyReply|Author name&quot;, &quot;models/reply.rb:-&quot;], ary[20])
+    assert_parser([&quot;SillyReply|Bonus time&quot;, &quot;models/reply.rb:-&quot;], ary[21])
+    assert_parser([&quot;SillyReply|Content&quot;, &quot;models/reply.rb:-&quot;], ary[22])
+    assert_parser([&quot;SillyReply|Last read&quot;, &quot;models/reply.rb:-&quot;], ary[23])
+    assert_parser([&quot;SillyReply|Parent&quot;, &quot;models/reply.rb:-&quot;], ary[24])
+    assert_parser([&quot;SillyReply|Replies count&quot;, &quot;models/reply.rb:-&quot;], ary[25])
+    assert_parser([&quot;SillyReply|Title&quot;, &quot;models/reply.rb:-&quot;], ary[26])
+    assert_parser([&quot;SillyReply|Type&quot;, &quot;models/reply.rb:-&quot;], ary[27])
+    assert_parser([&quot;SillyReply|Written on&quot;, &quot;models/reply.rb:-&quot;], ary[28])
 
-    assert_equal([&quot;topic&quot;, &quot;models/reply.rb:-&quot;], ary[29])
+    assert_parser([&quot;topic&quot;, &quot;models/reply.rb:-&quot;], ary[29])
   end
 
   def test_untranslate
@@ -76,10 +79,10 @@ class TestGetTextParser &lt; Test::Unit::TestCase
     ary = GetText::ActiveRecordParser.parse(&quot;models/book.rb&quot;)
     ary.sort!{|a, b| a[0].downcase &lt;=&gt; b[0].downcase}
     assert_equal(4, ary.size)
-    assert_equal([&quot;book&quot;, &quot;models/book.rb:-&quot;], ary[0])
-    assert_equal([&quot;Book|Created at&quot;, &quot;models/book.rb:-&quot;], ary[1])
-    assert_equal([&quot;Book|Price&quot;, &quot;models/book.rb:-&quot;], ary[2])
-    assert_equal([&quot;Book|Updated at&quot;, &quot;models/book.rb:-&quot;], ary[3])
+    assert_parser([&quot;book&quot;, &quot;models/book.rb:-&quot;], ary[0])
+    assert_parser([&quot;Book|Created at&quot;, &quot;models/book.rb:-&quot;], ary[1])
+    assert_parser([&quot;Book|Price&quot;, &quot;models/book.rb:-&quot;], ary[2])
+    assert_parser([&quot;Book|Updated at&quot;, &quot;models/book.rb:-&quot;], ary[3])
   end
 
   def test_untranslate_all</diff>
      <filename>test/test_parser.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>3ad19d71a25b7337e2049fbe84688802747a852d</id>
    </parent>
  </parents>
  <author>
    <name>Masao Mutoh</name>
    <email>mutomasa@gmail.com</email>
  </author>
  <url>http://github.com/mutoh/gettext_activerecord/commit/0ca4c1fb124a0b25427274e3e321b57c15fef8c5</url>
  <id>0ca4c1fb124a0b25427274e3e321b57c15fef8c5</id>
  <committed-date>2009-10-25T07:08:06-07:00</committed-date>
  <authored-date>2009-10-25T07:08:06-07:00</authored-date>
  <message>Support activerecord-2.3.4.
Update to work with gettext-2.1.0.</message>
  <tree>fbc736d8c80e67acdc21e2ecaf38c5eb56214c54</tree>
  <committer>
    <name>Masao Mutoh</name>
    <email>mutomasa@gmail.com</email>
  </committer>
</commit>
