summaryrefslogtreecommitdiffstats
path: root/src/bin/pg_resetwal
diff options
context:
space:
mode:
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.c1155
-rw-r--r--src/bin/pg_resetwal/po/cs.po721
-rw-r--r--src/bin/pg_resetwal/po/de.po667
-rw-r--r--src/bin/pg_resetwal/po/el.po679
-rw-r--r--src/bin/pg_resetwal/po/es.po681
-rw-r--r--src/bin/pg_resetwal/po/fr.po839
-rw-r--r--src/bin/pg_resetwal/po/it.po666
-rw-r--r--src/bin/pg_resetwal/po/ja.po775
-rw-r--r--src/bin/pg_resetwal/po/ka.po697
-rw-r--r--src/bin/pg_resetwal/po/ko.po680
-rw-r--r--src/bin/pg_resetwal/po/pt_BR.po667
-rw-r--r--src/bin/pg_resetwal/po/ru.po788
-rw-r--r--src/bin/pg_resetwal/po/sv.po670
-rw-r--r--src/bin/pg_resetwal/po/uk.po634
-rw-r--r--src/bin/pg_resetwal/po/zh_CN.po638
-rw-r--r--src/bin/pg_resetwal/t/001_basic.pl32
-rw-r--r--src/bin/pg_resetwal/t/002_corrupted.pl58
20 files changed, 11099 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..222444f
--- /dev/null
+++ b/src/bin/pg_resetwal/Makefile
@@ -0,0 +1,44 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/bin/pg_resetwal
+#
+# Copyright (c) 1998-2022, 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..0dd4a25
--- /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 it ja ka ko pt_BR ru sv 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..d4772a2
--- /dev/null
+++ b/src/bin/pg_resetwal/pg_resetwal.c
@@ -0,0 +1,1155 @@
+/*-------------------------------------------------------------------------
+ *
+ * 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-2022, 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':
+ errno = 0;
+ set_xid_epoch = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ {
+ /*------
+ translator: the second %s is a command line argument (-e, etc) */
+ pg_log_error("invalid argument for option %s", "-e");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (set_xid_epoch == -1)
+ pg_fatal("transaction ID epoch (-e) must not be -1");
+ break;
+
+ case 'u':
+ errno = 0;
+ set_oldest_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-u");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (!TransactionIdIsNormal(set_oldest_xid))
+ pg_fatal("oldest transaction ID (-u) must be greater than or equal to %u", FirstNormalTransactionId);
+ break;
+
+ case 'x':
+ errno = 0;
+ set_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-x");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (!TransactionIdIsNormal(set_xid))
+ pg_fatal("transaction ID (-x) must be greater than or equal to %u", FirstNormalTransactionId);
+ break;
+
+ case 'c':
+ errno = 0;
+ set_oldest_commit_ts_xid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != ',' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-c");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ set_newest_commit_ts_xid = strtoul(endptr + 1, &endptr2, 0);
+ if (endptr2 == endptr + 1 || *endptr2 != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-c");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+
+ if (set_oldest_commit_ts_xid < 2 &&
+ set_oldest_commit_ts_xid != 0)
+ pg_fatal("transaction ID (-c) must be either 0 or greater than or equal to 2");
+
+ if (set_newest_commit_ts_xid < 2 &&
+ set_newest_commit_ts_xid != 0)
+ pg_fatal("transaction ID (-c) must be either 0 or greater than or equal to 2");
+ break;
+
+ case 'o':
+ errno = 0;
+ set_oid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-o");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (set_oid == 0)
+ pg_fatal("OID (-o) must not be 0");
+ break;
+
+ case 'm':
+ errno = 0;
+ set_mxid = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != ',' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-m");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+
+ set_oldestmxid = strtoul(endptr + 1, &endptr2, 0);
+ if (endptr2 == endptr + 1 || *endptr2 != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-m");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (set_mxid == 0)
+ pg_fatal("multitransaction ID (-m) must not be 0");
+
+ /*
+ * 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_fatal("oldest multitransaction ID (-m) must not be 0");
+ break;
+
+ case 'O':
+ errno = 0;
+ set_mxoff = strtoul(optarg, &endptr, 0);
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ {
+ pg_log_error("invalid argument for option %s", "-O");
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ if (set_mxoff == -1)
+ pg_fatal("multitransaction offset (-O) must not be -1");
+ break;
+
+ case 'l':
+ if (strspn(optarg, "01234567890ABCDEFabcdef") != XLOG_FNAME_LEN)
+ {
+ pg_log_error("invalid argument for option %s", "-l");
+ pg_log_error_hint("Try \"%s --help\" for more information.", 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:
+ errno = 0;
+ set_wal_segsize = strtol(optarg, &endptr, 10) * 1024 * 1024;
+ if (endptr == optarg || *endptr != '\0' || errno != 0)
+ pg_fatal("argument of --wal-segsize must be a number");
+ if (!IsValidWalSegSize(set_wal_segsize))
+ pg_fatal("argument of --wal-segsize must be a power of 2 between 1 and 1024");
+ break;
+
+ default:
+ /* getopt_long already emitted a complaint */
+ pg_log_error_hint("Try \"%s --help\" for more information.", 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]);
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+
+ if (DataDir == NULL)
+ {
+ pg_log_error("no data directory specified");
+ pg_log_error_hint("Try \"%s --help\" for more information.", 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_error_hint("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_fatal("could not read permissions of directory \"%s\": %m",
+ DataDir);
+
+ umask(pg_mode_mask);
+
+ if (chdir(DataDir) < 0)
+ pg_fatal("could not change directory to \"%s\": %m",
+ DataDir);
+
+ /* 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_fatal("could not open file \"%s\" for reading: %m",
+ "postmaster.pid");
+ }
+ else
+ {
+ pg_log_error("lock file \"%s\" exists", "postmaster.pid");
+ pg_log_error_hint("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_fatal("could not open file \"%s\" for reading: %m",
+ ver_file);
+
+ /* version number has to be the first line read */
+ if (!fgets(rawline, sizeof(rawline), ver_fd))
+ {
+ if (!ferror(ver_fd))
+ pg_fatal("unexpected empty file \"%s\"", ver_file);
+ else
+ pg_fatal("could not read file \"%s\": %m", ver_file);
+ }
+
+ /* 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_error_detail("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_error_hint("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_fatal("could not read file \"%s\": %m", XLOG_CONTROL_FILE);
+ 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 = FirstGenbkiObjectId;
+ 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.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_fatal("could not open directory \"%s\": %m", XLOGDIR);
+
+ 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_fatal("could not read directory \"%s\": %m", XLOGDIR);
+
+ if (closedir(xldir))
+ pg_fatal("could not close directory \"%s\": %m", XLOGDIR);
+
+ /*
+ * 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_fatal("could not open directory \"%s\": %m", XLOGDIR);
+
+ 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_fatal("could not delete file \"%s\": %m", path);
+ }
+ }
+
+ if (errno)
+ pg_fatal("could not read directory \"%s\": %m", XLOGDIR);
+
+ if (closedir(xldir))
+ pg_fatal("could not close directory \"%s\": %m", XLOGDIR);
+}
+
+
+/*
+ * 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_fatal("could not open directory \"%s\": %m", ARCHSTATDIR);
+
+ 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_fatal("could not delete file \"%s\": %m", path);
+ }
+ }
+
+ if (errno)
+ pg_fatal("could not read directory \"%s\": %m", ARCHSTATDIR);
+
+ if (closedir(xldir))
+ pg_fatal("could not close directory \"%s\": %m", ARCHSTATDIR);
+}
+
+
+/*
+ * 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_fatal("could not open file \"%s\": %m", path);
+
+ 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_fatal("could not write file \"%s\": %m", path);
+ }
+
+ /* 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_fatal("could not write file \"%s\": %m", path);
+ }
+ }
+
+ if (fsync(fd) != 0)
+ pg_fatal("fsync error: %m");
+
+ 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..6a7cf3a
--- /dev/null
+++ b/src/bin/pg_resetwal/po/de.po
@@ -0,0 +1,667 @@
+# German message translation file for pg_resetwal
+# Peter Eisentraut <peter@eisentraut.org>, 2002 - 2022.
+#
+# Use these quotes: »%s«
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-05-08 07:49+0000\n"
+"PO-Revision-Date: 2022-05-08 14:16+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:277
+#, c-format
+msgid "error: "
+msgstr "Fehler: "
+
+#: ../../../src/common/logging.c:284
+#, c-format
+msgid "warning: "
+msgstr "Warnung: "
+
+#: ../../../src/common/logging.c:295
+#, c-format
+msgid "detail: "
+msgstr "Detail: "
+
+#: ../../../src/common/logging.c:302
+#, c-format
+msgid "hint: "
+msgstr "Tipp: "
+
+#: ../../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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "ungültiges Argument für Option %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Versuchen Sie »%s --help« für weitere Informationen."
+
+#: 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:181
+#, 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:194
+#, 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:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) darf nicht 0 sein"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "Multitransaktions-ID (-m) darf nicht 0 sein"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "älteste Multitransaktions-ID (-m) darf nicht 0 sein"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "Multitransaktions-Offset (-O) darf nicht -1 sein"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "Argument von --wal-segsize muss eine Zahl sein"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "zu viele Kommandozeilenargumente (das erste ist »%s«)"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "kein Datenverzeichnis angegeben"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "kann nicht von »root« ausgeführt werden"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Sie müssen %s als PostgreSQL-Superuser ausführen."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "konnte Zugriffsrechte von Verzeichnis »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "Sperrdatei »%s« existiert"
+
+#: pg_resetwal.c:372
+#, 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:467
+#, 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:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Write-Ahead-Log wurde zurückgesetzt\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "unerwartete leere Datei »%s«"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "Datenverzeichnis hat falsche Version"
+
+#: pg_resetwal.c:536
+#, 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:569
+#, 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:597
+#, 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:606
+#, 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:617
+#, 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:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Geschätzte pg_control-Werte:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Aktuelle pg_control-Werte:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control-Versionsnummer: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversionsnummer: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Datenbanksystemidentifikation: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes des letzten Checkpoints: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "aus"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "an"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID des letzten Checkpoints: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB der oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB des oldestMulti des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximale Datenausrichtung (Alignment): %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Datenbankblockgröße: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blöcke pro Segment: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL-Blockgröße: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes pro WAL-Segment: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximale Bezeichnerlänge: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximale Spalten in einem Index: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximale Größe eines Stücks TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Größe eines Large-Object-Chunks: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Speicherung von Datum/Zeit-Typen: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-Bit-Ganzzahlen"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Übergabe von Float8-Argumenten: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "Referenz"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "Wert"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Datenseitenprüfsummenversion: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Zu ändernde Werte:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Erstes Logdateisegment nach Zurücksetzen: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID-Epoche: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht öffnen: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht lesen: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "konnte Verzeichnis »%s« nicht schließen: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht löschen: %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht öffnen: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht schreiben: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync-Fehler: %m"
+
+#: pg_resetwal.c:1134
+#, 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:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Aufruf:\n"
+" %s [OPTION]... DATENVERZEICHNIS\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Optionen:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]VERZ Datenbankverzeichnis\n"
+
+#: pg_resetwal.c:1141
+#, 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:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force Änderung erzwingen\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, 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:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID nächste OID setzen\n"
+
+#: pg_resetwal.c:1147
+#, 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:1148
+#, 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:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
+
+#: pg_resetwal.c:1150
+#, 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:1151
+#, 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:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Berichten Sie Fehler an <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, 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..8850a7e
--- /dev/null
+++ b/src/bin/pg_resetwal/po/el.po
@@ -0,0 +1,679 @@
+# 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) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-04-14 09:18+0000\n"
+"PO-Revision-Date: 2023-04-14 13:51+0200\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.2.2\n"
+
+#: ../../../src/common/logging.c:276
+#, c-format
+msgid "error: "
+msgstr "σφάλμα: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "προειδοποίηση: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "λεπτομέρεια: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "μη έγκυρη παράμετρος για την επιλογή %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "η εποχή αναγνωριστικού συναλλαγής (-e) δεν πρέπει να είναι -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "το παλαιότερο αναγνωριστικό συναλλαγής (-u) πρέπει να είναι μεγαλύτερο ή ίσο με %u"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "το αναγνωριστικό συναλλαγής (-x) πρέπει να είναι μεγαλύτερο ή ίσο με %u"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "το αναγνωριστικό συναλλαγής (-c) πρέπει να είναι είτε 0 είτε μεγαλύτερο ή ίσο με 2"
+
+#: pg_resetwal.c:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "το αναγνωριστικό πολλαπλής συναλλαγής (-m) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "το παλαιότερο αναγνωριστικό πολλαπλής συναλλαγής (-m) δεν πρέπει να είναι 0"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "η μετατόπιση πολλαπλής συναλλαγής (-O) δεν πρέπει να είναι -1"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "η παράμετρος --wal-segsize πρέπει να είναι αριθμός"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "πάρα πολλές παράμετροι εισόδου από την γραμμή εντολών (η πρώτη είναι η «%s»)"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "δεν ορίστηκε κατάλογος δεδομένων"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "δεν είναι δυνατή η εκτέλεση από \"root\""
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Πρέπει να εκτελέσετε %s ως υπερχρήστης PostgreSQL."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση δικαιωμάτων του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "δεν ήταν δυνατή η μετάβαση στον κατάλογο «%s»: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα αρχείου «%s» για ανάγνωση: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "το αρχείο κλειδώματος \"%s\" υπάρχει"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Εκτελείται ο διακομιστής; Εάν όχι, διαγράψτε το αρχείο κλειδώματος και προσπαθήστε ξανά."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Εάν αυτές οι τιμές φαίνονται αποδεκτές, χρησιμοποιήστε το -f για να αναγκάσετε την επαναφορά.\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Επαναφορά write-ahead log\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "μη αναμενόμενο κενό αρχείο «%s»"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση του αρχείου «%s»: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "ο κατάλογος δεδομένων είναι εσφαλμένης έκδοσης"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Το αρχείο «%s» περιέχει «%s», το οποίο δεν είναι συμβατό με την έκδοση «%s» αυτού του προγράμματος."
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control υπάρχει αλλά δεν έχει έγκυρο CRC· προχωρήστε με προσοχή"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control υπάρχει, αλλά είναι κατεστραμμένη ή λάθος έκδοση· παραβλέπεται"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Μάντεψε τιμές pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Τρέχουσες τιμές pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr ""
+"pg_control αριθμός έκδοσης: %u\n"
+"\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Αριθμός έκδοσης καταλόγου: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Αναγνωριστικό συστήματος βάσης δεδομένων: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Πιο πρόσφατο TimeLineID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Πιο πρόσφατο full_page_writes του σημείου ελέγχου: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "κλειστό"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "ανοικτό"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Πιο πρόσφατο NextXID του σημείου ελέγχου: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Πιο πρόσφατο NextOID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Πιο πρόσφατο NextMultiXactId του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Πιο πρόσφατο NextMultiOffset του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Πιο πρόσφατο oldestXID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestXID’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Πιο πρόσφατο oldestActiveXID του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Πιο πρόσφατο oldestMultiXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestMulti’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο oldestCommitTsXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο newestCommitTsXid του σημείου ελέγχου: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Μέγιστη στοίχιση δεδομένων: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Μέγεθος μπλοκ βάσης δεδομένων: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Μπλοκ ανά τμήμα μεγάλης σχέσης: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Μέγεθος μπλοκ WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes ανά τμήμα WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Μέγιστο μήκος αναγνωριστικών: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Μέγιστες στήλες σε ένα ευρετήριο: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Μέγιστο μέγεθος ενός τμήματος TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Μέγεθος τμήματος μεγάλου αντικειμένου: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Τύπος αποθήκευσης ημερομηνίας/ώρας: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "Ακέραιοι 64-bit"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Μεταβλητή Float8 τέθηκε: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "με αναφορά"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "με τιμή"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Έκδοση αθροίσματος ελέγχου σελίδας δεδομένων: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"Τιμές προς αλλαγή:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Πρώτο τμήμα καταγραφής μετά την επαναφορά: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti’s DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID’s DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "δεν ήταν δυνατό το κλείσιμο του καταλόγου «%s»: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η αφαίρεση του αρχείου \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου «%s»: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η εγγραφή αρχείου «%s»: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "σφάλμα fsync: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s επαναφέρει το write-ahead log της PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Χρήση:\n"
+" %s [ΕΠΙΛΟΓΗ]… DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Επιλογές:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR κατάλογος δεδομένων\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH όρισε την εποχή του επόμενου αναγνωριστικού συναλλαγής\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force επέβαλλε την ενημέρωση\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run καμία ενημέρωση, απλά εμφάνισε τι θα συνέβαινε\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID όρισε το επόμενο OID\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET όρισε την επόμενη μετατόπιση πολλαπλής συναλλαγής\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID όρισε το παλαιότερο ID συναλλαγής\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID όρισε το επόμενο αναγνωριστικό συναλλαγής\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE μέγεθος των τμημάτων WAL, σε megabytes\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help εμφάνισε αυτό το μήνυμα βοήθειας, στη συνέχεια έξοδος\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Υποβάλετε αναφορές σφάλματων σε <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, 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 "fatal: "
+#~ msgstr "κρίσιμο: "
+
+#~ 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..2b7e782
--- /dev/null
+++ b/src/bin/pg_resetwal/po/es.po
@@ -0,0 +1,681 @@
+# 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) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-05-07 16:48+0000\n"
+"PO-Revision-Date: 2022-10-20 09:06+0200\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:276
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "precaución: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "detalle: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+msgstr "consejo: "
+
+#: ../../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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argumento no válido para la opción %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Pruebe «%s --help» para mayor informació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:181
+#, 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:194
+#, 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:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) no debe ser cero"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "el ID de multitransacción (-m) no debe ser 0"
+
+#: pg_resetwal.c:261
+#, 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:274
+#, 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:296
+#, 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:298
+#, 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:314
+#, 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:322
+#, c-format
+msgid "no data directory specified"
+msgstr "directorio de datos no especificado"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "no puede ser ejecutado con el usuario «root»"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Debe ejecutar %s con el superusuario de PostgreSQL."
+
+#: pg_resetwal.c:347
+#, 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:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "no se pudo cambiar al directorio «%s»: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "no se pudo abrir archivo «%s» para lectura: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "el archivo candado «%s» existe"
+
+#: pg_resetwal.c:372
+#, 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:467
+#, 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:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "«Write-ahead log» restablecido\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "archivo vacío inesperado «%s»"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "no se pudo leer el archivo «%s»: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "el directorio de datos tiene la versión equivocada"
+
+#: pg_resetwal.c:536
+#, 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:569
+#, 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:597
+#, 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:606
+#, 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:617
+#, 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:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valores de pg_control asumidos:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valores actuales de pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Número de versión de pg_control: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Número de versión de catálogo: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificador de sistema: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:724
+#, 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:725
+msgid "off"
+msgstr "desactivado"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "activado"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID del checkpoint más reciente: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:737
+#, 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:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid del checkpoint más reciente: %u\n"
+
+#: pg_resetwal.c:743
+#, 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:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Máximo alineamiento de datos: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Tamaño del bloque de la base de datos: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloques por segmento de relación grande: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Tamaño del bloque de WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes por segmento WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Longitud máxima de identificadores: %u\n"
+
+#: pg_resetwal.c:762
+#, 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:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longitud máxima de un trozo TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, 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:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo de almacenamiento hora/fecha: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "enteros de 64 bits"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Paso de parámetros float8: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "por referencia"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "por valor"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versión de suma de verificación de datos: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valores a cambiar:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Primer segmento de log después de reiniciar: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "Base de datos del OldestMulti: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "Base de datos del OldestXID: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Epoch del NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "no se pudo abrir el directorio «%s»: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "no se pudo leer el directorio «%s»: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "no se pudo abrir el directorio «%s»: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "no se pudo borrar el archivo «%s»: %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "no se pudo abrir el archivo «%s»: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "no se pudo escribir el archivo «%s»: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "error de fsync: %m"
+
+#: pg_resetwal.c:1134
+#, 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:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Uso:\n"
+" %s [OPCIÓN]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Opciones:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR directorio de datos\n"
+
+#: pg_resetwal.c:1141
+#, 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:1142
+#, 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:1143
+#, 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:1144
+#, 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:1145
+#, 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:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID asigna el siguiente OID\n"
+
+#: pg_resetwal.c:1147
+#, 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:1148
+#, 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:1149
+#, 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:1150
+#, 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:1151
+#, 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:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostrar esta ayuda y salir\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Reporte errores a <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, 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..1010616
--- /dev/null
+++ b/src/bin/pg_resetwal/po/fr.po
@@ -0,0 +1,839 @@
+# LANGUAGE message translation file for pg_resetwal
+# Copyright (C) 2003-2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_resetwal (PostgreSQL) package.
+#
+# Use these quotes: « %s »
+#
+# Guillaume Lelarge <guillaume@lelarge.info>, 2003-2009.
+# Stéphane Schildknecht <stephane.schildknecht@dalibo.com>, 2009.
+# Guillaume Lelarge <guillaume@lelarge.info>, 2010-2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-04-12 05:16+0000\n"
+"PO-Revision-Date: 2022-04-12 17:29+0200\n"
+"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
+"Language-Team: French <guillaume@lelarge.info>\n"
+"Language: fr\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.1\n"
+
+#: ../../../src/common/logging.c:273
+#, c-format
+msgid "error: "
+msgstr "erreur : "
+
+#: ../../../src/common/logging.c:280
+#, c-format
+msgid "warning: "
+msgstr "attention : "
+
+#: ../../../src/common/logging.c:291
+#, c-format
+msgid "detail: "
+msgstr "détail : "
+
+#: ../../../src/common/logging.c:298
+#, c-format
+msgid "hint: "
+msgstr "astuce : "
+
+#: ../../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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argument invalide pour l'option %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Essayez « %s --help » pour plus d'informations."
+
+#: 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:181
+#, 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:194
+#, 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:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "l'OID (-o) ne doit pas être 0"
+
+#: pg_resetwal.c:254
+#, 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:261
+#, 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:274
+#, 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:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "l'argument de --wal-segsize doit être un nombre"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, 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:322
+#, c-format
+msgid "no data directory specified"
+msgstr "aucun répertoire de données indiqué"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "ne peut pas être exécuté par « root »"
+
+#: pg_resetwal.c:337
+#, 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:347
+#, 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:353
+#, 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:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, 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:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "le fichier verrou « %s » existe"
+
+#: pg_resetwal.c:372
+#, 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:467
+#, 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:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Réinitialisation des journaux de transactions\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "fichier vide inattendu « %s »"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "n'a pas pu lire le fichier « %s » : %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "le répertoire des données a une mauvaise version"
+
+#: pg_resetwal.c:536
+#, 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:569
+#, 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:597
+#, 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:606
+#, 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:617
+#, 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:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valeurs de pg_control devinées :\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valeurs actuelles de pg_control :\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Numéro de version de pg_control : %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Numéro de version du catalogue : %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identifiant du système de base de données : %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Dernier TimeLineID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:724
+#, 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:725
+msgid "off"
+msgstr "désactivé"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "activé"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Dernier NextXID du point de contrôle : %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Dernier NextOID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Dernier NextMultiXactId du point de contrôle : %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Dernier NextMultiOffset du point de contrôle : %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Dernier oldestXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:737
+#, 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:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Dernier oldestActiveXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Dernier oldestMultiXID du point de contrôle : %u\n"
+
+#: pg_resetwal.c:743
+#, 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:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Alignement maximal des données : %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Taille du bloc de la base de données : %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocs par segment des relations volumineuses : %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Taille de bloc du journal de transaction : %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Octets par segment du journal de transaction : %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Longueur maximale des identifiants : %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Nombre maximum de colonnes d'un index: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longueur maximale d'un morceau TOAST : %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Taille d'un morceau de Large Object : %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Stockage du type date/heure : %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "entiers 64-bits"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passage d'argument float8 : %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "par référence"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "par valeur"
+
+#: pg_resetwal.c:773
+#, 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:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valeurs à changer :\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Premier segment du journal après réinitialisation : %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID Epoch: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "n'a pas pu ouvrir le répertoire « %s » : %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "n'a pas pu lire le répertoire « %s » : %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "n'a pas pu fermer le répertoire « %s » : %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "n'a pas pu supprimer le fichier « %s » : %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » : %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "impossible d'écrire le fichier « %s » : %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "erreur fsync : %m"
+
+#: pg_resetwal.c:1134
+#, 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:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Usage :\n"
+" %s [OPTION]... RÉP_DONNÉES\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Options :\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, 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:1141
+#, 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:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force force la mise à jour\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, 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:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID configure le prochain OID\n"
+
+#: pg_resetwal.c:1147
+#, 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:1148
+#, 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:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version affiche la version puis quitte\n"
+
+#: pg_resetwal.c:1150
+#, 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:1151
+#, 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:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help affiche cette aide puis quitte\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapporter les bogues à <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Page d'accueil de %s : <%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 " (zero in either value means no change)\n"
+#~ msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help affiche cette aide et quitte\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, puis quitte\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help affiche cette aide et quitte\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version affiche la version, puis quitte\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version affiche la version et quitte\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 " -x XID set next transaction ID\n"
+#~ msgstr " -x XID fixe le prochain identifiant de transaction\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 "%s: argument of --wal-segsize must be a number\n"
+#~ msgstr "%s : l'argument de --wal-segsize doit être un nombre\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: cannot be executed by \"root\"\n"
+#~ msgstr "%s : ne peut pas être exécuté par « root »\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 change directory to \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu accéder au répertoire « %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 create pg_control file: %s\n"
+#~ msgstr "%s : n'a pas pu créer le fichier pg_control : %s\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 delete file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu supprimer le fichier « %s » : %s\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 open directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le répertoire « %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 open file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\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: 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 read directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %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 read from directory \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le 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: 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 write file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu écrire le fichier « %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: 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 "%s: invalid argument for option -O\n"
+#~ msgstr "%s : argument invalide pour l'option -O\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s : argument invalide pour l'option -l\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 "%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 "First log file ID after reset: %u\n"
+#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Passage d'argument float4 : %s\n"
+
+#~ msgid "Transaction log reset\n"
+#~ msgstr "Réinitialisation du journal des transactions\n"
+
+#, c-format
+#~ msgid "Try \"%s --help\" for more information.\n"
+#~ msgstr "Essayer « %s --help » pour plus d'informations.\n"
+
+#, c-format
+#~ msgid "fatal: "
+#~ msgstr "fatal : "
+
+#~ msgid "floating-point numbers"
+#~ msgstr "nombres à virgule flottante"
+
+#~ 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/it.po b/src/bin/pg_resetwal/po/it.po
new file mode 100644
index 0000000..55ed8f8
--- /dev/null
+++ b/src/bin/pg_resetwal/po/it.po
@@ -0,0 +1,666 @@
+# Italian message translation file for pg_resetwal
+# Domenico Sgarbossa <sgarbossa.domenico@gmail.com>, 2022 - 2022.
+#
+# Use these quotes: »%s«
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-09-26 08:18+0000\n"
+"PO-Revision-Date: 2022-10-02 19:06+0200\n"
+"Last-Translator: Peter Eisentraut <peter@eisentraut.org>\n"
+"Language-Team: German <pgsql-translators@postgresql.org>\n"
+"Language: it\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.1.1\n"
+
+#: ../../../src/common/logging.c:276
+#, c-format
+msgid "error: "
+msgstr "errore: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "avviso: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "dettaglio: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+msgstr "suggerimento: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "impossibile caricare la libreria \"%s\": codice di errore %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "impossibile creare token con restrizioni su questa piattaforma: codice di errore %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "impossibile aprire il token di processo: codice di errore %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "impossibile allocare i SID: codice di errore %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "impossibile creare token limitato: codice di errore %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "impossibile avviare il processo per il comando \"%s\": codice di errore %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "impossibile rieseguire con token limitato: codice di errore %lu"
+
+#: ../../common/restricted_token.c:193
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "impossibile ottenere il codice di uscita dal processo secondario: codice di errore %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argomento non valido per l'opzione %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Prova \"%s --help\" per ulteriori informazioni."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "l'ID transazione epoch (-e) non deve essere -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "l'ID transazione più vecchio (-u) deve essere maggiore o uguale a %u"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "l'ID transazione (-x) deve essere maggiore o uguale a %u"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "l'ID transazione (-c) deve essere 0 o maggiore o uguale a 2"
+
+#: pg_resetwal.c:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) non deve essere 0"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "l'ID multitransazione (-m) non deve essere 0"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "l'ID multitransazione più vecchio (-m) non deve essere 0"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "l'offset multitransazione (-O) non deve essere -1"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "l'argomento di --wal-segsize deve essere un numero"
+
+#: pg_resetwal.c:298
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "argomento di --wal-segsize deve essere una potenza di 2 tra 1 e 1024"
+
+#: pg_resetwal.c:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "troppi argomenti della riga di comando (il primo è \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "nessuna directory di dati specificata"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "non può essere eseguito da \"root\""
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Devi eseguire %s come superutente di PostgreSQL."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "impossibile leggere i permessi della directory \"%s\": %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "impossibile cambiare la directory in \"%s\": %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "impossibile aprire il file \"%s\" per la lettura: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "il file di blocco \"%s\" esiste già"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Un server è in esecuzione? In caso contrario, eliminare il file di blocco e riprovare."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Se questi valori sembrano accettabili, utilizzare -f per forzare il ripristino.\n"
+
+#: pg_resetwal.c:479
+#, 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 ""
+"Il server del database non è stato arrestato correttamente.\n"
+"La reimpostazione del registro write-ahead potrebbe causare la perdita di dati.\n"
+"Se vuoi procedere comunque, usa -f per forzare il reset.\n"
+
+#: pg_resetwal.c:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Ripristino del registro write-ahead\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "file vuoto imprevisto \"%s\""
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "impossibile leggere il file \"%s\": %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "la directory dei dati è di versione errata"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Il file \"%s\" contiene \"%s\", che non è compatibile con la versione \"%s\" di questo programma."
+
+#: pg_resetwal.c:569
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Se sei sicuro che il percorso della directory dei dati sia corretto, esegui\n"
+" tocca %s\n"
+"e riprova."
+
+#: pg_resetwal.c:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control esiste ma ha un CRC non valido; procedi con cautela"
+
+#: pg_resetwal.c:606
+#, 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 specifica la dimensione del segmento WAL non valida (%d byte); procedi con cautela"
+msgstr[1] "pg_control specifica la dimensione dei segmenti WAL non valida (%d byte); procedi con cautela"
+
+#: pg_resetwal.c:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control esiste ma è una versione non funzionante o errata; ignorandolo"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valori pg_control ipotizzati:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valori correnti di pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control numero di versione: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Numero di versione del catalogo: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificatore di sistema del database: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Full_page_writes dell'ultimo checkpoint: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "spento"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "acceso"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID dell'ultimo checkpoint: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "XID più vecchio dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB dell'XID più vecchio dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "L'ActiveXID più vecchio dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Il più vecchio MultiXid dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Il più vecchio DB dell'ultimo checkpoint: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Il più vecchio CommitTsXid dell'ultimo checkpoint:%u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Il più recenteCommitTsXid dell'ultimo checkpoint:%u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Allineamento massimo dei dati: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Dimensione blocco database: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocchi per segmento di relazione grande: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Dimensione blocco WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Byte per segmento WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Lunghezza massima degli identificatori: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Numero massimo di colonne in un indice: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Dimensione massima di un blocco TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Dimensione di un blocco di oggetti di grandi dimensioni: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo di archiviazione data/ora: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "Interi a 64 bit"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passaggio argomento float8: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "come riferimento"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "per valore"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr ""
+"Versione checksum pagina dati: %u\n"
+" \n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valori da modificare:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Primo segmento di registro dopo il ripristino: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "DB di OldestMulti: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "XID più vecchio: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "DB di OldestXID: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Epoca NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "impossibile aprire la directory \"%s\": %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "impossibile leggere la directory \"%s\": %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "impossibile chiudere la directory \"%s\": %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "impossibile eliminare il file \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "impossibile aprire il file \"%s\": %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "impossibile scrivere il file \"%s\": %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "errore fsync: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s reimposta il registro write-ahead di PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Utilizzo:\n"
+" %s [OPZIONE]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Opzioni\n"
+
+#: pg_resetwal.c:1137
+#, 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"
+" impostare il rilevamento delle transazioni più vecchie e più recenti\n"
+" timestamp di commit (zero significa nessuna modifica)\n"
+
+#: pg_resetwal.c:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR directory dei dati\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH imposta l'epoca dell'ID transazione successiva\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force forza l'aggiornamento da eseguire\n"
+
+#: pg_resetwal.c:1143
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=WALFILE imposta la posizione iniziale minima per il nuovo WAL\n"
+
+#: pg_resetwal.c:1144
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID imposta l'ID multitransazione successivo e meno recente\n"
+
+#: pg_resetwal.c:1145
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run nessun aggiornamento, mostra solo cosa sarebbe stato fatto\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID imposta l'OID successivo\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET imposta l'offset multitransazione successivo\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID imposta l'ID transazione più vecchio\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version restituisce le informazioni sulla versione, quindi esci\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID imposta l'ID transazione successiva\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE dimensione dei segmenti WAL, in megabyte \n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostra questo aiuto, quindi esci\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Segnala i bug a <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Pagina iniziale di %s: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/ja.po b/src/bin/pg_resetwal/po/ja.po
new file mode 100644
index 0000000..58a8ef5
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ja.po
@@ -0,0 +1,775 @@
+# 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 15)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-09 12:01+0900\n"
+"PO-Revision-Date: 2022-05-10 14:36+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:276
+#, c-format
+msgid "error: "
+msgstr "エラー: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "警告: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "詳細: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "オプション%sの引数が不正です"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "詳細は\"%s --help\"を実行してください。"
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "トランザクションIDの基点(-e)は-1にはできません"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "最古のトランザクションID(-u)は%uもしくはそれ以上でなければなりません"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "トランザクションID(-x)は%uもしくはそれ以上でなければなりません"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID(-o)は0にはできません"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "マルチトランザクションID(-m)は0にはできません"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "最古のマルチトランザクションID(-m)は0にはできません"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "マルチトランザクションオフセット(-O)は-1にはできません"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsizの引数は数値でなければなりません"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "コマンドライン引数が多すぎます。(先頭は\"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "データディレクトリが指定されていません"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\"では実行できません"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "PostgreSQLのスーパーユーザーで%sを実行しなければなりません"
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"の権限を読み取れませんでした: %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "ディレクトリ\"%s\"に移動できませんでした: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "ロックファイル\"%s\"が存在します"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "サーバーが稼動していませんか? そうでなければロックファイルを削除し再実行してください。"
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"この値が適切だと思われるのであれば、-fを使用して強制リセットしてください。\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "先行書き込みログがリセットされました\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "想定外の空のファイル\"%s\""
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "ファイル\"%s\"の読み取りに失敗しました: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "データディレクトリのバージョンが違います"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "ファイル\"%s\"では\"%s\"となっています、これはこのプログラムのバージョン\"%s\"と互換性がありません"
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_controlがありましたが、CRCが不正でした; 注意して進めてください"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_controlがありましたが、破損あるいは間違ったバージョンです; 無視します"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"pg_controlの推測値:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"現在のpg_controlの値:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_controlバージョン番号: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "カタログバージョン番号: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "データベースシステム識別子: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最終チェックポイントの時系列ID: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最終チェックポイントのfull_page_writes: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "オフ"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "オン"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最終チェックポイントのNextXID: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最終チェックポイントのNextOID: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最終チェックポイントのNextMultiXactId: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最終チェックポイントのNextMultiOffset: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最終チェックポイントのoldestXID: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最終チェックポイントのoldestXIDのDB: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最終チェックポイントのoldestActiveXID: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最終チェックポイントのoldestMultiXid: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最終チェックポイントのoldestMultiのDB: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのoldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのnewestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "最大データアラインメント: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "データベースのブロックサイズ: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大きなリレーションのセグメント毎のブロック数:%u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WALのブロックサイズ: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WALセグメント当たりのバイト数: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "識別子の最大長: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "インデックス内の最大列数: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOASTチャンクの最大サイズ: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "ラージオブジェクトチャンクのサイズ: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日付/時刻型の格納方式: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64ビット整数"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8引数の渡し方: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "参照渡し"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "値渡し"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "データベージチェックサムのバージョン: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"変更される値:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "リセット後最初のログセグメント: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMultiのDB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXIDのDB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID基点: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "ディレクトリ\"%s\"をクローズできませんでした: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "ファイル\"%s\"を削除できませんでした: %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "ファイル\"%s\"をオープンできませんでした: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "ファイル\"%s\"を書き出せませんでした: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsyncエラー: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%sはPostgreSQLの先行書き込みログをリセットします。\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"使用方法:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "オプション:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR データディレクトリ\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH 次のトランザクションIDの基点を設定\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force 強制的に更新を実施\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run 更新をせず、単に何が行なわれるかを表示\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID 次のOIDを設定\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET 次のマルチトランザクションオフセットを設定\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID 最古のトランザクションIDを設定\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version バージョン情報を表示して終了\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID 次のトランザクションIDを設定\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WALセグメントのサイズ、単位はメガバイト\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help このヘルプを表示して終了\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"バグは<%s>に報告してください。\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ホームページ: <%s>\n"
+
+#~ msgid "fatal: "
+#~ msgstr "致命的エラー: "
+
+#~ msgid "Try \"%s --help\" for more information.\n"
+#~ msgstr "詳細は\"%s --help\"を実行してください。\n"
+
+#~ msgid "transaction ID (-x) must not be 0"
+#~ msgstr "トランザクションID(-x)は0にはできません"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version バージョン情報を表示して終了\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help このヘルプを表示して終了\n"
+
+#~ msgid "%s: cannot be executed by \"root\"\n"
+#~ msgstr "%s: \"root\"では実行できません\n"
+
+#~ msgid "%s: could not change directory to \"%s\": %s\n"
+#~ msgstr "%s: ディレクトリ\"%s\"に移動できませんでした: %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: 読み取り用のファイル\"%s\"をオープンできませんでした: %s\n"
+
+#~ msgid "Transaction log reset\n"
+#~ msgstr "トランザクションログをリセットします。\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: ファイル\"%s\"を読み込めませんでした: %s\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "浮動小数点数"
+
+#~ msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n"
+#~ msgstr "%s: 内部エラー -- sizeof(ControlFileData)が大きすぎます ... PG_CONTROL_SIZEを修正してください\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 "%s: could not open directory \"%s\": %s\n"
+#~ msgstr "%s: ディレクトリ\"%s\"をオープンできませんでした: %s\n"
+
+#~ msgid "%s: could not read directory \"%s\": %s\n"
+#~ msgstr "%s: ディレクトリ\"%s\"を読み取ることができませんでした。: %s\n"
+
+#~ msgid "%s: could not close directory \"%s\": %s\n"
+#~ msgstr "%s: ディレクトリ \"%s\" をクローズできませんでした: %s\n"
+
+#~ msgid "%s: could not delete file \"%s\": %s\n"
+#~ msgstr "%s: ファイル\"%s\"を削除できませんでした: %s\n"
+
+#~ msgid "%s: could not open file \"%s\": %s\n"
+#~ msgstr "%s: ファイル\"%s\"をオープンできませんでした: %s\n"
+
+#~ msgid "%s: could not write file \"%s\": %s\n"
+#~ msgstr "%s: ファイル\"%s\"を書き込めませんでした: %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 " [-D] DATADIR data directory\n"
+#~ msgstr " [-D] DATADIR データベースディレクトリ\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version バージョン情報を出力、終了します\n"
+
+#~ msgid " -x XID set next transaction ID\n"
+#~ msgstr " -x XID 次のトランザクションIDを設定します\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help このヘルプを表示し、終了します\n"
+
+#~ msgid "First log file ID after reset: %u\n"
+#~ msgstr "リセット後、現在のログファイルID: %u\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help ヘルプを表示し、終了します\n"
+
+#~ msgid " --version output version information, then exit\n"
+#~ msgstr " --version バージョン情報を表示し、終了します\n"
+
+#~ msgid "%s: could not read from directory \"%s\": %s\n"
+#~ msgstr "%s: ディレクトリ\"%s\"から読み込めませんでした: %s\n"
+
+#~ msgid "%s: invalid argument for option -l\n"
+#~ msgstr "%s: オプション-lの引数が無効です\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 -x\n"
+#~ msgstr "%s: オプション-xの引数が無効です\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Float4引数の渡し方: %s\n"
diff --git a/src/bin/pg_resetwal/po/ka.po b/src/bin/pg_resetwal/po/ka.po
new file mode 100644
index 0000000..ae1c302
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ka.po
@@ -0,0 +1,697 @@
+# Georgian message translation file for pg_resetwal
+# Copyright (C) 2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_resetwal (PostgreSQL) package.
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-07-02 04:49+0000\n"
+"PO-Revision-Date: 2022-07-04 18:29+0200\n"
+"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
+"Language-Team: Georgian <nothing>\n"
+"Language: ka\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.1\n"
+
+#: ../../../src/common/logging.c:276
+#, c-format
+msgid "error: "
+msgstr "შეცდომა: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "გაფრთხილება: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "დეტალები: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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 "შეცდომა SSID-ების გამოყოფისას: შეცდომის კოდი %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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "არასწორი არგუმენტი პარამეტრისთვის: %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "მეტი ინფორმაციისთვის სცადეთ '%s --help'."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "ტრანზაქციის ID-ის ეპოქა (-e) -1 არ უნდა იყოს"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "ძველი ტრანზაქციის ID (-u) %u-ზე მეტი ან ტოლი უნდა იყოს"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ტრანზაქციის ID (-x) %u_ზე მეტი ან ტოლი უნდა იყოს"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) 0 არ უნდა იყოს"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "მულტიტრანზაქციის ID (-m) 0 არ უნდა იყო"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "უძველესი მულტრანზაქციის ID (-m) 0 არ უნდა იყოს"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "მულიტრანზაქციის წანაცვლება (-O) -1 არ უნდა იყოს"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segisze -ის არგუმენტი რიცხვი უნდა იყოს"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "მეტისმეტად ბევრი ბრძანების-სტრიქონის არგუმენტი (პირველია \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "მონაცემების საქაღალდე მითითებული არაა"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "root-ით ვერ გაეშვება"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "%s PostgreSQL-ის ზემომხმარებლით უნდა გაუშვათ."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "საქაღალდის წვდომების წაკითხვა შეუძლებელია \"%s\": %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "საქაღალდის %s-ზე შეცვლის შეცდომა: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "ფაილის (%s) გახსნის შეცდომა: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "ბლოკის ფაილი არსებობს: %s"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "სერვერი გაშვებულია? თუ არა, წაშალეთ ბლოკის ფაილი და თავიდან სცადეთ."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"თუ ეს მნიშვნელობები მისაღებია, ძალით დასაბრუნებლად -f გამოიყენეთ.\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "წინასწარ-ჩაწერი ჟურნალის საწყის მნიშვნელობაზე დაბრუნება\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "მოულოდნელად ფაილი ცარიელია: \"%s\""
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "ფაილის (%s) წაკითხვის შეცდომა: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "მონაცემების საქაღალდე არასწორ ვერსიას ეკუთვნის"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid ""
+"File \"%s\" contains \"%s\", which is not compatible with this program's "
+"version \"%s\"."
+msgstr ""
+"ფაილი \"%s\" შეიცავს \"%s\"-ს, რომელიც ამ პროგრამის ვერსიასთან (%s) "
+"შეუთავსებელია."
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control არსებობს, მაგრამ გააჩნია არასწორი CRC; ფრთხილად"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr ""
+"pg_control არსებობს, მაგრამ ან გაფუჭებულია, ან ძველი ვერსია; იგნორირებულია"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Pg_control გამოცნობილი მნიშვნელობები:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Pg_control მიმდინარე მნიშვნელობები:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control ვერსიის ნომერი: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "კატალოგის ვერსიის ნომერი: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "ბაზის სისტემური იდენტიფიკატორი: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილისTimeLineID: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "უახლესი უკანასკნელი საკონტროლო წერტილის full_page_writes: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "გამორთული"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "ჩართ"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextXID: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextOID: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestXID: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestXID's DB: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestActiveXID: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestMultiXid: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestCommitTsXid:%u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის newestCommitTsXid:%u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "მონაცემების სწორების მაქსიმუმი: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "ბაზის ბლოკის ზომა: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "დიდი ურთიერთობის სეგმენტები თითოეულ ბლოკში: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL ბლოკის ზომა: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "ბაიტები თითოეულ WAL სეგმენტში: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "იდენტიფიკატორების მაქსიმალური სიგრძე: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "ინდექსში სვეტების მაქსიმალური რაოდენობა: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST ნაგლეჯის მაქსიმალური ზომა: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "დიდი ობიექტის ნაგლეჯის ზომა: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "თარიღის ტიპის საცავი: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-ბიტიანი მთელ რიცხვები"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 არგუმენტის გადაცემა: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "ბმით"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "მნიშვნელობით"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "მონაცემების გვერდის საკონტროლო ჯამის ვერსია: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"შესაცვლელი მნიშვნელობები:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr ""
+"საწყის მნიშვნელობაზე დაბრუნების შემდეგ ჟურნალის პირველი სეგმენტი: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "საქაღალდის (%s) გახსნის შეცდომა: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "საქაღალდის (%s) წაკითხვის შეცდომა: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "საქაღალდის %s-ზე დახურვის შეცდომა: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "ფაილის (\"%s\") წაშლის შეცდომა: %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "ფაილის (%s) გახსნის შეცდომა: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "ფაილში (%s) ჩაწერის შეცდომა: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync error: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s PostgreSQL-ის წინასწარ-ჩაწერად ჟურნალს საწყის მნიშვნელობაზე აბრუნებს.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"გამოყენება: \n"
+" %s [პარამეტრი]... [მონაცემებისსაქაღალდე]\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "პარამეტრები:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR მონაცემების საქაღალდე\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr ""
+" -e, --epoch=XIDEPOCH შემდეგი ტრანზაქციის ID-ის ეპოქსი "
+"დაყენება\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force ნაძალადევი განახლება\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid ""
+" -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run განახლების გარეშე. უბრალოდ ნაჩვენები "
+"იქნება, რა მოხდებოდა\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID შემდეგი OID-ის დაყენება\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr ""
+" -O, --multixact-offset=წანაცვლება შემდეგი მულტიტრანზაქციის წანაცვლების "
+"დაყენება\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr ""
+" -u, --oldest-transaction-id=XID უძველესი ტრანზაქციის ID-ის დაყენება\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid ""
+" -V, --version output version information, then exit\n"
+msgstr " -V, --version ვერსიის ინფორმაციის გამოტანა და გასვლა\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr ""
+" -x, --next-transaction-id=XID შემდეგი ტრანზაქციის ID-ის დაყენება\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=ზომა WAL სეგმენტების ზომა, მეგაბაიტებში\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help ამ დახმარების ჩვენება და გასვლა\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"შეცდომების შესახებ მიწერეთ: %s\n"
+
+#: pg_resetwal.c:1154
+#, 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..2cf02f2
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ko.po
@@ -0,0 +1,680 @@
+# Korean message translation file for PostgreSQL pg_resetxlog
+# Ioseph Kim <ioseph@uri.sarang.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetwal (PostgreSQL) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-04-12 00:48+0000\n"
+"PO-Revision-Date: 2023-04-05 18:07+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:276
+#, c-format
+msgid "error: "
+msgstr "오류: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "경고: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "상세정보: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "%s 옵션의 잘못된 인자"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "자세한 사항은 \"%s --help\" 명령으로 살펴보세요."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "트랜잭션 ID epoch (-e) 값은 -1이 아니여야함"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "제일 오래된 트랜잭션 ID (-u)는 %u 보다 크거나 같아야 함"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "트랜잭션 ID (-x)는 %u 보다 크거나 같아야 함"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "멀티트랜잭션 ID (-m) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "제일 오래된 멀티트랜잭션 ID (-m) 값은 0이 아니여야함"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "멀티트랜잭션 옵셋 (-O) 값은 -1이 아니여야함"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "--wal-segsize 값은 숫자여야 합니다"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "너무 많은 명령행 인수를 지정했습니다. (처음 \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "데이터 디렉터리를 지정하지 않았음"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\" 계정으로는 실행 할 수 없음"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "PostgreSQL superuser로 %s 프로그램을 실행하십시오."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리 읽기 권한 없음: %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "\"%s\" 이름의 디렉터리로 이동할 수 없습니다: %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "\"%s\" 파일 일기 모드로 열기 실패: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "\"%s\" 잠금 파일이 있음"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr ""
+"서버가 가동중인가요? 그렇지 않다면, 이 파일을 지우고 다시 시도하십시오."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"이 설정값들이 타당하다고 판단되면, 강제로 갱신하려면, -f 옵션을 쓰세요.\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "트랜잭션 로그 재설정\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "\"%s\" 파일은 예상치 않게 비었음"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "\"%s\" 파일을 읽을 수 없음: %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "잘못된 버전의 데이터 디렉터리입니다."
+
+#: pg_resetwal.c:536
+#, c-format
+msgid ""
+"File \"%s\" contains \"%s\", which is not compatible with this program's "
+"version \"%s\"."
+msgstr "\"%s\" 파일 버전은 \"%s\", 이 프로그램 버전은 \"%s\"."
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control 파일이 있지만, CRC값이 잘못되었습니다; 경고와 함께 진행함"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control 파일이 있지만, 손상되었거나 버전을 알 수 없음; 무시함"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"추측된 pg_control 설정값들:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"현재 pg_control 설정값들:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 버전 번호: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "카탈로그 버전 번호: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "데이터베이스 시스템 식별자: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "마지막 체크포인트 TimeLineID: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "마지막 체크포인트 full_page_writes: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "off"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "on"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "마지막 체크포인트 NextXID: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "마지막 체크포인트 NextOID: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "마지막 체크포인트 NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "마지막 체크포인트 NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 XID: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 XID의 DB:%u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 ActiveXID:%u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 MultiXid:%u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "마지막 체크포인트 제일 오래된 MultiXid의 DB:%u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 제일 오래된 CommitTsXid:%u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 최신 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "최대 자료 정렬: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "데이터베이스 블록 크기: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "대형 릴레이션의 세그먼트당 블럭 갯수: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL 블록 크기: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WAL 세그먼트의 크기(byte): %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "식별자 최대 길이: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "인덱스에서 사용하는 최대 열 수: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST 청크의 최대 크기: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "대형객체 청크의 최대 크기: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "날짜/시간형 자료의 저장방식: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-비트 정수"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 인수 전달: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "참조별"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "값별"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "데이터 페이지 체크섬 버전: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"변경될 값:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "리셋 뒤 첫 로그 세그먼트: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMultiXid의 DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID의 DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "NextXID epoch: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "제일 오래된 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "최근 CommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리 열 수 없음: %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리를 읽을 수 없음: %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "\"%s\" 디렉터리를 닫을 수 없음: %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "\"%s\" 파일을 지울 수 없음: %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "\"%s\" 파일을 열 수 없음: %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "\"%s\" 파일 쓰기 실패: %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "fsync 오류: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s 프로그램은 PostgreSQL 트랜잭션 로그를 다시 설정합니다.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"사용법:\n"
+" %s [옵션]... DATADIR\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "옵션들:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 데이터 디렉터리\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH 다음 트랙잭션 ID epoch 지정\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force 강제로 갱신함\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid ""
+" -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run 갱신하지 않음, 컨트롤 값들을 보여주기만 "
+"함\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID 다음 OID 지정\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET 다음 멀티트랜잭션 옵셋 지정\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID 제일 오래된 트랜잭션 ID 지정\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid ""
+" -V, --version output version information, then exit\n"
+msgstr " -V, --version 버전 정보를 보여주고 마침\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID 다음 트랜잭션 ID 지정\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE WAL 조각 파일 크기, MB 단위\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 이 도움말을 표시하고 종료\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"문제점 보고 주소: <%s>\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 홈페이지: <%s>\n"
diff --git a/src/bin/pg_resetwal/po/pt_BR.po b/src/bin/pg_resetwal/po/pt_BR.po
new file mode 100644
index 0000000..952b83e
--- /dev/null
+++ b/src/bin/pg_resetwal/po/pt_BR.po
@@ -0,0 +1,667 @@
+# Brazilian Portuguese message translation file for pg_resetwal
+#
+# Copyright (C) 2002-2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Cesar Suga <sartre@linuxbr.com>, 2002.
+# Roberto Mello <rmello@fslc.usu.edu>, 2002.
+# Euler Taveira <euler@eulerto.com>, 2003-2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-09-27 13:15-0300\n"
+"PO-Revision-Date: 2022-09-27 20:17-0300\n"
+"Last-Translator: Euler Taveira <euler@eulerto.com>\n"
+"Language-Team: Brazilian Portuguese <pgsql-translators@postgresql.org>\n"
+"Language: pt_BR\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:276
+#, c-format
+msgid "error: "
+msgstr "erro: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "aviso: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "detalhe: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+msgstr "dica: "
+
+#: ../../common/restricted_token.c:64
+#, c-format
+msgid "could not load library \"%s\": error code %lu"
+msgstr "não pôde carregar biblioteca \"%s\": código de erro %lu"
+
+#: ../../common/restricted_token.c:73
+#, c-format
+msgid "cannot create restricted tokens on this platform: error code %lu"
+msgstr "não pode criar informações restritas nessa plataforma: código de erro %lu"
+
+#: ../../common/restricted_token.c:82
+#, c-format
+msgid "could not open process token: error code %lu"
+msgstr "não pôde abrir informação sobre processo: código de erro %lu"
+
+#: ../../common/restricted_token.c:97
+#, c-format
+msgid "could not allocate SIDs: error code %lu"
+msgstr "não pôde alocar SIDs: código de erro %lu"
+
+#: ../../common/restricted_token.c:119
+#, c-format
+msgid "could not create restricted token: error code %lu"
+msgstr "não pôde criar informação restrita: código de erro %lu"
+
+#: ../../common/restricted_token.c:140
+#, c-format
+msgid "could not start process for command \"%s\": error code %lu"
+msgstr "não pôde iniciar processo para comando \"%s\": código de erro %lu"
+
+#: ../../common/restricted_token.c:178
+#, c-format
+msgid "could not re-execute with restricted token: error code %lu"
+msgstr "não pôde executar novamente com informação restrita: código de erro %lu"
+
+#: ../../common/restricted_token.c:193
+#, c-format
+msgid "could not get exit code from subprocess: error code %lu"
+msgstr "não pôde obter código de saída de subprocesso: código de erro %lu"
+
+#. translator: the second %s is a command line argument (-e, etc)
+#: pg_resetwal.c:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "argumento inválido para opção %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Tente \"%s --help\" para obter informações adicionais."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "época do ID da transação (-e) não deve ser -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "ID de transação mais antigo (-u) deve ser maior ou igual a %u"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ID de transação (-x) deve ser maior ou igual a %u"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, c-format
+msgid "transaction ID (-c) must be either 0 or greater than or equal to 2"
+msgstr "ID de transação (-c) deve ser 0 ou maior ou igual a 2"
+
+#: pg_resetwal.c:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) não deve ser 0"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID de transação múltipla (-m) não deve ser 0"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "ID de transação múltipla mais antigo (-m) não deve ser 0"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "posição da transação múltipla (-O) não deve ser -1"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "argumento de --wal-segsize deve ser um número"
+
+#: pg_resetwal.c:298
+#, c-format
+msgid "argument of --wal-segsize must be a power of 2 between 1 and 1024"
+msgstr "argumento de --wal-segsize deve ser uma potência de 2 entre 1 e 1024"
+
+#: pg_resetwal.c:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "muitos argumentos de linha de comando (primeiro é \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "nenhum diretório de dados foi especificado"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "não pode ser executado como \"root\""
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Você deve executar %s como um super-usuário do PostgreSQL."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "não pôde ler permissões do diretório \"%s\": %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "não pôde mudar diretório para \"%s\": %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "não pôde abrir arquivo \"%s\" para leitura: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "arquivo de bloqueio \"%s\" existe"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "O servidor está executando? Se não, remova o arquivo de bloqueio e tente novamente."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Se estes valores lhe parecem aceitáveis, use -f para forçar o reinício.\n"
+
+#: pg_resetwal.c:479
+#, 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 ""
+"O servidor de banco de dados não foi desligado corretamente.\n"
+"Reiniciar o log de transação pode causar perda de dados.\n"
+"Se você quer continuar mesmo assim, use -f para forçar o reinício.\n"
+
+#: pg_resetwal.c:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Reinício do log de transação\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "arquivo vazio \"%s\" inesperado"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "não pôde ler arquivo \"%s\": %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "diretório de dados é de versão incorreta"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Arquivo \"%s\" contém \"%s\", que não é compatível com esta versão do programa \"%s\"."
+
+#: pg_resetwal.c:569
+#, c-format
+msgid ""
+"If you are sure the data directory path is correct, execute\n"
+" touch %s\n"
+"and try again."
+msgstr ""
+"Se você tem certeza que o caminho do diretório de dados está correto, execute\n"
+" touch %s\n"
+"e tente novamente."
+
+#: pg_resetwal.c:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control existe mas tem CRC inválido; prossiga com cuidado"
+
+#: pg_resetwal.c:606
+#, 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 tamanho de segmento do WAL inválido (%d byte); prossiga com cuidado"
+msgstr[1] "pg_control especifica tamanho de segmento do WAL inválido (%d bytes); prossiga com cuidado"
+
+#: pg_resetwal.c:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control existe mas não funciona ou sua versão é desconhecida; ignorando-o"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Valores supostos do pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Valores atuais do pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "número da versão do pg_control: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Número da versão do catálogo: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificador do sistema de banco de dados: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes do último ponto de controle: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "desabilitado"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "habilitado"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID do último ponto de controle: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "BD do oldestXID do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "BD do oldestMulti do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid do último ponto de controle: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Máximo alinhamento de dado: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Tamanho do bloco do banco de dados: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocos por segmento da relação grande: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Tamanho do bloco do WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes por segmento do WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Tamanho máximo de identificadores: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Máximo de colunas em um índice: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Tamanho máximo do bloco TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Tamanho máximo do bloco de objeto grande: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo de data/hora do repositório: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "inteiros de 64 bits"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passagem de argumento float8: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "por referência"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "por valor"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versão da verificação de páginas de dados: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Valores a serem alterados:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Primeiro segmento do arquivo de log após reinício: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "BD do OldestMulti: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "BD do OldestXID: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "época do NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "não pôde abrir diretório \"%s\": %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "não pôde ler diretório \"%s\": %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "não pôde fechar diretório \"%s\": %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "não pôde excluir arquivo \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "não pôde abrir arquivo \"%s\": %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "não pôde escrever no arquivo \"%s\": %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "erro ao executar fsync: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s reinicia o log de transação do PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Uso:\n"
+" %s [OPÇÃO]... DIRDADOS\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Opções:\n"
+
+#: pg_resetwal.c:1137
+#, 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"
+" define as transações mais antiga e mais nova\n"
+" timestamp de efetivação (zero significa nenhuma mudança)\n"
+
+#: pg_resetwal.c:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DIRDADOS diretório de dados\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=ÉPOCA_XID define próxima época do ID de transação\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force força atualização ser feita\n"
+
+#: pg_resetwal.c:1143
+#, c-format
+msgid " -l, --next-wal-file=WALFILE set minimum starting location for new WAL\n"
+msgstr " -l, --next-wal-file=ARQUIVOWAL define local inicial mínimo do WAL para novo log de transação\n"
+
+#: pg_resetwal.c:1144
+#, c-format
+msgid " -m, --multixact-ids=MXID,MXID set next and oldest multitransaction ID\n"
+msgstr " -m, --multixact-ids=MXID,MXID define próximo e mais velho ID de multitransação\n"
+
+#: pg_resetwal.c:1145
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run sem atualização, mostra o que seria feito\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID define próximo OID\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=POSIÇÃO define próxima posição de multitransação\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID define ID de transação mais antigo\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version mostra informação sobre a versão e termina\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID define próximo ID de transação\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=TAMANHO tamanho dos segmentos do WAL, em megabytes\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostra essa ajuda e termina\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Relate erros a <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "página web do %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..6143306
--- /dev/null
+++ b/src/bin/pg_resetwal/po/ru.po
@@ -0,0 +1,788 @@
+# 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, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_resetxlog (PostgreSQL current)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-27 14:52+0300\n"
+"PO-Revision-Date: 2022-09-05 13:36+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:276
+#, c-format
+msgid "error: "
+msgstr "ошибка: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "предупреждение: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "подробности: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "недопустимый аргумент параметра %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Для дополнительной информации попробуйте \"%s --help\"."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "эпоха ID транзакции (-e) не должна быть равна -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "ID старейшей транзакции (-u) должен быть больше или равен %u"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ID транзакции (-x) должен быть больше или равен %u"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) не должен быть равен 0"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID мультитранзакции (-m) не должен быть равен 0"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "ID старейшей мультитранзакции (-m) не должен быть равен 0"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "смещение мультитранзакции (-O) не должно быть равно -1"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "аргументом --wal-segsize должно быть число"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "слишком много аргументов командной строки (первый: \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог данных не указан"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "программу не должен запускать root"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Запускать %s нужно от имени суперпользователя PostgreSQL."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "не удалось считать права на каталог \"%s\": %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не удалось перейти в каталог \"%s\": %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не удалось открыть файл \"%s\" для чтения: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "файл блокировки \"%s\" существует"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr ""
+"Возможно, сервер запущен? Если нет, удалите этот файл и попробуйте снова."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid ""
+"\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr ""
+"\n"
+"Если эти значения приемлемы, выполните сброс принудительно, добавив ключ -"
+"f.\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Журнал предзаписи сброшен\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "файл \"%s\" оказался пустым"
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не удалось прочитать файл \"%s\": %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "каталог данных имеет неверную версию"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid ""
+"File \"%s\" contains \"%s\", which is not compatible with this program's "
+"version \"%s\"."
+msgstr ""
+"Файл \"%s\" содержит строку \"%s\", а ожидается версия программы \"%s\"."
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr ""
+"pg_control существует, но его контрольная сумма неверна; продолжайте с "
+"осторожностью"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr ""
+"pg_control испорчен или имеет неизвестную либо недопустимую версию; "
+"игнорируется..."
+
+#: pg_resetwal.c:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Предполагаемые значения pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid ""
+"Current pg_control values:\n"
+"\n"
+msgstr ""
+"Текущие значения pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Номер версии pg_control: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версии каталога: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Идентификатор системы баз данных: %llu\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Линия времени последней конт. точки: %u\n"
+
+# skip-rule: no-space-after-period
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Режим full_page_writes последней к.т: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "выкл."
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "вкл."
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID последней конт. точки: %u:%u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "БД с oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_resetwal.c:743
+#, 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:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid последней к. т.: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Макс. предел выравнивания данных: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Размер блока БД: %u\n"
+
+# skip-rule: double-space
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоков в макс. сегменте отношений: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Размер блока WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байт в сегменте WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальная длина идентификаторов: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Макс. число столбцов в индексе: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальный размер порции TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Размер порции большого объекта: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Формат хранения даты/времени: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-битные целые"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргумента float8: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "по ссылке"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "по значению"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версия контрольных сумм страниц: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Values to be changed:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Значения, которые будут изменены:\n"
+"\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Первый сегмент журнала после сброса: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "БД с oldestMultiXid: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "БД с oldestXID: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Эпоха NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "не удалось открыть каталог \"%s\": %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "не удалось прочитать каталог \"%s\": %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "не удалось закрыть каталог \"%s\": %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "ошибка удаления файла \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не удалось открыть файл \"%s\": %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не удалось записать файл \"%s\": %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "ошибка синхронизации с ФС: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid ""
+"%s resets the PostgreSQL write-ahead log.\n"
+"\n"
+msgstr ""
+"%s сбрасывает журнал предзаписи PostgreSQL.\n"
+"\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Использование:\n"
+" %s [ПАРАМЕТР]... КАТ_ДАННЫХ\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Параметры:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]КАТ_ДАННЫХ каталог данных\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr ""
+" -e, --epoch=XIDEPOCH задать эпоху для ID следующей транзакции\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr ""
+" -f, --force принудительное выполнение операции\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid ""
+" -n, --dry-run no update, just show what would be done\n"
+msgstr ""
+" -n, --dry-run показать, какие действия будут "
+"выполнены,\n"
+" но не выполнять их\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID задать следующий OID\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr ""
+" -O, --multixact-offset=СМЕЩЕНИЕ задать смещение следующей "
+"мультитранзакции\n"
+
+#: pg_resetwal.c:1148
+#, 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:1149
+#, c-format
+msgid ""
+" -V, --version output version information, then exit\n"
+msgstr " -V, --version показать версию и выйти\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID задать ID следующей транзакции\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr ""
+" --wal-segsize=РАЗМЕР размер сегментов WAL (в мегабайтах)\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показать эту справку и выйти\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Об ошибках сообщайте по адресу <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашняя страница %s: <%s>\n"
+
+#~ msgid "fatal: "
+#~ msgstr "важно: "
+
+#~ 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..0cdd2f2
--- /dev/null
+++ b/src/bin/pg_resetwal/po/sv.po
@@ -0,0 +1,670 @@
+# Swedish message translation file for resetxlog.
+# Dennis Björklund <db@zigo.dhs.org>, 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021, 2022.
+# Peter Eisentraut <peter_e@gmx.net>, 2010.
+# Mats Erik Andersson <bsd@gisladisker.se>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-04-11 19:48+0000\n"
+"PO-Revision-Date: 2022-04-11 22:01+0200\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:273
+#, c-format
+msgid "error: "
+msgstr "fel: "
+
+#: ../../../src/common/logging.c:280
+#, c-format
+msgid "warning: "
+msgstr "varning: "
+
+#: ../../../src/common/logging.c:291
+#, c-format
+msgid "detail: "
+msgstr "detalj: "
+
+#: ../../../src/common/logging.c:298
+#, c-format
+msgid "hint: "
+msgstr "tips: "
+
+#: ../../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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "ogiltigt argument för flaggan %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Försök med \"%s --help\" för mer information."
+
+#: 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:181
+#, 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:194
+#, 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:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) får inte vara 0."
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "Multitransaktions-ID (-m) får inte vara 0."
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "Äldsta multitransaktions-ID (-m) får inte vara 0."
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "Multitransaktionsoffset (-O) får inte vara -1."
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "argumentet till --wal-segsize måste vara ett tal"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "för många kommandoradsargument (första är \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "ingen datakatalog angiven"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "kan inte köras av \"root\""
+
+#: pg_resetwal.c:337
+#, 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:347
+#, 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:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "kunde inte byta katalog till \"%s\": %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, 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:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "låsfil med namn \"%s\" finns redan"
+
+#: pg_resetwal.c:372
+#, 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:467
+#, 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:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Återställning av write-ahead-log\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "oväntad tom fil \"%s\""
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "kunde inte läsa fil \"%s\": %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "datakatalogen har fel version"
+
+#: pg_resetwal.c:536
+#, 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:569
+#, 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:597
+#, 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:606
+#, 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:617
+#, 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:712
+#, c-format
+msgid ""
+"Guessed pg_control values:\n"
+"\n"
+msgstr ""
+"Gissade värden för pg_control:\n"
+"\n"
+
+#: pg_resetwal.c:714
+#, 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:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Versionsnummer för pg_control: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversion: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Databasens systemidentifierare: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Senaste kontrollpunktens full_page_writes: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "av"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "på"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID vid senaste kontrollpunkt: %u:%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:737
+#, 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:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid vid senaste kontrollpunkt: %u\n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB för oldestMulti vid senaste kontrollpkt: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximal jämkning av data (alignment): %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Databasens blockstorlek: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Block per segment i en stor relation: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Blockstorlek i transaktionsloggen: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Segmentstorlek i transaktionsloggen: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximal längd för identifierare: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximalt antal kolonner i ett index: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximal storlek för en TOAST-enhet: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Storlek för large-object-enheter: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Representation av dag och tid: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-bitars heltal"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Åtkomst till float8-argument: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "referens"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "värdeåtkomst"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Checksummaversion för datasidor: %u\n"
+
+#: pg_resetwal.c:787
+#, 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:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Första loggsegment efter återställning: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "DB för OldestMulti: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "DB för OldestXID: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Epoch för NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "kunde inte öppna katalog \"%s\": %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "kunde inte läsa katalog \"%s\": %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "kunde inte stänga katalog \"%s\": %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "kunde inte radera fil \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "kunde inte öppna fil \"%s\": %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "kunde inte skriva fil \"%s\": %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "misslyckad fsync: %m"
+
+#: pg_resetwal.c:1134
+#, 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:1135
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]... DATADIR\n"
+"\n"
+msgstr ""
+"Användning:\n"
+" %s [FLAGGA]... DATAKATALOG\n"
+"\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Flaggor:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR datakatalog\n"
+
+#: pg_resetwal.c:1141
+#, 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:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force framtvinga uppdatering\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, 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:1146
+#, 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:1147
+#, 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:1148
+#, 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:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version visa versionsinformation, avsluta sedan\n"
+
+#: pg_resetwal.c:1150
+#, 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:1151
+#, 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:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help visa denna hjälp, avsluta sedan\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportera fel till <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "hemsida för %s: <%s>\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..be45873
--- /dev/null
+++ b/src/bin/pg_resetwal/po/uk.po
@@ -0,0 +1,634 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: postgresql\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-12 10:49+0000\n"
+"PO-Revision-Date: 2022-09-13 11:52\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_15_STABLE/pg_resetwal.pot\n"
+"X-Crowdin-File-ID: 880\n"
+
+#: ../../../src/common/logging.c:276
+#, c-format
+msgid "error: "
+msgstr "помилка: "
+
+#: ../../../src/common/logging.c:283
+#, c-format
+msgid "warning: "
+msgstr "попередження: "
+
+#: ../../../src/common/logging.c:294
+#, c-format
+msgid "detail: "
+msgstr "деталі: "
+
+#: ../../../src/common/logging.c:301
+#, c-format
+msgid "hint: "
+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:193
+#, 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:163 pg_resetwal.c:176 pg_resetwal.c:189 pg_resetwal.c:202
+#: pg_resetwal.c:209 pg_resetwal.c:228 pg_resetwal.c:241 pg_resetwal.c:249
+#: pg_resetwal.c:269 pg_resetwal.c:280
+#, c-format
+msgid "invalid argument for option %s"
+msgstr "неприпустимий аргумент для параметру %s"
+
+#: pg_resetwal.c:164 pg_resetwal.c:177 pg_resetwal.c:190 pg_resetwal.c:203
+#: pg_resetwal.c:210 pg_resetwal.c:229 pg_resetwal.c:242 pg_resetwal.c:250
+#: pg_resetwal.c:270 pg_resetwal.c:281 pg_resetwal.c:303 pg_resetwal.c:316
+#: pg_resetwal.c:323
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Спробуйте \"%s --help\" для додаткової інформації."
+
+#: pg_resetwal.c:168
+#, c-format
+msgid "transaction ID epoch (-e) must not be -1"
+msgstr "епоха ID транзакції (-e) не повинна бути -1"
+
+#: pg_resetwal.c:181
+#, c-format
+msgid "oldest transaction ID (-u) must be greater than or equal to %u"
+msgstr "найстаріший ID транзакції (-u) має бути більший або рівним %u"
+
+#: pg_resetwal.c:194
+#, c-format
+msgid "transaction ID (-x) must be greater than or equal to %u"
+msgstr "ID транзакції (-x) має бути більшим чи рівним %u"
+
+#: pg_resetwal.c:216 pg_resetwal.c:220
+#, 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:233
+#, c-format
+msgid "OID (-o) must not be 0"
+msgstr "OID (-o) не може бути 0"
+
+#: pg_resetwal.c:254
+#, c-format
+msgid "multitransaction ID (-m) must not be 0"
+msgstr "ID мультитранзакції (-m) не повинен бути 0"
+
+#: pg_resetwal.c:261
+#, c-format
+msgid "oldest multitransaction ID (-m) must not be 0"
+msgstr "найстарший ID мультитранзакції (-m) не повинен бути 0"
+
+#: pg_resetwal.c:274
+#, c-format
+msgid "multitransaction offset (-O) must not be -1"
+msgstr "зсув мультитранзакції (-O) не повинен бути -1"
+
+#: pg_resetwal.c:296
+#, c-format
+msgid "argument of --wal-segsize must be a number"
+msgstr "аргумент --wal-segsize повинен бути числом"
+
+#: pg_resetwal.c:298
+#, 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:314
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "забагато аргументів у командному рядку (перший \"%s\")"
+
+#: pg_resetwal.c:322
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог даних не вказано"
+
+#: pg_resetwal.c:336
+#, c-format
+msgid "cannot be executed by \"root\""
+msgstr "\"root\" не може це виконувати"
+
+#: pg_resetwal.c:337
+#, c-format
+msgid "You must run %s as the PostgreSQL superuser."
+msgstr "Запускати %s треба від суперкористувача PostgreSQL."
+
+#: pg_resetwal.c:347
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "не вдалося прочитати дозволи на каталог \"%s\": %m"
+
+#: pg_resetwal.c:353
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не вдалося змінити каталог на \"%s\": %m"
+
+#: pg_resetwal.c:366 pg_resetwal.c:518 pg_resetwal.c:566
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не вдалося відкрити файл \"%s\" для читання: %m"
+
+#: pg_resetwal.c:371
+#, c-format
+msgid "lock file \"%s\" exists"
+msgstr "файл блокування \"%s\" вже існує"
+
+#: pg_resetwal.c:372
+#, c-format
+msgid "Is a server running? If not, delete the lock file and try again."
+msgstr "Чи запущений сервер? Якщо ні, видаліть файл блокування і спробуйте знову."
+
+#: pg_resetwal.c:467
+#, c-format
+msgid "\n"
+"If these values seem acceptable, use -f to force reset.\n"
+msgstr "\n"
+"Якщо ці значення виглядають допустимими, використайте -f, щоб провести перевстановлення.\n"
+
+#: pg_resetwal.c:479
+#, 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:493
+#, c-format
+msgid "Write-ahead log reset\n"
+msgstr "Журнал передзапису скинуто\n"
+
+#: pg_resetwal.c:525
+#, c-format
+msgid "unexpected empty file \"%s\""
+msgstr "неочікуваний порожній файл \"%s\""
+
+#: pg_resetwal.c:527 pg_resetwal.c:581
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не вдалося прочитати файл \"%s\": %m"
+
+#: pg_resetwal.c:535
+#, c-format
+msgid "data directory is of wrong version"
+msgstr "каталог даних неправильної версії"
+
+#: pg_resetwal.c:536
+#, c-format
+msgid "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\"."
+msgstr "Файл \"%s\" містить \"%s\", який не сумісний з версією цієї програми \"%s\"."
+
+#: pg_resetwal.c:569
+#, 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:597
+#, c-format
+msgid "pg_control exists but has invalid CRC; proceed with caution"
+msgstr "pg_control існує, але має недопустимий CRC; продовжуйте з обережністю"
+
+#: pg_resetwal.c:606
+#, 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:617
+#, c-format
+msgid "pg_control exists but is broken or wrong version; ignoring it"
+msgstr "pg_control існує, але зламаний або неправильної версії; ігнорується"
+
+#: pg_resetwal.c:712
+#, c-format
+msgid "Guessed pg_control values:\n\n"
+msgstr "Припустимі значення pg_control:\n\n"
+
+#: pg_resetwal.c:714
+#, c-format
+msgid "Current pg_control values:\n\n"
+msgstr "Поточні значення pg_control:\n\n"
+
+#: pg_resetwal.c:716
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control номер версії: %u\n"
+
+#: pg_resetwal.c:718
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версії каталогу: %u\n"
+
+#: pg_resetwal.c:720
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Системний ідентифікатор бази даних: %llu\n"
+
+#: pg_resetwal.c:722
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Останній TimeLineID контрольної точки: %u\n"
+
+#: pg_resetwal.c:724
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Останній full_page_writes контрольної точки: %s\n"
+
+#: pg_resetwal.c:725
+msgid "off"
+msgstr "вимк"
+
+#: pg_resetwal.c:725
+msgid "on"
+msgstr "увімк"
+
+#: pg_resetwal.c:726
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Останній NextXID контрольної точки: %u%u\n"
+
+#: pg_resetwal.c:729
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Останній NextOID контрольної точки: %u\n"
+
+#: pg_resetwal.c:731
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Останній NextMultiXactId контрольної точки: %u\n"
+
+#: pg_resetwal.c:733
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Останній NextMultiOffset контрольної точки: %u\n"
+
+#: pg_resetwal.c:735
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Останній oldestXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:737
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Остання DB останнього oldestXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:739
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Останній oldestActiveXID контрольної точки: %u\n"
+
+#: pg_resetwal.c:741
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Останній oldestMultiXid контрольної точки: %u \n"
+
+#: pg_resetwal.c:743
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Остання DB останньої oldestMulti контрольної точки: %u\n"
+
+#: pg_resetwal.c:745
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Останній oldestCommitTsXid контрольної точки:%u\n"
+
+#: pg_resetwal.c:747
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Останній newestCommitTsXid контрольної точки: %u\n"
+
+#: pg_resetwal.c:749
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Максимальне вирівнювання даних: %u\n"
+
+#: pg_resetwal.c:752
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Розмір блоку бази даних: %u\n"
+
+#: pg_resetwal.c:754
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоків на сегмент великого відношення: %u\n"
+
+#: pg_resetwal.c:756
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Pозмір блоку WAL: %u\n"
+
+#: pg_resetwal.c:758 pg_resetwal.c:844
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байтів на сегмент WAL: %u\n"
+
+#: pg_resetwal.c:760
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальна довжина ідентифікаторів: %u\n"
+
+#: pg_resetwal.c:762
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Максимальна кількість стовпців в індексі: %u\n"
+
+#: pg_resetwal.c:764
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальний розмір сегменту TOAST: %u\n"
+
+#: pg_resetwal.c:766
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Розмір сегменту великих обїєктів: %u\n"
+
+#: pg_resetwal.c:769
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Дата/час типу сховища: %s\n"
+
+#: pg_resetwal.c:770
+msgid "64-bit integers"
+msgstr "64-бітні цілі"
+
+#: pg_resetwal.c:771
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргументу Float8: %s\n"
+
+#: pg_resetwal.c:772
+msgid "by reference"
+msgstr "за посиланням"
+
+#: pg_resetwal.c:772
+msgid "by value"
+msgstr "за значенням"
+
+#: pg_resetwal.c:773
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версія контрольних сум сторінок даних: %u\n"
+
+#: pg_resetwal.c:787
+#, c-format
+msgid "\n\n"
+"Values to be changed:\n\n"
+msgstr "\n\n"
+"Значення, що потребують зміни:\n\n"
+
+#: pg_resetwal.c:791
+#, c-format
+msgid "First log segment after reset: %s\n"
+msgstr "Перший сегмент журналу після скидання: %s\n"
+
+#: pg_resetwal.c:795
+#, c-format
+msgid "NextMultiXactId: %u\n"
+msgstr "NextMultiXactId: %u\n"
+
+#: pg_resetwal.c:797
+#, c-format
+msgid "OldestMultiXid: %u\n"
+msgstr "OldestMultiXid: %u\n"
+
+#: pg_resetwal.c:799
+#, c-format
+msgid "OldestMulti's DB: %u\n"
+msgstr "OldestMulti's DB: %u\n"
+
+#: pg_resetwal.c:805
+#, c-format
+msgid "NextMultiOffset: %u\n"
+msgstr "NextMultiOffset: %u\n"
+
+#: pg_resetwal.c:811
+#, c-format
+msgid "NextOID: %u\n"
+msgstr "NextOID: %u\n"
+
+#: pg_resetwal.c:817
+#, c-format
+msgid "NextXID: %u\n"
+msgstr "NextXID: %u\n"
+
+#: pg_resetwal.c:819
+#, c-format
+msgid "OldestXID: %u\n"
+msgstr "OldestXID: %u\n"
+
+#: pg_resetwal.c:821
+#, c-format
+msgid "OldestXID's DB: %u\n"
+msgstr "OldestXID's DB: %u\n"
+
+#: pg_resetwal.c:827
+#, c-format
+msgid "NextXID epoch: %u\n"
+msgstr "Епоха NextXID: %u\n"
+
+#: pg_resetwal.c:833
+#, c-format
+msgid "oldestCommitTsXid: %u\n"
+msgstr "oldestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:838
+#, c-format
+msgid "newestCommitTsXid: %u\n"
+msgstr "newestCommitTsXid: %u\n"
+
+#: pg_resetwal.c:922 pg_resetwal.c:981 pg_resetwal.c:1016
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "не вдалося відкрити каталог \"%s\": %m"
+
+#: pg_resetwal.c:954 pg_resetwal.c:995 pg_resetwal.c:1033
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "не вдалося прочитати каталог \"%s\": %m"
+
+#: pg_resetwal.c:957 pg_resetwal.c:998 pg_resetwal.c:1036
+#, c-format
+msgid "could not close directory \"%s\": %m"
+msgstr "не вдалося закрити каталог \"%s\": %m"
+
+#: pg_resetwal.c:990 pg_resetwal.c:1028
+#, c-format
+msgid "could not delete file \"%s\": %m"
+msgstr "не вдалося видалити файл \"%s\": %m"
+
+#: pg_resetwal.c:1100
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не можливо відкрити файл \"%s\": %m"
+
+#: pg_resetwal.c:1108 pg_resetwal.c:1120
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не вдалося записати файл \"%s\": %m"
+
+#: pg_resetwal.c:1125
+#, c-format
+msgid "fsync error: %m"
+msgstr "помилка fsync: %m"
+
+#: pg_resetwal.c:1134
+#, c-format
+msgid "%s resets the PostgreSQL write-ahead log.\n\n"
+msgstr "%s скидає журнал передзапису PostgreSQL.\n\n"
+
+#: pg_resetwal.c:1135
+#, c-format
+msgid "Usage:\n"
+" %s [OPTION]... DATADIR\n\n"
+msgstr "Використання:\n"
+" %s [OPTION]... КАТАЛОГ_ДАНИХ\n\n"
+
+#: pg_resetwal.c:1136
+#, c-format
+msgid "Options:\n"
+msgstr "Параметри:\n"
+
+#: pg_resetwal.c:1137
+#, 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:1140
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR каталог даних\n"
+
+#: pg_resetwal.c:1141
+#, c-format
+msgid " -e, --epoch=XIDEPOCH set next transaction ID epoch\n"
+msgstr " -e, --epoch=XIDEPOCH встановити наступну епоху ID транзакцій\n"
+
+#: pg_resetwal.c:1142
+#, c-format
+msgid " -f, --force force update to be done\n"
+msgstr " -f, --force примусово виконати оновлення\n"
+
+#: pg_resetwal.c:1143
+#, 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:1144
+#, 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:1145
+#, c-format
+msgid " -n, --dry-run no update, just show what would be done\n"
+msgstr " -n, --dry-run без оновлень, просто показати, що буде зроблено\n"
+
+#: pg_resetwal.c:1146
+#, c-format
+msgid " -o, --next-oid=OID set next OID\n"
+msgstr " -o, --next-oid=OID задати наступний OID\n"
+
+#: pg_resetwal.c:1147
+#, c-format
+msgid " -O, --multixact-offset=OFFSET set next multitransaction offset\n"
+msgstr " -O, --multixact-offset=OFFSET задати зсув наступної мультитранзакції\n"
+
+#: pg_resetwal.c:1148
+#, c-format
+msgid " -u, --oldest-transaction-id=XID set oldest transaction ID\n"
+msgstr " -u, --oldest-transaction-id=XID задати ID найстарішої транзакції\n"
+
+#: pg_resetwal.c:1149
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version вивести інформацію про версію і вийти\n"
+
+#: pg_resetwal.c:1150
+#, c-format
+msgid " -x, --next-transaction-id=XID set next transaction ID\n"
+msgstr " -x, --next-transaction-id=XID задати ID наступної транзакції\n"
+
+#: pg_resetwal.c:1151
+#, c-format
+msgid " --wal-segsize=SIZE size of WAL segments, in megabytes\n"
+msgstr " --wal-segsize=SIZE розмір сегментів WAL, у мегабайтах\n"
+
+#: pg_resetwal.c:1152
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показати цю довідку і вийти\n"
+
+#: pg_resetwal.c:1153
+#, c-format
+msgid "\n"
+"Report bugs to <%s>.\n"
+msgstr "\n"
+"Повідомляти про помилки на <%s>.\n"
+
+#: pg_resetwal.c:1154
+#, 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..b4b192c
--- /dev/null
+++ b/src/bin/pg_resetwal/t/001_basic.pl
@@ -0,0 +1,32 @@
+
+# Copyright (c) 2021-2022, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+
+use PostgreSQL::Test::Cluster;
+use PostgreSQL::Test::Utils;
+use Test::More;
+
+program_help_ok('pg_resetwal');
+program_version_ok('pg_resetwal');
+program_options_handling_ok('pg_resetwal');
+
+my $node = PostgreSQL::Test::Cluster->new('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');
+}
+
+done_testing();
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..cb4f451
--- /dev/null
+++ b/src/bin/pg_resetwal/t/002_corrupted.pl
@@ -0,0 +1,58 @@
+
+# Copyright (c) 2021-2022, PostgreSQL Global Development Group
+
+# Tests for handling a corrupted pg_control
+
+use strict;
+use warnings;
+
+use PostgreSQL::Test::Cluster;
+use PostgreSQL::Test::Utils;
+use Test::More;
+
+my $node = PostgreSQL::Test::Cluster->new('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');
+
+done_testing();