summaryrefslogtreecommitdiffstats
path: root/src/bin/pg_resetwal
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
commit46651ce6fe013220ed397add242004d764fc0153 (patch)
tree6e5299f990f88e60174a1d3ae6e48eedd2688b2b /src/bin/pg_resetwal
parentInitial commit. (diff)
downloadpostgresql-14-46651ce6fe013220ed397add242004d764fc0153.tar.xz
postgresql-14-46651ce6fe013220ed397add242004d764fc0153.zip
Adding upstream version 14.5.upstream/14.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/bin/pg_resetwal')
-rw-r--r--src/bin/pg_resetwal/.gitignore2
-rw-r--r--src/bin/pg_resetwal/Makefile44
-rw-r--r--src/bin/pg_resetwal/nls.mk6
-rw-r--r--src/bin/pg_resetwal/pg_resetwal.c1238
-rw-r--r--src/bin/pg_resetwal/po/cs.po721
-rw-r--r--src/bin/pg_resetwal/po/de.po662
-rw-r--r--src/bin/pg_resetwal/po/el.po671
-rw-r--r--src/bin/pg_resetwal/po/es.po676
-rw-r--r--src/bin/pg_resetwal/po/fr.po823
-rw-r--r--src/bin/pg_resetwal/po/ja.po662
-rw-r--r--src/bin/pg_resetwal/po/ko.po662
-rw-r--r--src/bin/pg_resetwal/po/ru.po780
-rw-r--r--src/bin/pg_resetwal/po/sv.po665
-rw-r--r--src/bin/pg_resetwal/po/tr.po751
-rw-r--r--src/bin/pg_resetwal/po/uk.po629
-rw-r--r--src/bin/pg_resetwal/po/zh_CN.po638
-rw-r--r--src/bin/pg_resetwal/t/001_basic.pl30
-rw-r--r--src/bin/pg_resetwal/t/002_corrupted.pl56
18 files changed, 9716 insertions, 0 deletions
diff --git a/src/bin/pg_resetwal/.gitignore b/src/bin/pg_resetwal/.gitignore
new file mode 100644
index 0000000..56bade5
--- /dev/null
+++ b/src/bin/pg_resetwal/.gitignore
@@ -0,0 +1,2 @@
+/pg_resetwal
+/tmp_check/
diff --git a/src/bin/pg_resetwal/Makefile b/src/bin/pg_resetwal/Makefile
new file mode 100644
index 0000000..7dfa80c
--- /dev/null
+++ b/src/bin/pg_resetwal/Makefile
@@ -0,0 +1,44 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/bin/pg_resetwal
+#
+# Copyright (c) 1998-2021, PostgreSQL Global Development Group
+#
+# src/bin/pg_resetwal/Makefile
+#
+#-------------------------------------------------------------------------
+
+PGFILEDESC = "pg_resetwal - reset PostgreSQL WAL log"
+PGAPPICON=win32
+
+subdir = src/bin/pg_resetwal
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+OBJS = \
+ $(WIN32RES) \
+ pg_resetwal.o
+
+all: pg_resetwal
+
+pg_resetwal: $(OBJS) | submake-libpgport
+ $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+install: all installdirs
+ $(INSTALL_PROGRAM) pg_resetwal$(X) '$(DESTDIR)$(bindir)/pg_resetwal$(X)'
+
+installdirs:
+ $(MKDIR_P) '$(DESTDIR)$(bindir)'
+
+uninstall:
+ rm -f '$(DESTDIR)$(bindir)/pg_resetwal$(X)'
+
+clean distclean maintainer-clean:
+ rm -f pg_resetwal$(X) $(OBJS)
+ rm -rf tmp_check
+
+check:
+ $(prove_check)
+
+installcheck:
+ $(prove_installcheck)
diff --git a/src/bin/pg_resetwal/nls.mk b/src/bin/pg_resetwal/nls.mk
new file mode 100644
index 0000000..41f264a
--- /dev/null
+++ b/src/bin/pg_resetwal/nls.mk
@@ -0,0 +1,6 @@
+# src/bin/pg_resetwal/nls.mk
+CATALOG_NAME = pg_resetwal
+AVAIL_LANGUAGES = cs de el es fr ja ko ru sv tr uk zh_CN
+GETTEXT_FILES = $(FRONTEND_COMMON_GETTEXT_FILES) pg_resetwal.c ../../common/restricted_token.c
+GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(FRONTEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c
new file mode 100644
index 0000000..f8d5ecb
--- /dev/null
+++ b/src/bin/pg_resetwal/pg_resetwal.c
@@ -0,0 +1,1238 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_resetwal.c
+ * A utility to "zero out" the xlog when it's corrupt beyond recovery.
+ * Can also rebuild pg_control if needed.
+ *
+ * The theory of operation is fairly simple:
+ * 1. Read the existing pg_control (which will include the last
+ * checkpoint record). If it is an old format then update to
+ * current format.
+ * 2. If pg_control is corrupt, attempt to intuit reasonable values,
+ * by scanning the old xlog if necessary.
+ * 3. Modify pg_control to reflect a "shutdown" state with a checkpoint
+ * record at the start of xlog.
+ * 4. Flush the existing xlog files and write a new segment with
+ * just a checkpoint record in it. The new segment is positioned
+ * just past the end of the old xlog, so that existing LSNs in
+ * data pages will appear to be "in the past".
+ * This is all pretty straightforward except for the intuition part of
+ * step 2 ...
+ *
+ *
+ * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/bin/pg_resetwal/pg_resetwal.c
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/*
+ * We have to use postgres.h not postgres_fe.h here, because there's so much
+ * backend-only stuff in the XLOG include files we need. But we need a
+ * frontend-ish environment otherwise. Hence this ugly hack.
+ */
+#define FRONTEND 1
+
+#include "postgres.h"
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "access/heaptoast.h"
+#include "access/multixact.h"
+#include "access/transam.h"
+#include "access/xlog.h"
+#include "access/xlog_internal.h"
+#include "common/controldata_utils.h"
+#include "common/fe_memutils.h"
+#include "common/file_perm.h"
+#include "common/logging.h"
+#include "common/restricted_token.h"
+#include "common/string.h"
+#include "getopt_long.h"
+#include "pg_getopt.h"
+#include "storage/large_object.h"
+
+static ControlFileData ControlFile; /* pg_control values */
+static XLogSegNo newXlogSegNo; /* new XLOG segment # */
+static bool guessed = false; /* T if we had to guess at any values */
+static const char *progname;
+static uint32 set_xid_epoch = (uint32) -1;
+static TransactionId set_oldest_xid = 0;
+static TransactionId set_xid = 0;
+static TransactionId set_oldest_commit_ts_xid = 0;
+static TransactionId set_newest_commit_ts_xid = 0;
+static Oid set_oid = 0;
+static MultiXactId set_mxid = 0;
+static MultiXactOffset set_mxoff = (MultiXactOffset) -1;
+static uint32 minXlogTli = 0;
+static XLogSegNo minXlogSegNo = 0;
+static int WalSegSz;
+static int set_wal_segsize;
+
+static void CheckDataVersion(void);
+static bool read_controlfile(void);
+static void GuessControlValues(void);
+static void PrintControlValues(bool guessed);
+static void PrintNewControlValues(void);
+static void RewriteControlFile(void);
+static void FindEndOfXLOG(void);
+static void KillExistingXLOG(void);
+static void KillExistingArchiveStatus(void);
+static void WriteEmptyXLOG(void);
+static void usage(void);
+
+
+int
+main(int argc, char *argv[])
+{
+ static struct option long_options[] = {
+ {"commit-timestamp-ids", required_argument, NULL, 'c'},
+ {"pgdata", required_argument, NULL, 'D'},
+ {"epoch", required_argument, NULL, 'e'},
+ {"force", no_argument, NULL, 'f'},
+ {"next-wal-file", required_argument, NULL, 'l'},
+ {"multixact-ids", required_argument, NULL, 'm'},
+ {"dry-run", no_argument, NULL, 'n'},
+ {"next-oid", required_argument, NULL, 'o'},
+ {"multixact-offset", required_argument, NULL, 'O'},
+ {"oldest-transaction-id", required_argument, NULL, 'u'},
+ {"next-transaction-id", required_argument, NULL, 'x'},
+ {"wal-segsize", required_argument, NULL, 1},
+ {NULL, 0, NULL, 0}
+ };
+
+ int c;
+ bool force = false;
+ bool noupdate = false;
+ MultiXactId set_oldestmxid = 0;
+ char *endptr;
+ char *endptr2;
+ char *DataDir = NULL;
+ char *log_fname = NULL;
+ int fd;
+
+ pg_logging_init(argv[0]);
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetwal"));
+ 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_resetwal (PostgreSQL) " PG_VERSION);
+ exit(0);
+ }
+ }
+
+
+ while ((c = getopt_long(argc, argv, "c:D:e:fl:m:no:O:u:x:", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'D':
+ DataDir = optarg;
+ break;
+
+ case 'f':
+ force = true;
+ break;
+
+ case 'n':
+ noupdate = true;
+ break;
+
+ case 'e':
+ set_xid_epoch = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0')
+ {
+ /*------
+ translator: the second %s is a command line argument (-e, etc) */
+ pg_log_error("invalid argument for option %s", "-e");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (set_xid_epoch == -1)
+ {
+ pg_log_error("transaction ID epoch (-e) must not be -1");
+ exit(1);
+ }
+ break;
+
+ case 'u':
+ set_oldest_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-u");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (!TransactionIdIsNormal(set_oldest_xid))
+ {
+ pg_log_error("oldest transaction ID (-u) must be greater than or equal to %u", FirstNormalTransactionId);
+ exit(1);
+ }
+ break;
+
+ case 'x':
+ set_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-x");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (!TransactionIdIsNormal(set_xid))
+ {
+ pg_log_error("transaction ID (-x) must be greater than or equal to %u", FirstNormalTransactionId);
+ exit(1);
+ }
+ break;
+
+ case 'c':
+ set_oldest_commit_ts_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != ',')
+ {
+ pg_log_error("invalid argument for option %s", "-c");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ set_newest_commit_ts_xid = strtoul(endptr + 1, &endptr2, 0);
+ if (endptr2 == endptr + 1 || *endptr2 != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-c");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+
+ if (set_oldest_commit_ts_xid < 2 &&
+ set_oldest_commit_ts_xid != 0)
+ {
+ pg_log_error("transaction ID (-c) must be either 0 or greater than or equal to 2");
+ exit(1);
+ }
+
+ if (set_newest_commit_ts_xid < 2 &&
+ set_newest_commit_ts_xid != 0)
+ {
+ pg_log_error("transaction ID (-c) must be either 0 or greater than or equal to 2");
+ exit(1);
+ }
+ break;
+
+ case 'o':
+ set_oid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-o");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (set_oid == 0)
+ {
+ pg_log_error("OID (-o) must not be 0");
+ exit(1);
+ }
+ break;
+
+ case 'm':
+ set_mxid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != ',')
+ {
+ pg_log_error("invalid argument for option %s", "-m");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+
+ set_oldestmxid = strtoul(endptr + 1, &endptr2, 0);
+ if (endptr2 == endptr + 1 || *endptr2 != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-m");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (set_mxid == 0)
+ {
+ pg_log_error("multitransaction ID (-m) must not be 0");
+ exit(1);
+ }
+
+ /*
+ * XXX It'd be nice to have more sanity checks here, e.g. so
+ * that oldest is not wrapped around w.r.t. nextMulti.
+ */
+ if (set_oldestmxid == 0)
+ {
+ pg_log_error("oldest multitransaction ID (-m) must not be 0");
+ exit(1);
+ }
+ break;
+
+ case 'O':
+ set_mxoff = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0')
+ {
+ pg_log_error("invalid argument for option %s", "-O");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ if (set_mxoff == -1)
+ {
+ pg_log_error("multitransaction offset (-O) must not be -1");
+ exit(1);
+ }
+ break;
+
+ case 'l':
+ if (strspn(optarg, "01234567890ABCDEFabcdef") != XLOG_FNAME_LEN)
+ {
+ pg_log_error("invalid argument for option %s", "-l");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+
+ /*
+ * XLogFromFileName requires wal segment size which is not yet
+ * set. Hence wal details are set later on.
+ */
+ log_fname = pg_strdup(optarg);
+ break;
+
+ case 1:
+ set_wal_segsize = strtol(optarg, &endptr, 10) * 1024 * 1024;
+ if (endptr == optarg || *endptr != '\0')
+ {
+ pg_log_error("argument of --wal-segsize must be a number");
+ exit(1);
+ }
+ if (!IsValidWalSegSize(set_wal_segsize))
+ {
+ pg_log_error("argument of --wal-segsize must be a power of 2 between 1 and 1024");
+ exit(1);
+ }
+ break;
+
+ default:
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+ }
+
+ if (DataDir == NULL && optind < argc)
+ DataDir = argv[optind++];
+
+ /* Complain if any arguments remain */
+ if (optind < argc)
+ {
+ pg_log_error("too many command-line arguments (first is \"%s\")",
+ argv[optind]);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
+ progname);
+ exit(1);
+ }
+
+ if (DataDir == NULL)
+ {
+ pg_log_error("no data directory specified");
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
+ }
+
+ /*
+ * Don't allow pg_resetwal to be run as root, to avoid overwriting the
+ * ownership of files in the data directory. We need only check for root
+ * -- any other user won't have sufficient permissions to modify files in
+ * the data directory.
+ */
+#ifndef WIN32
+ if (geteuid() == 0)
+ {
+ pg_log_error("cannot be executed by \"root\"");
+ pg_log_info("You must run %s as the PostgreSQL superuser.",
+ progname);
+ exit(1);
+ }
+#endif
+
+ get_restricted_token();
+
+ /* Set mask based on PGDATA permissions */
+ if (!GetDataDirectoryCreatePerm(DataDir))
+ {
+ pg_log_error("could not read permissions of directory \"%s\": %m",
+ DataDir);
+ exit(1);
+ }
+
+ umask(pg_mode_mask);
+
+ if (chdir(DataDir) < 0)
+ {
+ pg_log_error("could not change directory to \"%s\": %m",
+ DataDir);
+ exit(1);
+ }
+
+ /* Check that data directory matches our server version */
+ CheckDataVersion();
+
+ /*
+ * Check for a postmaster lock file --- if there is one, refuse to
+ * proceed, on grounds we might be interfering with a live installation.
+ */
+ if ((fd = open("postmaster.pid", O_RDONLY, 0)) < 0)
+ {
+ if (errno != ENOENT)
+ {
+ pg_log_error("could not open file \"%s\" for reading: %m",
+ "postmaster.pid");
+ exit(1);
+ }
+ }
+ else
+ {
+ pg_log_error("lock file \"%s\" exists", "postmaster.pid");
+ pg_log_info("Is a server running? If not, delete the lock file and try again.");
+ exit(1);
+ }
+
+ /*
+ * Attempt to read the existing pg_control file
+ */
+ if (!read_controlfile())
+ GuessControlValues();
+
+ /*
+ * If no new WAL segment size was specified, use the control file value.
+ */
+ if (set_wal_segsize != 0)
+ WalSegSz = set_wal_segsize;
+ else
+ WalSegSz = ControlFile.xlog_seg_size;
+
+ if (log_fname != NULL)
+ XLogFromFileName(log_fname, &minXlogTli, &minXlogSegNo, WalSegSz);
+
+ /*
+ * Also look at existing segment files to set up newXlogSegNo
+ */
+ FindEndOfXLOG();
+
+ /*
+ * If we're not going to proceed with the reset, print the current control
+ * file parameters.
+ */
+ if ((guessed && !force) || noupdate)
+ PrintControlValues(guessed);
+
+ /*
+ * Adjust fields if required by switches. (Do this now so that printout,
+ * if any, includes these values.)
+ */
+ if (set_xid_epoch != -1)
+ ControlFile.checkPointCopy.nextXid =
+ FullTransactionIdFromEpochAndXid(set_xid_epoch,
+ XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+
+ if (set_oldest_xid != 0)
+ {
+ ControlFile.checkPointCopy.oldestXid = set_oldest_xid;
+ ControlFile.checkPointCopy.oldestXidDB = InvalidOid;
+ }
+
+ if (set_xid != 0)
+ ControlFile.checkPointCopy.nextXid =
+ FullTransactionIdFromEpochAndXid(EpochFromFullTransactionId(ControlFile.checkPointCopy.nextXid),
+ set_xid);
+
+ if (set_oldest_commit_ts_xid != 0)
+ ControlFile.checkPointCopy.oldestCommitTsXid = set_oldest_commit_ts_xid;
+ if (set_newest_commit_ts_xid != 0)
+ ControlFile.checkPointCopy.newestCommitTsXid = set_newest_commit_ts_xid;
+
+ if (set_oid != 0)
+ ControlFile.checkPointCopy.nextOid = set_oid;
+
+ if (set_mxid != 0)
+ {
+ ControlFile.checkPointCopy.nextMulti = set_mxid;
+
+ ControlFile.checkPointCopy.oldestMulti = set_oldestmxid;
+ if (ControlFile.checkPointCopy.oldestMulti < FirstMultiXactId)
+ ControlFile.checkPointCopy.oldestMulti += FirstMultiXactId;
+ ControlFile.checkPointCopy.oldestMultiDB = InvalidOid;
+ }
+
+ if (set_mxoff != -1)
+ ControlFile.checkPointCopy.nextMultiOffset = set_mxoff;
+
+ if (minXlogTli > ControlFile.checkPointCopy.ThisTimeLineID)
+ {
+ ControlFile.checkPointCopy.ThisTimeLineID = minXlogTli;
+ ControlFile.checkPointCopy.PrevTimeLineID = minXlogTli;
+ }
+
+ if (set_wal_segsize != 0)
+ ControlFile.xlog_seg_size = WalSegSz;
+
+ if (minXlogSegNo > newXlogSegNo)
+ newXlogSegNo = minXlogSegNo;
+
+ /*
+ * If we had to guess anything, and -f was not given, just print the
+ * guessed values and exit. Also print if -n is given.
+ */
+ if ((guessed && !force) || noupdate)
+ {
+ PrintNewControlValues();
+ if (!noupdate)
+ {
+ printf(_("\nIf these values seem acceptable, use -f to force reset.\n"));
+ exit(1);
+ }
+ else
+ exit(0);
+ }
+
+ /*
+ * Don't reset from a dirty pg_control without -f, either.
+ */
+ if (ControlFile.state != DB_SHUTDOWNED && !force)
+ {
+ printf(_("The database server was not shut down cleanly.\n"
+ "Resetting the write-ahead log might cause data to be lost.\n"
+ "If you want to proceed anyway, use -f to force reset.\n"));
+ exit(1);
+ }
+
+ /*
+ * Else, do the dirty deed.
+ */
+ RewriteControlFile();
+ KillExistingXLOG();
+ KillExistingArchiveStatus();
+ WriteEmptyXLOG();
+
+ printf(_("Write-ahead log reset\n"));
+ return 0;
+}
+
+
+/*
+ * Look at the version string stored in PG_VERSION and decide if this utility
+ * can be run safely or not.
+ *
+ * We don't want to inject pg_control and WAL files that are for a different
+ * major version; that can't do anything good. Note that we don't treat
+ * mismatching version info in pg_control as a reason to bail out, because
+ * recovering from a corrupted pg_control is one of the main reasons for this
+ * program to exist at all. However, PG_VERSION is unlikely to get corrupted,
+ * and if it were it would be easy to fix by hand. So let's make this check
+ * to prevent simple user errors.
+ */
+static void
+CheckDataVersion(void)
+{
+ const char *ver_file = "PG_VERSION";
+ FILE *ver_fd;
+ char rawline[64];
+
+ if ((ver_fd = fopen(ver_file, "r")) == NULL)
+ {
+ pg_log_error("could not open file \"%s\" for reading: %m",
+ ver_file);
+ exit(1);
+ }
+
+ /* version number has to be the first line read */
+ if (!fgets(rawline, sizeof(rawline), ver_fd))
+ {
+ if (!ferror(ver_fd))
+ pg_log_error("unexpected empty file \"%s\"", ver_file);
+ else
+ pg_log_error("could not read file \"%s\": %m", ver_file);
+ exit(1);
+ }
+
+ /* strip trailing newline and carriage return */
+ (void) pg_strip_crlf(rawline);
+
+ if (strcmp(rawline, PG_MAJORVERSION) != 0)
+ {
+ pg_log_error("data directory is of wrong version");
+ pg_log_info("File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".",
+ ver_file, rawline, PG_MAJORVERSION);
+ exit(1);
+ }
+
+ fclose(ver_fd);
+}
+
+
+/*
+ * Try to read the existing pg_control file.
+ *
+ * This routine is also responsible for updating old pg_control versions
+ * to the current format. (Currently we don't do anything of the sort.)
+ */
+static bool
+read_controlfile(void)
+{
+ int fd;
+ int len;
+ char *buffer;
+ pg_crc32c crc;
+
+ if ((fd = open(XLOG_CONTROL_FILE, O_RDONLY | PG_BINARY, 0)) < 0)
+ {
+ /*
+ * If pg_control is not there at all, or we can't read it, the odds
+ * are we've been handed a bad DataDir path, so give up. User can do
+ * "touch pg_control" to force us to proceed.
+ */
+ pg_log_error("could not open file \"%s\" for reading: %m",
+ XLOG_CONTROL_FILE);
+ if (errno == ENOENT)
+ pg_log_info("If you are sure the data directory path is correct, execute\n"
+ " touch %s\n"
+ "and try again.",
+ XLOG_CONTROL_FILE);
+ exit(1);
+ }
+
+ /* Use malloc to ensure we have a maxaligned buffer */
+ buffer = (char *) pg_malloc(PG_CONTROL_FILE_SIZE);
+
+ len = read(fd, buffer, PG_CONTROL_FILE_SIZE);
+ if (len < 0)
+ {
+ pg_log_error("could not read file \"%s\": %m", XLOG_CONTROL_FILE);
+ exit(1);
+ }
+ close(fd);
+
+ if (len >= sizeof(ControlFileData) &&
+ ((ControlFileData *) buffer)->pg_control_version == PG_CONTROL_VERSION)
+ {
+ /* Check the CRC. */
+ INIT_CRC32C(crc);
+ COMP_CRC32C(crc,
+ buffer,
+ offsetof(ControlFileData, crc));
+ FIN_CRC32C(crc);
+
+ if (!EQ_CRC32C(crc, ((ControlFileData *) buffer)->crc))
+ {
+ /* We will use the data but treat it as guessed. */
+ pg_log_warning("pg_control exists but has invalid CRC; proceed with caution");
+ guessed = true;
+ }
+
+ memcpy(&ControlFile, buffer, sizeof(ControlFile));
+
+ /* return false if WAL segment size is not valid */
+ if (!IsValidWalSegSize(ControlFile.xlog_seg_size))
+ {
+ pg_log_warning(ngettext("pg_control specifies invalid WAL segment size (%d byte); proceed with caution",
+ "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution",
+ ControlFile.xlog_seg_size),
+ ControlFile.xlog_seg_size);
+ return false;
+ }
+
+ return true;
+ }
+
+ /* Looks like it's a mess. */
+ pg_log_warning("pg_control exists but is broken or wrong version; ignoring it");
+ return false;
+}
+
+
+/*
+ * Guess at pg_control values when we can't read the old ones.
+ */
+static void
+GuessControlValues(void)
+{
+ uint64 sysidentifier;
+ struct timeval tv;
+
+ /*
+ * Set up a completely default set of pg_control values.
+ */
+ guessed = true;
+ memset(&ControlFile, 0, sizeof(ControlFile));
+
+ ControlFile.pg_control_version = PG_CONTROL_VERSION;
+ ControlFile.catalog_version_no = CATALOG_VERSION_NO;
+
+ /*
+ * Create a new unique installation identifier, since we can no longer use
+ * any old XLOG records. See notes in xlog.c about the algorithm.
+ */
+ gettimeofday(&tv, NULL);
+ sysidentifier = ((uint64) tv.tv_sec) << 32;
+ sysidentifier |= ((uint64) tv.tv_usec) << 12;
+ sysidentifier |= getpid() & 0xFFF;
+
+ ControlFile.system_identifier = sysidentifier;
+
+ ControlFile.checkPointCopy.redo = SizeOfXLogLongPHD;
+ ControlFile.checkPointCopy.ThisTimeLineID = 1;
+ ControlFile.checkPointCopy.PrevTimeLineID = 1;
+ ControlFile.checkPointCopy.fullPageWrites = false;
+ ControlFile.checkPointCopy.nextXid =
+ FullTransactionIdFromEpochAndXid(0, FirstNormalTransactionId);
+ ControlFile.checkPointCopy.nextOid = FirstBootstrapObjectId;
+ ControlFile.checkPointCopy.nextMulti = FirstMultiXactId;
+ ControlFile.checkPointCopy.nextMultiOffset = 0;
+ ControlFile.checkPointCopy.oldestXid = FirstNormalTransactionId;
+ ControlFile.checkPointCopy.oldestXidDB = InvalidOid;
+ ControlFile.checkPointCopy.oldestMulti = FirstMultiXactId;
+ ControlFile.checkPointCopy.oldestMultiDB = InvalidOid;
+ ControlFile.checkPointCopy.time = (pg_time_t) time(NULL);
+ ControlFile.checkPointCopy.oldestActiveXid = InvalidTransactionId;
+
+ ControlFile.state = DB_SHUTDOWNED;
+ ControlFile.time = (pg_time_t) time(NULL);
+ ControlFile.checkPoint = ControlFile.checkPointCopy.redo;
+ ControlFile.unloggedLSN = FirstNormalUnloggedLSN;
+
+ /* minRecoveryPoint, backupStartPoint and backupEndPoint can be left zero */
+
+ ControlFile.wal_level = WAL_LEVEL_MINIMAL;
+ ControlFile.wal_log_hints = false;
+ ControlFile.track_commit_timestamp = false;
+ ControlFile.MaxConnections = 100;
+ ControlFile.max_wal_senders = 10;
+ ControlFile.max_worker_processes = 8;
+ ControlFile.max_prepared_xacts = 0;
+ ControlFile.max_locks_per_xact = 64;
+
+ ControlFile.maxAlign = MAXIMUM_ALIGNOF;
+ ControlFile.floatFormat = FLOATFORMAT_VALUE;
+ ControlFile.blcksz = BLCKSZ;
+ ControlFile.relseg_size = RELSEG_SIZE;
+ ControlFile.xlog_blcksz = XLOG_BLCKSZ;
+ ControlFile.xlog_seg_size = DEFAULT_XLOG_SEG_SIZE;
+ ControlFile.nameDataLen = NAMEDATALEN;
+ ControlFile.indexMaxKeys = INDEX_MAX_KEYS;
+ ControlFile.toast_max_chunk_size = TOAST_MAX_CHUNK_SIZE;
+ ControlFile.loblksize = LOBLKSIZE;
+ ControlFile.float8ByVal = FLOAT8PASSBYVAL;
+
+ /*
+ * XXX eventually, should try to grovel through old XLOG to develop more
+ * accurate values for TimeLineID, nextXID, etc.
+ */
+}
+
+
+/*
+ * Print the guessed pg_control values when we had to guess.
+ *
+ * NB: this display should be just those fields that will not be
+ * reset by RewriteControlFile().
+ */
+static void
+PrintControlValues(bool guessed)
+{
+ if (guessed)
+ printf(_("Guessed pg_control values:\n\n"));
+ else
+ printf(_("Current pg_control values:\n\n"));
+
+ printf(_("pg_control version number: %u\n"),
+ ControlFile.pg_control_version);
+ printf(_("Catalog version number: %u\n"),
+ ControlFile.catalog_version_no);
+ printf(_("Database system identifier: %llu\n"),
+ (unsigned long long) ControlFile.system_identifier);
+ printf(_("Latest checkpoint's TimeLineID: %u\n"),
+ ControlFile.checkPointCopy.ThisTimeLineID);
+ printf(_("Latest checkpoint's full_page_writes: %s\n"),
+ ControlFile.checkPointCopy.fullPageWrites ? _("on") : _("off"));
+ printf(_("Latest checkpoint's NextXID: %u:%u\n"),
+ EpochFromFullTransactionId(ControlFile.checkPointCopy.nextXid),
+ XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+ printf(_("Latest checkpoint's NextOID: %u\n"),
+ ControlFile.checkPointCopy.nextOid);
+ printf(_("Latest checkpoint's NextMultiXactId: %u\n"),
+ ControlFile.checkPointCopy.nextMulti);
+ printf(_("Latest checkpoint's NextMultiOffset: %u\n"),
+ ControlFile.checkPointCopy.nextMultiOffset);
+ printf(_("Latest checkpoint's oldestXID: %u\n"),
+ ControlFile.checkPointCopy.oldestXid);
+ printf(_("Latest checkpoint's oldestXID's DB: %u\n"),
+ ControlFile.checkPointCopy.oldestXidDB);
+ printf(_("Latest checkpoint's oldestActiveXID: %u\n"),
+ ControlFile.checkPointCopy.oldestActiveXid);
+ printf(_("Latest checkpoint's oldestMultiXid: %u\n"),
+ ControlFile.checkPointCopy.oldestMulti);
+ printf(_("Latest checkpoint's oldestMulti's DB: %u\n"),
+ ControlFile.checkPointCopy.oldestMultiDB);
+ printf(_("Latest checkpoint's oldestCommitTsXid:%u\n"),
+ ControlFile.checkPointCopy.oldestCommitTsXid);
+ printf(_("Latest checkpoint's newestCommitTsXid:%u\n"),
+ ControlFile.checkPointCopy.newestCommitTsXid);
+ printf(_("Maximum data alignment: %u\n"),
+ ControlFile.maxAlign);
+ /* we don't print floatFormat since can't say much useful about it */
+ printf(_("Database block size: %u\n"),
+ ControlFile.blcksz);
+ printf(_("Blocks per segment of large relation: %u\n"),
+ ControlFile.relseg_size);
+ printf(_("WAL block size: %u\n"),
+ ControlFile.xlog_blcksz);
+ printf(_("Bytes per WAL segment: %u\n"),
+ ControlFile.xlog_seg_size);
+ printf(_("Maximum length of identifiers: %u\n"),
+ ControlFile.nameDataLen);
+ printf(_("Maximum columns in an index: %u\n"),
+ ControlFile.indexMaxKeys);
+ printf(_("Maximum size of a TOAST chunk: %u\n"),
+ ControlFile.toast_max_chunk_size);
+ printf(_("Size of a large-object chunk: %u\n"),
+ ControlFile.loblksize);
+ /* This is no longer configurable, but users may still expect to see it: */
+ printf(_("Date/time type storage: %s\n"),
+ _("64-bit integers"));
+ printf(_("Float8 argument passing: %s\n"),
+ (ControlFile.float8ByVal ? _("by value") : _("by reference")));
+ printf(_("Data page checksum version: %u\n"),
+ ControlFile.data_checksum_version);
+}
+
+
+/*
+ * Print the values to be changed.
+ */
+static void
+PrintNewControlValues(void)
+{
+ char fname[MAXFNAMELEN];
+
+ /* This will be always printed in order to keep format same. */
+ printf(_("\n\nValues to be changed:\n\n"));
+
+ XLogFileName(fname, ControlFile.checkPointCopy.ThisTimeLineID,
+ newXlogSegNo, WalSegSz);
+ printf(_("First log segment after reset: %s\n"), fname);
+
+ if (set_mxid != 0)
+ {
+ printf(_("NextMultiXactId: %u\n"),
+ ControlFile.checkPointCopy.nextMulti);
+ printf(_("OldestMultiXid: %u\n"),
+ ControlFile.checkPointCopy.oldestMulti);
+ printf(_("OldestMulti's DB: %u\n"),
+ ControlFile.checkPointCopy.oldestMultiDB);
+ }
+
+ if (set_mxoff != -1)
+ {
+ printf(_("NextMultiOffset: %u\n"),
+ ControlFile.checkPointCopy.nextMultiOffset);
+ }
+
+ if (set_oid != 0)
+ {
+ printf(_("NextOID: %u\n"),
+ ControlFile.checkPointCopy.nextOid);
+ }
+
+ if (set_xid != 0)
+ {
+ printf(_("NextXID: %u\n"),
+ XidFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+ printf(_("OldestXID: %u\n"),
+ ControlFile.checkPointCopy.oldestXid);
+ printf(_("OldestXID's DB: %u\n"),
+ ControlFile.checkPointCopy.oldestXidDB);
+ }
+
+ if (set_xid_epoch != -1)
+ {
+ printf(_("NextXID epoch: %u\n"),
+ EpochFromFullTransactionId(ControlFile.checkPointCopy.nextXid));
+ }
+
+ if (set_oldest_commit_ts_xid != 0)
+ {
+ printf(_("oldestCommitTsXid: %u\n"),
+ ControlFile.checkPointCopy.oldestCommitTsXid);
+ }
+ if (set_newest_commit_ts_xid != 0)
+ {
+ printf(_("newestCommitTsXid: %u\n"),
+ ControlFile.checkPointCopy.newestCommitTsXid);
+ }
+
+ if (set_wal_segsize != 0)
+ {
+ printf(_("Bytes per WAL segment: %u\n"),
+ ControlFile.xlog_seg_size);
+ }
+}
+
+
+/*
+ * Write out the new pg_control file.
+ */
+static void
+RewriteControlFile(void)
+{
+ /*
+ * Adjust fields as needed to force an empty XLOG starting at
+ * newXlogSegNo.
+ */
+ XLogSegNoOffsetToRecPtr(newXlogSegNo, SizeOfXLogLongPHD, WalSegSz,
+ ControlFile.checkPointCopy.redo);
+ ControlFile.checkPointCopy.time = (pg_time_t) time(NULL);
+
+ ControlFile.state = DB_SHUTDOWNED;
+ ControlFile.time = (pg_time_t) time(NULL);
+ ControlFile.checkPoint = ControlFile.checkPointCopy.redo;
+ ControlFile.minRecoveryPoint = 0;
+ ControlFile.minRecoveryPointTLI = 0;
+ ControlFile.backupStartPoint = 0;
+ ControlFile.backupEndPoint = 0;
+ ControlFile.backupEndRequired = false;
+
+ /*
+ * Force the defaults for max_* settings. The values don't really matter
+ * as long as wal_level='minimal'; the postmaster will reset these fields
+ * anyway at startup.
+ */
+ ControlFile.wal_level = WAL_LEVEL_MINIMAL;
+ ControlFile.wal_log_hints = false;
+ ControlFile.track_commit_timestamp = false;
+ ControlFile.MaxConnections = 100;
+ ControlFile.max_wal_senders = 10;
+ ControlFile.max_worker_processes = 8;
+ ControlFile.max_prepared_xacts = 0;
+ ControlFile.max_locks_per_xact = 64;
+
+ /* The control file gets flushed here. */
+ update_controlfile(".", &ControlFile, true);
+}
+
+
+/*
+ * Scan existing XLOG files and determine the highest existing WAL address
+ *
+ * On entry, ControlFile.checkPointCopy.redo and ControlFile.xlog_seg_size
+ * are assumed valid (note that we allow the old xlog seg size to differ
+ * from what we're using). On exit, newXlogSegNo is set to suitable
+ * value for the beginning of replacement WAL (in our seg size).
+ */
+static void
+FindEndOfXLOG(void)
+{
+ DIR *xldir;
+ struct dirent *xlde;
+ uint64 segs_per_xlogid;
+ uint64 xlogbytepos;
+
+ /*
+ * Initialize the max() computation using the last checkpoint address from
+ * old pg_control. Note that for the moment we are working with segment
+ * numbering according to the old xlog seg size.
+ */
+ segs_per_xlogid = (UINT64CONST(0x0000000100000000) / ControlFile.xlog_seg_size);
+ newXlogSegNo = ControlFile.checkPointCopy.redo / ControlFile.xlog_seg_size;
+
+ /*
+ * Scan the pg_wal directory to find existing WAL segment files. We assume
+ * any present have been used; in most scenarios this should be
+ * conservative, because of xlog.c's attempts to pre-create files.
+ */
+ xldir = opendir(XLOGDIR);
+ if (xldir == NULL)
+ {
+ pg_log_error("could not open directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+
+ while (errno = 0, (xlde = readdir(xldir)) != NULL)
+ {
+ if (IsXLogFileName(xlde->d_name) ||
+ IsPartialXLogFileName(xlde->d_name))
+ {
+ unsigned int tli,
+ log,
+ seg;
+ XLogSegNo segno;
+
+ /*
+ * Note: We don't use XLogFromFileName here, because we want to
+ * use the segment size from the control file, not the size the
+ * pg_resetwal binary was compiled with
+ */
+ sscanf(xlde->d_name, "%08X%08X%08X", &tli, &log, &seg);
+ segno = ((uint64) log) * segs_per_xlogid + seg;
+
+ /*
+ * Note: we take the max of all files found, regardless of their
+ * timelines. Another possibility would be to ignore files of
+ * timelines other than the target TLI, but this seems safer.
+ * Better too large a result than too small...
+ */
+ if (segno > newXlogSegNo)
+ newXlogSegNo = segno;
+ }
+ }
+
+ if (errno)
+ {
+ pg_log_error("could not read directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+
+ if (closedir(xldir))
+ {
+ pg_log_error("could not close directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+
+ /*
+ * Finally, convert to new xlog seg size, and advance by one to ensure we
+ * are in virgin territory.
+ */
+ xlogbytepos = newXlogSegNo * ControlFile.xlog_seg_size;
+ newXlogSegNo = (xlogbytepos + ControlFile.xlog_seg_size - 1) / WalSegSz;
+ newXlogSegNo++;
+}
+
+
+/*
+ * Remove existing XLOG files
+ */
+static void
+KillExistingXLOG(void)
+{
+ DIR *xldir;
+ struct dirent *xlde;
+ char path[MAXPGPATH + sizeof(XLOGDIR)];
+
+ xldir = opendir(XLOGDIR);
+ if (xldir == NULL)
+ {
+ pg_log_error("could not open directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+
+ while (errno = 0, (xlde = readdir(xldir)) != NULL)
+ {
+ if (IsXLogFileName(xlde->d_name) ||
+ IsPartialXLogFileName(xlde->d_name))
+ {
+ snprintf(path, sizeof(path), "%s/%s", XLOGDIR, xlde->d_name);
+ if (unlink(path) < 0)
+ {
+ pg_log_error("could not delete file \"%s\": %m", path);
+ exit(1);
+ }
+ }
+ }
+
+ if (errno)
+ {
+ pg_log_error("could not read directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+
+ if (closedir(xldir))
+ {
+ pg_log_error("could not close directory \"%s\": %m", XLOGDIR);
+ exit(1);
+ }
+}
+
+
+/*
+ * Remove existing archive status files
+ */
+static void
+KillExistingArchiveStatus(void)
+{
+#define ARCHSTATDIR XLOGDIR "/archive_status"
+
+ DIR *xldir;
+ struct dirent *xlde;
+ char path[MAXPGPATH + sizeof(ARCHSTATDIR)];
+
+ xldir = opendir(ARCHSTATDIR);
+ if (xldir == NULL)
+ {
+ pg_log_error("could not open directory \"%s\": %m", ARCHSTATDIR);
+ exit(1);
+ }
+
+ while (errno = 0, (xlde = readdir(xldir)) != NULL)
+ {
+ if (strspn(xlde->d_name, "0123456789ABCDEF") == XLOG_FNAME_LEN &&
+ (strcmp(xlde->d_name + XLOG_FNAME_LEN, ".ready") == 0 ||
+ strcmp(xlde->d_name + XLOG_FNAME_LEN, ".done") == 0 ||
+ strcmp(xlde->d_name + XLOG_FNAME_LEN, ".partial.ready") == 0 ||
+ strcmp(xlde->d_name + XLOG_FNAME_LEN, ".partial.done") == 0))
+ {
+ snprintf(path, sizeof(path), "%s/%s", ARCHSTATDIR, xlde->d_name);
+ if (unlink(path) < 0)
+ {
+ pg_log_error("could not delete file \"%s\": %m", path);
+ exit(1);
+ }
+ }
+ }
+
+ if (errno)
+ {
+ pg_log_error("could not read directory \"%s\": %m", ARCHSTATDIR);
+ exit(1);
+ }
+
+ if (closedir(xldir))
+ {
+ pg_log_error("could not close directory \"%s\": %m", ARCHSTATDIR);
+ exit(1);
+ }
+}
+
+
+/*
+ * Write an empty XLOG file, containing only the checkpoint record
+ * already set up in ControlFile.
+ */
+static void
+WriteEmptyXLOG(void)
+{
+ PGAlignedXLogBlock buffer;
+ XLogPageHeader page;
+ XLogLongPageHeader longpage;
+ XLogRecord *record;
+ pg_crc32c crc;
+ char path[MAXPGPATH];
+ int fd;
+ int nbytes;
+ char *recptr;
+
+ memset(buffer.data, 0, XLOG_BLCKSZ);
+
+ /* Set up the XLOG page header */
+ page = (XLogPageHeader) buffer.data;
+ page->xlp_magic = XLOG_PAGE_MAGIC;
+ page->xlp_info = XLP_LONG_HEADER;
+ page->xlp_tli = ControlFile.checkPointCopy.ThisTimeLineID;
+ page->xlp_pageaddr = ControlFile.checkPointCopy.redo - SizeOfXLogLongPHD;
+ longpage = (XLogLongPageHeader) page;
+ longpage->xlp_sysid = ControlFile.system_identifier;
+ longpage->xlp_seg_size = WalSegSz;
+ longpage->xlp_xlog_blcksz = XLOG_BLCKSZ;
+
+ /* Insert the initial checkpoint record */
+ recptr = (char *) page + SizeOfXLogLongPHD;
+ record = (XLogRecord *) recptr;
+ record->xl_prev = 0;
+ record->xl_xid = InvalidTransactionId;
+ record->xl_tot_len = SizeOfXLogRecord + SizeOfXLogRecordDataHeaderShort + sizeof(CheckPoint);
+ record->xl_info = XLOG_CHECKPOINT_SHUTDOWN;
+ record->xl_rmid = RM_XLOG_ID;
+
+ recptr += SizeOfXLogRecord;
+ *(recptr++) = (char) XLR_BLOCK_ID_DATA_SHORT;
+ *(recptr++) = sizeof(CheckPoint);
+ memcpy(recptr, &ControlFile.checkPointCopy,
+ sizeof(CheckPoint));
+
+ INIT_CRC32C(crc);
+ COMP_CRC32C(crc, ((char *) record) + SizeOfXLogRecord, record->xl_tot_len - SizeOfXLogRecord);
+ COMP_CRC32C(crc, (char *) record, offsetof(XLogRecord, xl_crc));
+ FIN_CRC32C(crc);
+ record->xl_crc = crc;
+
+ /* Write the first page */
+ XLogFilePath(path, ControlFile.checkPointCopy.ThisTimeLineID,
+ newXlogSegNo, WalSegSz);
+
+ unlink(path);
+
+ fd = open(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
+ pg_file_create_mode);
+ if (fd < 0)
+ {
+ pg_log_error("could not open file \"%s\": %m", path);
+ exit(1);
+ }
+
+ errno = 0;
+ if (write(fd, buffer.data, XLOG_BLCKSZ) != XLOG_BLCKSZ)
+ {
+ /* if write didn't set errno, assume problem is no disk space */
+ if (errno == 0)
+ errno = ENOSPC;
+ pg_log_error("could not write file \"%s\": %m", path);
+ exit(1);
+ }
+
+ /* Fill the rest of the file with zeroes */
+ memset(buffer.data, 0, XLOG_BLCKSZ);
+ for (nbytes = XLOG_BLCKSZ; nbytes < WalSegSz; nbytes += XLOG_BLCKSZ)
+ {
+ errno = 0;
+ if (write(fd, buffer.data, XLOG_BLCKSZ) != XLOG_BLCKSZ)
+ {
+ if (errno == 0)
+ errno = ENOSPC;
+ pg_log_error("could not write file \"%s\": %m", path);
+ exit(1);
+ }
+ }
+
+ if (fsync(fd) != 0)
+ {
+ pg_log_error("fsync error: %m");
+ exit(1);
+ }
+
+ close(fd);
+}
+
+
+static void
+usage(void)
+{
+ printf(_("%s resets the PostgreSQL write-ahead log.\n\n"), progname);
+ printf(_("Usage:\n %s [OPTION]... DATADIR\n\n"), progname);
+ printf(_("Options:\n"));
+ printf(_(" -c, --commit-timestamp-ids=XID,XID\n"
+ " set oldest and newest transactions bearing\n"
+ " commit timestamp (zero means no change)\n"));
+ printf(_(" [-D, --pgdata=]DATADIR data directory\n"));
+ printf(_(" -e, --epoch=XIDEPOCH set next transaction ID epoch\n"));
+ printf(_(" -f, --force force update to be done\n"));
+ printf(_(" -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"));
+ printf(_(" -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"));
+ printf(_(" -n, --dry-run no update, just show what would be done\n"));
+ printf(_(" -o, --next-oid=OID set next OID\n"));
+ printf(_(" -O, --multixact-offset=OFFSET set next multitransaction offset\n"));
+ printf(_(" -u, --oldest-transaction-id=XID set oldest transaction ID\n"));
+ printf(_(" -V, --version output version information, then exit\n"));
+ printf(_(" -x, --next-transaction-id=XID set next transaction ID\n"));
+ printf(_(" --wal-segsize=SIZE size of WAL segments, in megabytes\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
+ printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
+}
diff --git a/src/bin/pg_resetwal/po/cs.po b/src/bin/pg_resetwal/po/cs.po
new file mode 100644
index 0000000..f1ec4d9
--- /dev/null
+++ b/src/bin/pg_resetwal/po/cs.po
@@ -0,0 +1,721 @@
+# Czech message translation file for pg_resetxlog
+# Copyright (C) 2012 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Tomas Vondra <tv@fuzzy.cz>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetxlog-cs (PostgreSQL 9.3)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-10-31 16:15+0000\n"
+"PO-Revision-Date: 2020-10-31 21:25+0100\n"
+"Last-Translator: Tomas Vondra <tv@fuzzy.cz>\n"
+"Language-Team: Czech <info@cspug.cx>\n"
+"Language: cs\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>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.4.1\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 "warning: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "nelze načíst knihovnu \"%s\": kód chyby %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "na této platformě nelze vytvářet vyhrazené tokeny: kód chyby %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "nelze otevřít process token: chybový kód %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "nelze alokovat SIDs: chybový kód %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "nelze vytvořit vyhrazený token: chybový kód %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "nelze spustit proces pro příkaz \"%s\": chybový kód %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "nelze znovu spustit s vyhrazeným tokenem: chybový kód %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "nelze získat návratový kód ze subprocesu: chybový kód %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:160 pg_resetwal.c:175 pg_resetwal.c:190 pg_resetwal.c:197
+#: pg_resetwal.c:221 pg_resetwal.c:236 pg_resetwal.c:244 pg_resetwal.c:269
+#: pg_resetwal.c:283
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "neplatný argument pro volbu %s"
+
+#: pg_resetwal.c:161 pg_resetwal.c:176 pg_resetwal.c:191 pg_resetwal.c:198
+#: pg_resetwal.c:222 pg_resetwal.c:237 pg_resetwal.c:245 pg_resetwal.c:270
+#: pg_resetwal.c:284 pg_resetwal.c:310 pg_resetwal.c:323 pg_resetwal.c:331
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Zkuste \"%s --help\" pro více informací.\n"
+
+#: pg_resetwal.c:166
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "epocha ID transakce (-e) nesmí být -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "transaction ID (-x) must not be 0"
+msgstr "ID transakce (-x) nesmí být 0"
+
+#: pg_resetwal.c:205 pg_resetwal.c:212
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "ID transakce (-c) musí být buď 0 nebo větší než nebo rovno 2"
+
+#: pg_resetwal.c:227
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) nesmí být 0"
+
+#: pg_resetwal.c:250
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID multitransakce (-m) nesmí být 0"
+
+#: pg_resetwal.c:260
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "ID nejstarší multitransakce (-m) nesmí být 0"
+
+#: pg_resetwal.c:275
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "offset multitransakce (-O) nesmí být -1"
+
+#: pg_resetwal.c:299
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "argument pro --wal-segsize musí být číslo"
+
+#: pg_resetwal.c:304
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "argument pro --wal-segsize musí být mocnina 2 mezi 1 a 1024"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "příliš mnoho parametrů na příkazové řádce (první je \"%s\")"
+
+#: pg_resetwal.c:330
+#, c-format
+msgid "no data directory specified"
+msgstr "není specifikován datový adresář"
+
+#: pg_resetwal.c:344
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "nelze spouštět jako \"root\""
+
+#: pg_resetwal.c:345
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Musíte spustit %s jako PostgreSQL superuživatel."
+
+#: pg_resetwal.c:356
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "nelze zjistit přístupová práva adresáře \"%s\": %m"
+
+#: pg_resetwal.c:365
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "nelze změnit adresář na \"%s\" : %m"
+
+#: pg_resetwal.c:381 pg_resetwal.c:544 pg_resetwal.c:595
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "nelze otevřít soubor \"%s\" pro čtení: %m"
+
+#: pg_resetwal.c:388
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "soubor se zámkem \"%s\" existuje"
+
+#: pg_resetwal.c:389
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Neběží již server? Jestliže ne, smažte soubor se zámkem a zkuste to znova."
+
+#: pg_resetwal.c:492
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Jestliže tyto hodnoty vypadají akceptovatelně, použijte -f pro vynucený reset.\n"
+
+#: pg_resetwal.c:504
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Databázový server nebyl ukončen čistě.\n"
+"Resetování transakčního logu může způsobit ztrátu dat.\n"
+"Jestliže i přesto chcete pokračovat, použijte -f pro vynucený reset.\n"
+
+#: pg_resetwal.c:518
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Transakční log resetován\n"
+
+#: pg_resetwal.c:553
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "neočekávaný prázdný soubor \"%s\""
+
+#: pg_resetwal.c:555 pg_resetwal.c:611
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "nelze číst soubor \"%s\": %m"
+
+#: pg_resetwal.c:564
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "datový adresář pochází z nesprávné verze"
+
+#: pg_resetwal.c:565
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Soubor \"%s\" obsahuje \"%s\", což je nekompatibilní s verzí \"%s\" tohoto programu."
+
+#: pg_resetwal.c:598
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Máte-li jistotu, že je cesta k datovému adresáři správná, proveďte\n"
+" touch %s\n"
+"a zkuste to znovu."
+
+#: pg_resetwal.c:629
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control existuje, ale s neplatným kontrolním součtem CRC; postupujte opatrně"
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control obsahuje neplatnou velikost WAL segmentu (%d byte); pokračujte obezřetně"
+msgstr[1] "pg_control obsahuje neplatnou velikost WAL segmentu (%d bytů); pokračujte obezřetně"
+msgstr[2] "pg_control obsahuje neplatnou velikost WAL segmentu (%d bytů); pokračujte obezřetně"
+
+#: pg_resetwal.c:649
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control existuje, ale je poškozen nebo neznámé verze; ignoruji to"
+
+#: pg_resetwal.c:744
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Odhadnuté hodnoty pg_controlu:\n"
+"\n"
+
+#: pg_resetwal.c:746
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Současné pg_control hodnoty:\n"
+"\n"
+
+#: pg_resetwal.c:748
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Číslo verze pg_controlu: %u\n"
+
+#: pg_resetwal.c:750
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Číslo verze katalogu: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr ""
+"Identifikátor databázového systému: %llu\n"
+"\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Poslední full_page_writes checkpointu: %s\n"
+
+#: pg_resetwal.c:757
+msgid "off"
+msgstr "vypnuto"
+
+#: pg_resetwal.c:757
+msgid "on"
+msgstr "zapnuto"
+
+#: pg_resetwal.c:758
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID posledního checkpointu: %u:%u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Poslední umístění NextOID checkpointu: %u\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB k oldestXID posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:775
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB k oldestMulti posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:777
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:779
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid posledního checkpointu: %u\n"
+
+#: pg_resetwal.c:781
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximální zarovnání dat: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Velikost databázového bloku: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloků v segmentu velké relace: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Velikost WAL bloku: %u\n"
+
+#: pg_resetwal.c:790 pg_resetwal.c:876
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytů ve WAL segmentu: %u\n"
+
+#: pg_resetwal.c:792
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximální délka identifikátorů: %u\n"
+
+#: pg_resetwal.c:794
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximální počet sloupců v indexu: %u\n"
+
+#: pg_resetwal.c:796
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximální velikost úseku TOAST: %u\n"
+
+#: pg_resetwal.c:798
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Velikost large-object chunku: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Způsob uložení typu date/time: %s\n"
+
+#: pg_resetwal.c:802
+msgid "64-bit integers"
+msgstr "64-bitová čísla"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Způsob předávání float8 hodnot: %s\n"
+
+#: pg_resetwal.c:804
+msgid "by reference"
+msgstr "odkazem"
+
+#: pg_resetwal.c:804
+msgid "by value"
+msgstr "hodnotou"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Verze kontrolních součtů datových stránek: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Hodnoty které se změní:\n"
+"\n"
+
+#: pg_resetwal.c:823
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "První log segment po resetu: %s\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:829
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:831
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "DB k OldestMulti: %u\n"
+
+#: pg_resetwal.c:837
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:843
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:849
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:851
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:853
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "DB k OldestXID: %u\n"
+
+#: pg_resetwal.c:859
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:865
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:870
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:956 pg_resetwal.c:1024 pg_resetwal.c:1071
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "nelze otevřít adresář \"%s\": %m"
+
+#: pg_resetwal.c:991 pg_resetwal.c:1044 pg_resetwal.c:1094
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "nelze číst z adresáře \"%s\": %m"
+
+#: pg_resetwal.c:997 pg_resetwal.c:1050 pg_resetwal.c:1100
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "nelze zavřít adresář \"%s\": %m"
+
+#: pg_resetwal.c:1036 pg_resetwal.c:1086
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "nelze smazat soubor \"%s\": %m"
+
+#: pg_resetwal.c:1167
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "nelze otevřít soubor \"%s\": %m"
+
+#: pg_resetwal.c:1177 pg_resetwal.c:1190
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "nelze zapsat soubor \"%s\": %m"
+
+#: pg_resetwal.c:1197
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync error: %m"
+
+#: pg_resetwal.c:1208
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s resetuje PostgreSQL transakční log.\n"
+"\n"
+
+#: pg_resetwal.c:1209
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Použití:\n"
+" %s [VOLBA]... ADRESÁŘ\n"
+"\n"
+
+#: pg_resetwal.c:1210
+#, c-format
+msgid "Options:\n"
+msgstr "Přepínače:\n"
+
+#: pg_resetwal.c:1211
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" nastaví nejstarší a nejnovější s nastaveným\n"
+" commit timestamp (nula znamená beze změny)\n"
+
+#: pg_resetwal.c:1214
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]ADRESÁŘ datový adresář\n"
+
+#: pg_resetwal.c:1215
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH nastaví epochu následujícího ID transakce\n"
+
+#: pg_resetwal.c:1216
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force vynutí provedení update\n"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE vynutí minimální počáteční WAL pozici pro nový transakční log\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID nastav další a nejstarší ID multitransakce\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run bez update, pouze ukáže co by bylo provedeno\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID nastaví následující OID\n"
+
+#: pg_resetwal.c:1221
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET nastaví offset následující multitransakce\n"
+
+#: pg_resetwal.c:1222
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version ukáže informace o verzi a skončí\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID nastaví ID následující transakce\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=VELIKOST velikost WAL segmentů, v megabytech\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help ukáže tuto nápovědu a skončí\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Chyby hlašte na <%s>.\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s domácí stránka: <%s>\n"
+
+#~ msgid "%s: cannot be executed by \"root\"\n"
+#~ msgstr "%s: nemůže být spuštěn uživatelem \"root\"\n"
+
+#~ msgid "%s: could not read permissions of directory \"%s\": %s\n"
+#~ msgstr "%s: nelze načíst přístupová práva pro adresář \"%s\": %s\n"
+
+#~ msgid "%s: could not change directory to \"%s\": %s\n"
+#~ msgstr "%s: nelze změnit adresář na \"%s\": %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: nelze otevřít soubor \"%s\" pro čtení: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: nelze číst soubor \"%s\": %s\n"
+
+#~ msgid "%s: could not create pg_control file: %s\n"
+#~ msgstr "%s: nelze vytvořit pg_control soubor: %s\n"
+
+#~ msgid "%s: could not write pg_control file: %s\n"
+#~ msgstr "%s: nelze zapsat pg_control soubor: %s\n"
+
+#~ msgid "%s: could not open directory \"%s\": %s\n"
+#~ msgstr "%s: nelze otevřít adresář \"%s\": %s\n"
+
+#~ msgid "%s: could not read directory \"%s\": %s\n"
+#~ msgstr "%s: nelze číst z adresáře \"%s\": %s\n"
+
+#~ msgid "%s: could not close directory \"%s\": %s\n"
+#~ msgstr "%s: nelze zavřít adresář \"%s\": %s\n"
+
+#~ msgid "%s: could not open file \"%s\": %s\n"
+#~ msgstr "%s: nelze otevřít soubor \"%s\": %s\n"
+
+#~ msgid "%s: could not write file \"%s\": %s\n"
+#~ msgstr "%s: nelze zapsat do souboru \"%s\": %s\n"
+
+#~ msgid "%s: invalid argument for option -x\n"
+#~ msgstr "%s: neplatný argument pro volbu -x\n"
+
+#~ msgid "%s: invalid argument for option -o\n"
+#~ msgstr "%s: neplatný argument pro volbu -o\n"
+
+#~ msgid "%s: invalid argument for option -m\n"
+#~ msgstr "%s: neplatný argument pro volbu -m\n"
+
+#~ msgid "%s: invalid argument for option -O\n"
+#~ msgstr "%s: neplatný argument pro volbu -O\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s: neplatný argument pro volbu -l\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "čísla s plovoucí řádovou čárkou"
+
+#~ msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n"
+#~ msgstr "%s: interní chyba -- sizeof(ControlFileData) je příliš velký ... opravte PG_CONTROL_SIZE\n"
+
+#~ msgid "First log file ID after reset: %u\n"
+#~ msgstr "První ID log souboru po resetu: %u\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Chyby hlaste na adresu <pgsql-bugs@postgresql.org>.\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Způsob předávání float4 hodnot: %s\n"
diff --git a/src/bin/pg_resetwal/po/de.po b/src/bin/pg_resetwal/po/de.po
new file mode 100644
index 0000000..8584ec2
--- /dev/null
+++ b/src/bin/pg_resetwal/po/de.po
@@ -0,0 +1,662 @@
+# German message translation file for pg_resetwal
+# Peter Eisentraut <peter@eisentraut.org>, 2002 - 2020.
+#
+# Use these quotes: »%s«
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 13\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-06 21:47+0000\n"
+"PO-Revision-Date: 2020-04-14 14:25+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"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "Fatal: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "Fehler: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "Warnung: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "konnte Bibliothek »%s« nicht laden: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "auf dieser Plattform können keine beschränkten Token erzeugt werden: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "konnte Prozess-Token nicht öffnen: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "konnte SIDs nicht erzeugen: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "konnte beschränktes Token nicht erzeugen: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "konnte Prozess für Befehl »%s« nicht starten: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "konnte Prozess nicht mit beschränktem Token neu starten: Fehlercode %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "konnte Statuscode des Subprozesses nicht ermitteln: Fehlercode %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "ungültiges Argument für Option %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "Transaktions-ID-Epoche (-e) darf nicht -1 sein"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "älteste Transaktions-ID (-u) muss größer oder gleich %u sein"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "Transaktions-ID (-x) muss größer oder gleich %u sein"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "Transaktions-ID (-c) muss entweder 0 oder größer oder gleich 2 sein"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) darf nicht 0 sein"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "Multitransaktions-ID (-m) darf nicht 0 sein"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "älteste Multitransaktions-ID (-m) darf nicht 0 sein"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "Multitransaktions-Offset (-O) darf nicht -1 sein"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "Argument von --wal-segsize muss eine Zahl sein"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "Argument von --wal-segsize muss eine Zweierpotenz zwischen 1 und 1024 sein"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "zu viele Kommandozeilenargumente (das erste ist »%s«)"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "kein Datenverzeichnis angegeben"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "kann nicht von »root« ausgeführt werden"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Sie müssen %s als PostgreSQL-Superuser ausführen."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "konnte Zugriffsrechte von Verzeichnis »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "Sperrdatei »%s« existiert"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Läuft der Server? Wenn nicht, dann Sperrdatei löschen und nochmal versuchen."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Wenn diese Werte akzeptabel scheinen, dann benutzen Sie -f um das\n"
+"Zurücksetzen zu erzwingen.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Der Datenbankserver wurde nicht sauber heruntergefahren.\n"
+"Beim Zurücksetzen des Write-Ahead-Logs können Daten verloren gehen.\n"
+"Wenn Sie trotzdem weiter machen wollen, benutzen Sie -f, um das\n"
+"Zurücksetzen zu erzwingen.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Write-Ahead-Log wurde zurückgesetzt\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "unerwartete leere Datei »%s«"
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "Datenverzeichnis hat falsche Version"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Datei »%s« enthält »%s«, was nicht mit der Version dieses Programms »%s« kompatibel ist."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Wenn Sie sicher sind, dass das Datenverzeichnis korrekt ist, führen Sie\n"
+" touch %s\n"
+"aus und versuchen Sie es erneut."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control existiert, aber mit ungültiger CRC; mit Vorsicht fortfahren"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control gibt ungültige WAL-Segmentgröße an (%d Byte); mit Vorsicht fortfahren"
+msgstr[1] "pg_control gibt ungültige WAL-Segmentgröße an (%d Bytes); mit Vorsicht fortfahren"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control existiert, aber ist kaputt oder hat falsche Version; wird ignoriert"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Geschätzte pg_control-Werte:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Aktuelle pg_control-Werte:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control-Versionsnummer: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversionsnummer: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Datenbanksystemidentifikation: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes des letzten Checkpoints: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "aus"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "an"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID des letzten Checkpoints: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB der oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB des oldestMulti des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximale Datenausrichtung (Alignment): %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Datenbankblockgröße: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blöcke pro Segment: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL-Blockgröße: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes pro WAL-Segment: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximale Bezeichnerlänge: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximale Spalten in einem Index: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximale Größe eines Stücks TOAST: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Größe eines Large-Object-Chunks: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Speicherung von Datum/Zeit-Typen: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64-Bit-Ganzzahlen"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Übergabe von Float8-Argumenten: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "Referenz"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "Wert"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Datenseitenprüfsummenversion: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Zu ändernde Werte:\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Erstes Logdateisegment nach Zurücksetzen: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID-Epoche: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht öffnen: %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht schließen: %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht löschen: %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht öffnen: %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht schreiben: %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync-Fehler: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s setzt den PostgreSQL-Write-Ahead-Log zurück.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Aufruf:\n"
+" %s [OPTION]... DATENVERZEICHNIS\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Optionen:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" älteste und neuste Transaktion mit Commit-\n"
+" Timestamp setzen (Null bedeutet keine Änderung)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]VERZ Datenbankverzeichnis\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCHE nächste Transaktions-ID-Epoche setzen\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force Änderung erzwingen\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALDATEI minimale Startposition für neuen WAL setzen\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID nächste und älteste Multitransaktions-ID setzen\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run keine Änderungen; nur zeigen, was gemacht\n"
+" werden würde\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID nächste OID setzen\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET nächsten Multitransaktions-Offset setzen\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID älteste Transaktions-ID setzen\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID nächste Transaktions-ID setzen\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=ZAHL Größe eines WAL-Segments, in Megabytes\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Berichten Sie Fehler an <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Homepage: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/el.po b/src/bin/pg_resetwal/po/el.po
new file mode 100644
index 0000000..e539ac9
--- /dev/null
+++ b/src/bin/pg_resetwal/po/el.po
@@ -0,0 +1,671 @@
+# Greek message translation file for pg_resetwal
+# Copyright (C) 2021 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_resetwal (PostgreSQL) package.
+# Georgios Kokolatos <gkokolatos@pm.me>, 2021.
+#
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-11-08 10:16+0000\n"
+"PO-Revision-Date: 2021-11-08 12:02+0100\n"
+"Last-Translator: Georgios Kokolatos <gkokolatos@pm.me>\n"
+"Language-Team: \n"
+"Language: el\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"
+"X-Generator: Poedit 3.0\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "κρίσιμο: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "σφάλμα: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "προειδοποίηση: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "δεν ήταν δυνατή η φόρτωση της βιβλιοθήκης «%s»: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "δεν ήταν δυνατή η δημιουργία διακριτικών περιορισμού στην παρούσα πλατφόρμα: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "δεν ήταν δυνατό το άνοιγμα διακριτικού διεργασίας: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "δεν ήταν δυνατή η εκχώρηση SID: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "δεν ήταν δυνατή η δημιουργία διακριτικού διεργασίας: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "δεν ήταν δυνατή η εκκίνηση διεργασίας για την εντολή «%s»: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "δεν ήταν δυνατή η επανεκκίνηση με διακριτικό περιορισμού: κωδικός σφάλματος %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "δεν ήταν δυνατή η απόκτηση κωδικού εξόδου από την υποδιεργασία: κωδικός σφάλματος %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "μη έγκυρη παράμετρος για την επιλογή %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "η εποχή αναγνωριστικού συναλλαγής (-e) δεν πρέπει να είναι -1"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "το παλαιότερο αναγνωριστικό συναλλαγής (-u) πρέπει να είναι μεγαλύτερο ή ίσο με %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "το αναγνωριστικό συναλλαγής (-x) πρέπει να είναι μεγαλύτερο ή ίσο με %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "το αναγνωριστικό συναλλαγής (-c) πρέπει να είναι είτε 0 είτε μεγαλύτερο ή ίσο με 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "το αναγνωριστικό πολλαπλής συναλλαγής (-m) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "το παλαιότερο αναγνωριστικό πολλαπλής συναλλαγής (-m) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "η μετατόπιση πολλαπλής συναλλαγής (-O) δεν πρέπει να είναι -1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "η παράμετρος --wal-segsize πρέπει να είναι αριθμός"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "η παράμετρος --wal-segsize πρέπει να έχει τιμή δύναμης 2 μεταξύ 1 και 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "πάρα πολλές παράμετροι εισόδου από την γραμμή εντολών (η πρώτη είναι η «%s»)"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "δεν ορίστηκε κατάλογος δεδομένων"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "δεν είναι δυνατή η εκτέλεση από \"root\""
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Πρέπει να εκτελέσετε %s ως υπερχρήστης PostgreSQL."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση δικαιωμάτων του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "δεν ήταν δυνατή η μετάβαση στον κατάλογο «%s»: %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα αρχείου «%s» για ανάγνωση: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "το αρχείο κλειδώματος \"%s\" υπάρχει"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Εκτελείται ο διακομιστής; Εάν όχι, διαγράψτε το αρχείο κλειδώματος και προσπαθήστε ξανά."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Εάν αυτές οι τιμές φαίνονται αποδεκτές, χρησιμοποιήστε το -f για να αναγκάσετε την επαναφορά.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Ο διακομιστής βάσης δεδομένων δεν τερματίστηκε με καθαρά.\n"
+"Η επαναφορά του write-ahead log ενδέχεται να προκαλέσει απώλεια δεδομένων.\n"
+"Εάν θέλετε να προχωρήσετε ούτως ή άλλως, χρησιμοποιήστε -f για να αναγκάσετε την επαναφορά.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Επαναφορά write-ahead log\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "μη αναμενόμενο κενό αρχείο «%s»"
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση του αρχείου «%s»: %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "ο κατάλογος δεδομένων είναι εσφαλμένης έκδοσης"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Το αρχείο «%s» περιέχει «%s», το οποίο δεν είναι συμβατό με την έκδοση «%s» αυτού του προγράμματος."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Εάν είστε βέβαιοι ότι η διαδρομή καταλόγου δεδομένων είναι σωστή, εκτελέστε\n"
+" touch %s\n"
+"και προσπάθησε ξανά."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control υπάρχει αλλά δεν έχει έγκυρο CRC· προχωρήστε με προσοχή"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control καθορίζει το μη έγκυρο μέγεθος τμήματος WAL (%d byte)· προχωρήστε με προσοχή"
+msgstr[1] "pg_control καθορίζει το μη έγκυρο μέγεθος τμήματος WAL (%d bytes)· προχωρήστε με προσοχή"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control υπάρχει, αλλά είναι κατεστραμμένη ή λάθος έκδοση· παραβλέπεται"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Μάντεψε τιμές pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Τρέχουσες τιμές pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr ""
+"pg_control αριθμός έκδοσης: %u\n"
+"\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Αριθμός έκδοσης καταλόγου: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Αναγνωριστικό συστήματος βάσης δεδομένων: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Πιο πρόσφατο TimeLineID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Πιο πρόσφατο full_page_writes του σημείου ελέγχου: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "κλειστό"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "ανοικτό"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Πιο πρόσφατο NextXID του σημείου ελέγχου: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Πιο πρόσφατο NextOID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Πιο πρόσφατο NextMultiXactId του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Πιο πρόσφατο NextMultiOffset του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Πιο πρόσφατο oldestXID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestXID’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Πιο πρόσφατο oldestActiveXID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Πιο πρόσφατο oldestMultiXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestMulti’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο oldestCommitTsXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο newestCommitTsXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Μέγιστη στοίχιση δεδομένων: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Μέγεθος μπλοκ βάσης δεδομένων: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Μπλοκ ανά τμήμα μεγάλης σχέσης: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Μέγεθος μπλοκ WAL: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes ανά τμήμα WAL: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Μέγιστο μήκος αναγνωριστικών: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Μέγιστες στήλες σε ένα ευρετήριο: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Μέγιστο μέγεθος ενός τμήματος TOAST: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Μέγεθος τμήματος μεγάλου αντικειμένου: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Τύπος αποθήκευσης ημερομηνίας/ώρας: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "Ακέραιοι 64-bit"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Μεταβλητή Float8 τέθηκε: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "με αναφορά"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "με τιμή"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Έκδοση αθροίσματος ελέγχου σελίδας δεδομένων: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"Τιμές προς αλλαγή:\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Πρώτο τμήμα καταγραφής μετά την επαναφορά: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti’s DB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID’s DB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "δεν ήταν δυνατό το κλείσιμο του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η αφαίρεση του αρχείου \"%s\": %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου «%s»: %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η εγγραφή αρχείου «%s»: %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "σφάλμα fsync: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s επαναφέρει το write-ahead log της PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Χρήση:\n"
+" %s [ΕΠΙΛΟΓΗ]… DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Επιλογές:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" ορισμός παλαιότερων και νεότερων συναλλαγών που φέρουν\n"
+" χρονική σήμανση ολοκλήρωσης (μηδέν σημαίνει καμία αλλαγή)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR κατάλογος δεδομένων\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH όρισε την εποχή του επόμενου αναγνωριστικού συναλλαγής\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force επέβαλλε την ενημέρωση\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE όρισε την ελάχιστη θέση εκκίνησης του νέου WAL\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID όρισε το επόμενο και παλαιότερο αναγνωριστικό πολλαπλής συναλλαγής\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run καμία ενημέρωση, απλά εμφάνισε τι θα συνέβαινε\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID όρισε το επόμενο OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET όρισε την επόμενη μετατόπιση πολλαπλής συναλλαγής\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -x, --next-transaction-id=XID όρισε το επόμενο αναγνωριστικό συναλλαγής\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID όρισε το επόμενο αναγνωριστικό συναλλαγής\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE μέγεθος των τμημάτων WAL, σε megabytes\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help εμφάνισε αυτό το μήνυμα βοήθειας, στη συνέχεια έξοδος\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Υποβάλετε αναφορές σφάλματων σε <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s αρχική σελίδα: <%s>\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help εμφάνισε αυτό το μήνυμα βοήθειας, στη συνέχεια έξοδος\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n"
+
+#~ msgid "transaction ID (-x) must not be 0"
+#~ msgstr "το αναγνωριστικό συναλλαγής (-x) δεν πρέπει να είναι 0"
diff --git a/src/bin/pg_resetwal/po/es.po b/src/bin/pg_resetwal/po/es.po
new file mode 100644
index 0000000..c30a369
--- /dev/null
+++ b/src/bin/pg_resetwal/po/es.po
@@ -0,0 +1,676 @@
+# Spanish message translation file for pg_resetwal
+#
+# Copyright (c) 2003-2021, PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Ivan Hernandez <ivanx@ciencias.unam.mx>, 2003.
+# Alvaro Herrera <alvherre@alvh.no-ip.org>, 2004-2014
+# Jaime Casanova <systemguards@gmail.com>, 2005
+# Martín Marqués <martin@2ndquadrant.com>, 2013-2014
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-07 20:34+0000\n"
+"PO-Revision-Date: 2021-10-14 10:01-0500\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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: BlackCAT 1.1\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "fatal: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "precaución: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "no se pudo cargar la biblioteca «%s»: código de error %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "no se pueden crear tokens restrigidos en esta plataforma: código de error %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "no se pudo abrir el token de proceso: código de error %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "no se pudo emplazar los SIDs: código de error %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "no se pudo crear el token restringido: código de error %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "no se pudo iniciar el proceso para la orden «%s»: código de error %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "no se pudo re-ejecutar con el token restringido: código de error %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "no se pudo obtener el código de salida del subproceso»: código de error %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argumento no válido para la opción %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Prueba con «%s --help» para más información\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "el «epoch» de ID de transacción (-e) no debe ser -1"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "el ID de transacción más antiguo (-u) debe ser mayor o igual a %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "el ID de transacción (-x) debe ser mayor o igual a %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "el ID de transacción (-c) debe ser 0 o bien mayor o igual a 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) no debe ser cero"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "el ID de multitransacción (-m) no debe ser 0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "el ID de multitransacción más antiguo (-m) no debe ser 0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "la posición de multitransacción (-O) no debe ser -1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "el argumento de --wal-segsize debe ser un número"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "el argumento de --wal-segsize debe ser una potencia de 2 entre 1 y 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "demasiados argumentos en la línea de órdenes (el primero es «%s»)"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "directorio de datos no especificado"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "no puede ser ejecutado con el usuario «root»"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Debe ejecutar %s con el superusuario de PostgreSQL."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "no se pudo obtener los permisos del directorio «%s»: %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "no se pudo cambiar al directorio «%s»: %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "no se pudo abrir archivo «%s» para lectura: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "el archivo candado «%s» existe"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "¿Hay un servidor corriendo? Si no, borre el archivo candado e inténtelo de nuevo."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Si estos valores parecen aceptables, use -f para forzar reinicio.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"El servidor de bases de datos no se apagó limpiamente.\n"
+"Restablecer el WAL puede causar pérdida de datos.\n"
+"Si quiere continuar de todas formas, use -f para forzar el restablecimiento.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "«Write-ahead log» restablecido\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "archivo vacío inesperado «%s»"
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "no se pudo leer el archivo «%s»: %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "el directorio de datos tiene la versión equivocada"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "El archivo «%s» contiene «%s», que no es compatible con la versión «%s» de este programa."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Si está seguro que la ruta al directorio de datos es correcta, ejecute\n"
+" touch %s\n"
+"y pruebe de nuevo."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "existe pg_control pero tiene un CRC no válido, proceda con precaución"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control especifica un tamaño de segmento de WAL no válido (%d byte), proceda con precaución"
+msgstr[1] "pg_control especifica un tamaño de segmento de WAL no válido (%d bytes), proceda con precaución"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "existe pg_control pero está roto o tiene la versión equivocada; ignorándolo"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valores de pg_control asumidos:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valores actuales de pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Número de versión de pg_control: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Número de versión de catálogo: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificador de sistema: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes del checkpoint más reciente: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "desactivado"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "activado"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID del checkpoint más reciente: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "BD del oldestXID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "BD del oldestMultiXid del checkpt. más reciente: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Máximo alineamiento de datos: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Tamaño del bloque de la base de datos: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloques por segmento de relación grande: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Tamaño del bloque de WAL: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes por segmento WAL: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Longitud máxima de identificadores: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Máximo número de columnas en un índice: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longitud máxima de un trozo TOAST: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Longitud máxima de un trozo de objeto grande: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo de almacenamiento hora/fecha: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "enteros de 64 bits"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Paso de parámetros float8: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "por referencia"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "por valor"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versión de suma de verificación de datos: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valores a cambiar:\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Primer segmento de log después de reiniciar: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "Base de datos del OldestMulti: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "Base de datos del OldestXID: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Epoch del NextXID: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "no se pudo abrir el directorio «%s»: %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "no se pudo leer el directorio «%s»: %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "no se pudo abrir el directorio «%s»: %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "no se pudo borrar el archivo «%s»: %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "no se pudo abrir el archivo «%s»: %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "no se pudo escribir el archivo «%s»: %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "error de fsync: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s restablece el WAL («write-ahead log») de PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Uso:\n"
+" %s [OPCIÓN]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Opciones:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" definir la más antigua y la más nueva transacciones\n"
+" que llevan timestamp de commit (cero significa no\n"
+" cambiar)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR directorio de datos\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH asigna el siguiente «epoch» de ID de transacción\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force fuerza que la actualización sea hecha\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr ""
+" -l, --next-wal-file=ARCHIVOWAL\n"
+" fuerza una ubicación inicial mínima para nuevo WAL\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr ""
+" -m, --multixact-ids=MXID,MXID\n"
+" asigna el siguiente ID de multitransacción y\n"
+" el más antiguo\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run no actualiza, sólo muestra lo que se haría\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID asigna el siguiente OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr ""
+" -O, --multixact-offset=OFFSET\n"
+" asigna la siguiente posición de multitransacción\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr ""
+" -u, --oldest-transaction-id=XID\n"
+" asigna el ID de transacción más antiguo\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version mostrar información de versión y salir\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr ""
+" -x, --next-transaction-id=XID\n"
+" asigna el siguiente ID de transacción\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=TAMAÑO tamaño de segmentos de WAL, en megabytes\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostrar esta ayuda y salir\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Reporte errores a <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sitio web de %s: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/fr.po b/src/bin/pg_resetwal/po/fr.po
new file mode 100644
index 0000000..f780aad
--- /dev/null
+++ b/src/bin/pg_resetwal/po/fr.po
@@ -0,0 +1,823 @@
+# translation of pg_resetxlog.po to fr_fr
+# french message translation file for pg_resetxlog
+#
+# Use these quotes: « %s »
+#
+# Guillaume Lelarge <guillaume@lelarge.info>, 2003-2009.
+# Stéphane Schildknecht <stephane.schildknecht@dalibo.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-27 02:17+0000\n"
+"PO-Revision-Date: 2021-08-27 17:29+0200\n"
+"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
+"Language-Team: PostgreSQLfr <pgsql-fr-generale@postgresql.org>\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 3.0\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "fatal : "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "erreur : "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "attention : "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "n'a pas pu charger la bibliothèque « %s » : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "ne peut pas créer les jetons restreints sur cette plateforme : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "n'a pas pu ouvrir le jeton du processus : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "n'a pas pu allouer les SID : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "n'a pas pu créer le jeton restreint : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argument invalide pour l'option %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Essayer « %s --help » pour plus d'informations.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "la valeur epoch de l'identifiant de transaction (-e) ne doit pas être -1"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "l'identifiant de transaction le plus ancien (-u) doit être supérieur ou égal à %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "l'identifiant de transaction (-x) doit être supérieur ou égal à %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "l'identifiant de transaction (-c) doit être 0 ou supérieur ou égal à 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "l'OID (-o) ne doit pas être 0"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "l'identifiant de multi-transaction (-m) ne doit pas être 0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "l'identifiant de multi-transaction le plus ancien (-m) ne doit pas être 0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "le décalage de multi-transaction (-O) ne doit pas être -1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "l'argument de --wal-segsize doit être un nombre"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "l'argument de --wal-segsize doit être une puissance de 2 comprise entre 1 et 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "trop d'arguments en ligne de commande (le premier étant « %s »)"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "aucun répertoire de données indiqué"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "ne peut pas être exécuté par « root »"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Vous devez exécuter %s en tant que super-utilisateur PostgreSQL."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "n'a pas pu lire les droits du répertoire « %s » : %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "n'a pas pu modifier le répertoire par « %s » : %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "le fichier verrou « %s » existe"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Le serveur est-il démarré ? Sinon, supprimer le fichier verrou et réessayer."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Si ces valeurs semblent acceptables, utiliser -f pour forcer la\n"
+"réinitialisation.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Le serveur de bases de données n'a pas été arrêté proprement.\n"
+"Ré-initialiser le journal des transactions peut occasionner des pertes de\n"
+"données.\n"
+"Pour continuer malgré tout, utiliser -f pour forcer la\n"
+"réinitialisation.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Réinitialisation des journaux de transactions\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "fichier vide inattendu « %s »"
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "n'a pas pu lire le fichier « %s » : %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "le répertoire des données a une mauvaise version"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Le fichier « %s » contient « %s », qui n'est pas compatible avec la version « %s » de ce programme."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Si vous êtes certain que le chemin du répertoire de données est correct, exécuter\n"
+" touch %s\n"
+"et réessayer."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control existe mais son CRC est invalide ; agir avec précaution"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control spécifie une taille invalide de segment WAL (%d octet) ; agir avec précaution"
+msgstr[1] "pg_control spécifie une taille invalide de segment WAL (%d octets) ; agir avec précaution"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control existe mais est corrompu ou de mauvaise version ; ignoré"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valeurs de pg_control devinées :\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valeurs actuelles de pg_control :\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Numéro de version de pg_control : %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Numéro de version du catalogue : %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identifiant du système de base de données : %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Dernier TimeLineID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Dernier full_page_writes du point de contrôle : %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "désactivé"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "activé"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Dernier NextXID du point de contrôle : %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Dernier NextOID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Dernier NextMultiXactId du point de contrôle : %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Dernier NextMultiOffset du point de contrôle : %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Dernier oldestXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Dernier oldestXID du point de contrôle de la base : %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Dernier oldestActiveXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Dernier oldestMultiXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Dernier oldestMulti du point de contrôle de la base : %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Alignement maximal des données : %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Taille du bloc de la base de données : %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocs par segment des relations volumineuses : %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Taille de bloc du journal de transaction : %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Octets par segment du journal de transaction : %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Longueur maximale des identifiants : %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Nombre maximum de colonnes d'un index: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longueur maximale d'un morceau TOAST : %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Taille d'un morceau de Large Object : %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Stockage du type date/heure : %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "entiers 64-bits"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passage d'argument float8 : %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "par référence"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "par valeur"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Version des sommes de contrôle des pages de données : %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valeurs à changer :\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Premier segment du journal après réinitialisation : %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID Epoch: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "n'a pas pu ouvrir le répertoire « %s » : %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "n'a pas pu lire le répertoire « %s » : %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "n'a pas pu fermer le répertoire « %s » : %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "n'a pas pu supprimer le fichier « %s » : %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » : %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "impossible d'écrire le fichier « %s » : %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "erreur fsync : %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s réinitialise le journal des transactions PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Usage :\n"
+" %s [OPTION]... RÉP_DONNÉES\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Options :\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" configure les transactions la plus ancienne\n"
+" et la plus récente contenant les dates/heures\n"
+" de validation (zéro signifie aucun changement)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]RÉP_DONNEES répertoire de la base de données\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr ""
+" -e, --epoch=XIDEPOCH configure la valeur epoch du prochain\n"
+" identifiant de transaction\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force force la mise à jour\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr ""
+" -l, --next-wal-file=FICHIERWAL configure l'emplacement minimal de début\n"
+" des WAL du nouveau journal de transactions\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr ""
+" -m, --multixact-ids=MXID,MXID configure le prochain et le plus ancien\n"
+" identifiants multi-transactions\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run pas de mise à jour, affiche\n"
+" simplement ce qui sera fait\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID configure le prochain OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr ""
+" -O, --multixact-offset=DÉCALAGE configure le prochain décalage\n"
+" multitransaction\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr ""
+" -u, --oldest-transaction-id=XID configure l'identifiant de transaction le\n"
+" plus ancien\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version affiche la version puis quitte\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr ""
+" -x, --next-transaction-id=XID configure le prochain identifiant de\n"
+" transaction\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=TAILLE configure la taille des segments WAL, en Mo\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help affiche cette aide puis quitte\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapporter les bogues à <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Page d'accueil de %s : <%s>\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Passage d'argument float4 : %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporter les bogues à <pgsql-bugs@lists.postgresql.org>.\n"
+
+#~ msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n"
+#~ msgstr ""
+#~ "%s : erreur interne -- sizeof(ControlFileData) est trop important...\n"
+#~ "corrigez PG_CONTROL_SIZE\n"
+
+#~ msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n"
+#~ msgstr " -c XID,XID configure la plus ancienne et la plus récente transaction\n"
+
+#~ msgid " (zero in either value means no change)\n"
+#~ msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version affiche la version et quitte\n"
+
+#~ msgid " -x XID set next transaction ID\n"
+#~ msgstr " -x XID fixe le prochain identifiant de transaction\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help affiche cette aide et quitte\n"
+
+#~ msgid "First log file ID after reset: %u\n"
+#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n"
+
+#~ msgid " --version output version information, then exit\n"
+#~ msgstr " --version afficherla version et quitte\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help affiche cette aide et quitte\n"
+
+#~ msgid "%s: could not read from directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s : argument invalide pour l'option -l\n"
+
+#~ msgid "%s: invalid argument for option -O\n"
+#~ msgstr "%s : argument invalide pour l'option -O\n"
+
+#~ msgid "%s: invalid argument for option -m\n"
+#~ msgstr "%s : argument invalide pour l'option -m\n"
+
+#~ msgid "%s: invalid argument for option -o\n"
+#~ msgstr "%s : argument invalide pour l'option -o\n"
+
+#~ msgid "%s: invalid argument for option -x\n"
+#~ msgstr "%s : argument invalide pour l'option -x\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "nombres à virgule flottante"
+
+#~ msgid "Transaction log reset\n"
+#~ msgstr "Réinitialisation du journal des transactions\n"
+
+#~ msgid "%s: could not write file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n"
+
+#~ msgid "%s: could not open file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n"
+
+#~ msgid "%s: could not delete file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu supprimer le fichier « %s » : %s\n"
+
+#~ msgid "%s: could not close directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n"
+
+#~ msgid "%s: could not read directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n"
+
+#~ msgid "%s: could not open directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n"
+
+#~ msgid "%s: could not write pg_control file: %s\n"
+#~ msgstr "%s : n'a pas pu écrire le fichier pg_control : %s\n"
+
+#~ msgid "%s: could not create pg_control file: %s\n"
+#~ msgstr "%s : n'a pas pu créer le fichier pg_control : %s\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n"
+
+#~ msgid "%s: could not change directory to \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n"
+
+#~ msgid "%s: could not read permissions of directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire les droits sur le répertoire « %s » : %s\n"
+
+#~ msgid "%s: cannot be executed by \"root\"\n"
+#~ msgstr "%s : ne peut pas être exécuté par « root »\n"
+
+#~ msgid "%s: no data directory specified\n"
+#~ msgstr "%s : aucun répertoire de données indiqué\n"
+
+#~ msgid "%s: too many command-line arguments (first is \"%s\")\n"
+#~ msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n"
+
+#~ msgid "%s: argument of --wal-segsize must be a power of 2 between 1 and 1024\n"
+#~ msgstr "%s : l'argument de --wal-segsize doit être une puissance de 2 entre 1 et 1024\n"
+
+#~ msgid "%s: argument of --wal-segsize must be a number\n"
+#~ msgstr "%s : l'argument de --wal-segsize doit être un nombre\n"
+
+#~ msgid "%s: could not get exit code from subprocess: error code %lu\n"
+#~ msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n"
+
+#~ msgid "%s: could not re-execute with restricted token: error code %lu\n"
+#~ msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n"
+
+#~ msgid "%s: could not start process for command \"%s\": error code %lu\n"
+#~ msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n"
+
+#~ msgid "%s: could not create restricted token: error code %lu\n"
+#~ msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n"
+
+#~ msgid "%s: could not allocate SIDs: error code %lu\n"
+#~ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n"
+
+#~ msgid "%s: could not open process token: error code %lu\n"
+#~ msgstr "%s : n'a pas pu ouvrir le jeton du processus : code d'erreur %lu\n"
+
+#~ msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
+#~ msgstr "%s : ATTENTION : ne peut pas créer les jetons restreints sur cette plateforme\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help affiche cette aide, puis quitte\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version affiche la version, puis quitte\n"
+
+#~ msgid "transaction ID (-x) must not be 0"
+#~ msgstr "l'identifiant de la transaction (-x) ne doit pas être 0"
diff --git a/src/bin/pg_resetwal/po/ja.po b/src/bin/pg_resetwal/po/ja.po
new file mode 100644
index 0000000..fc61b73
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ja.po
@@ -0,0 +1,662 @@
+# pg_resetwal.po
+# Japanese message translation file for pg_resetwal
+#
+# Copyright (C) 2005-2022 PostgreSQL Global Development Group
+#
+# Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>, 2005.
+#
+# This file is distributed under the same license as the PostgreSQL package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL 14)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-25 17:22+0900\n"
+"PO-Revision-Date: 2021-08-25 11:21+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"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.8.13\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "致命的エラー: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "エラー: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "警告: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "ライブラリ\"%s\"をロードできませんでした: エラーコード %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "このプラットフォームでは制限付きトークンを生成できません: エラーコード %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "プロセストークンをオープンできませんでした: エラーコード %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "SIDを割り当てられませんでした: エラーコード %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "制限付きトークンを生成できませんでした: エラーコード %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "コマンド\"%s\"のプロセスを起動できませんでした: エラーコード %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "制限付きトークンで再実行できませんでした: %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "サブプロセスの終了コードを取得できませんでした: エラーコード %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "オプション%sの引数が不正です"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "詳細は\"%s --help\"で確認してください。\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "トランザクションIDの基点(-e)は-1にはできません"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "最古のトランザクションID(-u)は%u以上でなければなりません"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "トランザクションID(-x)は%u以上でなければなりません"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "トランザクションID(-c)は0もしくは2以上でなければなりません"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID(-o)は0にはできません"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "マルチトランザクションID(-m)は0にはできません"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "最古のマルチトランザクションID(-m)は0にはできません"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "マルチトランザクションオフセット(-O)は-1にはできません"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsize の引数は数値でなければなりません"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "--wal-segsize の引数は1から1024の間の2の倍数でなければなりません"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "コマンドライン引数が多すぎます (先頭は\"%s\")"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "データディレクトリが指定されていません"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\"では実行できません"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "PostgreSQLのスーパーユーザーで%sを実行しなければなりません"
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"の権限を読み取れませんでした: %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "ディレクトリ\"%s\"に移動できませんでした: %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "ロックファイル\"%s\"が存在します"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "サーバーが稼動していませんか? そうでなければロックファイルを削除し再実行してください。"
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"この値が適切だと思われるのであれば、-fを使用して強制リセットしてください。\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"データベースサーバーが正しくシャットダウンされていませんでした。\n"
+"先行書き込みログのリセットにはデータ損失の恐れがあります。\n"
+"とにかく処理したいのであれば、-fでリセットを強制してください。\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "先行書き込みログがリセットされました\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "想定外の空のファイル\"%s\""
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "ファイル\"%s\"の読み取りに失敗しました: %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "データディレクトリのバージョンが違います"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "ファイル\"%s\"では\"%s\"となっています、これはこのプログラムのバージョン\"%s\"と互換性がありません"
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"確実にデータディレクトリのパスが正しければ、\n"
+" touch %s\n"
+"の後に再実行してください。"
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_controlがありましたが、CRCが不正でした; 注意して進めてください"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_controlにあるWALセグメントサイズ(%dバイト)は不正です; 注意して進めてください"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_controlがありましたが、破損あるいは間違ったバージョンです; 無視します"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"pg_controlの推測値:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"現在のpg_controlの値:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_controlバージョン番号: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "カタログバージョン番号: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "データベースシステム識別子: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最終チェックポイントの時系列ID: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最終チェックポイントのfull_page_writes: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "オフ"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "オン"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最終チェックポイントのNextXID: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最終チェックポイントのNextOID: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最終チェックポイントのNextMultiXactId: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最終チェックポイントのNextMultiOffset: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最終チェックポイントのoldestXID: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最終チェックポイントのoldestXIDのDB: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最終チェックポイントのoldestActiveXID: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最終チェックポイントのoldestMultiXid: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最終チェックポイントのoldestMultiのDB: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのoldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのnewestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "最大データアラインメント: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "データベースのブロックサイズ: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大きなリレーションのセグメント毎のブロック数:%u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WALのブロックサイズ: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WALセグメント当たりのバイト数: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "識別子の最大長: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "インデックス内の最大列数: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOASTチャンクの最大サイズ: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "ラージオブジェクトチャンクのサイズ: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日付/時刻型の格納方式: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64ビット整数"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8引数の渡し方: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "参照渡し"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "値渡し"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "データベージチェックサムのバージョン: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"変更される値:\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "リセット後最初のログセグメント: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMultiのDB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXIDのDB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID基点: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"をクローズできませんでした: %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "ファイル\"%s\"を削除できませんでした: %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "ファイル\"%s\"をオープンできませんでした: %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "ファイル\"%s\"を書き出せませんでした: %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsyncエラー: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%sはPostgreSQLの先行書き込みログをリセットします。\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"使用方法:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "オプション:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" コミットタイムスタンプを持つ最古と最新の\n"
+" トランザクション(0は変更しないことを意味する)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR データディレクトリ\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH 次のトランザクションIDの基点を設定\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force 強制的に更新を実施\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE 新しいWALの最小開始位置を設定\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID 次および最古のマルチトランザクションIDを設定\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run 更新をせず、単に何が行なわれるかを表示\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID 次のOIDを設定\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET 次のマルチトランザクションオフセットを設定\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID 最古のトランザクションIDを設定\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version バージョン情報を表示して終了\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID 次のトランザクションIDを設定\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WALセグメントのサイズ、単位はメガバイト\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help このヘルプを表示して終了\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"バグは<%s>に報告してください。\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ホームページ: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/ko.po b/src/bin/pg_resetwal/po/ko.po
new file mode 100644
index 0000000..03e30bc
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ko.po
@@ -0,0 +1,662 @@
+# Korean message translation file for PostgreSQL pg_resetxlog
+# Ioseph Kim <ioseph@uri.sarang.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 13\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-10-05 20:45+0000\n"
+"PO-Revision-Date: 2020-10-06 13:44+0900\n"
+"Last-Translator: Ioseph Kim <ioseph@uri.sarang.net>\n"
+"Language-Team: Korean Team <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:236
+#, c-format
+msgid "fatal: "
+msgstr "심각: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "오류: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "경고: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "\"%s\" 라이브러리를 로드할 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "이 운영체제에서 restricted token을 만들 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "프로세스 토큰을 열 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "SID를 할당할 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "상속된 토큰을 만들 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "\"%s\" 명령용 프로세스를 시작할 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "상속된 토큰으로 재실행할 수 없음: 오류 코드 %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "하위 프로세스의 종료 코드를 구할 수 없음: 오류 코드 %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:160 pg_resetwal.c:175 pg_resetwal.c:190 pg_resetwal.c:197
+#: pg_resetwal.c:221 pg_resetwal.c:236 pg_resetwal.c:244 pg_resetwal.c:269
+#: pg_resetwal.c:283
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "%s 옵션의 잘못된 인자"
+
+#: pg_resetwal.c:161 pg_resetwal.c:176 pg_resetwal.c:191 pg_resetwal.c:198
+#: pg_resetwal.c:222 pg_resetwal.c:237 pg_resetwal.c:245 pg_resetwal.c:270
+#: pg_resetwal.c:284 pg_resetwal.c:310 pg_resetwal.c:323 pg_resetwal.c:331
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "자세한 사용법은 \"%s --help\"\n"
+
+#: pg_resetwal.c:166
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "트랜잭션 ID epoch (-e) 값은 -1이 아니여야함"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "transaction ID (-x) must not be 0"
+msgstr "트랜잭션 ID (-x) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:205 pg_resetwal.c:212
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "-c 옵션으로 지정한 트랜잭션 ID는 0이거나 2이상이어야 함"
+
+#: pg_resetwal.c:227
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:250
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "멀티트랜잭션 ID (-m) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:260
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "제일 오래된 멀티트랜잭션 ID (-m) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:275
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "멀티트랜잭션 옵셋 (-O) 값은 -1이 아니여야함"
+
+#: pg_resetwal.c:299
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsize 값은 숫자여야 합니다"
+
+#: pg_resetwal.c:304
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "--wal-segsize 값은 1부터 1024사이 2^n 값이어야 합니다"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "너무 많은 명령행 인수를 지정했습니다. (처음 \"%s\")"
+
+#: pg_resetwal.c:330
+#, c-format
+msgid "no data directory specified"
+msgstr "데이터 디렉터리를 지정하지 않았음"
+
+#: pg_resetwal.c:344
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\" 계정으로는 실행 할 수 없음"
+
+#: pg_resetwal.c:345
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "PostgreSQL superuser로 %s 프로그램을 실행하십시오."
+
+#: pg_resetwal.c:356
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리 읽기 권한 없음: %m"
+
+#: pg_resetwal.c:365
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "\"%s\" 이름의 디렉터리로 이동할 수 없습니다: %m"
+
+#: pg_resetwal.c:381 pg_resetwal.c:544 pg_resetwal.c:595
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "\"%s\" 파일 일기 모드로 열기 실패: %m"
+
+#: pg_resetwal.c:388
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "\"%s\" 잠금 파일이 있음"
+
+#: pg_resetwal.c:389
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr ""
+"서버가 가동중인가요? 그렇지 않다면, 이 파일을 지우고 다시 시도하십시오."
+
+#: pg_resetwal.c:492
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"이 설정값들이 타당하다고 판단되면, 강제로 갱신하려면, -f 옵션을 쓰세요.\n"
+
+#: pg_resetwal.c:504
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"이 데이터베이스 서버는 정상적으로 중지되지 못했습니다.\n"
+"트랜잭션 로그를 다시 설정하는 것은 자료 손실을 야기할 수 있습니다.\n"
+"그럼에도 불구하고 진행하려면, -f 옵션을 사용해서 강제 설정을 하십시오.\n"
+
+#: pg_resetwal.c:518
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "트랜잭션 로그 재설정\n"
+
+#: pg_resetwal.c:553
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "\"%s\" 파일은 예상치 않게 비었음"
+
+#: pg_resetwal.c:555 pg_resetwal.c:611
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "\"%s\" 파일을 읽을 수 없음: %m"
+
+#: pg_resetwal.c:564
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "잘못된 버전의 데이터 디렉터리입니다."
+
+#: pg_resetwal.c:565
+#, c-format
+msgid ""
+"File \"%s\" contains \"%s\", which is not compatible with this program's "
+"version \"%s\"."
+msgstr "\"%s\" 파일 버전은 \"%s\", 이 프로그램 버전은 \"%s\"."
+
+#: pg_resetwal.c:598
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"지정한 데이터 디렉터리가 맞다면, 다음 명령을 실행하고, 다시 시도해\n"
+"보십시오.\n"
+" touch %s"
+
+#: pg_resetwal.c:629
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control 파일이 있지만, CRC값이 잘못되었습니다; 경고와 함께 진행함"
+
+#: pg_resetwal.c:638
+#, c-format
+msgid ""
+"pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural ""
+"pg_control specifies invalid WAL segment size (%d bytes); proceed with "
+"caution"
+msgstr[0] ""
+"pg_control 파일에 잘못된 WAL 조각 파일 크기(%d 바이트)가 지정됨; 경고와 함께 "
+"진행함"
+
+#: pg_resetwal.c:649
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control 파일이 있지만, 손상되었거나 버전을 알 수 없음; 무시함"
+
+#: pg_resetwal.c:744
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"추측된 pg_control 설정값들:\n"
+"\n"
+
+#: pg_resetwal.c:746
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"현재 pg_control 설정값들:\n"
+"\n"
+
+#: pg_resetwal.c:748
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 버전 번호: %u\n"
+
+#: pg_resetwal.c:750
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "카탈로그 버전 번호: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "데이터베이스 시스템 식별자: %llu\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "마지막 체크포인트 TimeLineID: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "마지막 체크포인트 full_page_writes: %s\n"
+
+#: pg_resetwal.c:757
+msgid "off"
+msgstr "off"
+
+#: pg_resetwal.c:757
+msgid "on"
+msgstr "on"
+
+#: pg_resetwal.c:758
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "마지막 체크포인트 NextXID: %u:%u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "마지막 체크포인트 NextOID: %u\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "마지막 체크포인트 NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "마지막 체크포인트 NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 XID: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 XID의 DB:%u\n"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 ActiveXID:%u\n"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 MultiXid:%u\n"
+
+#: pg_resetwal.c:775
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 MultiXid의 DB:%u\n"
+
+#: pg_resetwal.c:777
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 제일 오래된 CommitTsXid:%u\n"
+
+#: pg_resetwal.c:779
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 최신 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:781
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "최대 자료 정렬: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "데이터베이스 블록 크기: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "대형 릴레이션의 세그먼트당 블럭 갯수: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL 블록 크기: %u\n"
+
+#: pg_resetwal.c:790 pg_resetwal.c:876
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WAL 세그먼트의 크기(byte): %u\n"
+
+#: pg_resetwal.c:792
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "식별자 최대 길이: %u\n"
+
+#: pg_resetwal.c:794
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "인덱스에서 사용하는 최대 열 수: %u\n"
+
+#: pg_resetwal.c:796
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST 청크의 최대 크기: %u\n"
+
+#: pg_resetwal.c:798
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "대형객체 청크의 최대 크기: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "날짜/시간형 자료의 저장방식: %s\n"
+
+#: pg_resetwal.c:802
+msgid "64-bit integers"
+msgstr "64-비트 정수"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 인수 전달: %s\n"
+
+#: pg_resetwal.c:804
+msgid "by reference"
+msgstr "참조별"
+
+#: pg_resetwal.c:804
+msgid "by value"
+msgstr "값별"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "데이터 페이지 체크섬 버전: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"변경될 값:\n"
+"\n"
+
+#: pg_resetwal.c:823
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "리셋 뒤 첫 로그 세그먼트: %s\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:829
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:831
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMultiXid의 DB: %u\n"
+
+#: pg_resetwal.c:837
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:843
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:849
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:851
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:853
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID의 DB: %u\n"
+
+#: pg_resetwal.c:859
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:865
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "제일 오래된 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:870
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "최근 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:956 pg_resetwal.c:1024 pg_resetwal.c:1071
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리 열 수 없음: %m"
+
+#: pg_resetwal.c:991 pg_resetwal.c:1044 pg_resetwal.c:1094
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리를 읽을 수 없음: %m"
+
+#: pg_resetwal.c:997 pg_resetwal.c:1050 pg_resetwal.c:1100
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리를 닫을 수 없음: %m"
+
+#: pg_resetwal.c:1036 pg_resetwal.c:1086
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "\"%s\" 파일을 지울 수 없음: %m"
+
+#: pg_resetwal.c:1167
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "\"%s\" 파일을 열 수 없음: %m"
+
+#: pg_resetwal.c:1177 pg_resetwal.c:1190
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "\"%s\" 파일 쓰기 실패: %m"
+
+#: pg_resetwal.c:1197
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync 오류: %m"
+
+#: pg_resetwal.c:1208
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s 프로그램은 PostgreSQL 트랜잭션 로그를 다시 설정합니다.\n"
+"\n"
+
+#: pg_resetwal.c:1209
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"사용법:\n"
+" %s [옵션]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1210
+#, c-format
+msgid "Options:\n"
+msgstr "옵션들:\n"
+
+#: pg_resetwal.c:1211
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" 커밋 타임스탬프를 사용할 최소,최대 트랜잭"
+"션\n"
+" ID 값 (0이면 바꾸지 않음)\n"
+
+#: pg_resetwal.c:1214
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 데이터 디렉터리\n"
+
+#: pg_resetwal.c:1215
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH 다음 트랙잭션 ID epoch 지정\n"
+
+#: pg_resetwal.c:1216
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force 강제로 갱신함\n"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+" -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr ""
+" -l, --next-wal-file=WALFILE 새 트랜잭션 로그를 위한 WAL 최소 시작 위치"
+"를 강제로 지정\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+" -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr ""
+" -m, --multixact-ids=MXID,MXID 다음 제일 오래된 멀티트랜잭션 ID 지정\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid ""
+" -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run 갱신하지 않음, 컨트롤 값들을 보여주기만 함"
+"(테스트용)\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID 다음 OID 지정\n"
+
+#: pg_resetwal.c:1221
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET 다음 멀티트랜잭션 옵셋 지정\n"
+
+#: pg_resetwal.c:1222
+#, c-format
+msgid ""
+" -V, --version output version information, then exit\n"
+msgstr " -V, --version 버전 정보를 보여주고 마침\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID 다음 트랜잭션 ID 지정\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WAL 조각 파일 크기, MB 단위\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 이 도움말을 보여주고 마침\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"문제점 보고 주소: <%s>\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 홈페이지: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/ru.po b/src/bin/pg_resetwal/po/ru.po
new file mode 100644
index 0000000..657595a
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ru.po
@@ -0,0 +1,780 @@
+# Russian message translation file for pg_resetxlog
+# Copyright (C) 2002-2016 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Serguei A. Mokhov <mokhov@cs.concordia.ca>, 2002-2005.
+# Oleg Bartunov <oleg@sai.msu.su>, 2004.
+# Sergey Burladyan <eshkinkot@gmail.com>, 2009.
+# Dmitriy Olshevskiy <olshevskiy87@bk.ru>, 2014.
+# Alexander Lakhin <exclusion@gmail.com>, 2012-2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetxlog (PostgreSQL current)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-14 06:29+0300\n"
+"PO-Revision-Date: 2021-09-04 12:13+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:259
+#, c-format
+msgid "fatal: "
+msgstr "важно: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "ошибка: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "предупреждение: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "не удалось загрузить библиотеку \"%s\" (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "в этой ОС нельзя создавать ограниченные маркеры (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "не удалось открыть маркер процесса (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "не удалось подготовить структуры SID (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "не удалось создать ограниченный маркер (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "не удалось запустить процесс для команды \"%s\" (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "не удалось перезапуститься с ограниченным маркером (код ошибки: %lu)"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "не удалось получить код выхода от подпроцесса (код ошибки: %lu)"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "недопустимый аргумент параметра %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Для дополнительной информации попробуйте \"%s --help\".\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "эпоха ID транзакции (-e) не должна быть равна -1"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "ID старейшей транзакции (-u) должен быть больше или равен %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ID транзакции (-x) должен быть больше или равен %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "ID транзакции (-c) должен быть равен 0, либо больше или равен 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) не должен быть равен 0"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID мультитранзакции (-m) не должен быть равен 0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "ID старейшей мультитранзакции (-m) не должен быть равен 0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "смещение мультитранзакции (-O) не должно быть равно -1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "аргументом --wal-segsize должно быть число"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "аргументом --wal-segsize должна быть степень 2 от 1 до 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "слишком много аргументов командной строки (первый: \"%s\")"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог данных не указан"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "программу не должен запускать root"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Запускать %s нужно от имени суперпользователя PostgreSQL."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "не удалось считать права на каталог \"%s\": %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не удалось перейти в каталог \"%s\": %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не удалось открыть файл \"%s\" для чтения: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "файл блокировки \"%s\" существует"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr ""
+"Возможно, сервер запущен? Если нет, удалите этот файл и попробуйте снова."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Если эти значения приемлемы, выполните сброс принудительно, добавив ключ -"
+"f.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Сервер баз данных был остановлен некорректно.\n"
+"Сброс журнала предзаписи может привести к потере данных.\n"
+"Если вы хотите сбросить его, несмотря на это, добавьте ключ -f.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Журнал предзаписи сброшен\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "файл \"%s\" оказался пустым"
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не удалось прочитать файл \"%s\": %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "каталог данных имеет неверную версию"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid ""
+"File \"%s\" contains \"%s\", which is not compatible with this program's "
+"version \"%s\"."
+msgstr ""
+"Файл \"%s\" содержит строку \"%s\", а ожидается версия программы \"%s\"."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Если вы уверены, что путь к каталогу данных правильный, выполните\n"
+" touch %s\n"
+"и повторите попытку."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr ""
+"pg_control существует, но его контрольная сумма неверна; продолжайте с "
+"осторожностью"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid ""
+"pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural ""
+"pg_control specifies invalid WAL segment size (%d bytes); proceed with "
+"caution"
+msgstr[0] ""
+"в pg_control указан некорректный размер сегмента WAL (%d Б); продолжайте с "
+"осторожностью"
+msgstr[1] ""
+"в pg_control указан некорректный размер сегмента WAL (%d Б); продолжайте с "
+"осторожностью"
+msgstr[2] ""
+"в pg_control указан некорректный размер сегмента WAL (%d Б); продолжайте с "
+"осторожностью"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr ""
+"pg_control испорчен или имеет неизвестную либо недопустимую версию; "
+"игнорируется..."
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Предполагаемые значения pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Текущие значения pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Номер версии pg_control: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версии каталога: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Идентификатор системы баз данных: %llu\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Линия времени последней конт. точки: %u\n"
+
+# skip-rule: no-space-after-period
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Режим full_page_writes последней к.т: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "выкл."
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "вкл."
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID последней конт. точки: %u:%u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "БД с oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "БД с oldestMulti последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid последней к. т.: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Макс. предел выравнивания данных: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Размер блока БД: %u\n"
+
+# skip-rule: double-space
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоков в макс. сегменте отношений: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Размер блока WAL: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байт в сегменте WAL: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальная длина идентификаторов: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Макс. число столбцов в индексе: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальный размер порции TOAST: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Размер порции большого объекта: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Формат хранения даты/времени: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64-битные целые"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргумента float8: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "по ссылке"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "по значению"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версия контрольных сумм страниц: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Значения, которые будут изменены:\n"
+"\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Первый сегмент журнала после сброса: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "БД с oldestMultiXid: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "БД с oldestXID: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Эпоха NextXID: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "не удалось открыть каталог \"%s\": %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "не удалось прочитать каталог \"%s\": %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "не удалось закрыть каталог \"%s\": %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "ошибка удаления файла \"%s\": %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не удалось открыть файл \"%s\": %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не удалось записать файл \"%s\": %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "ошибка синхронизации с ФС: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s сбрасывает журнал предзаписи PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Использование:\n"
+" %s [ПАРАМЕТР]... КАТ_ДАННЫХ\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Параметры:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions "
+"bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" задать старейшую и новейшую транзакции,\n"
+" несущие метки времени (0 — не менять)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]КАТ_ДАННЫХ каталог данных\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr ""
+" -e, --epoch=XIDEPOCH задать эпоху для ID следующей транзакции\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr ""
+" -f, --force принудительное выполнение операции\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid ""
+" -l, --next-wal-file=WALFILE set minimum starting location for new "
+"WAL\n"
+msgstr ""
+" -l, --next-wal-file=ФАЙЛ_WAL задать минимальное начальное положение\n"
+" для нового WAL\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid ""
+" -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr ""
+" -m, --multixact-ids=MXID,MXID задать ID следующей и старейшей\n"
+" мультитранзакции\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid ""
+" -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run показать, какие действия будут "
+"выполнены,\n"
+" но не выполнять их\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID задать следующий OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr ""
+" -O, --multixact-offset=СМЕЩЕНИЕ задать смещение следующей "
+"мультитранзакции\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID задать ID старейшей ID\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid ""
+" -V, --version output version information, then exit\n"
+msgstr " -V, --version показать версию и выйти\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID задать ID следующей транзакции\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr ""
+" --wal-segsize=РАЗМЕР размер сегментов WAL (в мегабайтах)\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показать эту справку и выйти\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Об ошибках сообщайте по адресу <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашняя страница %s: <%s>\n"
+
+#~ msgid "transaction ID (-x) must not be 0"
+#~ msgstr "ID транзакции (-x) не должен быть равен 0"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Передача аргумента Float4: %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Об ошибках сообщайте по адресу <pgsql-bugs@lists.postgresql.org>.\n"
+
+#~ msgid "%s: could not create pg_control file: %s\n"
+#~ msgstr "%s: не удалось создать файл pg_control: %s\n"
+
+#~ msgid "%s: could not write pg_control file: %s\n"
+#~ msgstr "%s: не удалось записать файл pg_control: %s\n"
+
+#~ msgid ""
+#~ " -c XID,XID set oldest and newest transactions bearing commit "
+#~ "timestamp\n"
+#~ msgstr ""
+#~ " -c XID,XID задать старейшую и новейшую транзакции, несущие метку "
+#~ "времени фиксации\n"
+
+#~ msgid " (zero in either value means no change)\n"
+#~ msgstr " (0 в любом из аргументов игнорируется)\n"
+
+#~ msgid ""
+#~ "%s: internal error -- sizeof(ControlFileData) is too large ... fix "
+#~ "PG_CONTROL_SIZE\n"
+#~ msgstr ""
+#~ "%s: внутренняя ошибка -- размер ControlFileData слишком велик -- "
+#~ "исправьте PG_CONTROL_SIZE\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "числа с плавающей точкой"
+
+#~ msgid "%s: invalid argument for option -x\n"
+#~ msgstr "%s: недопустимый аргумент параметра -x\n"
+
+#~ msgid "%s: invalid argument for option -o\n"
+#~ msgstr "%s: недопустимый аргумент параметра -o\n"
+
+#~ msgid "%s: invalid argument for option -m\n"
+#~ msgstr "%s: недопустимый аргумент параметра -m\n"
+
+#~ msgid "%s: invalid argument for option -O\n"
+#~ msgstr "%s: недопустимый аргумент параметра -O\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s: недопустимый аргумент параметра -l\n"
+
+#~ msgid " -m XID,OLDEST set next multitransaction ID and oldest value\n"
+#~ msgstr ""
+#~ " -m XID,СТАРЕЙШАЯ задать ID следующей мультитранзакции и ID старейшей\n"
+
+#~ msgid "disabled"
+#~ msgstr "отключен"
+
+#~ msgid "enabled"
+#~ msgstr "включен"
+
+#~ msgid "First log file ID after reset: %u\n"
+#~ msgstr "ID первого журнала после сброса: %u\n"
diff --git a/src/bin/pg_resetwal/po/sv.po b/src/bin/pg_resetwal/po/sv.po
new file mode 100644
index 0000000..a7f8bd0
--- /dev/null
+++ b/src/bin/pg_resetwal/po/sv.po
@@ -0,0 +1,665 @@
+# Swedish message translation file for resetxlog.
+# Dennis Björklund <db@zigo.dhs.org>, 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021.
+# Peter Eisentraut <peter_e@gmx.net>, 2010.
+# Mats Erik Andersson <bsd@gisladisker.se>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-11-06 22:16+0000\n"
+"PO-Revision-Date: 2021-11-09 06:32+0100\n"
+"Last-Translator: Dennis 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:259
+#, c-format
+msgid "fatal: "
+msgstr "fatalt: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "fel: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "varning: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "kunde inte ladda länkbibliotek \"%s\": felkod %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "kan inte skapa token för begränsad åtkomst på denna plattorm: felkod %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "kunde inte öppna process-token: felkod %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "kunde inte allokera SID: felkod %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "kunde inte skapa token för begränsad åtkomst: felkod %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "kunde inte starta process för kommando \"%s\": felkod %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "kunde inte köra igen med token för begränsad åtkomst: felkod %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "kunde inte hämta statuskod för underprocess: felkod %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "ogiltigt argument för flaggan %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Försök med \"%s --help\" för mer information.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "Epoch (-e) för transaktions-ID får inte vara -1."
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "äldsta transaktions-ID (-u) måste vara större än eller lika med %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "transaktions-ID (-x) måste vara större än eller lika med %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "transaktions-ID (-c) måste antingen vara 0 eller större än eller lika med 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) får inte vara 0."
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "Multitransaktions-ID (-m) får inte vara 0."
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "Äldsta multitransaktions-ID (-m) får inte vara 0."
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "Multitransaktionsoffset (-O) får inte vara -1."
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "argumentet till --wal-segsize måste vara ett tal"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "argumentet till --wal-segsize måste vara en tvåpotens mellan 1 och 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "för många kommandoradsargument (första är \"%s\")"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "ingen datakatalog angiven"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "kan inte köras av \"root\""
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Du måste köra %s som PostgreSQL:s superuser."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "kunde inte läsa rättigheter på katalog \"%s\": %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "kunde inte byta katalog till \"%s\": %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "kunde inte öppna filen \"%s\" för läsning: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "låsfil med namn \"%s\" finns redan"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Kör servern redan? Om inte, radera låsfilen och försök igen."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Om dessa värden verkar godtagbara, använd då -f för att\n"
+"framtvinga återställning.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Databasservern stängdes inte av ordentligt. Att återställa\n"
+"write-ahead-loggen kan medföra att data förloras. Om du ändå\n"
+"vill fortsätta, använd -f för att framtvinga återställning.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Återställning av write-ahead-log\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "oväntad tom fil \"%s\""
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "kunde inte läsa fil \"%s\": %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "datakatalogen har fel version"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Filen \"%s\" innehåller \"%s\", vilket inte är kompatibelt med detta programmets version \"%s\"."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Om du är säker på att sökvägen till datakatalogen är riktig,\n"
+"utför då \"touch %s\" och försök sedan igen."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control existerar men har ogiltig CRC. Fortsätt med varsamhet."
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control anger ogiltig WAL-segmentstorlek (%d byte); fortsätt med varsamhet."
+msgstr[1] "pg_control anger ogiltig WAL-segmentstorlek (%d byte); fortsätt med varsamhet."
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control existerar men är trasig eller har fel version. Den ignoreras."
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Gissade värden för pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Nuvarande värden för pg_control:\n"
+"\n"
+
+# November 26th, 2014: Insert six additional space characters
+# for best alignment with Swedish translation.
+# Translations should be checked against those of pg_controldata.
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Versionsnummer för pg_control: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversion: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Databasens systemidentifierare: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Senaste kontrollpunktens full_page_writes: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "av"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "på"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID vid senaste kontrollpunkt: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB för oldestXID vid senaste kontrollpunkt: %u\n"
+
+# FIXME: too wide
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB för oldestMulti vid senaste kontrollpkt: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximal jämkning av data (alignment): %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Databasens blockstorlek: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Block per segment i en stor relation: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Blockstorlek i transaktionsloggen: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Segmentstorlek i transaktionsloggen: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximal längd för identifierare: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximalt antal kolonner i ett index: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximal storlek för en TOAST-enhet: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Storlek för large-object-enheter: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Representation av dag och tid: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64-bitars heltal"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Åtkomst till float8-argument: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "referens"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "värdeåtkomst"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Checksummaversion för datasidor: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Värden att förändra:\n"
+"\n"
+
+# November 26th, 2014: Insert additional spacing to fit
+# with the first translated text, which uses most characters.
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Första loggsegment efter återställning: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "DB för OldestMulti: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "DB för OldestXID: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Epoch för NextXID: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "kunde inte öppna katalog \"%s\": %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "kunde inte läsa katalog \"%s\": %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "kunde inte stänga katalog \"%s\": %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "kunde inte radera fil \"%s\": %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "kunde inte öppna fil \"%s\": %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "kunde inte skriva fil \"%s\": %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "misslyckad fsync: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s återställer write-ahead-log för PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Användning:\n"
+" %s [FLAGGA]... DATAKATALOG\n"
+"\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Flaggor:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" sätt äldsta och nyaste transaktionerna som\n"
+" kan ha commit-tidstämpel (noll betyder\n"
+" ingen ändring)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR datakatalog\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH sätter epoch för nästa transaktions-ID\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force framtvinga uppdatering\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFIL sätt minsta startposition för ny WAL\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID sätt nästa och äldsta multitransaktions-ID\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run ingen updatering; visa bara planerade åtgärder\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID sätt nästa OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET sätt nästa multitransaktionsoffset\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID sätt äldsta transaktions-ID\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version visa versionsinformation, avsluta sedan\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID sätt nästa transaktions-ID\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=STORLEK storlek på WAL-segment i megabyte\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help visa denna hjälp, avsluta sedan\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportera fel till <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "hemsida för %s: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/tr.po b/src/bin/pg_resetwal/po/tr.po
new file mode 100644
index 0000000..48b1497
--- /dev/null
+++ b/src/bin/pg_resetwal/po/tr.po
@@ -0,0 +1,751 @@
+# translation of pg_resetxlog-tr.po to Turkish
+# Devrim GUNDUZ <devrim@CommandPrompt.com>, 2004, 2005, 2006, 2007.
+# Nicolai TUFAR <ntufar@gmail.com>, 2004, 2005, 2006, 2007.
+# Abdullah GÜLNER <agulner@gmail.com>, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetxlog-tr\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-04-26 13:47+0000\n"
+"PO-Revision-Date: 2019-06-12 16:23+0300\n"
+"Last-Translator: Abdullah GÜLNER\n"
+"Language-Team: Turkish <ceviri@postgresql.org.tr>\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"
+"X-Poedit-Basepath: /home/ntufar/pg/pgsql/src/bin/pg_resetxlog\n"
+"Plural-Forms: nplurals=2; plural=(n != 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ı: "
+
+#: ../../common/restricted_token.c:69
+#, c-format
+msgid "cannot create restricted tokens on this platform"
+msgstr "bu platformda restricted token oluşturulamıyor"
+
+#: ../../common/restricted_token.c:78
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "process token açma başarısız: hata kodu %lu"
+
+#: ../../common/restricted_token.c:91
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "SIDler ayrılamıyor (allocate): Hata kodu %lu"
+
+#: ../../common/restricted_token.c:110
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "restricted token oluşturulamıyor: hata kodu %lu"
+
+#: ../../common/restricted_token.c:131
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "\"%s\" komutu için işlem (process) başlatılamadı: hata kodu %lu"
+
+#: ../../common/restricted_token.c:169
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "restricted token ile tekrar çalıştırılamadı (re-execute): hata kodu %lu"
+
+#: ../../common/restricted_token.c:185
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "alt-işlemden çıkış kodu alınamadı: hata kodu %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:160 pg_resetwal.c:175 pg_resetwal.c:190 pg_resetwal.c:197
+#: pg_resetwal.c:221 pg_resetwal.c:236 pg_resetwal.c:244 pg_resetwal.c:269
+#: pg_resetwal.c:283
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "%s seçeneği için geçersiz argüman"
+
+#: pg_resetwal.c:161 pg_resetwal.c:176 pg_resetwal.c:191 pg_resetwal.c:198
+#: pg_resetwal.c:222 pg_resetwal.c:237 pg_resetwal.c:245 pg_resetwal.c:270
+#: pg_resetwal.c:284 pg_resetwal.c:310 pg_resetwal.c:323 pg_resetwal.c:331
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Daha fazla bilgi için \"%s --help\" yazabilirsiniz.\n"
+
+#: pg_resetwal.c:166
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "transaction ID epoch (-e) -1 olamaz"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "transaction ID (-x) must not be 0"
+msgstr "transaction ID (-x) 0 olamaz"
+
+#: pg_resetwal.c:205 pg_resetwal.c:212
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "işlem (transaction) ID (-c) ya 0 ya da 2 den büyük veya eşit olmalı"
+
+#: pg_resetwal.c:227
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) 0 olamaz"
+
+#: pg_resetwal.c:250
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "multitransaction ID (-m) 0 olamaz"
+
+#: pg_resetwal.c:260
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "en eski multitransaction ID (-m) 0 olamaz"
+
+#: pg_resetwal.c:275
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "multitransaction offset (-O) değeri -1 olamaz"
+
+#: pg_resetwal.c:299
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsize argümanı bir sayı olmalıdır"
+
+#: pg_resetwal.c:304
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "--wal-segsize argümanı 2'nin 1 ve 1024 arasındaki bir üssü olmalıdır"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "çok fazla komut satırı argümanı var (ilki \"%s\")"
+
+#: pg_resetwal.c:330
+#, c-format
+msgid "no data directory specified"
+msgstr "veri dizini belirtilmedi"
+
+#: pg_resetwal.c:344
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\" tarafından çalıştırılamaz"
+
+#: pg_resetwal.c:345
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "%s komutunu PostgreSQL superuser olarak çalıştırmalısınız."
+
+#: pg_resetwal.c:356
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "\"%s\" dizininin erişim haklarını okunamıyor: %m"
+
+#: pg_resetwal.c:365
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "çalışma dizini \"%s\" olarak değiştirilemedi: %m"
+
+#: pg_resetwal.c:381 pg_resetwal.c:545 pg_resetwal.c:602
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "\"%s\" dosyası, okunmak için açılamadı: %m"
+
+#: pg_resetwal.c:388
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "\"%s\" lock dosyası mevcuttur"
+
+#: pg_resetwal.c:389
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Bir sunucu çalışıyor mu? Eğer çalışmıyorsa, lock dosyasını silin ve yeniden deneyin."
+
+#: pg_resetwal.c:492
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Bu değerler uygun görünüyorsa, reset zorlamak için -f kullanın.\n"
+
+#: pg_resetwal.c:504
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"Veritabanı sunucusu düzgün kapatılmadı.\n"
+"İşlem kayıt (write-ahead log) dosyasını sıfırlamak veri kaybına neden olabilir.\n"
+"Yine de devam etmek istiyorsanız, sıfırlama işlemini zorlamak için -f parametresini kullanınız.\n"
+
+#: pg_resetwal.c:518
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Write-ahead log sıfırlama\n"
+
+#: pg_resetwal.c:554
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "beklenmeyen boş dosya \"%s\""
+
+#: pg_resetwal.c:556 pg_resetwal.c:618
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "\"%s\" dosyası okuma hatası: %m"
+
+#: pg_resetwal.c:571
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "veri dizininin sürümü yanlış"
+
+#: pg_resetwal.c:572
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "\"%s\" dosyası \"%s\" içermekte ki bu programın \"%s\" sürümüyle uyumlu değil."
+
+#: pg_resetwal.c:605
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Eğer veri dizininin doğru olduğuna eminseniz\n"
+" touch %s\n"
+"komutunu çalıştırın ve tekrar deneyin."
+
+#: pg_resetwal.c:636
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control mevcut ancak geçersiz CRC'ye sahip, dikkatle ilerleyin"
+
+#: pg_resetwal.c:645
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control geçersiz WAL segment boyutu belirtmekte (%d bayt); dikkatle ilerleyin"
+msgstr[1] "pg_control geçersiz WAL segment boyutu belirtmekte (%d bayt); dikkatle ilerleyin"
+
+#: pg_resetwal.c:656
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control mevcut ama ya bozuk ya da yanlış sürümde; gözardı ediliyor"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Tahmin edilen pg_control değerleri:\n"
+"\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Geçerli pg_control değerleri:\n"
+"\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control sürüm numarası: %u\n"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalog sürüm numarası: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Database system identifier: %s\n"
+msgstr "Veritabanı sistem tanımlayıcısı: %s\n"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Son checkpoint''in TimeLineID değeri: %u\n"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Son checkpoint'in full_page_writes değeri: %s\n"
+
+#: pg_resetwal.c:774
+msgid "off"
+msgstr "kapalı"
+
+#: pg_resetwal.c:774
+msgid "on"
+msgstr "açık"
+
+#: pg_resetwal.c:775
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Son checkpoint'in NextXID değeri: %u:%u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Son checkpoint''in NextOID değeri: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Son checkpoint''in NextMultiXactId değeri: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Son checkpoint''in NextMultiOffset değeri: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Son checkpoint'in oldestXID değeri: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Son checkpoint'in oldestXID değeri'nin DB'si: %u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Son checkpoint'in oldestActiveXID değeri: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Son checkpoint'in oldestMultiXid değeri: %u\n"
+
+#: pg_resetwal.c:792
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Son checkpoint'in oldestMulti'sinin VT'si: %u\n"
+
+#: pg_resetwal.c:794
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Son checkpoint'in oldestCommitTsXid değeri: %u\n"
+
+#: pg_resetwal.c:796
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Son checkpoint''in newestCommitTsXid değeri: %u\n"
+
+#: pg_resetwal.c:798
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Azami veri hizalama: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Veritabanı blok büyüklüğü: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "büyük nesnenin bölümü başına blok sayısı: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL blok büyüklüğü: %u\n"
+
+#: pg_resetwal.c:807 pg_resetwal.c:895
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WAL segment başına WAL bayt sayısı: %u\n"
+
+#: pg_resetwal.c:809
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Tanımlayıcıların en yüksek sayısı: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Bir indexteki en fazla kolon sayısı: %u\n"
+
+#: pg_resetwal.c:813
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST parçasının en büyük uzunluğu: %u\n"
+
+#: pg_resetwal.c:815
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Büyük-nesne parçasının boyutu: %u\n"
+
+#: pg_resetwal.c:818
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tarih/zaman tipi saklanması: %s\n"
+
+#: pg_resetwal.c:819
+msgid "64-bit integers"
+msgstr "64-bit tamsayılar"
+
+#: pg_resetwal.c:820
+#, c-format
+msgid "Float4 argument passing: %s\n"
+msgstr "Float4 argument passing: %s\n"
+
+#: pg_resetwal.c:821 pg_resetwal.c:823
+msgid "by reference"
+msgstr "referans ile"
+
+#: pg_resetwal.c:821 pg_resetwal.c:823
+msgid "by value"
+msgstr "değer ils"
+
+#: pg_resetwal.c:822
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 argument passing: %s\n"
+
+#: pg_resetwal.c:824
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Veri sayfası sağlama (checksum) sürümü: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Değiştirilecek değerler:\n"
+"\n"
+
+#: pg_resetwal.c:842
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Sıfırlamadan sonraki ilk kayıt segmenti: %s\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId değeri: %u\n"
+
+#: pg_resetwal.c:848
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid değeri: %u\n"
+
+#: pg_resetwal.c:850
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti'nin VT'si: %u\n"
+
+#: pg_resetwal.c:856
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset değeri: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID değeri: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID değeri: %u\n"
+
+#: pg_resetwal.c:870
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID değeri: %u\n"
+
+#: pg_resetwal.c:872
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID'nin VT'si: %u\n"
+
+#: pg_resetwal.c:878
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID devri: %u\n"
+
+#: pg_resetwal.c:884
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid değeri: %u\n"
+
+#: pg_resetwal.c:889
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid değeri: %u\n"
+
+#: pg_resetwal.c:975 pg_resetwal.c:1043 pg_resetwal.c:1090
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "\"%s\" dizini açılamıyor: %m"
+
+#: pg_resetwal.c:1010 pg_resetwal.c:1063 pg_resetwal.c:1113
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "\"%s\" dizini okunamıyor: %m"
+
+#: pg_resetwal.c:1016 pg_resetwal.c:1069 pg_resetwal.c:1119
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "\"%s\" dizini kapatılamadı: %m"
+
+#: pg_resetwal.c:1055 pg_resetwal.c:1105
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "\"%s\" dosyası silinemedi: %m"
+
+#: pg_resetwal.c:1186
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "\"%s\" dosyası açılamıyor: %m"
+
+#: pg_resetwal.c:1196 pg_resetwal.c:1209
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "\"%s\" dosyasına yazma hatası: %m"
+
+#: pg_resetwal.c:1216
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync hatası: %m"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s PostgreSQL işlem kayıt (write-ahead log) dosyasını sıfırlar.\n"
+"\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Kullanımı:\n"
+" %s [SEÇENEK]... VERİ_DİZİNİ\n"
+"\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid "Options:\n"
+msgstr "Seçenekler:\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" commit timestamp taşıyan en eski ve en yeni\n"
+" işlemleri (transaction) ayarla (sıfır, değişiklik yok demek)\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR veri dizini\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH sonraki transaction ID epoch ayarla\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force güncellemenin yapılmasını zorla\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE yeni WAL için en düşük başlama yerini ayarla\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID sonraki ve en eski multitransaction ID'sini ayarla\n"
+
+#: pg_resetwal.c:1238
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run güncelleme yok, sadece ne yapılacağını göster\n"
+
+#: pg_resetwal.c:1239
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID sonraki OID'i ayarla\n"
+
+#: pg_resetwal.c:1240
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET sonraki multitransaction offseti ayarla\n"
+
+#: pg_resetwal.c:1241
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version sürüm bilgisini göster, sonra çık\n"
+
+#: pg_resetwal.c:1242
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID sonraki işlem (transaction) ID ayarla\n"
+
+#: pg_resetwal.c:1243
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WAL segmentlerinin boyutu, megabayt olarak\n"
+
+#: pg_resetwal.c:1244
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help bu yardımı göster, sonra çık\n"
+
+#: pg_resetwal.c:1245
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+msgstr ""
+"\n"
+"Hataları <pgsql-bugs@lists.postgresql.org> adresine bildiriniz.\n"
+
+#~ msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n"
+#~ msgstr " -c XID,XID commit timestamp taşıyan en eski ve enyeni işlemleri (transaction) ayarla\n"
+
+#~ msgid " (zero in either value means no change)\n"
+#~ msgstr ""
+#~ " (her iki değerde sıfır değişiklik olmadığı anlamına gelir)\n"
+#~ "\n"
+
+#~ msgid " [-D] DATADIR data directory\n"
+#~ msgstr " [-D] DATADIR veri dizini\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V,--version sürüm numarasını yaz ve çık\n"
+
+#~ msgid " -x XID set next transaction ID\n"
+#~ msgstr " -x XID sıradaki transaction ID'sini ayarla\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help bu yardımı göster ve çık\n"
+
+#~ msgid "Maximum length of locale name: %u\n"
+#~ msgstr "Yerel adının en büyük uzunluğu: %u\n"
+
+#~ msgid "%s: invalid LC_CTYPE setting\n"
+#~ msgstr "%s: geçersiz LC_CTYPE ayarı\n"
+
+#~ msgid "%s: invalid LC_COLLATE setting\n"
+#~ msgstr "%s: Geçersiz LC_COLLATE ayarı\n"
+
+#~ msgid " --version output version information, then exit\n"
+#~ msgstr " --version sürüm bilgisini göster ve çık\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help bu yardımı göster ve çık\n"
+
+#~ msgid "%s: could not read from directory \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizini okunamadı: %s\n"
+
+#~ msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n"
+#~ msgstr "%s: iç hata -- sizeof(ControlFileData) çok büyük ... PG_CONTROL_SIZE değerini düzeltiniz\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "kayan nokta sayılar"
+
+#~ msgid "First log file ID after reset: %u\n"
+#~ msgstr "Sıfırlamadan sonraki ilk kayıt dosyası ID'si: %u\n"
+
+#~ msgid "Transaction log reset\n"
+#~ msgstr "Transaction kayıt dosyası sıfırlandı\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s: -l seçeneği için geçersiz argüman\n"
+
+#~ msgid "%s: invalid argument for option -O\n"
+#~ msgstr "%s: -O seçeneği için geçersiz argüman\n"
+
+#~ msgid "%s: invalid argument for option -m\n"
+#~ msgstr "%s: -m seçeneği için geçersiz argüman\n"
+
+#~ msgid "%s: invalid argument for option -o\n"
+#~ msgstr "%s: -o seçeneği için geçersiz argüman\n"
+
+#~ msgid "%s: invalid argument for option -x\n"
+#~ msgstr "%s: -x seçeneği için geçersiz argüman\n"
+
+#~ msgid "%s: could not write file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dosyasına yazılamadı: %s\n"
+
+#~ msgid "%s: could not open file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dosyası açılamadı: %s\n"
+
+#~ msgid "%s: could not delete file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dosyası silinemedi: %s\n"
+
+#~ msgid "%s: could not close directory \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizini kapatılamadı: %s\n"
+
+#~ msgid "%s: could not read directory \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizini okunamadı: %s\n"
+
+#~ msgid "%s: could not open directory \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizini açılamadı: %s\n"
+
+#~ msgid "%s: could not write pg_control file: %s\n"
+#~ msgstr "%s: pg_control dosyasına yazılamadı: %s\n"
+
+#~ msgid "%s: could not create pg_control file: %s\n"
+#~ msgstr "%s: pg_control dosyası yaratılamadı: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dosyası okunamadı: %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: \"%s\" dosyası okunmak için açılamadı: %s\n"
+
+#~ msgid "%s: could not change directory to \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizine geçilemedi: %s\n"
+
+#~ msgid "%s: could not read permissions of directory \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" dizininin erişim hakları okunamadı : %s\n"
+
+#~ msgid "%s: cannot be executed by \"root\"\n"
+#~ msgstr "%s: \"root\" tarafından çalıştırılamaz\n"
+
+#~ msgid "%s: could not open process token: error code %lu\n"
+#~ msgstr "%s: process token açma başarısız: hata kodu %lu\n"
diff --git a/src/bin/pg_resetwal/po/uk.po b/src/bin/pg_resetwal/po/uk.po
new file mode 100644
index 0000000..4c71195
--- /dev/null
+++ b/src/bin/pg_resetwal/po/uk.po
@@ -0,0 +1,629 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: postgresql\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-03-16 09:17+0000\n"
+"PO-Revision-Date: 2022-06-19 10:10\n"
+"Last-Translator: \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-Project-ID: 324573\n"
+"X-Crowdin-Language: uk\n"
+"X-Crowdin-File: /REL_14_STABLE/pg_resetwal.pot\n"
+"X-Crowdin-File-ID: 762\n"
+
+#: ../../../src/common/logging.c:259
+#, c-format
+msgid "fatal: "
+msgstr "збій: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "помилка: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "попередження: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "не вдалося завантажити бібліотеку \"%s\": код помилки %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "не вдалося створити обмежені токени на цій платформі: код помилки %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "не вдалося відкрити токен процесу: код помилки %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "не вдалося виділити SID: код помилки %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "не вдалося створити обмежений токен: код помилки %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "не вдалося запустити процес для команди \"%s\": код помилки %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "не вдалося перезапустити з обмеженим токеном: код помилки %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "не вдалося отримати код завершення підпроцесу: код помилки %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "неприпустимий аргумент для параметру %s"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Спробуйте \"%s --help\" для додаткової інформації.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "епоха ID транзакції (-e) не повинна бути -1"
+
+#: pg_resetwal.c:183
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "найстаріший ID транзакції (-u) має бути більший або рівним %u"
+
+#: pg_resetwal.c:198
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ID транзакції (-x) має бути більшим чи рівним %u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "ID транзакції (-c) повинен дорівнювати 0, бути більшим за або дорівнювати 2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) не може бути 0"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID мультитранзакції (-m) не повинен бути 0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "найстарший ID мультитранзакції (-m) не повинен бути 0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "зсув мультитранзакції (-O) не повинен бути -1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "аргумент --wal-segsize повинен бути числом"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "аргумент --wal-segsize повинен бути ступенем 2 між 1 і 1024"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "забагато аргументів у командному рядку (перший \"%s\")"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог даних не вказано"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\" не може це виконувати"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Запускати %s треба від суперкористувача PostgreSQL."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "не вдалося прочитати дозволи на каталог \"%s\": %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не вдалося змінити каталог на \"%s\": %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не вдалося відкрити файл \"%s\" для читання: %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "файл блокування \"%s\" вже існує"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Чи запущений сервер? Якщо ні, видаліть файл блокування і спробуйте знову."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid "\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr "\n"
+"Якщо ці значення виглядають допустимими, використайте -f, щоб провести перевстановлення.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid "The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr "Сервер баз даних був зупинений некоректно.\n"
+"Очищення журналу передзапису може привести до втрати даних.\n"
+"Якщо ви все одно хочете продовжити, використайте параметр -f.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Журнал передзапису скинуто\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "неочікуваний порожній файл \"%s\""
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не вдалося прочитати файл \"%s\": %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "каталог даних неправильної версії"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Файл \"%s\" містить \"%s\", який не сумісний з версією цієї програми \"%s\"."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid "If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr "Якщо Ви впевнені, що шлях каталогу даних є правильним, виконайте \n"
+" touch %s\n"
+"і спробуйте знову."
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control існує, але має недопустимий CRC; продовжуйте з обережністю"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control вказує неприпустимий розмір сегмента WAL (%d байт); продовжуйте з обережністю"
+msgstr[1] "pg_control вказує неприпустимий розмір сегмента WAL (%d байти); продовжуйте з обережністю"
+msgstr[2] "pg_control вказує неприпустимий розмір сегмента WAL (%d байтів); продовжуйте з обережністю"
+msgstr[3] "pg_control вказує неприпустимий розмір сегмента WAL (%d байтів); продовжуйте з обережністю"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control існує, але зламаний або неправильної версії; ігнорується"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid "Guessed pg_control values:\n\n"
+msgstr "Припустимі значення pg_control:\n\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid "Current pg_control values:\n\n"
+msgstr "Поточні значення pg_control:\n\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control номер версії: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версії каталогу: %u\n"
+
+#: pg_resetwal.c:761
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Системний ідентифікатор бази даних: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Останній TimeLineID контрольної точки: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Останній full_page_writes контрольної точки: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "вимк"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "увімк"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Останній NextXID контрольної точки: %u%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Останній NextOID контрольної точки: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Останній NextMultiXactId контрольної точки: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Останній NextMultiOffset контрольної точки: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Останній oldestXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Остання DB останнього oldestXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Останній oldestActiveXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Останній oldestMultiXid контрольної точки: %u \n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Остання DB останньої oldestMulti контрольної точки: %u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Останній oldestCommitTsXid контрольної точки:%u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Останній newestCommitTsXid контрольної точки: %u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Максимальне вирівнювання даних: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Розмір блоку бази даних: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоків на сегмент великого відношення: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Pозмір блоку WAL: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байтів на сегмент WAL: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальна довжина ідентифікаторів: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Максимальна кількість стовпців в індексі: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальний розмір сегменту TOAST: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Розмір сегменту великих обїєктів: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Дата/час типу сховища: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64-бітні цілі"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргументу Float8: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "за посиланням"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "за значенням"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версія контрольних сум сторінок даних: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid "\n\n"
+"Values to be changed:\n\n"
+msgstr "\n\n"
+"Значення, що потребують зміни:\n\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Перший сегмент журналу після скидання: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Епоха NextXID: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "не вдалося відкрити каталог \"%s\": %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "не вдалося прочитати каталог \"%s\": %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "не вдалося закрити каталог \"%s\": %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "не вдалося видалити файл \"%s\": %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не можливо відкрити файл \"%s\": %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не вдалося записати файл \"%s\": %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "помилка fsync: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid "%s resets the PostgreSQL write-ahead log.\n\n"
+msgstr "%s скидає журнал передзапису PostgreSQL.\n\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid "Usage:\n"
+" %s [OPTION]... DATADIR\n\n"
+msgstr "Використання:\n"
+" %s [OPTION]... КАТАЛОГ_ДАНИХ\n\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "Параметри:\n"
+
+#: pg_resetwal.c:1220
+#, c-format
+msgid " -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr " -c, --commit-timestamp-ids=XID,XID\n"
+" встановити найстарішу та найновішу транзакції\n"
+" затвердити позначку часу (нуль означає залишити без змін)\n"
+
+#: pg_resetwal.c:1223
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR каталог даних\n"
+
+#: pg_resetwal.c:1224
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH встановити наступну епоху ID транзакцій\n"
+
+#: pg_resetwal.c:1225
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force примусово виконати оновлення\n"
+
+#: pg_resetwal.c:1226
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE задати мінімальне початкове розташування для нового WAL\n"
+
+#: pg_resetwal.c:1227
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID задати ID наступної і найстарішої мультитранзакції\n"
+
+#: pg_resetwal.c:1228
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run без оновлень, просто показати, що буде зроблено\n"
+
+#: pg_resetwal.c:1229
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID задати наступний OID\n"
+
+#: pg_resetwal.c:1230
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET задати зсув наступної мультитранзакції\n"
+
+#: pg_resetwal.c:1231
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID задати ID найстарішої транзакції\n"
+
+#: pg_resetwal.c:1232
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version вивести інформацію про версію і вийти\n"
+
+#: pg_resetwal.c:1233
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID задати ID наступної транзакції\n"
+
+#: pg_resetwal.c:1234
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE розмір сегментів WAL, у мегабайтах\n"
+
+#: pg_resetwal.c:1235
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показати цю довідку і вийти\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid "\n"
+"Report bugs to <%s>.\n"
+msgstr "\n"
+"Повідомляти про помилки на <%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашня сторінка %s: <%s>\n"
+
diff --git a/src/bin/pg_resetwal/po/zh_CN.po b/src/bin/pg_resetwal/po/zh_CN.po
new file mode 100644
index 0000000..5a401d1
--- /dev/null
+++ b/src/bin/pg_resetwal/po/zh_CN.po
@@ -0,0 +1,638 @@
+# LANGUAGE message translation file for pg_resetwal
+# Copyright (C) 2019 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_resetwal (PostgreSQL) package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-14 05:47+0000\n"
+"PO-Revision-Date: 2021-08-15 17:30+0800\n"
+"Last-Translator: Jie Zhang <zhangjie2@fujitsu.com>\n"
+"Language-Team: Chinese (Simplified) <zhangjie2@fujitsu.com>\n"
+"Language: zh_CN\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:259
+#, c-format
+msgid "fatal: "
+msgstr "致命的: "
+
+#: ../../../src/common/logging.c:266
+#, c-format
+msgid "error: "
+msgstr "错误: "
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "warning: "
+msgstr "警告: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "无法加载库 \"%s\": 错误码 %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "无法为该平台创建受限制的令牌:错误码 %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "无法打开进程令牌 (token): 错误码 %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "无法分配SID: 错误码 %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "无法创建受限令牌: 错误码为 %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "无法为命令 \"%s\"创建进程: 错误码 %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "无法使用受限令牌再次执行: 错误码 %lu"
+
+#: ../../common/restricted_token.c:194
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "无法从子进程得到退出码: 错误码 %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:162 pg_resetwal.c:177 pg_resetwal.c:192 pg_resetwal.c:207
+#: pg_resetwal.c:214 pg_resetwal.c:238 pg_resetwal.c:253 pg_resetwal.c:261
+#: pg_resetwal.c:286 pg_resetwal.c:300
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "选项%s的参数无效"
+
+#: pg_resetwal.c:163 pg_resetwal.c:178 pg_resetwal.c:193 pg_resetwal.c:208
+#: pg_resetwal.c:215 pg_resetwal.c:239 pg_resetwal.c:254 pg_resetwal.c:262
+#: pg_resetwal.c:287 pg_resetwal.c:301 pg_resetwal.c:327 pg_resetwal.c:340
+#: pg_resetwal.c:348
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "请用 \"%s --help\" 获取更多的信息.\n"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "事务ID epoch(-e)不能为-1"
+
+#: pg_resetwal.c:183
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "最旧的事务ID(-c)必须大于或等于%u"
+
+#: pg_resetwal.c:198
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "事务ID(-x)必须大于或等于%u"
+
+#: pg_resetwal.c:222 pg_resetwal.c:229
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "事务ID(-c)必须为0或大于或等于2"
+
+#: pg_resetwal.c:244
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o)不能为0"
+
+#: pg_resetwal.c:267
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "多事务ID(-m)不能为0"
+
+#: pg_resetwal.c:277
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "最早的多事务ID(-m)不能为0"
+
+#: pg_resetwal.c:292
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "多事务偏移量(-O)不能为-1"
+
+#: pg_resetwal.c:316
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsize的参数必须是一个数字"
+
+#: pg_resetwal.c:321
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "--wal-segsize的参数必须是2的幂次方(在1和1024之间)"
+
+#: pg_resetwal.c:338
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "命令行参数太多 (第一个是 \"%s\")"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "no data directory specified"
+msgstr "没有指定数据目录"
+
+#: pg_resetwal.c:361
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "不能由\"root\"执行"
+
+#: pg_resetwal.c:362
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "您现在作为PostgreSQL超级用户运行%s."
+
+#: pg_resetwal.c:373
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "没有读取目录 \"%s\" 的权限: %m"
+
+#: pg_resetwal.c:382
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "无法跳转到目录 \"%s\" 中: %m"
+
+#: pg_resetwal.c:398 pg_resetwal.c:553 pg_resetwal.c:604
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "为了读取, 无法打开文件 \"%s\": %m"
+
+#: pg_resetwal.c:405
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "锁文件 \"%s\" 存在"
+
+#: pg_resetwal.c:406
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "服务器是否正在运行?如果没有,请删除锁文件并重试."
+
+#: pg_resetwal.c:501
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"如果这些值似乎可以接受,则使用-f强制重置.\n"
+
+#: pg_resetwal.c:513
+#, c-format
+msgid ""
+"The database server was not shut down cleanly.\n"
+"Resetting the write-ahead log might cause data to be lost.\n"
+"If you want to proceed anyway, use -f to force reset.\n"
+msgstr ""
+"数据库服务器未完全关闭 .\n"
+"重置预写日志可能会导致数据丢失.\n"
+"如果仍要继续,请使用-f强制重置.\n"
+
+#: pg_resetwal.c:527
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "重置预写日志\n"
+
+#: pg_resetwal.c:562
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "意外的空文件\"%s\""
+
+#: pg_resetwal.c:564 pg_resetwal.c:620
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "无法读取文件 \"%s\": %m"
+
+#: pg_resetwal.c:573
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "数据目录版本错误"
+
+#: pg_resetwal.c:574
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "文件\"%s\"包含\"%s\",与此程序的版本\"%s\"不兼容."
+
+#: pg_resetwal.c:607
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"如果确定数据目录路径正确,请执行\n"
+" touch %s\n"
+"请再试一次"
+
+#: pg_resetwal.c:638
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control存在,但具有无效的CRC;请小心继续"
+
+#: pg_resetwal.c:647
+#, c-format
+msgid "pg_control specifies invalid WAL segment size (%d byte); proceed with caution"
+msgid_plural "pg_control specifies invalid WAL segment size (%d bytes); proceed with caution"
+msgstr[0] "pg_control指定的WAL段大小(%d 字节)无效; 请小心继续"
+msgstr[1] "pg_control指定的WAL段大小(%d 字节)无效; 请小心继续"
+
+#: pg_resetwal.c:658
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control存在,但已损坏或版本错误;忽略它"
+
+#: pg_resetwal.c:753
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"猜测的pg_control的值:\n"
+"\n"
+
+#: pg_resetwal.c:755
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"当前的pg_control的值:\n"
+"\n"
+
+#: pg_resetwal.c:757
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 版本: %u\n"
+
+#: pg_resetwal.c:759
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Catalog 版本: %u\n"
+
+#: pg_resetwal.c:761
+msgid "Database system identifier: %llu\n"
+msgstr "数据库系统标识符: %llu\n"
+
+#: pg_resetwal.c:763
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最新检查点的 TimeLineID: %u\n"
+
+#: pg_resetwal.c:765
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最新检查点的full_page_writes: %s\n"
+
+#: pg_resetwal.c:766
+msgid "off"
+msgstr "关闭"
+
+#: pg_resetwal.c:766
+msgid "on"
+msgstr "开启"
+
+#: pg_resetwal.c:767
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最新检查点的NextXID: %u:%u\n"
+
+#: pg_resetwal.c:770
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最新检查点的 NextOID: %u\n"
+
+#: pg_resetwal.c:772
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最新检查点的NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:774
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最新检查点的NextMultiOffsetD: %u\n"
+
+#: pg_resetwal.c:776
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最新检查点的oldestXID: %u\n"
+
+#: pg_resetwal.c:778
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最新检查点的oldestXID所在的数据库:%u\n"
+
+#: pg_resetwal.c:780
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最新检查点的oldestActiveXID: %u\n"
+
+#: pg_resetwal.c:782
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最新检查点的oldestMultiXid: %u\n"
+
+#: pg_resetwal.c:784
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最新检查点的oldestMulti所在的数据库:%u\n"
+
+#: pg_resetwal.c:786
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最新检查点的oldestCommitTsXid:%u\n"
+
+#: pg_resetwal.c:788
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最新检查点的newestCommitTsXid:%u\n"
+
+#: pg_resetwal.c:790
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "最大数据校准: %u\n"
+
+#: pg_resetwal.c:793
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "数据库块大小: %u\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大关系的每段块数: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL的块大小: %u\n"
+
+#: pg_resetwal.c:799 pg_resetwal.c:885
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "每一个 WAL 段字节数: %u\n"
+
+#: pg_resetwal.c:801
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "标识符的最大长度: %u\n"
+
+#: pg_resetwal.c:803
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "在索引中可允许使用最大的列数: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST区块的最大长度: %u\n"
+
+#: pg_resetwal.c:807
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "大对象区块的大小: %u\n"
+
+#: pg_resetwal.c:810
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日期/时间 类型存储: %s\n"
+
+#: pg_resetwal.c:811
+msgid "64-bit integers"
+msgstr "64位整数"
+
+#: pg_resetwal.c:812
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "正在传递Flloat8类型的参数: %s\n"
+
+#: pg_resetwal.c:813
+msgid "by reference"
+msgstr "由引用"
+
+#: pg_resetwal.c:813
+msgid "by value"
+msgstr "由值"
+
+#: pg_resetwal.c:814
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "数据页校验和版本: %u\n"
+
+#: pg_resetwal.c:828
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"要更改的值:\n"
+
+#: pg_resetwal.c:832
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "First log segment after reset: %s\n"
+
+#: pg_resetwal.c:836
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:840
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:846
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:852
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:858
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:860
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:862
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:868
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:874
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:879
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:965 pg_resetwal.c:1033 pg_resetwal.c:1080
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "无法打开目录 \"%s\": %m"
+
+#: pg_resetwal.c:1000 pg_resetwal.c:1053 pg_resetwal.c:1103
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "无法读取目录 \"%s\": %m"
+
+#: pg_resetwal.c:1006 pg_resetwal.c:1059 pg_resetwal.c:1109
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "无法关闭目录 \"%s\": %m"
+
+#: pg_resetwal.c:1045 pg_resetwal.c:1095
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "无法删除文件 \"%s\": %m"
+
+#: pg_resetwal.c:1176
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "无法打开文件 \"%s\": %m"
+
+#: pg_resetwal.c:1186 pg_resetwal.c:1199
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "无法写入文件 \"%s\": %m"
+
+#: pg_resetwal.c:1206
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync 错误: %m"
+
+#: pg_resetwal.c:1217
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr "%s 重置一个PostgreSQL数据库集簇的预写式日志.\n"
+
+#: pg_resetwal.c:1218
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"用法:\n"
+" %s [选项]... 数据目录\n"
+
+#: pg_resetwal.c:1219
+#, c-format
+msgid "Options:\n"
+msgstr "选项:\n"
+
+#: pg_resetwal.c:1220
+msgid ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" set oldest and newest transactions bearing\n"
+" commit timestamp (zero means no change)\n"
+msgstr ""
+" -c, --commit-timestamp-ids=XID,XID\n"
+" 设置提交时间可以检索到的最老的和最新的事务ID\n"
+" (0意味着没有变化)\n"
+
+#: pg_resetwal.c:1223
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 数据目录\n"
+
+#: pg_resetwal.c:1224
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH 设置下一个事务ID的epoch\n"
+
+#: pg_resetwal.c:1225
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force 强制更新完成\n"
+
+#: pg_resetwal.c:1226
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE 设置新的WAL最小起始位置\n"
+
+#: pg_resetwal.c:1227
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID 设置下一个和最旧的多事务ID\n"
+
+#: pg_resetwal.c:1228
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run 不更新,只显示将要执行的操作\n"
+
+#: pg_resetwal.c:1229
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID 设置下一个OID\n"
+
+#: pg_resetwal.c:1230
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET 设置下一个多事务偏移量\n"
+
+#: pg_resetwal.c:1231
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID 设置最旧的事务ID\n"
+
+#: pg_resetwal.c:1232
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 输出版本信息, 然后退出\n"
+
+#: pg_resetwal.c:1233
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID 设置下一个事务ID\n"
+
+#: pg_resetwal.c:1234
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WAL段的大小(兆字节)\n"
+
+#: pg_resetwal.c:1235
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 显示此帮助信息, 然后退出\n"
+
+#: pg_resetwal.c:1236
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"臭虫报告至<%s>.\n"
+
+#: pg_resetwal.c:1237
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 主页: <%s>\n"
+
diff --git a/src/bin/pg_resetwal/t/001_basic.pl b/src/bin/pg_resetwal/t/001_basic.pl
new file mode 100644
index 0000000..9c08ade
--- /dev/null
+++ b/src/bin/pg_resetwal/t/001_basic.pl
@@ -0,0 +1,30 @@
+
+# Copyright (c) 2021, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+
+use PostgresNode;
+use TestLib;
+use Test::More tests => 12;
+
+program_help_ok('pg_resetwal');
+program_version_ok('pg_resetwal');
+program_options_handling_ok('pg_resetwal');
+
+my $node = get_new_node('main');
+$node->init;
+
+command_like([ 'pg_resetwal', '-n', $node->data_dir ],
+ qr/checkpoint/, 'pg_resetwal -n produces output');
+
+
+# Permissions on PGDATA should be default
+SKIP:
+{
+ skip "unix-style permissions not supported on Windows", 1
+ if ($windows_os);
+
+ ok(check_mode_recursive($node->data_dir, 0700, 0600),
+ 'check PGDATA permissions');
+}
diff --git a/src/bin/pg_resetwal/t/002_corrupted.pl b/src/bin/pg_resetwal/t/002_corrupted.pl
new file mode 100644
index 0000000..954790c
--- /dev/null
+++ b/src/bin/pg_resetwal/t/002_corrupted.pl
@@ -0,0 +1,56 @@
+
+# Copyright (c) 2021, PostgreSQL Global Development Group
+
+# Tests for handling a corrupted pg_control
+
+use strict;
+use warnings;
+
+use PostgresNode;
+use TestLib;
+use Test::More tests => 6;
+
+my $node = get_new_node('main');
+$node->init;
+
+my $pg_control = $node->data_dir . '/global/pg_control';
+my $size = (stat($pg_control))[7];
+
+# Read out the head of the file to get PG_CONTROL_VERSION in
+# particular.
+my $data;
+open my $fh, '<', $pg_control or BAIL_OUT($!);
+binmode $fh;
+read $fh, $data, 16;
+close $fh;
+
+# Fill pg_control with zeros
+open $fh, '>', $pg_control or BAIL_OUT($!);
+binmode $fh;
+print $fh pack("x[$size]");
+close $fh;
+
+command_checks_all(
+ [ 'pg_resetwal', '-n', $node->data_dir ],
+ 0,
+ [qr/pg_control version number/],
+ [
+ qr/pg_resetwal: warning: pg_control exists but is broken or wrong version; ignoring it/
+ ],
+ 'processes corrupted pg_control all zeroes');
+
+# Put in the previously saved header data. This uses a different code
+# path internally, allowing us to process a zero WAL segment size.
+open $fh, '>', $pg_control or BAIL_OUT($!);
+binmode $fh;
+print $fh $data, pack("x[" . ($size - 16) . "]");
+close $fh;
+
+command_checks_all(
+ [ 'pg_resetwal', '-n', $node->data_dir ],
+ 0,
+ [qr/pg_control version number/],
+ [
+ qr/\Qpg_resetwal: warning: pg_control specifies invalid WAL segment size (0 bytes); proceed with caution\E/
+ ],
+ 'processes zero WAL segment size');