<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -3,15 +3,16 @@ module ActiveSupport #:nodoc:
     module Array #:nodoc:
       module Conversions
         # Converts the array to a comma-separated sentence where the last element is joined by the connector word. Options:
-        # * &lt;tt&gt;:connector&lt;/tt&gt; - The word used to join the last element in arrays with two or more elements (default: &quot;and&quot;)
-        # * &lt;tt&gt;:skip_last_comma&lt;/tt&gt; - Set to true to return &quot;a, b and c&quot; instead of &quot;a, b, and c&quot;.        
+        # * &lt;tt&gt;:words_connector&lt;/tt&gt; - The sign or word used to join the elements in arrays with two or more elements (default: &quot;, &quot;)
+        # * &lt;tt&gt;:two_words_connector&lt;/tt&gt; - The sign or word used to join the elements in arrays with two elements (default: &quot; and &quot;)
+        # * &lt;tt&gt;:last_word_connector&lt;/tt&gt; - The sign or word used to join the last element in arrays with three or more elements (default: &quot;, and &quot;)
         def to_sentence(options = {})          
-          options.assert_valid_keys(:connector, :skip_last_comma, :locale)
+          options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)
           
-          default = I18n.translate(:'support.array.sentence_connector', :locale =&gt; options[:locale])
-          default_skip_last_comma = I18n.translate(:'support.array.skip_last_comma', :locale =&gt; options[:locale])
-          options.reverse_merge! :connector =&gt; default, :skip_last_comma =&gt; default_skip_last_comma
-          options[:connector] = &quot;#{options[:connector]} &quot; unless options[:connector].nil? || options[:connector].strip == ''
+          default_words_connector = I18n.translate(:'support.array.words_connector', :locale =&gt; options[:locale])
+          default_two_words_connector = I18n.translate(:'support.array.two_words_connector', :locale =&gt; options[:locale])
+          default_last_word_connector = I18n.translate(:'support.array.last_word_connector', :locale =&gt; options[:locale])
+          options.reverse_merge! :words_connector =&gt; default_words_connector, :two_words_connector =&gt; default_two_words_connector, :last_word_connector =&gt; default_last_word_connector
 
           case length
             when 0
@@ -19,9 +20,9 @@ module ActiveSupport #:nodoc:
             when 1
               self[0].to_s
             when 2
-              &quot;#{self[0]} #{options[:connector]}#{self[1]}&quot;
+              &quot;#{self[0]}#{options[:two_words_connector]}#{self[1]}&quot;
             else
-              &quot;#{self[0...-1].join(', ')}#{options[:skip_last_comma] ? '' : ','} #{options[:connector]}#{self[-1]}&quot;
+              &quot;#{self[0...-1].join(options[:words_connector])}#{options[:last_word_connector]}#{self[-1]}&quot;
           end
         end
         </diff>
      <filename>activesupport/lib/active_support/core_ext/array/conversions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,5 +28,6 @@ en:
 # Used in array.to_sentence.
   support:
     array:
-      sentence_connector: &quot;and&quot;
-      skip_last_comma: false
+      words_connector: &quot;, &quot;
+      two_words_connector: &quot; and &quot;
+      last_word_connector: &quot;, and &quot;</diff>
      <filename>activesupport/lib/active_support/locale/en.yml</filename>
    </modified>
    <modified>
      <diff>@@ -55,21 +55,22 @@ class ArrayExtToSentenceTests &lt; Test::Unit::TestCase
     assert_equal &quot;one, two, and three&quot;, ['one', 'two', 'three'].to_sentence
   end
 
-  def test_to_sentence_with_connector
-    assert_equal &quot;one, two, and also three&quot;, ['one', 'two', 'three'].to_sentence(:connector =&gt; 'and also')
-    assert_equal &quot;one, two, three&quot;, ['one', 'two', 'three'].to_sentence(:connector =&gt; '')
-    assert_equal &quot;one, two, three&quot;, ['one', 'two', 'three'].to_sentence(:connector =&gt; nil)
-    assert_equal &quot;one, two,  three&quot;, ['one', 'two', 'three'].to_sentence(:connector =&gt; ' ')
-    assert_equal &quot;one, two, and  three&quot;, ['one', 'two', 'three'].to_sentence(:connector =&gt; 'and ')
+  def test_to_sentence_with_words_connector
+    assert_equal &quot;one two, and three&quot;, ['one', 'two', 'three'].to_sentence(:words_connector =&gt; ' ')
+    assert_equal &quot;one &amp; two, and three&quot;, ['one', 'two', 'three'].to_sentence(:words_connector =&gt; ' &amp; ')
+    assert_equal &quot;onetwo, and three&quot;, ['one', 'two', 'three'].to_sentence(:words_connector =&gt; nil)
   end
 
