diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c
index d56c2325fe57d1e3d846ff6ddec42705d298b15a..afa14841003505399155a06fd24796f382827796 100644
--- a/src/backend/access/spgist/spgutils.c
+++ b/src/backend/access/spgist/spgutils.c
@@ -661,7 +661,7 @@ spgFormInnerTuple(SpGistState *state, bool hasPrefix, Datum prefix,
 	if (size > SPGIST_PAGE_CAPACITY - sizeof(ItemIdData))
 		ereport(ERROR,
 				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
-				 errmsg("SPGiST inner tuple size %lu exceeds maximum %lu",
+				 errmsg("SP-GiST inner tuple size %lu exceeds maximum %lu",
 						(unsigned long) size,
 				(unsigned long) (SPGIST_PAGE_CAPACITY - sizeof(ItemIdData))),
 			errhint("Values larger than a buffer page cannot be indexed.")));
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 89e6faee569896a5ee06b8be3a05fad60bc71418..7deb90134807ef349c9d89fd84022c3e2558f7b8 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -6355,7 +6355,7 @@ StartupXLOG(void)
 			{
 				if (dbstate_at_startup != DB_IN_ARCHIVE_RECOVERY)
 					ereport(FATAL,
-							(errmsg("backup_label contains inconsistent data with control file"),
+							(errmsg("backup_label contains data inconsistent with control file"),
 							 errhint("This means that the backup is corrupted and you will "
 							   "have to use another backup for recovery.")));
 				ControlFile->backupEndPoint = ControlFile->minRecoveryPoint;
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index 22ceb3c01d4b8e3ddf5577636bbbbc1ba93a036b..658fbf6193d0b66583e15ad2ac85c9f2523c4932 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -1834,7 +1834,7 @@ range_parse_flags(const char *flags_str)
 		ereport(ERROR,
 				(errcode(ERRCODE_SYNTAX_ERROR),
 				 errmsg("invalid range bound flags"),
-				 errhint("Valid values are '[]', '[)', '(]', and '()'.")));
+				 errhint("Valid values are \"[]\", \"[)\", \"(]\", and \"()\".")));
 
 	switch (flags_str[0])
 	{
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 33b58defe84f2fe1192339882b71c0518ff4560b..087aaf9b0bb4f09c449c346f4ec7524f7c675472 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1722,7 +1722,7 @@ static struct config_int ConfigureNamesInt[] =
 
 	{
 		{"temp_file_limit", PGC_SUSET, RESOURCES_DISK,
-			gettext_noop("Limits the total size of all temp files used by each session."),
+			gettext_noop("Limits the total size of all temporary files used by each session."),
 			gettext_noop("-1 means no limit."),
 			GUC_UNIT_KB
 		},
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 4652915c4e3854fe8e9a08c58801cc1985bcfe81..6281c45721e8ea0c294c7a3c7c513eed22b91478 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1011,7 +1011,7 @@ ImportSnapshot(const char *idstr)
 	if (strspn(idstr, "0123456789ABCDEF-") != strlen(idstr))
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-				 errmsg("invalid snapshot identifier \"%s\"", idstr)));
+				 errmsg("invalid snapshot identifier: \"%s\"", idstr)));
 
 	/* OK, read the file */
 	snprintf(path, MAXPGPATH, SNAPSHOT_EXPORT_DIR "/%s", idstr);
@@ -1020,7 +1020,7 @@ ImportSnapshot(const char *idstr)
 	if (!f)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-				 errmsg("invalid snapshot identifier \"%s\"", idstr)));
