From e2c86541d4f9f8d01c0f407ec4d8f5aec35e080f Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Mon, 26 Oct 2020 16:45:39 -0500
Subject: [PATCH v1 2/2] Retire pg_archivecleanup

---
 doc/src/sgml/config.sgml                      |   4 -
 doc/src/sgml/high-availability.sgml           |  12 -
 doc/src/sgml/ref/allfiles.sgml                |   1 -
 doc/src/sgml/ref/pgarchivecleanup.sgml        | 215 ----------
 doc/src/sgml/reference.sgml                   |   1 -
 src/bin/Makefile                              |   1 -
 src/bin/pg_archivecleanup/.gitignore          |   3 -
 src/bin/pg_archivecleanup/Makefile            |  36 --
 src/bin/pg_archivecleanup/nls.mk              |   6 -
 src/bin/pg_archivecleanup/pg_archivecleanup.c | 378 ------------------
 src/bin/pg_archivecleanup/po/cs.po            | 189 ---------
 src/bin/pg_archivecleanup/po/de.po            | 178 ---------
 src/bin/pg_archivecleanup/po/es.po            | 185 ---------
 src/bin/pg_archivecleanup/po/fr.po            | 201 ----------
 src/bin/pg_archivecleanup/po/ja.po            | 212 ----------
 src/bin/pg_archivecleanup/po/ko.po            | 179 ---------
 src/bin/pg_archivecleanup/po/pl.po            | 178 ---------
 src/bin/pg_archivecleanup/po/ru.po            | 192 ---------
 src/bin/pg_archivecleanup/po/sv.po            | 179 ---------
 src/bin/pg_archivecleanup/po/tr.po            | 185 ---------
 src/bin/pg_archivecleanup/po/uk.po            | 161 --------
 src/bin/pg_archivecleanup/po/vi.po            | 183 ---------
 src/bin/pg_archivecleanup/po/zh_CN.po         | 174 --------
 .../t/010_pg_archivecleanup.pl                |  98 -----
 src/tools/msvc/Mkvcbuild.pm                   |   4 +-
 25 files changed, 2 insertions(+), 3153 deletions(-)
 delete mode 100644 doc/src/sgml/ref/pgarchivecleanup.sgml
 delete mode 100644 src/bin/pg_archivecleanup/.gitignore
 delete mode 100644 src/bin/pg_archivecleanup/Makefile
 delete mode 100644 src/bin/pg_archivecleanup/nls.mk
 delete mode 100644 src/bin/pg_archivecleanup/pg_archivecleanup.c
 delete mode 100644 src/bin/pg_archivecleanup/po/cs.po
 delete mode 100644 src/bin/pg_archivecleanup/po/de.po
 delete mode 100644 src/bin/pg_archivecleanup/po/es.po
 delete mode 100644 src/bin/pg_archivecleanup/po/fr.po
 delete mode 100644 src/bin/pg_archivecleanup/po/ja.po
 delete mode 100644 src/bin/pg_archivecleanup/po/ko.po
 delete mode 100644 src/bin/pg_archivecleanup/po/pl.po
 delete mode 100644 src/bin/pg_archivecleanup/po/ru.po
 delete mode 100644 src/bin/pg_archivecleanup/po/sv.po
 delete mode 100644 src/bin/pg_archivecleanup/po/tr.po
 delete mode 100644 src/bin/pg_archivecleanup/po/uk.po
 delete mode 100644 src/bin/pg_archivecleanup/po/vi.po
 delete mode 100644 src/bin/pg_archivecleanup/po/zh_CN.po
 delete mode 100644 src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 1b6f3a6456..d89b977ff2 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -3567,10 +3567,6 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
         may be safely removed.
         This information can be used to truncate the archive to just the
         minimum required to support restart from the current restore.
-        The <xref linkend="pgarchivecleanup"/> module
-        is often used in <varname>archive_cleanup_command</varname> for
-        single-standby configurations, for example:
-<programlisting>archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'</programlisting>
         Note however that if multiple standby servers are restoring from the
         same archive directory, you will need to ensure that you do not delete
         WAL files until they are no longer needed by any of the servers.
diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml
index 6425d8b15d..b2ca63d370 100644
--- a/doc/src/sgml/high-availability.sgml
+++ b/doc/src/sgml/high-availability.sgml
@@ -726,23 +726,11 @@ protocol to make nodes agree on a serializable transactional order.
     If you're using a WAL archive, its size can be minimized using the <xref
     linkend="guc-archive-cleanup-command"/> parameter to remove files that are no
     longer required by the standby server.
-    The <application>pg_archivecleanup</application> utility is designed specifically to
-    be used with <varname>archive_cleanup_command</varname> in typical single-standby
-    configurations, see <xref linkend="pgarchivecleanup"/>.
     Note however, that if you're using the archive for backup purposes, you
     need to retain files needed to recover from at least the latest base
     backup, even if they're no longer needed by the standby.
    </para>
 