-  def test_to_sentence_with_skip_last_comma
-    assert_equal &quot;one, two, and three&quot;, ['one', 'two', 'three'].to_sentence(:skip_last_comma =&gt; false)
+  def test_to_sentence_with_last_word_connector
+    assert_equal &quot;one, two, and also three&quot;, ['one', 'two', 'three'].to_sentence(:last_word_connector =&gt; ', and also ')
+    assert_equal &quot;one, twothree&quot;, ['one', 'two', 'three'].to_sentence(:last_word_connector =&gt; nil)
+    assert_equal &quot;one, two three&quot;, ['one', 'two', 'three'].to_sentence(:last_word_connector =&gt; ' ')
+    assert_equal &quot;one, two and three&quot;, ['one', 'two', 'three'].to_sentence(:last_word_connector =&gt; ' and ')
   end
 
   def test_two_elements
     assert_equal &quot;one and two&quot;, ['one', 'two'].to_sentence
-    assert_equal &quot;one two&quot;, ['one', 'two'].to_sentence(:connector =&gt; '')
+    assert_equal &quot;one two&quot;, ['one', 'two'].to_sentence(:two_words_connector =&gt; ' ')
   end
 
   def test_one_element</diff>
      <filename>activesupport/test/core_ext/array_ext_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -71,19 +71,28 @@ class I18nTest &lt; Test::Unit::TestCase
     assert_equal 'pm', I18n.translate(:'time.pm')
   end
 
-  def test_sentence_connector
-    assert_equal 'and', I18n.translate(:'support.array.sentence_connector')
+  def test_words_connector
+    assert_equal ', ', I18n.translate(:'support.array.words_connector')
   end
 
-  def test_skip_last_comma
-    assert_equal false, I18n.translate(:'support.array.skip_last_comma')
+  def test_two_words_connector
+    assert_equal ' and ', I18n.translate(:'support.array.two_words_connector')
+  end
+
+  def test_last_word_connector
+    assert_equal ', and ', I18n.translate(:'support.array.last_word_connector')
   end
 
   def test_to_sentence
+    default_two_words_connector = I18n.translate(:'support.array.two_words_connector')
+    default_last_word_connector = I18n.translate(:'support.array.last_word_connector')
     assert_equal 'a, b, and c', %w[a b c].to_sentence
-    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :skip_last_comma =&gt; true } }
+    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :two_words_connector =&gt; ' &amp; ' } }
+    assert_equal 'a &amp; b', %w[a b].to_sentence
+    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :last_word_connector =&gt; ' and ' } }
     assert_equal 'a, b and c', %w[a b c].to_sentence
   ensure
-    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :skip_last_comma =&gt; false } }
+    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :two_words_connector =&gt; default_two_words_connector } }
+    I18n.backend.store_translations 'en', :support =&gt; { :array =&gt; { :last_word_connector =&gt; default_last_word_connector } }
   end
 end</diff>
      <filename>activesupport/test/i18n_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>091e6f791aa3324b2c7f8c8c4cd2fce12b689cc8</id>
    </parent>
  </parents>
  <author>
    <name>Akira Matsuda</name>
    <email>ronnie@dio.jp</email>
  </author>
  <url>http://github.com/rails/rails/commit/273c770011ab43d4b523caacb808bce070922d77</url>
  <id>273c770011ab43d4b523caacb808bce070922d77</id>
  <committed-date>2008-12-08T15:53:20-08:00</committed-date>
  <authored-date>2008-11-17T09:16:08-08:00</authored-date>
  <message>Change Array#to_sentence I18n options to pass comma and space character from outside.

[#1397 state:committed]

Signed-off-by: Jeremy Kemper &lt;jeremy@bitsweat.net&gt;</message>
  <tree>d10dd1a4af6127ad824eac36e5786cda32f4e431</tree>
  <committer>
    <name>Jeremy Kemper</name>
    <email>jeremy@bitsweat.net</email>
  </committer>
</commit>
