diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml
index 1cb90264fd461986360103ccf33ae9e13acac4a8..ac8680412cc0f1de3cbc4344228e6caf1096ba51 100644
--- a/doc/src/sgml/regress.sgml
+++ b/doc/src/sgml/regress.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.61 2009/02/11 14:03:41 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.62 2009/02/12 13:26:03 petere Exp $ -->
 
  <chapter id="regress">
   <title id="regress-title">Regression Tests</title>
@@ -218,11 +218,15 @@ gmake installcheck
      locale-related environment variables on
      the <command>make</command> command line, for example:
 <programlisting>
-gmake check LC_ALL=de_DE.utf8
+gmake check LANG=de_DE.utf8
 </programlisting>
-     or analogously to use no locale:
+     (The regression test driver unsets <envar>LC_ALL</envar>, so it
+     does not work to choose the locale using that variable.)  To use
+     no locale, either unset all locale-related environment variables
+     (or set them to <literal>C</literal>) or use the following
+     special invocation:
 <programlisting>
-gmake check LC_ALL=C
+gmake check NO_LOCALE=1
 </programlisting>
      When running the tests against an existing installation, the
      locale setup is determined by the existing installation.  To
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 2ff76483d2e3f97f0841e831b1dd846acfa6febf..7bd297f20c13e2b738cb89bb9e72dbb4719a1431 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.60 2009/02/11 14:03:42 petere Exp $
+ * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.61 2009/02/12 13:26:03 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -694,18 +694,25 @@ initialize_environment(void)
 		unsetenv("LC_COLLATE");
 		unsetenv("LC_CTYPE");
 		unsetenv("LC_MONETARY");
-		unsetenv("LC_MESSAGES");
 		unsetenv("LC_NUMERIC");
 		unsetenv("LC_TIME");
-		unsetenv("LC_ALL");
 		unsetenv("LANG");
-		unsetenv("LANGUAGE");
 		/* On Windows the default locale cannot be English, so force it */
 #if defined(WIN32) || defined(__CYGWIN__)
 		putenv("LANG=en");
 #endif
 	}
 
+	/*
+	 * Set translation-related settings to English; otherwise psql
+	 * will produce translated messages and produce diffs.  (XXX If we
+	 * ever support translation of pg_regress, this needs to be moved
+	 * elsewhere, where psql is actually called.)
+	 */
+	unsetenv("LANGUAGE");
+	unsetenv("LC_ALL");
+	putenv("LC_MESSAGES=C");
+
 	/*
 	 * Set multibyte as requested
 	 */