-   <para>
-    A simple example of configuration is:
-<programlisting>
-primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass options=''-c wal_sender_timeout=5000'''
-restore_command = 'cp /path/to/archive/%f %p'
-archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
-</programlisting>
-   </para>
-
    <para>
     You can have any number of standby servers, but if you use streaming
     replication, make sure you set <varname>max_wal_senders</varname> high enough in
diff --git a/doc/src/sgml/ref/allfiles.sgml b/doc/src/sgml/ref/allfiles.sgml
index 0f0064150c..9729cc3f92 100644
--- a/doc/src/sgml/ref/allfiles.sgml
+++ b/doc/src/sgml/ref/allfiles.sgml
@@ -196,7 +196,6 @@ Complete list of usable sgml source files in this directory.
 <!ENTITY dropuser           SYSTEM "dropuser.sgml">
 <!ENTITY ecpgRef            SYSTEM "ecpg-ref.sgml">
 <!ENTITY initdb             SYSTEM "initdb.sgml">
-<!ENTITY pgarchivecleanup   SYSTEM "pgarchivecleanup.sgml">
 <!ENTITY pgBasebackup       SYSTEM "pg_basebackup.sgml">
 <!ENTITY pgbench            SYSTEM "pgbench.sgml">
 <!ENTITY pgChecksums        SYSTEM "pg_checksums.sgml">
diff --git a/doc/src/sgml/ref/pgarchivecleanup.sgml b/doc/src/sgml/ref/pgarchivecleanup.sgml
deleted file mode 100644
index 56f02fc0e6..0000000000
--- a/doc/src/sgml/ref/pgarchivecleanup.sgml
+++ /dev/null
@@ -1,215 +0,0 @@
-<!--
-doc/src/sgml/ref/pgarchivecleanup.sgml
-PostgreSQL documentation
--->
-
-<refentry id="pgarchivecleanup">
- <indexterm zone="pgarchivecleanup">
-  <primary>pg_archivecleanup</primary>
- </indexterm>
-
- <refmeta>
-  <refentrytitle><application>pg_archivecleanup</application></refentrytitle>
-  <manvolnum>1</manvolnum>
-  <refmiscinfo>Application</refmiscinfo>
- </refmeta>
-
- <refnamediv>
-  <refname>pg_archivecleanup</refname>
-  <refpurpose>clean up <productname>PostgreSQL</productname> WAL archive files</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-  <cmdsynopsis>
-   <command>pg_archivecleanup</command>
-   <arg rep="repeat"><replaceable>option</replaceable></arg>
-   <arg choice="plain"><replaceable>archivelocation</replaceable></arg>
-   <arg choice="plain"><replaceable>oldestkeptwalfile</replaceable></arg>
-  </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1>
-  <title>Description</title>
-
- <para>
-  <application>pg_archivecleanup</application> is designed to be used as an
-  <literal>archive_cleanup_command</literal> to clean up WAL file archives when
-  running as a standby server (see <xref linkend="warm-standby"/>).
-  <application>pg_archivecleanup</application> can also be used as a standalone program to
-  clean WAL file archives.
- </para>
-
-  <para>
-   To configure a standby
-   server to use <application>pg_archivecleanup</application>, put this into its
-   <filename>postgresql.conf</filename> configuration file:
-<programlisting>
-archive_cleanup_command = 'pg_archivecleanup <replaceable>archivelocation</replaceable> %r'
-</programlisting>
-   where <replaceable>archivelocation</replaceable> is the directory from which WAL segment
-   files should be removed.
-  </para>
-  <para>
-   When used within <xref linkend="guc-archive-cleanup-command"/>, all WAL files
-   logically preceding the value of the <literal>%r</literal> argument will be removed
-   from <replaceable>archivelocation</replaceable>. This minimizes the number of files
-   that need to be retained, while preserving crash-restart capability.  Use of
-   this parameter is appropriate if the <replaceable>archivelocation</replaceable> is a
-   transient staging area for this particular standby server, but
-   <emphasis>not</emphasis> when the <replaceable>archivelocation</replaceable> is intended as a
-   long-term WAL archive area, or when multiple standby servers are recovering
-   from the same archive location.
-  </para>
-  <para>
-   When used as a standalone program all WAL files logically preceding the
-   <replaceable>oldestkeptwalfile</replaceable> will be removed from <replaceable>archivelocation</replaceable>.
-   In this mode, if you specify a <filename>.partial</filename> or <filename>.backup</filename>
-   file name, then only the file prefix will be used as the
-   <replaceable>oldestkeptwalfile</replaceable>. This treatment of <filename>.backup</filename>
-   file name allows you to remove
-   all WAL files archived prior to a specific base backup without error.
-   For example, the following example will remove all files older than
-   WAL file name <filename>000000010000003700000010</filename>:
-<programlisting>
-pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
-
-pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
-pg_archivecleanup:  removing file "archive/00000001000000370000000F"
-pg_archivecleanup:  removing file "archive/00000001000000370000000E"
-</programlisting>
-  </para>
-  <para>
-   <application>pg_archivecleanup</application> assumes that
-   <replaceable>archivelocation</replaceable> is a directory readable and writable by the
-   server-owning user.
-  </para>
- </refsect1>
-
- <refsect1>
-  <title>Options</title>
-
-   <para>
-    <application>pg_archivecleanup</application> accepts the following command-line arguments:
-
-    <variablelist>
-
-     <varlistentry>
-      <term><option>-d</option></term>
-      <listitem>
-       <para>
-        Print lots of debug logging output on <filename>stderr</filename>.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-n</option></term>
-      <listitem>
-       <para>
-        Print the names of the files that would have been removed on <filename>stdout</filename> (performs a dry run).
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-V</option></term>
-      <term><option>--version</option></term>
-      <listitem>
-       <para>
-        Print the <application>pg_archivecleanup</application> version and exit.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-x</option> <replaceable>extension</replaceable></term>
-      <listitem>
-       <para>
-        Provide an extension
-        that will be stripped from all file names before deciding if they
-        should be deleted.  This is typically useful for cleaning up archives
-        that have been compressed during storage, and therefore have had an
-        extension added by the compression program.  For example: <literal>-x
-        .gz</literal>.
-       </para>
-
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-?</option></term>
-      <term><option>--help</option></term>
-      <listitem>
-       <para>
-        Show help about <application>pg_archivecleanup</application> command line
-        arguments, and exit.
-       </para>
-      </listitem>
-     </varlistentry>
-    </variablelist>
-   </para>
- </refsect1>
-
- <refsect1>
-  <title>Environment</title>
-
-  <para>
-   The environment variable <envar>PG_COLOR</envar> specifies whether to use
-   color in diagnostic messages. Possible values are
-   <literal>always</literal>, <literal>auto</literal> and
-   <literal>never</literal>.
-  </para>
- </refsect1>
- 
- 
- <refsect1>
-  <title>Notes</title>
-
-  <para>
-   <application>pg_archivecleanup</application> is designed to work with
-   <productname>PostgreSQL</productname> 8.0 and later when used as a standalone utility,
-   or with <productname>PostgreSQL</productname> 9.0 and later when used as an
-   archive cleanup command.
-  </para>
-
-  <para>
-   <application>pg_archivecleanup</application> is written in C and has an
-   easy-to-modify source code, with specifically designated sections to modify
-   for your own needs
-  </para>
- </refsect1>
-
- <refsect1>
-  <title>Examples</title>
-
-  <para>On Linux or Unix systems, you might use:
-<programlisting>
-archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
-</programlisting>
-   where the archive directory is physically located on the standby server,
-   so that the <varname>archive_command</varname> is accessing it across NFS,
-   but the files are local to the standby.
-   This will:
-  </para>
-  <itemizedlist>
-   <listitem>
-    <para>
-     produce debugging output in <filename>cleanup.log</filename>
-    </para>
-   </listitem>
-   <listitem>
-    <para>
-     remove no-longer-needed files from the archive directory
-    </para>
-   </listitem>
-  </itemizedlist>
- </refsect1>
-
- <refsect1>
-  <title>See Also</title>
-
-  <simplelist type="inline">
-   <member><xref linkend="pgstandby"/></member>
-  </simplelist>
- </refsect1>
-</refentry>
diff --git a/doc/src/sgml/reference.sgml b/doc/src/sgml/reference.sgml
index dd2bddab8c..5a8690efcb 100644
--- a/doc/src/sgml/reference.sgml
+++ b/doc/src/sgml/reference.sgml
@@ -276,7 +276,6 @@
   </partintro>
 
    &initdb;
-   &pgarchivecleanup;
    &pgChecksums;
    &pgControldata;
    &pgCtl;
diff --git a/src/bin/Makefile b/src/bin/Makefile
index 8b870357a1..19fb434e50 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -15,7 +15,6 @@ include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
 	initdb \
-	pg_archivecleanup \
 	pg_basebackup \
 	pg_checksums \
 	pg_config \
diff --git a/src/bin/pg_archivecleanup/.gitignore b/src/bin/pg_archivecleanup/.gitignore
deleted file mode 100644
index bd05d00156..0000000000
--- a/src/bin/pg_archivecleanup/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/pg_archivecleanup
-
-/tmp_check/
diff --git a/src/bin/pg_archivecleanup/Makefile b/src/bin/pg_archivecleanup/Makefile
deleted file mode 100644
index 49935d6dce..0000000000
--- a/src/bin/pg_archivecleanup/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# src/bin/pg_archivecleanup/Makefile
-
-PGFILEDESC = "pg_archivecleanup - cleans archive when used with streaming replication"
-PGAPPICON = win32
-
-subdir = src/bin/pg_archivecleanup
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-OBJS = \
-	$(WIN32RES) \
-	pg_archivecleanup.o
-
-all: pg_archivecleanup
-
-pg_archivecleanup: $(OBJS) | submake-libpgport
-	$(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
-
-install: all installdirs
-	$(INSTALL_PROGRAM) pg_archivecleanup$(X) '$(DESTDIR)$(bindir)/pg_archivecleanup$(X)'
-
-installdirs:
-	$(MKDIR_P) '$(DESTDIR)$(bindir)'
-
-uninstall:
-	rm -f '$(DESTDIR)$(bindir)/pg_archivecleanup$(X)'
-
-clean distclean maintainer-clean:
-	rm -f pg_archivecleanup$(X) $(OBJS)
-	rm -rf tmp_check
-
-check:
-	$(prove_check)
-
-installcheck:
-	$(prove_installcheck)
diff --git a/src/bin/pg_archivecleanup/nls.mk b/src/bin/pg_archivecleanup/nls.mk
deleted file mode 100644
index 20a09c8d78..0000000000
--- a/src/bin/pg_archivecleanup/nls.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-# src/bin/pg_archivecleanup/nls.mk
-CATALOG_NAME     = pg_archivecleanup
-AVAIL_LANGUAGES  = cs de es fr ja ko pl ru sv tr uk vi zh_CN
-GETTEXT_FILES    = $(FRONTEND_COMMON_GETTEXT_FILES) pg_archivecleanup.c
-GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS)
-GETTEXT_FLAGS    = $(FRONTEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c
deleted file mode 100644
index 12338e3bb2..0000000000
--- a/src/bin/pg_archivecleanup/pg_archivecleanup.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * pg_archivecleanup.c
- *
- * To be used as archive_cleanup_command to clean an archive when using
- * standby mode.
- *
- * src/bin/pg_archivecleanup/pg_archivecleanup.c
- */
-#include "postgres_fe.h"
-
-#include <ctype.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/time.h>
-
-#include "access/xlog_internal.h"
-#include "common/logging.h"
-#include "pg_getopt.h"
-
-const char *progname;
-
-/* Options and defaults */
-bool		dryrun = false;		/* are we performing a dry-run operation? */
-char	   *additional_ext = NULL;	/* Extension to remove from filenames */
-
-char	   *archiveLocation;	/* where to find the archive? */
-char	   *restartWALFileName; /* the file from which we can restart restore */
-char		exclusiveCleanupFileName[MAXFNAMELEN];	/* the oldest file we want
-													 * to remain in archive */
-
-
-/* =====================================================================
- *
- *		  Customizable section
- *
- * =====================================================================
- *
- *	Currently, this section assumes that the Archive is a locally
- *	accessible directory. If you want to make other assumptions,
- *	such as using a vendor-specific archive and access API, these
- *	routines are the ones you'll need to change. You're
- *	encouraged to submit any changes to pgsql-hackers@lists.postgresql.org
- *	or personally to the current maintainer. Those changes may be
- *	folded in to later versions of this program.
- */
-
-/*
- *	Initialize allows customized commands into the archive cleanup program.
- *
- *	You may wish to add code to check for tape libraries, etc..
- */
-static void
-Initialize(void)
-{
-	/*
-	 * This code assumes that archiveLocation is a directory, so we use stat
-	 * to test if it's accessible.
-	 */
-	struct stat stat_buf;
-
-	if (stat(archiveLocation, &stat_buf) != 0 ||
-		!S_ISDIR(stat_buf.st_mode))
-	{
-		pg_log_error("archive location \"%s\" does not exist",
-					 archiveLocation);
-		exit(2);
-	}
-}
-
-static void
-TrimExtension(char *filename, char *extension)
-{
-	int			flen;
-	int			elen;
-
-	if (extension == NULL)
-		return;
-
-	elen = strlen(extension);
-	flen = strlen(filename);
-
-	if (flen > elen && strcmp(filename + flen - elen, extension) == 0)
-		filename[flen - elen] = '\0';
-}
-
-static void
-CleanupPriorWALFiles(void)
-{
-	int			rc;
-	DIR		   *xldir;
-	struct dirent *xlde;
-	char		walfile[MAXPGPATH];
-
-	if ((xldir = opendir(archiveLocation)) != NULL)
-	{
-		while (errno = 0, (xlde = readdir(xldir)) != NULL)
-		{
-			/*
-			 * Truncation is essentially harmless, because we skip names of
-			 * length other than XLOG_FNAME_LEN.  (In principle, one could use
-			 * a 1000-character additional_ext and get trouble.)
-			 */
-			strlcpy(walfile, xlde->d_name, MAXPGPATH);
-			TrimExtension(walfile, additional_ext);
-
-			/*
-			 * We ignore the timeline part of the XLOG segment identifiers in
-			 * deciding whether a segment is still needed.  This ensures that
-			 * we won't prematurely remove a segment from a parent timeline.
-			 * We could probably be a little more proactive about removing
-			 * segments of non-parent timelines, but that would be a whole lot
-			 * more complicated.
-			 *
-			 * We use the alphanumeric sorting property of the filenames to
-			 * decide which ones are earlier than the exclusiveCleanupFileName
-			 * file. Note that this means files are not removed in the order
-			 * they were originally written, in case this worries you.
-			 */
-			if ((IsXLogFileName(walfile) || IsPartialXLogFileName(walfile)) &&
-				strcmp(walfile + 8, exclusiveCleanupFileName + 8) < 0)
-			{
-				char		WALFilePath[MAXPGPATH * 2]; /* the file path
-														 * including archive */
-
-				/*
-				 * Use the original file name again now, including any
-				 * extension that might have been chopped off before testing
-				 * the sequence.
-				 */
-				snprintf(WALFilePath, sizeof(WALFilePath), "%s/%s",
-						 archiveLocation, xlde->d_name);
-
-				if (dryrun)
-				{
-					/*
-					 * Prints the name of the file to be removed and skips the
-					 * actual removal.  The regular printout is so that the
-					 * user can pipe the output into some other program.
-					 */
-					printf("%s\n", WALFilePath);
-					pg_log_debug("file \"%s\" would be removed", WALFilePath);
-					continue;
-				}
-
-				pg_log_debug("removing file \"%s\"", WALFilePath);
-
-				rc = unlink(WALFilePath);
-				if (rc != 0)
-				{
-					pg_log_error("could not remove file \"%s\": %m",
-								 WALFilePath);
-					break;
-				}
-			}
-		}
-
-		if (errno)
-			pg_log_error("could not read archive location \"%s\": %m",
-						 archiveLocation);
-		if (closedir(xldir))
-			pg_log_error("could not close archive location \"%s\": %m",
-						 archiveLocation);
-	}
-	else
-		pg_log_error("could not open archive location \"%s\": %m",
-					 archiveLocation);
-}
-
-/*
- * SetWALFileNameForCleanup()
- *
- *	  Set the earliest WAL filename that we want to keep on the archive
- *	  and decide whether we need cleanup
- */
-static void
-SetWALFileNameForCleanup(void)
-{
-	bool		fnameOK = false;
-
-	TrimExtension(restartWALFileName, additional_ext);
-
-	/*
-	 * If restartWALFileName is a WAL file name then just use it directly. If
-	 * restartWALFileName is a .partial or .backup filename, make sure we use
-	 * the prefix of the filename, otherwise we will remove wrong files since
-	 * 000000010000000000000010.partial and
-	 * 000000010000000000000010.00000020.backup are after
-	 * 000000010000000000000010.
-	 */
-	if (IsXLogFileName(restartWALFileName))
-	{
-		strcpy(exclusiveCleanupFileName, restartWALFileName);
-		fnameOK = true;
-	}
-	else if (IsPartialXLogFileName(restartWALFileName))
-	{
-		int			args;
-		uint32		tli = 1,
-					log = 0,
-					seg = 0;
-
-		args = sscanf(restartWALFileName, "%08X%08X%08X.partial",
-					  &tli, &log, &seg);
-		if (args == 3)
-		{
-			fnameOK = true;
-
-			/*
-			 * Use just the prefix of the filename, ignore everything after
-			 * first period
-			 */
-			XLogFileNameById(exclusiveCleanupFileName, tli, log, seg);
-		}
-	}
-	else if (IsBackupHistoryFileName(restartWALFileName))
-	{
-		int			args;
-		uint32		tli = 1,
-					log = 0,
-					seg = 0,
-					offset = 0;
-
-		args = sscanf(restartWALFileName, "%08X%08X%08X.%08X.backup", &tli, &log, &seg, &offset);
-		if (args == 4)
-		{
-			fnameOK = true;
-
-			/*
-			 * Use just the prefix of the filename, ignore everything after
-			 * first period
-			 */
-			XLogFileNameById(exclusiveCleanupFileName, tli, log, seg);
-		}
-	}
-
-	if (!fnameOK)
-	{
-		pg_log_error("invalid file name argument");
-		fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
-		exit(2);
-	}
-}
-
-/* =====================================================================
- *		  End of Customizable section
- * =====================================================================
- */
-
-static void
-usage(void)
-{
-	printf(_("%s removes older WAL files from PostgreSQL archives.\n\n"), progname);
-	printf(_("Usage:\n"));
-	printf(_("  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"), progname);
-	printf(_("\nOptions:\n"));
-	printf(_("  -d             generate debug output (verbose mode)\n"));
-	printf(_("  -n             dry run, show the names of the files that would be removed\n"));
-	printf(_("  -V, --version  output version information, then exit\n"));
-	printf(_("  -x EXT         clean up files if they have this extension\n"));
-	printf(_("  -?, --help     show this help, then exit\n"));
-	printf(_("\n"
-			 "For use as archive_cleanup_command in postgresql.conf:\n"
-			 "  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-			 "e.g.\n"
-			 "  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"));
-	printf(_("\n"
-			 "Or for use as a standalone archive cleaner:\n"
-			 "e.g.\n"
-			 "  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"));
-	printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
-	printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
-}
-
-/*------------ MAIN ----------------------------------------*/
-int
-main(int argc, char **argv)
-{
-	int			c;
-
-	pg_logging_init(argv[0]);
-	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_archivecleanup"));
-	progname = get_progname(argv[0]);
-
-	if (argc > 1)
-	{
-		if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
-		{
-			usage();
-			exit(0);
-		}
-		if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
-		{
-			puts("pg_archivecleanup (PostgreSQL) " PG_VERSION);
-			exit(0);
-		}
-	}
-
-	while ((c = getopt(argc, argv, "x:dn")) != -1)
-	{
-		switch (c)
-		{
-			case 'd':			/* Debug mode */
-				pg_logging_increase_verbosity();
-				break;
-			case 'n':			/* Dry-Run mode */
-				dryrun = true;
-				break;
-			case 'x':
-				additional_ext = pg_strdup(optarg); /* Extension to remove
-													 * from xlogfile names */
-				break;
-			default:
-				fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
-				exit(2);
-				break;
-		}
-	}
-
-	/*
-	 * We will go to the archiveLocation to check restartWALFileName.
-	 * restartWALFileName may not exist anymore, which would not be an error,
-	 * so we separate the archiveLocation and restartWALFileName so we can
-	 * check separately whether archiveLocation exists, if not that is an
-	 * error
-	 */
-	if (optind < argc)
-	{
-		archiveLocation = argv[optind];
-		optind++;
-	}
-	else
-	{
-		pg_log_error("must specify archive location");
-		fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
-		exit(2);
-	}
-
-	if (optind < argc)
-	{
-		restartWALFileName = argv[optind];
-		optind++;
-	}
-	else
-	{
-		pg_log_error("must specify oldest kept WAL file");
-		fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
-		exit(2);
-	}
-
-	if (optind < argc)
-	{
-		pg_log_error("too many command-line arguments");
-		fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
-		exit(2);
-	}
-
-	/*
-	 * Check archive exists and other initialization if required.
-	 */
-	Initialize();
-
-	/*
-	 * Check filename is a valid name, then process to find cut-off
-	 */
-	SetWALFileNameForCleanup();
-
-	pg_log_debug("keeping WAL file \"%s/%s\" and later",
-				 archiveLocation, exclusiveCleanupFileName);
-
-	/*
-	 * Remove WAL files older than cut-off
-	 */
-	CleanupPriorWALFiles();
-
-	exit(0);
-}
diff --git a/src/bin/pg_archivecleanup/po/cs.po b/src/bin/pg_archivecleanup/po/cs.po
deleted file mode 100644
index c7f87a76a8..0000000000
--- a/src/bin/pg_archivecleanup/po/cs.po
+++ /dev/null
@@ -1,189 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2018 PostgreSQL Global Development Group
-# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 11\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-09-27 08:15+0000\n"
-"PO-Revision-Date: 2019-09-28 11:28+0200\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: cs\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.3\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-#| msgid "fatal\n"
-msgid "fatal: "
-msgstr "fatal: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-#| msgid "SQL error: %s\n"
-msgid "error: "
-msgstr "error: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-#| msgid "warning"
-msgid "warning: "
-msgstr "warning: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "archivnÃ­ lokace \"%s\" neexistuje"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "nelze odstranit soubor \"%s\": %m"
-
-#: pg_archivecleanup.c:162
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "nelze naÄÃ­st archivnÃ­ lokaci \"%s\": %m"
-
-#: pg_archivecleanup.c:165
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "nelze uzavÅÃ­t archivnÃ­ lokaci \"%s\": %m"
-
-#: pg_archivecleanup.c:169
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "nelze otevÅÃ­t archivnÃ­ lokaci \"%s\": %m"
-
-#: pg_archivecleanup.c:242
-#, c-format
-msgid "invalid file name argument"
-msgstr "chybnÃ½ argument jmÃ©na souboru"
-
-#: pg_archivecleanup.c:243 pg_archivecleanup.c:316 pg_archivecleanup.c:337
-#: pg_archivecleanup.c:349 pg_archivecleanup.c:356
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Zkuste \"%s --help\" pro vÃ­ce informacÃ­.\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s odstranÃ­ starÅ¡Ã­ WAL soubory z PostgreSQL archivÅ¯.\n"
-"\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "Usage:\n"
-msgstr "PouÅ¾itÃ­:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"PÅepÃ­naÄe:\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             vygeneruje debug vÃ½stup (vÃ­ce informacÃ­)\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             zkuÅ¡ebnÃ­ bÄh, ukazuje jmÃ©na souborÅ¯ kterÃ© by byly odstranÄny\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  vypÃ­Å¡e informaci o verzi, pak skonÄÃ­\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         vyÄistÃ­ soubory pokud majÃ­ tuto pÅÃ­ponu\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     ukÃ¡Å¾e tuto nÃ¡povÄdu, a skonÄÃ­\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"Pro pouÅ¾itÃ­ jako archive_cleanup_command v recovery.conf pokud standby_mode = on:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Nebo jako samostatnÃ½ ÄistiÄ archivu:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:274
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"Chyby hlaste na adresu <pgsql-bugs@postgresql.org>.\n"
-
-#: pg_archivecleanup.c:336
-#, c-format
-msgid "must specify archive location"
-msgstr "nutno zadat archivnÃ­ lokaci"
-
-#: pg_archivecleanup.c:348
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "nutno zadat nejstarÄÃ­ uchovÃ¡vanÃ½ WAL soubor"
-
-#: pg_archivecleanup.c:355
-#, c-format
-msgid "too many command-line arguments"
-msgstr "pÅÃ­liÅ¡ mnoho argumentÅ¯ na pÅÃ­kazovÃ© ÅÃ¡dce"
-
-#~ msgid "%s: keeping WAL file \"%s\" and later\n"
-#~ msgstr "%s: uchovÃ¡vÃ¡m WAL soubor \"%s\" a novÄjÅ¡Ã­\n"
-
-#~ msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-#~ msgstr "%s: ERROR: nelze odstranit soubor \"%s\": %s\n"
-
-#~ msgid "%s: removing file \"%s\"\n"
-#~ msgstr "%s: odstraÅuji soubor \"%s\"\n"
-
-#~ msgid "%s: file \"%s\" would be removed\n"
-#~ msgstr "%s: soubor \"%s\" by byl odstranÄn\n"
diff --git a/src/bin/pg_archivecleanup/po/de.po b/src/bin/pg_archivecleanup/po/de.po
deleted file mode 100644
index 7f1664b09d..0000000000
--- a/src/bin/pg_archivecleanup/po/de.po
+++ /dev/null
@@ -1,178 +0,0 @@
-# pg_archivecleanup message translation file for pg_archivecleanup
-# Copyright (C) 2019-2020 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# Peter Eisentraut <peter@eisentraut.org>, 2019 - 2020.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 13\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2020-04-09 10:17+0000\n"
-"PO-Revision-Date: 2020-04-09 15:15+0200\n"
-"Last-Translator: Peter Eisentraut <peter@eisentraut.org>\n"
-"Language-Team: German <pgsql-translators@postgresql.org>\n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/logging.c:236
-#, c-format
-msgid "fatal: "
-msgstr "Fatal: "
-
-#: ../../../src/common/logging.c:243
-#, c-format
-msgid "error: "
-msgstr "Fehler: "
-
-#: ../../../src/common/logging.c:250
-#, c-format
-msgid "warning: "
-msgstr "Warnung: "
-
-#: pg_archivecleanup.c:66
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "Archivverzeichnis Â»%sÂ« existiert nicht"
-
-#: pg_archivecleanup.c:152
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "konnte Datei Â»%sÂ« nicht lÃ¶schen: %m"
-
-#: pg_archivecleanup.c:160
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "konnte Archivverzeichnis Â»%sÂ« nicht lesen: %m"
-
-#: pg_archivecleanup.c:163
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "konnte Archivverzeichnis Â»%sÂ« nicht schlieÃen: %m"
-
-#: pg_archivecleanup.c:167
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "konnte Archivverzeichnis Â»%sÂ« nicht Ã¶ffnen: %m"
-
-#: pg_archivecleanup.c:240
-#, c-format
-msgid "invalid file name argument"
-msgstr "ungÃ¼ltiges Dateinamenargument"
-
-#: pg_archivecleanup.c:241 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Versuchen Sie Â»%s --helpÂ« fÃ¼r weitere Informationen.\n"
-
-#: pg_archivecleanup.c:254
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s entfernt alte WAL-Dateien aus PostgreSQL-Archiven.\n"
-"\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid "Usage:\n"
-msgstr "Aufruf:\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPTION]... ARCHIVVERZEICHNIS ÃLTESTE-ZU-BEHALTENE-WALDATEI\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"Optionen:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             Debug-Ausgaben erzeugen (Verbose-Modus)\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             Probelauf, Namen der Dateien anzeigen, die entfernt wÃ¼rden\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  Versionsinformationen anzeigen, dann beenden\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x ERW         Dateien mit dieser Erweiterung aufrÃ¤umen\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     diese Hilfe anzeigen, dann beenden\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"Verwendung als archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVVERZ %%r'\n"
-"z.B.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiv %%r'\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Oder alleinstehende Verwendung zum AufrÃ¤umen eines Archivs:\n"
-"z.B.\n"
-"  pg_archivecleanup /mnt/server/archiv 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:272
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <%s>.\n"
-msgstr ""
-"\n"
-"Berichten Sie Fehler an <%s>.\n"
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr "%s Homepage: <%s>\n"
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "Archivverzeichnis muss angegeben werden"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "Ã¤lteste zu behaltene WAL-Datei muss angegeben werden"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "zu viele Kommandozeilenargumente"
diff --git a/src/bin/pg_archivecleanup/po/es.po b/src/bin/pg_archivecleanup/po/es.po
deleted file mode 100644
index f0350a1385..0000000000
--- a/src/bin/pg_archivecleanup/po/es.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# Spanish message translation file for pg_archivecleanup
-# Copyright (c) 2017-2019, PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-#
-# Carlos Chapi <carlos.chapi@2ndquadrant.com>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 12\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2020-05-17 02:47+0000\n"
-"PO-Revision-Date: 2019-06-06 17:21-0400\n"
-"Last-Translator: Carlos Chapi <carlos.chapi@2ndquadrant.com>\n"
-"Language-Team: PgSQL-es-Ayuda <pgsql-es-ayuda@lists.postgresql.org>\n"
-"Language: es\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: BlackCAT 1.0\n"
-
-#: ../../../src/common/logging.c:236
-#, c-format
-msgid "fatal: "
-msgstr "fatal: "
-
-#: ../../../src/common/logging.c:243
-#, c-format
-msgid "error: "
-msgstr "error: "
-
-#: ../../../src/common/logging.c:250
-#, c-format
-msgid "warning: "
-msgstr "precauciÃ³n: "
-
-#: pg_archivecleanup.c:66
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "ubicaciÃ³n de archivador Â«%sÂ» no existe"
-
-#: pg_archivecleanup.c:152
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "no se pudo eliminar el archivo Â«%sÂ»: %m"
-
-#: pg_archivecleanup.c:160
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "no se pudo leer la ubicaciÃ³n del archivador Â«%sÂ»: %m"
-
-#: pg_archivecleanup.c:163
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "no se pudo cerrar la ubicaciÃ³n del archivador Â«%sÂ»: %m"
-
-#: pg_archivecleanup.c:167
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "no se pudo abrir la ubicaciÃ³n del archivador Â«%sÂ»: %m"
-
-#: pg_archivecleanup.c:240
-#, c-format
-msgid "invalid file name argument"
-msgstr "el nombre de archivo usado como argumento no es vÃ¡lido"
-
-#: pg_archivecleanup.c:241 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Pruebe Â«%s --helpÂ» para mayor informaciÃ³n.\n"
-
-#: pg_archivecleanup.c:254
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s elimina archivos de WAL antiguos del archivador de PostgreSQL.\n"
-"\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid "Usage:\n"
-msgstr "Empleo:\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPCIÃN].... UBICACIÃNARCHIVADOR WALMÃSANTIGUOAMANTENER\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"Opciones:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             genera salida de depuraciÃ³n (modo verboso)\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             simulacro, muestra el nombre de los archivos que se eliminarÃ­an\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  muestra informaciÃ³n de la versiÃ³n, luego sale\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         hace limpieza de archivos que tengan esta extensiÃ³n\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     muestra esta ayuda, luego sale\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"Para usar como archive_cleanup_command en postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPCIÃN]... UBICACIÃNARCHIVADOR %%r'\n"
-"por ej.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/servidor/directorioarchivador %%r'\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"O para usar como un limpiador de archivador de forma independiente:\n"
-"por ej.\n"
-"  pg_archivecleanup /mnt/servidor/directorioarchivador 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:272
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <%s>.\n"
-msgstr ""
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr ""
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "debe especificar la ubicaciÃ³n del archivador"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "debe especificar el fichero WAL mÃ¡s antiguo a mantener"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "demasiados argumentos de lÃ­nea de Ã³rdenes"
-
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Reporte errores a <pgsql-bugs@lists.postgresql.org>.\n"
diff --git a/src/bin/pg_archivecleanup/po/fr.po b/src/bin/pg_archivecleanup/po/fr.po
deleted file mode 100644
index 02749f8a63..0000000000
--- a/src/bin/pg_archivecleanup/po/fr.po
+++ /dev/null
@@ -1,201 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 12\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2020-04-16 06:16+0000\n"
-"PO-Revision-Date: 2020-04-16 13:39+0200\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: fr\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.3\n"
-
-#: ../../../src/common/logging.c:236
-#, c-format
-msgid "fatal: "
-msgstr "fatal : "
-
-#: ../../../src/common/logging.c:243
-#, c-format
-msgid "error: "
-msgstr "erreur : "
-
-#: ../../../src/common/logging.c:250
-#, c-format
-msgid "warning: "
-msgstr "attention : "
-
-#: pg_archivecleanup.c:66
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "l'emplacement d'archivage Â« %s Â» n'existe pas"
-
-#: pg_archivecleanup.c:152
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "n'a pas pu supprimer le fichier Â« %s Â» : %m"
-
-#: pg_archivecleanup.c:160
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "n'a pas pu lire l'emplacement de l'archive Â« %s Â» : %m"
-
-#: pg_archivecleanup.c:163
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "n'a pas pu fermer l'emplacement de l'archive Â« %s Â» : %m"
-
-#: pg_archivecleanup.c:167
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "n'a pas pu ouvrir l'emplacement de l'archive Â« %s Â» : %m"
-
-#: pg_archivecleanup.c:240
-#, c-format
-msgid "invalid file name argument"
-msgstr "argument du nom de fichier invalide"
-
-#: pg_archivecleanup.c:241 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Essayez Â« %s --help Â» pour plus d'informations.\n"
-
-#: pg_archivecleanup.c:254
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s supprime les anciens fichiers WAL des archives de PostgreSQL.\n"
-"\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid "Usage:\n"
-msgstr "Usage :\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPTION]... EMPLACEMENTARCHIVE PLUSANCIENFICHIERWALCONSERVÃ\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"Options :\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             affiche des informations de dÃ©bugage (mode verbeux)\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             test, affiche le nom des fichiers qui seraient supprimÃ©s\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  affiche la version et quitte\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         nettoie les fichiers s'ils ont cette extension\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     affiche cette aide et quitte\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"Pour utiliser comme archive_cleanup_command dans postgresql.conf :\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... EMPLACEMENTARCHIVE %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/serveur/reparchives %%r'\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Ou pour utiliser comme nettoyeur autonome d'archives :\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/serveur/reparchives 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:272
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <%s>.\n"
-msgstr ""
-"\n"
-"Rapporter les bogues Ã  <%s>.\n"
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr "page d'accueil de %s : <%s>\n"
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "doit spÃ©cifier l'emplacement de l'archive"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "doit spÃ©cifier le plus ancien journal de transactions conservÃ©"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "trop d'arguments en ligne de commande"
-
-#~ msgid "%s: file \"%s\" would be removed\n"
-#~ msgstr "%s : le fichier Â« %s Â» serait supprimÃ©\n"
-
-#~ msgid "%s: removing file \"%s\"\n"
-#~ msgstr "%s : suppression du fichier Â« %s Â»\n"
-
-#~ msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-#~ msgstr "%s : ERREUR : n'a pas pu supprimer le fichier Â« %s Â» : %s\n"
-
-#~ msgid "%s: keeping WAL file \"%s\" and later\n"
-#~ msgstr "%s : conservation du fichier WAL Â« %s Â» et des suivants\n"
-
-#~ msgid "%s: too many parameters\n"
-#~ msgstr "%s : trop de paramÃ¨tres\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Rapporter les bogues Ã  <pgsql-bugs@lists.postgresql.org>.\n"
diff --git a/src/bin/pg_archivecleanup/po/ja.po b/src/bin/pg_archivecleanup/po/ja.po
deleted file mode 100644
index c1d079a6df..0000000000
--- a/src/bin/pg_archivecleanup/po/ja.po
+++ /dev/null
@@ -1,212 +0,0 @@
-# Japanese message translation file for pg_archivecleanup
-# Copyright (C) 2019 PostgreSQL Global Development Group
-# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL 12 beta 1)\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-06-06 10:43+0900\n"
-"PO-Revision-Date: 2019-06-06 17:02+0900\n"
-"Last-Translator: Kyotaro Horiguchi <horikyota.ntt@gmail.com>\n"
-"Language-Team: Japan PostgreSQL Users Group <jpug-doc@ml.postgresql.jp>\n"
-"Language: ja\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.4\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-msgid "fatal: "
-msgstr "è´å½çã¨ã©ã¼: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-msgid "error: "
-msgstr "ã¨ã©ã¼: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-msgid "warning: "
-msgstr "è­¦å: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-#| msgid "%s: archive location \"%s\" does not exist\n"
-msgid "archive location \"%s\" does not exist"
-msgstr "ã¢ã¼ã«ã¤ãã®å ´æ\"%s\"ãå­å¨ãã¾ãã"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "ãã¡ã¤ã«\"%s\"ãåé¤ã§ãã¾ããã§ãã: %m"
-
-#: pg_archivecleanup.c:162
-#, c-format
-#| msgid "%s: could not read archive location \"%s\": %s\n"
-msgid "could not read archive location \"%s\": %m"
-msgstr "ã¢ã¼ã«ã¤ãã®å ´æ\"%s\"ãèª­ã¿è¾¼ãã¾ããã§ãã: %m"
-
-#: pg_archivecleanup.c:165
-#, c-format
-#| msgid "%s: could not close archive location \"%s\": %s\n"
-msgid "could not close archive location \"%s\": %m"
-msgstr "ã¢ã¼ã«ã¤ãã®å ´æ\"%s\"ãã¯ã­ã¼ãºã§ãã¾ããã§ãã: %m"
-
-#: pg_archivecleanup.c:169
-#, c-format
-#| msgid "%s: could not open archive location \"%s\": %s\n"
-msgid "could not open archive location \"%s\": %m"
-msgstr "ã¢ã¼ã«ã¤ãã®å ´æ\"%s\"ããªã¼ãã³ã§ãã¾ããã§ãã: %m"
-
-#: pg_archivecleanup.c:242
-#, c-format
-#| msgid "%s: invalid file name argument\n"
-msgid "invalid file name argument"
-msgstr "ãã¡ã¤ã«åå¼æ°ãç¡å¹ã§ã"
-
-#: pg_archivecleanup.c:243 pg_archivecleanup.c:316 pg_archivecleanup.c:337
-#: pg_archivecleanup.c:349 pg_archivecleanup.c:356
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "\"%s --help\"ã§è©³ç´°ãåç§ã§ãã¾ãã\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%sã¯PostgreSQLã®ã¢ã¼ã«ã¤ãããå¤ãWALãã¡ã¤ã«ãåé¤ãã¾ãã\n"
-"\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "Usage:\n"
-msgstr "ä½¿ç¨æ³:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr ""
-"%s [ãªãã·ã§ã³] ... {ã¢ã¼ã«ã¤ãã®å ´æ} {ä¿å­ããæå¤ã® WAL ãã¡ã¤ã«å}\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"ãªãã·ã§ã³:\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             ãããã°æå ±ãåºåï¼åé·ã¢ã¼ãï¼\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid ""
-"  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             ãªãã¼ãµã«ãåé¤å¯¾è±¡ã®ãã¡ã¤ã«åãè¡¨ç¤º\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  ãã¼ã¸ã§ã³æå ±ãåºåãã¦çµäº\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         ãã®æ¡å¼µå­ãæã¤ãã¡ã¤ã«ãåé¤å¯¾è±¡ã¨ãã\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     ãã®ãã«ããè¡¨ç¤ºãã¦çµäº\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-#| msgid ""
-#| "\n"
-#| "For use as archive_cleanup_command in recovery.conf when standby_mode = "
-#| "on:\n"
-#| "  archive_cleanup_command = 'pg_archivecleanup [OPTION]... "
-#| "ARCHIVELOCATION %%r'\n"
-#| "e.g.\n"
-#| "  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir "
-#| "%%r'\n"
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION "
-"%%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"postgresql.confã§archive_cleanup_commandã¨ãã¦ä½¿ç¨ããå ´åã¯ä»¥ä¸ã®ããã«ãã¾"
-"ã:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [ãªãã·ã§ã³]... ã¢ã¼ã«ã¤ãã®å ´"
-"æ %%r'\n"
-"ä¾ã¨ãã¦ã¯:\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"ãããã¯ã¹ã¿ã³ãã¢ã­ã³ã®ã¢ã¼ã«ã¤ãã¯ãªã¼ãã¼ã¨ãã¦ä½¿ãå ´åã¯:\n"
-"ä½¿ç¨ä¾\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:274
-#, c-format
-#| msgid ""
-#| "\n"
-#| "Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"ãã°ã¯ <pgsql-bugs@lists.postgresql.org> ã«å ±åãã¦ãã ããã\n"
-
-#: pg_archivecleanup.c:336
-#, c-format
-#| msgid "%s: must specify archive location\n"
-msgid "must specify archive location"
-msgstr "ã¢ã¼ã«ã¤ãã®å ´æãæå®ãã¦ãã ãã"
-
-#: pg_archivecleanup.c:348
-#, c-format
-#| msgid "%s: must specify oldest kept WAL file\n"
-msgid "must specify oldest kept WAL file"
-msgstr "ä¿å­ããæå¤ã®WALãã¡ã¤ã«ãæå®ãã¦ãã ãã"
-
-#: pg_archivecleanup.c:355
-#, c-format
-#| msgid "%s: too many command-line arguments\n"
-msgid "too many command-line arguments"
-msgstr "ã³ãã³ãã©ã¤ã³å¼æ°ãå¤ããã¾ã"
-
-#~ msgid "%s: keeping WAL file \"%s\" and later\n"
-#~ msgstr "%s: WAL file \"%s\" ã¨ããä»¥éã®åãä¿å­ãã¦ãã¾ã\n"
-
-#~ msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-#~ msgstr "%s: ã¨ã©ã¼: ãã¡ã¤ã« \"%s\" ãåé¤ã§ãã¾ããã§ãã: %s\n"
-
-#~ msgid "%s: removing file \"%s\"\n"
-#~ msgstr "%s: ãã¡ã¤ã« \"%s\" ãåé¤ãã¦ãã¾ã\n"
-
-#~ msgid "%s: file \"%s\" would be removed\n"
-#~ msgstr "%s: ãã¡ã¤ã« \"%s\" ã¯åé¤ããã¾ã\n"
diff --git a/src/bin/pg_archivecleanup/po/ko.po b/src/bin/pg_archivecleanup/po/ko.po
deleted file mode 100644
index 2a3a2fb620..0000000000
--- a/src/bin/pg_archivecleanup/po/ko.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# Ioseph Kim <ioseph@uri.sarang.net>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 12\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2020-02-09 20:16+0000\n"
-"PO-Revision-Date: 2019-10-31 11:13+0900\n"
-"Last-Translator: Ioseph Kim <ioseph@uri.sarang.net>\n"
-"Language-Team: Korean <pgsql-kr@postgresql.kr>\n"
-"Language: ko\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-msgid "fatal: "
-msgstr "ì¬ê°: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-msgid "error: "
-msgstr "ì¤ë¥: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-msgid "warning: "
-msgstr "ê²½ê³ : "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "\"%s\" ì´ë¦ì ìì¹´ì´ë¸ ìì¹ê° ìì"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "\"%s\" íì¼ì ì­ì í  ì ìì: %m"
-
-#: pg_archivecleanup.c:162
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "\"%s\" ìì¹´ì´ë¸ ìì¹ë¥¼ ì½ì ì ìì: %m"
-
-#: pg_archivecleanup.c:165
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "\"%s\" ìì¹´ì´ë¸ ìì¹ë¥¼ ë«ì ì ìì: %m"
-
-#: pg_archivecleanup.c:169
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "\"%s\" ìì¹´ì´ë¸ ìì¹ë¥¼ ì´ ì ìì: %m"
-
-#: pg_archivecleanup.c:242
-#, c-format
-msgid "invalid file name argument"
-msgstr "ìëª»ë íì¼ ì´ë¦ ë§¤ê°ë³ì"
-
-#: pg_archivecleanup.c:243 pg_archivecleanup.c:316 pg_archivecleanup.c:337
-#: pg_archivecleanup.c:349 pg_archivecleanup.c:356
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "ë³´ë¤ ìì¸í ì ë³´ë \"%s --help\" ëªë ¹ì ì°¸ì¡°íì¸ì.\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s ëªë ¹ì PostgreSQL ìì¹´ì´ë¸ ë³´ê´ììì ì¤ëë\n"
-"WAL íì¼ì ì§ìëë¤.\n"
-"\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "Usage:\n"
-msgstr "ì¬ì©ë²:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [ìµì]... ìì¹´ì´ë¸ìì¹ ë³´ê´í ì ì¼ì¤ëëíì¼\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"ìµìë¤:\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             ë³´ë¤ ìì¸í ìì ë´ì© ì¶ë ¥\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid ""
-"  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             ì§ì¸ ëìë§ íì¸íê³  ì§ì°ì§ë ìì\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  ë²ì  ì ë³´ë¥¼ ë³´ì¬ì£¼ê³  ë§ì¹¨\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         í´ë¹ íì¥ì íì¼ë¤ì ìì ëìì¼ë¡ í¨\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     ëìë§ì ë³´ì¬ì£¼ê³  ë§ì¹¨\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION "
-"%%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"postgresql.conf íì¼ìì archive_cleanup_command ì¤ì  ë°©ë²:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [ìµì]... ìì¹´ì´ë¸ìì¹ %%r'\n"
-"ì¬ì©ì:\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"ëë ëªë ¹íìì ëë¦½ì ì¼ë¡ ì¬ì©íë ê²½ì°:\n"
-"ì¬ì©ì:\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:274
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"ë¬¸ì ì  ë³´ê³  <pgsql-bugs@lists.postgresql.org>.\n"
-
-#: pg_archivecleanup.c:336
-#, c-format
-msgid "must specify archive location"
-msgstr "ìì¹´ì´ë¸ ìì¹ë ì§ì í´ì¼ í¨"
-
-#: pg_archivecleanup.c:348
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "ë¨ê¸¸ ê°ì¥ ì¤ëë WAL íì¼ì ì§ì í´ì¼ í¨"
-
-#: pg_archivecleanup.c:355
-#, c-format
-msgid "too many command-line arguments"
-msgstr "ëë¬´ ë§ì ëªë ¹í ì¸ìë¥¼ ì§ì íì"
diff --git a/src/bin/pg_archivecleanup/po/pl.po b/src/bin/pg_archivecleanup/po/pl.po
deleted file mode 100644
index 0b5e9d43da..0000000000
--- a/src/bin/pg_archivecleanup/po/pl.po
+++ /dev/null
@@ -1,178 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# grzegorz <begina.felicysym@wp.eu>, 2017.
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 10\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2017-03-14 17:45+0000\n"
-"PO-Revision-Date: 2017-03-14 19:43+0200\n"
-"Last-Translator: grzegorz <begina.felicysym@wp.eu>\n"
-"Language-Team: begina.felicysym@wp.eu\n"
-"Language: pl\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
-"X-Generator: Virtaal 0.7.1\n"
-
-#: pg_archivecleanup.c:73
-#, c-format
-msgid "%s: archive location \"%s\" does not exist\n"
-msgstr "%s: lokacja archiwum \"%s\" nie istnieje\n"
-
-#: pg_archivecleanup.c:149
-#, c-format
-msgid "%s: file \"%s\" would be removed\n"
-msgstr "%s: plik \"%s\" zostanie usuniÄty\n"
-
-#: pg_archivecleanup.c:155
-#, c-format
-msgid "%s: removing file \"%s\"\n"
-msgstr "%s: usuwanie pliku \"%s\"\n"
-
-#: pg_archivecleanup.c:161
-#, c-format
-msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-msgstr "%s: BÅÄD: nie daÅo siÄ usunÄÄ pliku \"%s\": %s\n"
-
-#: pg_archivecleanup.c:169
-#, c-format
-msgid "%s: could not read archive location \"%s\": %s\n"
-msgstr "%s: nie moÅ¼na czytaÄ z lokacji archiwum \"%s\": %s\n"
-
-#: pg_archivecleanup.c:172
-#, c-format
-msgid "%s: could not close archive location \"%s\": %s\n"
-msgstr "%s: nie moÅ¼na zamknÄÄ lokacji archiwum \"%s\": %s\n"
-
-#: pg_archivecleanup.c:176
-#, c-format
-msgid "%s: could not open archive location \"%s\": %s\n"
-msgstr "%s: nie moÅ¼na otworzyÄ lokacji archiwum \"%s\": %s\n"
-
-#: pg_archivecleanup.c:249
-#, c-format
-msgid "%s: invalid filename input\n"
-msgstr "%s: niepoprawna nazwa pliku wejÅcia\n"
-
-#: pg_archivecleanup.c:250 pg_archivecleanup.c:322 pg_archivecleanup.c:343
-#: pg_archivecleanup.c:355 pg_archivecleanup.c:362
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "UÅ¼yj \"%s --help\" aby uzyskaÄ wiÄcej informacji.\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s usuwa starsze pliki WAL z archiwÃ³w PostgreSQL.\n"
-"\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "Usage:\n"
-msgstr "SkÅadnia:\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPCJA]... LOKACJAARCHIWUM NAJSTARSZYZACHOWANYPLIKWAL\n"
-
-#: pg_archivecleanup.c:266
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"Opcje:\n"
-
-#: pg_archivecleanup.c:267
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             generuje informacje diagnostyczne (trym rozgadany)\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             przebieg prÃ³bny, pokazuje nazwy plikÃ³w do usuniÄcia\n"
-
-#: pg_archivecleanup.c:269
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  wypisuje informacje o wersji i koÅczy\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         czyÅci pliki jeÅli majÄ takie rozszerzenie\n"
-
-#: pg_archivecleanup.c:271
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     pokazuje ten ekran pomocy i koÅczy\n"
-
-#: pg_archivecleanup.c:272
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in recovery.conf when standby_mode = on:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"Do uÅ¼ycia jako archive_cleanup_command w recovery.conf kiedy standby_mode = "
-"on:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPCJA]... LOKACJAARCHIWUM %%"
-"r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:277
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Lub by uÅ¼yÄ podczas samodzielnego czyszczenia archiwÃ³w:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:281
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr ""
-"\n"
-"BÅÄdy proszÄ przesyÅaÄ na adres <pgsql-bugs@postgresql.org>.\n"
-
-#: pg_archivecleanup.c:342
-#, c-format
-msgid "%s: must specify archive location\n"
-msgstr "%s: wymagane wskazanie lokacji archiwum\n"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "%s: must specify restartfilename\n"
-msgstr "%s: wymagane wskazanie nazwy pliku restartu\n"
-
-#: pg_archivecleanup.c:361
-#, c-format
-msgid "%s: too many parameters\n"
-msgstr "%s: za duÅ¼o parametrÃ³w\n"
-
-#: pg_archivecleanup.c:380
-#, c-format
-msgid "%s: keep WAL file \"%s\" and later\n"
-msgstr "%s: zachowaj plik WAL \"%s\" a nastÄpnie\n"
diff --git a/src/bin/pg_archivecleanup/po/ru.po b/src/bin/pg_archivecleanup/po/ru.po
deleted file mode 100644
index 579026ecba..0000000000
--- a/src/bin/pg_archivecleanup/po/ru.po
+++ /dev/null
@@ -1,192 +0,0 @@
-# Russian message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# Alexander Lakhin <a.lakhin@postgrespro.ru>, 2017, 2019.
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 10\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-09-09 12:21+0300\n"
-"PO-Revision-Date: 2019-08-28 14:04+0300\n"
-"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
-"Language-Team: Russian <pgsql-ru-general@postgresql.org>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-msgid "fatal: "
-msgstr "Ð²Ð°Ð¶Ð½Ð¾: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-msgid "error: "
-msgstr "Ð¾ÑÐ¸Ð±ÐºÐ°: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-msgid "warning: "
-msgstr "Ð¿ÑÐµÐ´ÑÐ¿ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "ÑÐ°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð°ÑÑÐ¸Ð²Ð° \"%s\" Ð½Ðµ ÑÑÑÐµÑÑÐ²ÑÐµÑ"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "Ð½Ðµ ÑÐ´Ð°Ð»Ð¾ÑÑ ÑÑÐµÑÐµÑÑ ÑÐ°Ð¹Ð» \"%s\": %m"
-
-#: pg_archivecleanup.c:162
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "Ð½Ðµ ÑÐ´Ð°Ð»Ð¾ÑÑ Ð¿ÑÐ¾ÑÐ¸ÑÐ°ÑÑ ÑÐ°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð°ÑÑÐ¸Ð²Ð° \"%s\": %m"
-
-#: pg_archivecleanup.c:165
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "Ð½Ðµ ÑÐ´Ð°Ð»Ð¾ÑÑ Ð·Ð°ÐºÑÑÑÑ ÑÐ°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð°ÑÑÐ¸Ð²Ð° \"%s\": %m"
-
-#: pg_archivecleanup.c:169
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "Ð½Ðµ ÑÐ´Ð°Ð»Ð¾ÑÑ Ð¾ÑÐºÑÑÑÑ ÑÐ°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð°ÑÑÐ¸Ð²Ð° \"%s\": %m"
-
-#: pg_archivecleanup.c:242
-#, c-format
-msgid "invalid file name argument"
-msgstr "Ð½ÐµÐ²ÐµÑÐ½ÑÐ¹ Ð°ÑÐ³ÑÐ¼ÐµÐ½Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÐ°Ð¹Ð»Ð°"
-
-#: pg_archivecleanup.c:243 pg_archivecleanup.c:316 pg_archivecleanup.c:337
-#: pg_archivecleanup.c:349 pg_archivecleanup.c:356
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "ÐÐ»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑÐµÐ»ÑÐ½Ð¾Ð¹ Ð¸Ð½ÑÐ¾ÑÐ¼Ð°ÑÐ¸Ð¸ Ð¿Ð¾Ð¿ÑÐ¾Ð±ÑÐ¹ÑÐµ \"%s --help\".\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s ÑÐ´Ð°Ð»ÑÐµÑ ÑÑÐ°ÑÑÐµ ÑÐ°Ð¹Ð»Ñ WAL Ð¸Ð· Ð°ÑÑÐ¸Ð²Ð¾Ð² PostgreSQL.\n"
-"\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "Usage:\n"
-msgstr "ÐÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr ""
-"  %s [ÐÐÐ ÐÐÐÐ¢Ð ]... Ð ÐÐ¡ÐÐÐÐÐÐÐÐÐ_ÐÐ Ð¥ÐÐÐ Ð¡Ð¢ÐÐ ÐÐÐ¨ÐÐ_Ð¡ÐÐ¥Ð ÐÐÐ¯ÐÐÐ«Ð_Ð¤ÐÐÐ_WAL\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"ÐÐ°ÑÐ°Ð¼ÐµÑÑÑ:\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             Ð³ÐµÐ½ÐµÑÐ¸ÑÐ¾Ð²Ð°ÑÑ Ð¿Ð¾Ð´ÑÐ¾Ð±Ð½ÑÐµ ÑÐ¾Ð¾Ð±ÑÐµÐ½Ð¸Ñ (Ð¾ÑÐ»Ð°Ð´Ð¾ÑÐ½ÑÐ¹ ÑÐµÐ¶Ð¸Ð¼)\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid ""
-"  -n             dry run, show the names of the files that would be removed\n"
-msgstr ""
-"  -n             ÑÐ¾Ð»Ð¾ÑÑÐ¾Ð¹ Ð·Ð°Ð¿ÑÑÐº, ÑÐ¾Ð»ÑÐºÐ¾ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ Ð¸Ð¼ÐµÐ½Ð° ÑÐ°Ð¹Ð»Ð¾Ð², ÐºÐ¾ÑÐ¾ÑÑÐµ "
-"Ð±ÑÐ´ÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¸ Ð²ÑÐ¹ÑÐ¸\n"
-
-# well-spelled: Ð Ð¡Ð¨
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x Ð Ð¡Ð¨         ÑÐ±ÑÐ°ÑÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½ÑÐ¼ ÑÐ°ÑÑÐ¸ÑÐµÐ½Ð¸ÐµÐ¼\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ ÑÑÑ ÑÐ¿ÑÐ°Ð²ÐºÑ Ð¸ Ð²ÑÐ¹ÑÐ¸\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION "
-"%%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"ÐÐ»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÐºÐ°ÑÐµÑÑÐ²Ðµ archive_cleanup_command Ð² postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [ÐÐÐ ÐÐÐÐ¢Ð ]... "
-"Ð ÐÐ¡ÐÐÐÐÐÐÐÐÐ_ÐÐ Ð¥ÐÐÐ %%r'\n"
-"Ð½Ð°Ð¿ÑÐ¸Ð¼ÐµÑ:\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"ÐÐ¸Ð±Ð¾ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÐºÐ°ÑÐµÑÑÐ²Ðµ Ð¾ÑÐ´ÐµÐ»ÑÐ½Ð¾Ð³Ð¾ ÑÑÐµÐ´ÑÑÐ²Ð° Ð¾ÑÐ¸ÑÑÐºÐ¸ Ð°ÑÑÐ¸Ð²Ð°,\n"
-"Ð½Ð°Ð¿ÑÐ¸Ð¼ÐµÑ:\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:274
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"ÐÐ± Ð¾ÑÐ¸Ð±ÐºÐ°Ñ ÑÐ¾Ð¾Ð±ÑÐ°Ð¹ÑÐµ Ð¿Ð¾ Ð°Ð´ÑÐµÑÑ <pgsql-bugs@lists.postgresql.org>.\n"
-
-#: pg_archivecleanup.c:336
-#, c-format
-msgid "must specify archive location"
-msgstr "Ð½ÐµÐ¾Ð±ÑÐ¾Ð´Ð¸Ð¼Ð¾ Ð·Ð°Ð´Ð°ÑÑ ÑÐ°ÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð°ÑÑÐ¸Ð²Ð°"
-
-#: pg_archivecleanup.c:348
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "Ð½ÐµÐ¾Ð±ÑÐ¾Ð´Ð¸Ð¼Ð¾ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð¼Ñ ÑÑÐ°ÑÐµÐ¹ÑÐµÐ³Ð¾ ÑÐ¾ÑÑÐ°Ð½ÑÐµÐ¼Ð¾Ð³Ð¾ ÑÐ°Ð¹Ð»Ð° WAL"
-
-#: pg_archivecleanup.c:355
-#, c-format
-msgid "too many command-line arguments"
-msgstr "ÑÐ»Ð¸ÑÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð°ÑÐ³ÑÐ¼ÐµÐ½ÑÐ¾Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑÐ¾ÐºÐ¸"
-
-#~ msgid "%s: file \"%s\" would be removed\n"
-#~ msgstr "%s: ÑÐ°Ð¹Ð» \"%s\" Ð½Ðµ Ð±ÑÐ´ÐµÑ ÑÐ´Ð°Ð»ÑÐ½\n"
-
-#~ msgid "%s: removing file \"%s\"\n"
-#~ msgstr "%s: ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ðµ ÑÐ°Ð¹Ð»Ð° \"%s\"\n"
-
-#~ msgid "%s: keeping WAL file \"%s\" and later\n"
-#~ msgstr "%s: Ð±ÑÐ´ÐµÑ ÑÐ¾ÑÑÐ°Ð½ÑÐ½ ÑÐ°Ð¹Ð» WAL \"%s\" Ð¸ Ð¿Ð¾ÑÐ»ÐµÐ´ÑÑÑÐ¸Ðµ\n"
diff --git a/src/bin/pg_archivecleanup/po/sv.po b/src/bin/pg_archivecleanup/po/sv.po
deleted file mode 100644
index c0f3a77282..0000000000
--- a/src/bin/pg_archivecleanup/po/sv.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# Swedish message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# Dennis BjÃ¶rklund <db@zigo.dhs.org>, 2017, 2018, 2019, 2020.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PostgreSQL 13\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2020-04-11 01:17+0000\n"
-"PO-Revision-Date: 2020-04-11 07:37+0200\n"
-"Last-Translator: FDennis BjÃ¶rklund <db@zigo.dhs.org>\n"
-"Language-Team: Swedish <pgsql-translators@postgresql.org>\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../../../src/common/logging.c:236
-#, c-format
-msgid "fatal: "
-msgstr "fatalt: "
-
-#: ../../../src/common/logging.c:243
-#, c-format
-msgid "error: "
-msgstr "fel: "
-
-#: ../../../src/common/logging.c:250
-#, c-format
-msgid "warning: "
-msgstr "varning: "
-
-#: pg_archivecleanup.c:66
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "arkivplats \"%s\" finns inte"
-
-#: pg_archivecleanup.c:152
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "kunde inte ta bort fil \"%s\": %m"
-
-#: pg_archivecleanup.c:160
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "kunde inte lÃ¤sa arkivplats \"%s\": %m"
-
-#: pg_archivecleanup.c:163
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "kunde inte stÃ¤nga arkivplats \"%s\": %m"
-
-#: pg_archivecleanup.c:167
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "kunde inte Ã¶ppna arkivplats \"%s\": %m"
-
-#: pg_archivecleanup.c:240
-#, c-format
-msgid "invalid file name argument"
-msgstr "ogiltigt filnamnsargument"
-
-#: pg_archivecleanup.c:241 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "FÃ¶rsÃ¶k med \"%s --help\" fÃ¶r mer information.\n"
-
-#: pg_archivecleanup.c:254
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s tar bort gamla WAL-filer frÃ¥n PostgreSQLs arkiv.\n"
-"\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid "Usage:\n"
-msgstr "AnvÃ¤ndning:\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [FLAGGA]... ARKIVPLATS ÃLDSTASPARADEWALFIL\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"Flaggor:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             generera debugutskrift (utfÃ¶rligt lÃ¤ge)\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             gÃ¶r inga Ã¤ndringar visa namn pÃ¥ de filer som skulle ha tagits bort\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  visa versionsinformation, avsluta sedan\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x SUF         stÃ¤da upp filer om de har detta suffix\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     visa denna hjÃ¤lp, avsluta sedan\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"FÃ¶r att anvÃ¤nda som archive_cleanup_command i postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [FLAGGA]... ARKIVPLATS %%r'\n"
-"t.ex.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Eller fÃ¶r att anvÃ¤nda som en separat arkivstÃ¤dare:\n"
-"t.ex.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:272
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <%s>.\n"
-msgstr ""
-"\n"
-"Rapportera fel till <%s>.\n"
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr "hemsida fÃ¶r %s: <%s>\n"
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "mÃ¥ste ange en arkivplats"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "mÃ¥ste ange Ã¤ldsta sparade WAL-filen"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "fÃ¶r mÃ¥nga kommandoradsargument"
diff --git a/src/bin/pg_archivecleanup/po/tr.po b/src/bin/pg_archivecleanup/po/tr.po
deleted file mode 100644
index c61889af82..0000000000
--- a/src/bin/pg_archivecleanup/po/tr.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2017 PostgreSQL Global Development Group
-# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 10\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-04-26 13:48+0000\n"
-"PO-Revision-Date: 2019-05-28 10:30+0300\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: tr\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.7.1\n"
-
-#: ../../../src/fe_utils/logging.c:182
-#, c-format
-msgid "fatal: "
-msgstr "Ã¶lÃ¼mcÃ¼l (fatal): "
-
-#: ../../../src/fe_utils/logging.c:189
-#, c-format
-msgid "error: "
-msgstr "hata: "
-
-#: ../../../src/fe_utils/logging.c:196
-#, c-format
-msgid "warning: "
-msgstr "uyarÄ±: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "\"%s\" arÅiv lokasyonu mevcut deÄil"
-
-#: pg_archivecleanup.c:153
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "\"%s\" dosyasÄ± silinemedi: %m"
-
-#: pg_archivecleanup.c:161
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "\"%s\" arÅiv lokasyonu okunamadÄ±: %m"
-
-#: pg_archivecleanup.c:164
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "\"%s\" arÅiv lokasyonu kapatÄ±lamadÄ±: %m"
-
-#: pg_archivecleanup.c:168
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "\"%s\" arÅiv lokasyonu aÃ§Ä±lamadÄ±: %m"
-
-#: pg_archivecleanup.c:241
-#, c-format
-msgid "invalid file name argument"
-msgstr "geÃ§ersiz dosya adÄ± argÃ¼manÄ±"
-
-#: pg_archivecleanup.c:242 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Daha fazla bilgi iÃ§in \"%s --help\" yazÄ±n\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr "%s daha eski WAL dosyalarÄ±nÄ± PostgreSQL arÅivlerinden kaldÄ±rÄ±r.\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "Usage:\n"
-msgstr "KullanÄ±mÄ±:\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr " %s [SECENEK]... ARSIVLOKASYONU TUTULANENESKIWALDOSYASI\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"SeÃ§enekler:\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             hata ayÄ±klama Ã§Ä±ktÄ±sÄ± oluÅtur (ayrÄ±ntÄ±lÄ± aÃ§Ä±klamalÄ± mod)\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             tatbikat modu, sadece kaldÄ±rÄ±lacak dosyalarÄ±n adlarÄ±nÄ± gÃ¶ster\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  sÃ¼rÃ¼m bilgisini gÃ¶ster, sonra Ã§Ä±k\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT             bu uzantÄ±ya sahip dosyalarÄ± temizle\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     bu yardÄ±mÄ± gÃ¶ster, sonra Ã§Ä±k\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"postgresql.conf'da archive_cleanup_command olarak kullanmak iÃ§in:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [SECENEK]... ARSIVLOKASYONU %%r'\n"
-"Ã¶rnek:\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-"\n"
-
-#: pg_archivecleanup.c:269
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Veya baÄÄ±msÄ±z bir arÅiv temizleyici olarak kullanmak iÃ§in: \n"
-"Ã¶rnek:\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"HatalarÄ± <pgsql-bugs@lists.postgresql.org> adresine bildirebilirsiniz.\n"
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "arÅiv lokasyonu belirtilmeli"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "tutulan en eski WAL dosyasÄ± belirtilmeli"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "Ã§ok fazla komut-satÄ±rÄ± argÃ¼manÄ±"
-
-#~ msgid "%s: keeping WAL file \"%s\" and later\n"
-#~ msgstr "%s: \"%s\" ve sonrasÄ±ndaki WAl dosyalarÄ± tutuluyor\n"
-
-#~ msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-#~ msgstr "%s: HATA: \"%s\" dosyasÄ± kaldÄ±rÄ±lamadÄ±: %s\n"
-
-#~ msgid "%s: removing file \"%s\"\n"
-#~ msgstr "%s: \"%s\" dosyasÄ± kaldÄ±rÄ±lÄ±yor\n"
-
-#~ msgid "%s: file \"%s\" would be removed\n"
-#~ msgstr "%s: \"%s\" dosyasÄ± kaldÄ±rÄ±lacak\n"
diff --git a/src/bin/pg_archivecleanup/po/uk.po b/src/bin/pg_archivecleanup/po/uk.po
deleted file mode 100644
index 61b792b791..0000000000
--- a/src/bin/pg_archivecleanup/po/uk.po
+++ /dev/null
@@ -1,161 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: postgresql\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-09-08 14:46+0000\n"
-"PO-Revision-Date: 2019-12-20 20:23\n"
-"Last-Translator: pasha_golub\n"
-"Language-Team: Ukrainian\n"
-"Language: uk_UA\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
-"X-Crowdin-Project: postgresql\n"
-"X-Crowdin-Language: uk\n"
-"X-Crowdin-File: /REL_12_STABLE/pg_archivecleanup.pot\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-msgid "fatal: "
-msgstr "Ð·Ð±ÑÐ¹: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-msgid "error: "
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-msgid "warning: "
-msgstr "Ð¿Ð¾Ð¿ÐµÑÐµÐ´Ð¶ÐµÐ½Ð½Ñ: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "Ð°ÑÑÑÐ²Ð½Ð¾Ð³Ð¾ ÑÐ¾Ð·ÑÐ°ÑÑÐ²Ð°Ð½Ð½Ñ \"%s\" Ð½Ðµ ÑÑÐ½ÑÑ"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð´Ð°Ð»Ð¸ÑÐ¸ ÑÐ°Ð¹Ð» \"%s\": %m"
-
-#: pg_archivecleanup.c:162
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¿ÑÐ¾ÑÐ¸ÑÐ°ÑÐ¸ Ð°ÑÑÑÐ²Ð½Ðµ ÑÐ¾Ð·ÑÐ°ÑÑÐ²Ð°Ð½Ð½Ñ \"%s\":%m"
-
-#: pg_archivecleanup.c:165
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð·Ð°ÐºÑÐ¸ÑÐ¸ Ð°ÑÑÑÐ²Ð½Ðµ ÑÐ¾Ð·ÑÐ°ÑÑÐ²Ð°Ð½Ð½Ñ \"%s\":%m"
-
-#: pg_archivecleanup.c:169
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð²ÑÐ´ÐºÑÐ¸ÑÐ¸ Ð°ÑÑÑÐ²Ð½Ðµ ÑÐ¾Ð·ÑÐ°ÑÑÐ²Ð°Ð½Ð½Ñ \"%s\":%m"
-
-#: pg_archivecleanup.c:242
-#, c-format
-msgid "invalid file name argument"
-msgstr "Ð½ÐµÐ´ÑÐ¹ÑÐ½Ð° Ð½Ð°Ð·Ð²Ð° ÑÐ°Ð¹Ð»Ð° Ð· Ð°ÑÐ³ÑÐ¼ÐµÐ½ÑÐ¾Ð¼"
-
-#: pg_archivecleanup.c:243 pg_archivecleanup.c:316 pg_archivecleanup.c:337
-#: pg_archivecleanup.c:349 pg_archivecleanup.c:356
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "Ð¡Ð¿ÑÐ¾Ð±ÑÐ¹ÑÐµ \"%s --help\" Ð´Ð»Ñ Ð´Ð¾Ð´Ð°ÑÐºÐ¾Ð²Ð¾Ñ ÑÐ½ÑÐ¾ÑÐ¼Ð°ÑÑÑ.\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "%s removes older WAL files from PostgreSQL archives.\n\n"
-msgstr "%s Ð²Ð¸Ð´Ð°Ð»ÑÑ ÑÑÐ°ÑÑ WAL-ÑÐ°Ð¹Ð»Ð¸ Ð· Ð°ÑÑÑÐ²ÑÐ² PostgreSQL.\n\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "Usage:\n"
-msgstr "ÐÐ¸ÐºÐ¾ÑÐ¸ÑÑÐ°Ð½Ð½Ñ:\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPTION]... Ð ÐÐÐ¢ÐÐ¨Ð£ÐÐÐÐÐ¯_ÐÐ Ð¥ÐÐÐ ÐÐÐÐÐÐÐÐÐ¨ÐÐ_ÐÐÐÐ ÐÐÐÐÐÐ_WAL_Ð¤ÐÐÐ\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "\n"
-"Options:\n"
-msgstr "\n"
-"ÐÐ°ÑÐ°Ð¼ÐµÑÑÐ¸:\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d Ð³ÐµÐ½ÐµÑÑÑ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÑÐ²Ð°Ð»ÑÐ½Ñ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (Ð´ÐµÑÐ°Ð»ÑÐ½Ð¸Ð¹ ÑÐµÐ¶Ð¸Ð¼)\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             ÑÑÑÐ¸Ð¹ Ð·Ð°Ð¿ÑÑÐº, Ð¿Ð¾ÐºÐ°Ð·ÑÑ ÑÑÐ»ÑÐºÐ¸ ÑÑ ÑÐ°Ð¹Ð»Ð¸, ÑÐºÑ Ð±ÑÐ´ÑÑÑ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ñ\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÐ¸ Ð²ÐµÑÑÑÑ, Ð¿Ð¾ÑÑÐ¼ Ð²Ð¸Ð¹ÑÐ¸\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         Ð¿ÑÐ¸Ð±ÑÐ°ÑÐ¸ ÑÐ°Ð¹Ð»Ð¸ Ð· ÑÐ¸Ð¼ ÑÐ¾Ð·ÑÐ¸ÑÐµÐ½Ð½ÑÐ¼\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÐ¸ ÑÑ Ð´Ð¾Ð²ÑÐ´ÐºÑ, Ð¿Ð¾ÑÑÐ¼ Ð²Ð¸Ð¹ÑÐ¸\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid "\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr "\n"
-"ÐÐ»Ñ Ð²Ð¸ÐºÐ¾ÑÐ¸ÑÑÐ°Ð½Ð½Ñ ÑÐº archive_cleanup_command Ñ postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"Ð½Ð°Ð¿Ñ.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid "\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr "\n"
-"ÐÐ±Ð¾ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑÐ¸ÑÑÐ°Ð½Ð½Ñ Ð² ÑÐºÐ¾ÑÑÑ Ð¾ÐºÑÐµÐ¼Ð¾Ð³Ð¾ Ð·Ð°ÑÐ¾Ð±Ñ Ð´Ð»Ñ ÑÐ¸ÑÑÐºÐ¸ Ð°ÑÑÑÐ²ÑÐ²,\n"
-"Ð½Ð°Ð¿ÑÐ¸ÐºÐ»Ð°Ð´:\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:274
-#, c-format
-msgid "\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr "\n"
-"ÐÑÐ¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÑÐ¹ÑÐµ Ð½Ð° <pgsql-bugs@lists.postgresql.org>.\n"
-
-#: pg_archivecleanup.c:336
-#, c-format
-msgid "must specify archive location"
-msgstr "Ð½ÐµÐ¾Ð±ÑÑÐ´Ð½Ð¾ Ð²ÐºÐ°Ð·Ð°ÑÐ¸ ÑÐ¾Ð·ÑÐ°ÑÑÐ²Ð°Ð½Ð½Ñ Ð°ÑÑÑÐ²Ð°"
-
-#: pg_archivecleanup.c:348
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "Ð½ÐµÐ¾Ð±ÑÑÐ´Ð½Ð¾ Ð²ÐºÐ°Ð·Ð°ÑÐ¸ Ð½Ð°Ð¹Ð´Ð°Ð²Ð½ÑÑÐ¸Ð¹ Ð·Ð±ÐµÑÐµÐ¶ÐµÐ½Ð¸Ð¹ WAL-ÑÐ°Ð¹Ð»"
-
-#: pg_archivecleanup.c:355
-#, c-format
-msgid "too many command-line arguments"
-msgstr "Ð·Ð°Ð½Ð°Ð´ÑÐ¾ Ð±Ð°Ð³Ð°ÑÐ¾ Ð°ÑÐ³ÑÐ¼ÐµÐ½ÑÑÐ² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ ÑÑÐ´ÐºÐ°"
-
diff --git a/src/bin/pg_archivecleanup/po/vi.po b/src/bin/pg_archivecleanup/po/vi.po
deleted file mode 100644
index e35f8181a4..0000000000
--- a/src/bin/pg_archivecleanup/po/vi.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2018 PostgreSQL Global Development Group
-# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
-# FIRST AUTHOR <kakalot49@gmail.com>, 2018.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 11\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2018-04-23 02:27+0900\n"
-"PO-Revision-Date: 2018-05-04 22:03+0900\n"
-"Language-Team: <pgvn_translators@postgresql.vn>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.6\n"
-"Last-Translator: Dang Minh Huong <kakalot49@gmail.com>\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: vi_VN\n"
-
-#: pg_archivecleanup.c:72
-#, c-format
-msgid "%s: archive location \"%s\" does not exist\n"
-msgstr "%s: vá» trÃ­ lÆ°u trá»¯ \"%s\" khÃ´ng tá»n táº¡i\n"
-
-#: pg_archivecleanup.c:148
-#, c-format
-msgid "%s: file \"%s\" would be removed\n"
-msgstr "%s: tá»p \"%s\" sáº½ bá» xÃ³a\n"
-
-#: pg_archivecleanup.c:154
-#, c-format
-msgid "%s: removing file \"%s\"\n"
-msgstr "%s: Äang xÃ³a tá»p \"%s\"\n"
-
-#: pg_archivecleanup.c:160
-#, c-format
-msgid "%s: ERROR: could not remove file \"%s\": %s\n"
-msgstr "%s: Lá»I: khÃ´ng thá» xÃ³a tá»p \"%s\": %s\n"
-
-#: pg_archivecleanup.c:168
-#, c-format
-msgid "%s: could not read archive location \"%s\": %s\n"
-msgstr "%s: khÃ´ng thá» Äá»c vá» trÃ­ lÆ°u trá»¯ \"%s\": %s\n"
-
-#: pg_archivecleanup.c:171
-#, c-format
-msgid "%s: could not close archive location \"%s\": %s\n"
-msgstr "%s: khÃ´ng thá» ÄÃ³ng vá» trÃ­ lÆ°u trá»¯ \"%s\": %s\n"
-
-#: pg_archivecleanup.c:175
-#, c-format
-msgid "%s: could not open archive location \"%s\": %s\n"
-msgstr "%s: khÃ´ng thá» má» vá» trÃ­ lÆ°u trá»¯ \"%s\": %s\n"
-
-#: pg_archivecleanup.c:248
-#, c-format
-msgid "%s: invalid file name argument\n"
-msgstr "%s: Äá»i sá» tÃªn tá»p khÃ´ng há»£p lá»\n"
-
-#: pg_archivecleanup.c:249 pg_archivecleanup.c:321 pg_archivecleanup.c:342
-#: pg_archivecleanup.c:354 pg_archivecleanup.c:361
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "HÃ£y thá»­ \"%s --help\" Äá» biáº¿t thÃªm thÃ´ng tin.\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr "%s xÃ³a cÃ¡c tá»p WAL cÅ© hÆ¡n khá»i lÆ°u trá»¯ PostgreSQL.\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "Usage:\n"
-msgstr "CÃ¡ch sá»­ dá»¥ng:\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [TÃ¹y chá»n]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-
-#: pg_archivecleanup.c:265
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"TÃ¹y chá»n:\n"
-
-#: pg_archivecleanup.c:266
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             xuáº¥t debug log (cháº¿ Äá» chi tiáº¿t)\n"
-
-#: pg_archivecleanup.c:267
-#, c-format
-msgid ""
-"  -n             dry run, show the names of the files that would be "
-"removed\n"
-msgstr "  -n             cháº¡y khÃ´, hiá»n thá» tÃªn cá»§a cÃ¡c tá»p sáº½ bá» xÃ³a\n"
-
-#: pg_archivecleanup.c:268
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  xuáº¥t thÃ´ng tin báº£n, sau ÄÃ³ káº¿t thÃºc\n"
-
-#: pg_archivecleanup.c:269
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         dá»n dáº¹p cÃ¡c táº­p tin náº¿u chÃºng cÃ³ pháº§n má» rá»ng nÃ y\n"
-
-#: pg_archivecleanup.c:270
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     hiá»n thá» trá»£ giÃºp nÃ y, sau ÄÃ³ thoÃ¡t\n"
-
-#: pg_archivecleanup.c:271
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in recovery.conf when standby_mode = "
-"on:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION "
-"%%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir "
-"%%r'\n"
-msgstr ""
-"\n"
-"Äá» sá»­ dá»¥ng nhÆ° archive_cleanup_command trong recovery.conf khi "
-"standby_mode = on:\n"
-"   archive_cleanup_command = 'pg_archivecleanup [TÃY CHá»N] ... "
-"ARCHIVELOCATION %%r'\n"
-"vÃ­ dá»¥.\n"
-"   archive_cleanup_command = 'pg_archivecleanup/mnt/server/archiverdir "
-"%%r'\n"
-
-#: pg_archivecleanup.c:276
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"Hoáº·c Äá» sá»­ dá»¥ng nhÆ° má»t trÃ¬nh dá»n dáº¹p lÆ°u trá»¯ Äá»c láº­p:\n"
-"vÃ­ dá»¥.\n"
-"  pg_archivecleanup /mnt/server/archiverdir "
-"000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:280
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@postgresql.org>.\n"
-msgstr ""
-"\n"
-"BÃ¡o cÃ¡o bugs qua email <pgsql-bugs@postgresql.org>.\n"
-
-#: pg_archivecleanup.c:341
-#, c-format
-msgid "%s: must specify archive location\n"
-msgstr "%s: pháº£i chá» Äá»nh vá» trÃ­ lÆ°u trá»¯\n"
-
-#: pg_archivecleanup.c:353
-#, c-format
-msgid "%s: must specify oldest kept WAL file\n"
-msgstr "%s: pháº£i chá» Äá»nh tá»p WAL ÄÆ°á»£c giá»¯ lÃ¢u nháº¥t\n"
-
-#: pg_archivecleanup.c:360
-#, c-format
-msgid "%s: too many command-line arguments\n"
-msgstr "%s: cÃ³ quÃ¡ nhiá»u Äá»i sá» dÃ²ng lá»nh\n"
-
-#: pg_archivecleanup.c:379
-#, c-format
-msgid "%s: keeping WAL file \"%s\" and later\n"
-msgstr "%s: giá»¯ tá»p WAL \"%s\" vÃ  nhá»¯ng tá»p tiáº¿p theo\n"
diff --git a/src/bin/pg_archivecleanup/po/zh_CN.po b/src/bin/pg_archivecleanup/po/zh_CN.po
deleted file mode 100644
index 39c8569f34..0000000000
--- a/src/bin/pg_archivecleanup/po/zh_CN.po
+++ /dev/null
@@ -1,174 +0,0 @@
-# LANGUAGE message translation file for pg_archivecleanup
-# Copyright (C) 2019 PostgreSQL Global Development Group
-# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
-# FIRST AUTHOR <zhangjie2@cn.fujitsu.com>, 2019.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: pg_archivecleanup (PostgreSQL) 12\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2019-05-22 17:56+0800\n"
-"PO-Revision-Date: 2019-06-16 19:40+0800\n"
-"Last-Translator: Jie Zhang <zhangjie2@cn.fujitsu.com>\n"
-"Language-Team: Chinese (Simplified) <zhangjie2@cn.fujitsu.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_CN\n"
-
-#: ../../../src/common/logging.c:188
-#, c-format
-msgid "fatal: "
-msgstr "è´å½ç: "
-
-#: ../../../src/common/logging.c:195
-#, c-format
-msgid "error: "
-msgstr "éè¯¯: "
-
-#: ../../../src/common/logging.c:202
-#, c-format
-msgid "warning: "
-msgstr "è­¦å: "
-
-#: pg_archivecleanup.c:68
-#, c-format
-msgid "archive location \"%s\" does not exist"
-msgstr "å­æ¡£ä½ç½®\"%s\"ä¸å­å¨"
-
-#: pg_archivecleanup.c:153
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "æ æ³å é¤æä»¶ \"%s\": %m"
-
-#: pg_archivecleanup.c:161
-#, c-format
-msgid "could not read archive location \"%s\": %m"
-msgstr "æ æ³è¯»åå­æ¡£ä½ç½®\"%s\": %m"
-
-#: pg_archivecleanup.c:164
-#, c-format
-msgid "could not close archive location \"%s\": %m"
-msgstr "æ æ³å³é­å­æ¡£ä½ç½® \"%s\": %m"
-
-#: pg_archivecleanup.c:168
-#, c-format
-msgid "could not open archive location \"%s\": %m"
-msgstr "æ æ³æå¼å­æ¡£ä½ç½®\"%s\": %m"
-
-#: pg_archivecleanup.c:241
-#, c-format
-msgid "invalid file name argument"
-msgstr "æä»¶ååæ°æ æ"
-
-#: pg_archivecleanup.c:242 pg_archivecleanup.c:315 pg_archivecleanup.c:336
-#: pg_archivecleanup.c:348 pg_archivecleanup.c:355
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "è¯·ç¨ \"%s --help\" è·åæ´å¤çä¿¡æ¯.\n"
-
-#: pg_archivecleanup.c:255
-#, c-format
-msgid ""
-"%s removes older WAL files from PostgreSQL archives.\n"
-"\n"
-msgstr ""
-"%s ä»PostgreSQLå­æ¡£ä¸­å é¤æ§çWALæä»¶.\n"
-"\n"
-
-#: pg_archivecleanup.c:256
-#, c-format
-msgid "Usage:\n"
-msgstr "ä½¿ç¨æ¹æ³:\n"
-
-#: pg_archivecleanup.c:257
-#, c-format
-msgid "  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"
-msgstr "  %s [OPTION]... å½æ¡£æä»¶ä½ç½® ææ©ä¿å­çWALæä»¶\n"
-
-#: pg_archivecleanup.c:258
-#, c-format
-msgid ""
-"\n"
-"Options:\n"
-msgstr ""
-"\n"
-"éé¡¹:\n"
-
-#: pg_archivecleanup.c:259
-#, c-format
-msgid "  -d             generate debug output (verbose mode)\n"
-msgstr "  -d             çæè°è¯è¾åºï¼è¯¦ç»æ¨¡å¼ï¼\n"
-
-#: pg_archivecleanup.c:260
-#, c-format
-msgid "  -n             dry run, show the names of the files that would be removed\n"
-msgstr "  -n             dryè¿è¡ï¼æ¾ç¤ºè¦å é¤çæä»¶çåç§°\n"
-
-#: pg_archivecleanup.c:261
-#, c-format
-msgid "  -V, --version  output version information, then exit\n"
-msgstr "  -V, --version  è¾åºçæ¬ä¿¡æ¯ï¼ç¶åéåº\n"
-
-#: pg_archivecleanup.c:262
-#, c-format
-msgid "  -x EXT         clean up files if they have this extension\n"
-msgstr "  -x EXT         å¦ææä»¶å·ææ­¤æ©å±åï¼åæ¸é¤æä»¶\n"
-
-#: pg_archivecleanup.c:263
-#, c-format
-msgid "  -?, --help     show this help, then exit\n"
-msgstr "  -?, --help     æ¾ç¤ºå¸®å©ä¿¡æ¯ï¼ç¶åéåº\n"
-
-#: pg_archivecleanup.c:264
-#, c-format
-msgid ""
-"\n"
-"For use as archive_cleanup_command in postgresql.conf:\n"
-"  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
-"e.g.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-msgstr ""
-"\n"
-"å¨postgresql.confä¸­ï¼archive_cleanup_commandçç¨æ³ \n"
-"  archive_cleanup_command = 'pg_archivecleanup [éé¡¹]... å­æ¡£ä½ç½® %%r'\n"
-"ä¾.\n"
-"  archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"
-
-#: pg_archivecleanup.c:269
-#, c-format
-msgid ""
-"\n"
-"Or for use as a standalone archive cleaner:\n"
-"e.g.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-msgstr ""
-"\n"
-"æèï¼ç¨ä½ç¬ç«å­æ¡£æ¸çç¨åº:\n"
-"ä¾.\n"
-"  pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"
-
-#: pg_archivecleanup.c:273
-#, c-format
-msgid ""
-"\n"
-"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
-msgstr ""
-"\n"
-"æ¥åéè¯¯è³ <pgsql-bugs@lists.postgresql.org>.\n"
-
-#: pg_archivecleanup.c:335
-#, c-format
-msgid "must specify archive location"
-msgstr "å¿é¡»æå®å­æ¡£ä½ç½®"
-
-#: pg_archivecleanup.c:347
-#, c-format
-msgid "must specify oldest kept WAL file"
-msgstr "å¿é¡»æå®ææ©ä¿å­çWALæä»¶"
-
-#: pg_archivecleanup.c:354
-#, c-format
-msgid "too many command-line arguments"
-msgstr "å½ä»¤è¡åæ°å¤ªå¤"
-
diff --git a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl b/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
deleted file mode 100644
index 22782d3042..0000000000
--- a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
+++ /dev/null
@@ -1,98 +0,0 @@
-use strict;
-use warnings;
-use TestLib;
-use Test::More tests => 42;
-
-program_help_ok('pg_archivecleanup');
-program_version_ok('pg_archivecleanup');
-program_options_handling_ok('pg_archivecleanup');
-
-my $tempdir = TestLib::tempdir;
-
-my @walfiles = (
-	'00000001000000370000000C.gz', '00000001000000370000000D',
-	'00000001000000370000000E',    '00000001000000370000000F.partial',);
-
-sub create_files
-{
-	foreach my $fn (@walfiles, 'unrelated_file')
-	{
-		open my $file, '>', "$tempdir/$fn";
-		print $file 'CONTENT';
-		close $file;
-	}
-	return;
-}
-
-create_files();
-
-command_fails_like(
-	['pg_archivecleanup'],
-	qr/must specify archive location/,
-	'fails if archive location is not specified');
-
-command_fails_like(
-	[ 'pg_archivecleanup', $tempdir ],
-	qr/must specify oldest kept WAL file/,
-	'fails if oldest kept WAL file name is not specified');
-
-command_fails_like(
-	[ 'pg_archivecleanup', 'notexist', 'foo' ],
-	qr/archive location .* does not exist/,
-	'fails if archive location does not exist');
-
-command_fails_like(
-	[ 'pg_archivecleanup', $tempdir, 'foo', 'bar' ],
-	qr/too many command-line arguments/,
-	'fails with too many command-line arguments');
-
-command_fails_like(
-	[ 'pg_archivecleanup', $tempdir, 'foo' ],
-	qr/invalid file name argument/,
-	'fails with invalid restart file name');
-
-{
-	# like command_like but checking stderr
-	my $stderr;
-	my $result = IPC::Run::run [ 'pg_archivecleanup', '-d', '-n', $tempdir,
-		$walfiles[2] ], '2>', \$stderr;
-	ok($result, "pg_archivecleanup dry run: exit code 0");
-	like(
-		$stderr,
-		qr/$walfiles[1].*would be removed/,
-		"pg_archivecleanup dry run: matches");
-	foreach my $fn (@walfiles)
-	{
-		ok(-f "$tempdir/$fn", "$fn not removed");
-	}
-}
-
-sub run_check
-{
-	my ($suffix, $test_name) = @_;
-
-	create_files();
-
-	command_ok(
-		[
-			'pg_archivecleanup', '-x', '.gz', $tempdir,
-			$walfiles[2] . $suffix
-		],
-		"$test_name: runs");
-
-	ok(!-f "$tempdir/$walfiles[0]",
-		"$test_name: first older WAL file was cleaned up");
-	ok(!-f "$tempdir/$walfiles[1]",
-		"$test_name: second older WAL file was cleaned up");
-	ok(-f "$tempdir/$walfiles[2]",
-		"$test_name: restartfile was not cleaned up");
-	ok(-f "$tempdir/$walfiles[3]",
-		"$test_name: newer WAL file was not cleaned up");
-	ok(-f "$tempdir/unrelated_file",
-		"$test_name: unrelated file was not cleaned up");
-	return;
-}
-
-run_check('',                 'pg_archivecleanup');
-run_check('.partial',         'pg_archivecleanup with .partial file');
-run_check('.00000020.backup', 'pg_archivecleanup with .backup file');
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 33ebea2965..a0a6512b11 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -56,11 +56,11 @@ my @contrib_excludes = (
 my $frontend_defines = { 'initdb' => 'FRONTEND' };
 my @frontend_uselibpq = ('pg_ctl', 'pg_upgrade', 'pgbench', 'psql', 'initdb');
 my @frontend_uselibpgport = (
-	'pg_archivecleanup', 'pg_test_fsync',
+	'pg_test_fsync',
 	'pg_test_timing',    'pg_upgrade',
 	'pg_waldump',        'pgbench');
 my @frontend_uselibpgcommon = (
-	'pg_archivecleanup', 'pg_test_fsync',
+	'pg_test_fsync',
 	'pg_test_timing',    'pg_upgrade',
 	'pg_waldump',        'pgbench');
 my $frontend_extralibs = {
-- 
2.17.0