+				 errmsg("invalid snapshot identifier: \"%s\"", idstr)));
 
 	/* get the size of the file so that we know how much memory we need */
 	if (fstat(fileno(f), &stat_buf))
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index 1b4a9d240b3d57e4c84c123cac966f9e76269870..e5b3ee06c2805db3868442365b563ac6907ab0d3 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -154,7 +154,7 @@ GetConnection(void)
 
 		if (PQstatus(tmpconn) != CONNECTION_OK)
 		{
-			fprintf(stderr, _("%s: could not connect to server: %s\n"),
+			fprintf(stderr, _("%s: could not connect to server: %s"),
 					progname, PQerrorMessage(tmpconn));
 			return NULL;
 		}
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 3826312b8edad3405f025dc28b15284d4f563252..72fc4c1abf6ae80b92aafea727c9f07d36d9efb3 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -1935,7 +1935,7 @@ adjust_data_dir(void)
 	fd = popen(cmd, "r");
 	if (fd == NULL || fgets(filename, sizeof(filename), fd) == NULL)
 	{
-		write_stderr(_("%s: could not determine the data directory using \"%s\"\n"), progname, cmd);
+		write_stderr(_("%s: could not determine the data directory using command \"%s\"\n"), progname, cmd);
 		exit(1);
 	}
 	pclose(fd);
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 3691b507a4d168539812daf7097a4b57fd5f96c9..330d5ce12cfa793407013923f258bba965fb89db 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -462,7 +462,7 @@ AcceptResult(const PGresult *result)
 
 			default:
 				OK = false;
-				psql_error("unexpected PQresultStatus (%d)",
+				psql_error("unexpected PQresultStatus: %d\n",
 						   PQresultStatus(result));
 				break;
 		}
@@ -686,7 +686,7 @@ ProcessResult(PGresult **results)
 			default:
 				/* AcceptResult() should have caught anything else. */
 				is_copy = false;
-				psql_error("unexpected PQresultStatus (%d)", result_status);
+				psql_error("unexpected PQresultStatus: %d\n", result_status);
 				break;
 		}
 
@@ -816,7 +816,7 @@ PrintQueryResults(PGresult *results)
 
 		default:
 			success = false;
-			psql_error("unexpected PQresultStatus (%d)",
+			psql_error("unexpected PQresultStatus: %d\n",
 					   PQresultStatus(results));
 			break;
 	}
