Index: src/test/java/org/codehaus/mojo/build/TestBuildMojo.java
===================================================================
--- src/test/java/org/codehaus/mojo/build/TestBuildMojo.java	(revision 7345)
+++ src/test/java/org/codehaus/mojo/build/TestBuildMojo.java	(working copy)
@@ -36,27 +36,31 @@
 import java.io.File;
 import java.io.InputStream;
 import java.net.URL;
+import java.text.DateFormat;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.Locale;
 
 public class TestBuildMojo
         extends PlexusTestCase
 {
 
+    private File baseDir;
+
     protected void setUp()
         throws Exception
     {
         super.setUp();
+
+        URL url = Thread.currentThread().getContextClassLoader().getResource("svnOutput-1.xml");
+        baseDir = new File(url.getPath()).getParentFile().getParentFile().getParentFile();
+
+        assertTrue("Can't get the correct base dir: " + baseDir, new File(baseDir, "pom.xml").exists());
     }
 
 
     public void testMessageFormat()
     {
-        URL url = Thread.currentThread().getContextClassLoader().getResource("svnOutput-1.xml");
-        File baseDir = new File(url.getPath()).getParentFile().getParentFile().getParentFile();
-
-        assertTrue("Can't get the correct base dir: " + baseDir, new File(baseDir, "pom.xml").exists());
-
         BuildMojo mojo = new BuildMojo();
         mojo.setBasedir(baseDir);
         mojo.setFormat("At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.");
@@ -86,13 +90,36 @@
         }
     }
 
-    public void testSequenceFormat()
+    /**
+     * Test that dates are correctly formatted for different locales.
+     */
+    public void testLocale() throws Exception
     {
-        URL url = Thread.currentThread().getContextClassLoader().getResource( "svnOutput-1.xml" );
-        File baseDir = new File( url.getPath() ).getParentFile().getParentFile().getParentFile();
+        Date date = new Date( 0 ); // the epoch
+        BuildMojo mojo = new BuildMojo();
 
-        assertTrue( "Can't get the correct base dir: " + baseDir, new File( baseDir, "pom.xml" ).exists() );
+        mojo.setFormat( "{0,date}" );
+        mojo.setItems( Arrays.asList( new Object[] { date }) );
 
+        mojo.execute();
+        assertEquals( DateFormat.getDateInstance(DateFormat.DEFAULT).format(date),
+                      mojo.getRevision() );
+
+        mojo.setLocale( "en" );
+        mojo.execute();
+        assertEquals( "Jan 1, 1970", mojo.getRevision() );
+
+        mojo.setLocale( "fi" );
+        mojo.execute();
+        assertEquals( "1.1.1970", mojo.getRevision() );
+
+        mojo.setLocale( "de" );
+        mojo.execute();
+        assertEquals( "01.01.1970", mojo.getRevision() );
+    }
+
+    public void testSequenceFormat()
+    {
         BuildMojo mojo = new BuildMojo();
         mojo.setBasedir( baseDir );
         mojo.setFormat( "{0,number}.{1,number}.{2,number}" );
Index: src/main/java/org/codehaus/mojo/build/BuildMojo.java
===================================================================
--- src/main/java/org/codehaus/mojo/build/BuildMojo.java	(revision 7345)
+++ src/main/java/org/codehaus/mojo/build/BuildMojo.java	(working copy)
@@ -54,6 +54,7 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Properties;
 
 /**
@@ -162,6 +163,17 @@
     private String format;
 
     /**
+     * The locale used for date and time formatting. The locale name
+     * should be in the format defined in {@link Locale#toString()}.
+     * The default locale is the platform default returned by
+     * {@link Locale#getDefault()}.
+     *
+     * @parameter expression="${maven.buildNumber.locale}"
+     * @since 1.0-beta-2
+     */
+    private String locale;
+
+    /**
      * Specify the corresponding items for the format message, as specified by java.text.MessageFormat. Special
      * item values are "timestamp" and "buildNumber/d*".
      * 
@@ -255,6 +267,11 @@
         this.format = format;
     }
 
+    void setLocale( String locale )
+    {
+        this.locale = locale;
+    }
+
     void setItems( List items )
     {
         this.items = items;
@@ -340,7 +357,7 @@
                 }
             }
 
-            revision = MessageFormat.format( format, itemAry );
+            revision = format( itemAry );
         }
         else
         {
@@ -387,7 +404,30 @@
         }
     }
 
+    /**
+     * Formats the given argument using the configured format template
+     * and locale.
+     *
+     * @param arguments arguments to be formatted
+     @ @return formatted result
+     */
+    private String format( Object[] arguments )
+    {
+        Locale l = Locale.getDefault();
+        if ( locale != null ) {
+            String[] parts = locale.split( "_", 3 );
+            if ( parts.length <= 1 ) {
+                l = new Locale( locale );
+            } else if ( parts.length == 2 ) {
+                l = new Locale( parts[0], parts[1] );
+            } else {
+                l = new Locale( parts[0], parts[1], parts[2] );
+            }
+        }
 
+        return new MessageFormat( format, l ).format( arguments );
+    }
+
     private void checkForLocalModifications()
         throws MojoExecutionException
     {