diff --git a/src/bin/psql/variables.c b/src/bin/psql/variables.c
index 5e41efc5bdeab5fefc7ed5c72ecca869608eb15a..4baa3e253a17538c19e3d72062da4aff8a7395df 100644
--- a/src/bin/psql/variables.c
+++ b/src/bin/psql/variables.c
@@ -112,7 +112,7 @@ ParseVariableBool(const char *value)
 	else
 	{
 		/* NULL is treated as false, so a non-matching value is 'true' */
-		psql_error("unrecognized boolean value; assuming \"on\".\n");
+		psql_error("unrecognized Boolean value; assuming \"on\"\n");
 		return true;
 	}
 	/* suppress compiler warning */
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 7c9fa34560a3502557c01794eb5bf7de872a8568..a32258a8cbab5e655484d0471c031864fa5084de 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -4651,14 +4651,14 @@ conninfo_uri_parse_options(PQconninfoOption *options, const char *uri,
 		if (!*p)
 		{
 			printfPQExpBuffer(errorMessage,
-							  libpq_gettext("end of string reached when looking for matching ']' in IPv6 host address in URI: %s\n"),
+							  libpq_gettext("end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n"),
 							  uri);
 			goto cleanup;
 		}
 		if (p == host)
 		{
 			printfPQExpBuffer(errorMessage,
-			libpq_gettext("IPv6 host address may not be empty in URI: %s\n"),
+			libpq_gettext("IPv6 host address may not be empty in URI: \"%s\"\n"),
 							  uri);
 			goto cleanup;
 		}
@@ -4673,7 +4673,7 @@ conninfo_uri_parse_options(PQconninfoOption *options, const char *uri,
 		if (*p && *p != ':' && *p != '/' && *p != '?')
 		{
 			printfPQExpBuffer(errorMessage,
-							  libpq_gettext("unexpected '%c' at position %d in URI (expecting ':' or '/'): %s\n"),
+							  libpq_gettext("unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n"),
 							  *p, (int) (p - buf + 1), uri);
 			goto cleanup;
 		}
@@ -4787,7 +4787,7 @@ conninfo_uri_parse_params(char *params,
 				if (value != NULL)
 				{
 					printfPQExpBuffer(errorMessage,
-									  libpq_gettext("extra key/value separator '=' in URI query parameter: %s\n"),
+									  libpq_gettext("extra key/value separator \"=\" in URI query parameter: \"%s\"\n"),
 									  params);
 					return false;
 				}
@@ -4807,7 +4807,7 @@ conninfo_uri_parse_params(char *params,
 				if (value == NULL)
 				{
 					printfPQExpBuffer(errorMessage,
-									  libpq_gettext("missing key/value separator '=' in URI query parameter: %s\n"),
+									  libpq_gettext("missing key/value separator \"=\" in URI query parameter: \"%s\"\n"),
 									  params);
 					return false;
 				}
@@ -4878,7 +4878,7 @@ conninfo_uri_parse_params(char *params,
 
 			printfPQExpBuffer(errorMessage,
 							  libpq_gettext(
-									 "invalid URI query parameter \"%s\"\n"),
+									 "invalid URI query parameter: \"%s\"\n"),
 							  keyword);
 			return false;
 		}
@@ -4943,7 +4943,7 @@ conninfo_uri_decode(const char *str, PQExpBuffer errorMessage)
 			if (!(get_hexdigit(*q++, &hi) && get_hexdigit(*q++, &lo)))
 			{
 				printfPQExpBuffer(errorMessage,
-						libpq_gettext("invalid percent-encoded token: %s\n"),
+						libpq_gettext("invalid percent-encoded token: \"%s\"\n"),
 								  str);
 				free(buf);
 				return NULL;
@@ -4953,7 +4953,7 @@ conninfo_uri_decode(const char *str, PQExpBuffer errorMessage)
 			if (c == 0)
 			{
 				printfPQExpBuffer(errorMessage,
-								  libpq_gettext("forbidden value %%00 in percent-encoded value: %s\n"),
+								  libpq_gettext("forbidden value %%00 in percent-encoded value: \"%s\"\n"),
 								  str);
 				free(buf);
 				return NULL;
diff --git a/src/interfaces/libpq/win32.c b/src/interfaces/libpq/win32.c
index 92e1c9ba9815f2b7480e192051bd307070902496..29d031337365cd0e0380e1487484951072d87e90 100644
--- a/src/interfaces/libpq/win32.c
+++ b/src/interfaces/libpq/win32.c
@@ -319,7 +319,7 @@ winsock_strerror(int err, char *strerrbuf, size_t buflen)
 	}
 
 	if (!success)
-		sprintf(strerrbuf, libpq_gettext("Unknown socket error (0x%08X/%d)"), err, err);
+		sprintf(strerrbuf, libpq_gettext("unrecognized socket error: 0x%08X/%d"), err, err);
 	else
 	{
 		strerrbuf[buflen - 1] = '\0';
diff --git a/src/pl/plpgsql/src/gram.y b/src/pl/plpgsql/src/gram.y
index c991765169a835466e2710126fe0f48553190af7..4b2dce8cf0758ca05fc59c7a345c3d1a9c031085 100644
--- a/src/pl/plpgsql/src/gram.y
+++ b/src/pl/plpgsql/src/gram.y
@@ -3483,8 +3483,8 @@ read_cursor_args(PLpgSQL_var *cursor, int until, const char *expected)
 		if (argv[argpos] != NULL)
 			ereport(ERROR,
 					(errcode(ERRCODE_SYNTAX_ERROR),
-					 errmsg("duplicate value for cursor \"%s\" parameter \"%s\"",
-							cursor->refname, row->fieldnames[argpos]),
+					 errmsg("value for parameter \"%s\" of cursor \"%s\" specified more than once",
+							row->fieldnames[argpos], cursor->refname),
 					 parser_errposition(arglocation)));
 
 		/*
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out
index 1e45919147f147e98c088254c415e08cb9f671fc..fb47fa7d45cff0ae7f5f4b3bc49d7919d8e23184 100644
--- a/src/test/regress/expected/plpgsql.out
+++ b/src/test/regress/expected/plpgsql.out
@@ -2347,7 +2347,7 @@ begin
     open c1(param2 := 20, 21);
 end
 $$ language plpgsql;
-ERROR:  duplicate value for cursor "c1" parameter "param2"
+ERROR:  value for parameter "param2" of cursor "c1" specified more than once
 LINE 5:     open c1(param2 := 20, 21);
                                   ^
 -- mixing named and positional: same as previous test, but param1 is duplicated
@@ -2358,7 +2358,7 @@ begin
     open c1(20, param1 := 21);
 end
 $$ language plpgsql;
-ERROR:  duplicate value for cursor "c1" parameter "param1"
+ERROR:  value for parameter "param1" of cursor "c1" specified more than once
 LINE 5:     open c1(20, param1 := 21);
                         ^
 -- duplicate named parameter, should throw an error at parse time
@@ -2370,7 +2370,7 @@ begin
   open c1 (p2 := 77, p2 := 42);
 end
 $$ language plpgsql;
-ERROR:  duplicate value for cursor "c1" parameter "p2"
+ERROR:  value for parameter "p2" of cursor "c1" specified more than once
 LINE 6:   open c1 (p2 := 77, p2 := 42);
                              ^
 -- not enough parameters, should throw an error at parse time