summaryrefslogtreecommitdiffstats
path: root/src/bin/pg_controldata
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_controldata')
-rw-r--r--src/bin/pg_controldata/.gitignore2
-rw-r--r--src/bin/pg_controldata/Makefile44
-rw-r--r--src/bin/pg_controldata/meson.build31
-rw-r--r--src/bin/pg_controldata/nls.mk5
-rw-r--r--src/bin/pg_controldata/pg_controldata.c332
-rw-r--r--src/bin/pg_controldata/po/LINGUAS1
-rw-r--r--src/bin/pg_controldata/po/cs.po559
-rw-r--r--src/bin/pg_controldata/po/de.po512
-rw-r--r--src/bin/pg_controldata/po/el.po521
-rw-r--r--src/bin/pg_controldata/po/es.po515
-rw-r--r--src/bin/pg_controldata/po/fr.po569
-rw-r--r--src/bin/pg_controldata/po/it.po547
-rw-r--r--src/bin/pg_controldata/po/ja.po526
-rw-r--r--src/bin/pg_controldata/po/ka.po515
-rw-r--r--src/bin/pg_controldata/po/ko.po504
-rw-r--r--src/bin/pg_controldata/po/meson.build3
-rw-r--r--src/bin/pg_controldata/po/pl.po464
-rw-r--r--src/bin/pg_controldata/po/pt_BR.po512
-rw-r--r--src/bin/pg_controldata/po/ru.po585
-rw-r--r--src/bin/pg_controldata/po/sv.po518
-rw-r--r--src/bin/pg_controldata/po/tr.po555
-rw-r--r--src/bin/pg_controldata/po/uk.po480
-rw-r--r--src/bin/pg_controldata/po/vi.po476
-rw-r--r--src/bin/pg_controldata/po/zh_CN.po505
-rw-r--r--src/bin/pg_controldata/po/zh_TW.po587
-rw-r--r--src/bin/pg_controldata/t/001_pg_controldata.pl46
26 files changed, 9914 insertions, 0 deletions
diff --git a/src/bin/pg_controldata/.gitignore b/src/bin/pg_controldata/.gitignore
new file mode 100644
index 0000000..051d71d
--- /dev/null
+++ b/src/bin/pg_controldata/.gitignore
@@ -0,0 +1,2 @@
+/pg_controldata
+/tmp_check/
diff --git a/src/bin/pg_controldata/Makefile b/src/bin/pg_controldata/Makefile
new file mode 100644
index 0000000..aa5bd58
--- /dev/null
+++ b/src/bin/pg_controldata/Makefile
@@ -0,0 +1,44 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/bin/pg_controldata
+#
+# Copyright (c) 1998-2023, PostgreSQL Global Development Group
+#
+# src/bin/pg_controldata/Makefile
+#
+#-------------------------------------------------------------------------
+
+PGFILEDESC = "pg_controldata - reads the data from pg_control"
+PGAPPICON=win32
+
+subdir = src/bin/pg_controldata
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+OBJS = \
+ $(WIN32RES) \
+ pg_controldata.o
+
+all: pg_controldata
+
+pg_controldata: $(OBJS) | submake-libpgport
+ $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+install: all installdirs
+ $(INSTALL_PROGRAM) pg_controldata$(X) '$(DESTDIR)$(bindir)/pg_controldata$(X)'
+
+installdirs:
+ $(MKDIR_P) '$(DESTDIR)$(bindir)'
+
+uninstall:
+ rm -f '$(DESTDIR)$(bindir)/pg_controldata$(X)'
+
+clean distclean maintainer-clean:
+ rm -f pg_controldata$(X) $(OBJS)
+ rm -rf tmp_check
+
+check:
+ $(prove_check)
+
+installcheck:
+ $(prove_installcheck)
diff --git a/src/bin/pg_controldata/meson.build b/src/bin/pg_controldata/meson.build
new file mode 100644
index 0000000..03c9d0a
--- /dev/null
+++ b/src/bin/pg_controldata/meson.build
@@ -0,0 +1,31 @@
+# Copyright (c) 2022-2023, PostgreSQL Global Development Group
+
+pg_controldata_sources = files(
+ 'pg_controldata.c',
+)
+
+if host_system == 'windows'
+ pg_controldata_sources += rc_bin_gen.process(win32ver_rc, extra_args: [
+ '--NAME', 'pg_controldata',
+ '--FILEDESC', 'pg_controldata - reads the data from pg_control',])
+endif
+
+pg_controldata = executable('pg_controldata',
+ pg_controldata_sources,
+ dependencies: [frontend_code],
+ kwargs: default_bin_args,
+)
+bin_targets += pg_controldata
+
+tests += {
+ 'name': 'pg_controldata',
+ 'sd': meson.current_source_dir(),
+ 'bd': meson.current_build_dir(),
+ 'tap': {
+ 'tests': [
+ 't/001_pg_controldata.pl',
+ ],
+ },
+}
+
+subdir('po', if_found: libintl)
diff --git a/src/bin/pg_controldata/nls.mk b/src/bin/pg_controldata/nls.mk
new file mode 100644
index 0000000..ab34205
--- /dev/null
+++ b/src/bin/pg_controldata/nls.mk
@@ -0,0 +1,5 @@
+# src/bin/pg_controldata/nls.mk
+CATALOG_NAME = pg_controldata
+GETTEXT_FILES = pg_controldata.c ../../common/controldata_utils.c
+GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(FRONTEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c
new file mode 100644
index 0000000..c390ec5
--- /dev/null
+++ b/src/bin/pg_controldata/pg_controldata.c
@@ -0,0 +1,332 @@
+/*
+ * pg_controldata
+ *
+ * reads the data from $PGDATA/global/pg_control
+ *
+ * copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001;
+ * license: BSD
+ *
+ * src/bin/pg_controldata/pg_controldata.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 <time.h>
+
+#include "access/transam.h"
+#include "access/xlog.h"
+#include "access/xlog_internal.h"
+#include "catalog/pg_control.h"
+#include "common/controldata_utils.h"
+#include "common/logging.h"
+#include "getopt_long.h"
+#include "pg_getopt.h"
+
+static void
+usage(const char *progname)
+{
+ printf(_("%s displays control information of a PostgreSQL database cluster.\n\n"), progname);
+ printf(_("Usage:\n"));
+ printf(_(" %s [OPTION] [DATADIR]\n"), progname);
+ printf(_("\nOptions:\n"));
+ printf(_(" [-D, --pgdata=]DATADIR data directory\n"));
+ printf(_(" -V, --version output version information, then exit\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
+ printf(_("\nIf no data directory (DATADIR) is specified, "
+ "the environment variable PGDATA\nis used.\n\n"));
+ printf(_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
+}
+
+
+static const char *
+dbState(DBState state)
+{
+ switch (state)
+ {
+ case DB_STARTUP:
+ return _("starting up");
+ case DB_SHUTDOWNED:
+ return _("shut down");
+ case DB_SHUTDOWNED_IN_RECOVERY:
+ return _("shut down in recovery");
+ case DB_SHUTDOWNING:
+ return _("shutting down");
+ case DB_IN_CRASH_RECOVERY:
+ return _("in crash recovery");
+ case DB_IN_ARCHIVE_RECOVERY:
+ return _("in archive recovery");
+ case DB_IN_PRODUCTION:
+ return _("in production");
+ }
+ return _("unrecognized status code");
+}
+
+static const char *
+wal_level_str(WalLevel wal_level)
+{
+ switch (wal_level)
+ {
+ case WAL_LEVEL_MINIMAL:
+ return "minimal";
+ case WAL_LEVEL_REPLICA:
+ return "replica";
+ case WAL_LEVEL_LOGICAL:
+ return "logical";
+ }
+ return _("unrecognized wal_level");
+}
+
+
+int
+main(int argc, char *argv[])
+{
+ static struct option long_options[] = {
+ {"pgdata", required_argument, NULL, 'D'},
+ {NULL, 0, NULL, 0}
+ };
+
+ ControlFileData *ControlFile;
+ bool crc_ok;
+ char *DataDir = NULL;
+ time_t time_tmp;
+ char pgctime_str[128];
+ char ckpttime_str[128];
+ char mock_auth_nonce_str[MOCK_AUTH_NONCE_LEN * 2 + 1];
+ const char *strftime_fmt = "%c";
+ const char *progname;
+ char xlogfilename[MAXFNAMELEN];
+ int c;
+ int i;
+ int WalSegSz;
+
+ pg_logging_init(argv[0]);
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata"));
+ progname = get_progname(argv[0]);
+
+ if (argc > 1)
+ {
+ if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
+ {
+ usage(progname);
+ exit(0);
+ }
+ if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
+ {
+ puts("pg_controldata (PostgreSQL) " PG_VERSION);
+ exit(0);
+ }
+ }
+
+ while ((c = getopt_long(argc, argv, "D:", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'D':
+ DataDir = optarg;
+ break;
+
+ default:
+ /* getopt_long already emitted a complaint */
+ pg_log_error_hint("Try \"%s --help\" for more information.", progname);
+ exit(1);
+ }
+ }
+
+ if (DataDir == NULL)
+ {
+ if (optind < argc)
+ DataDir = argv[optind++];
+ else
+ DataDir = getenv("PGDATA");
+ }
+
+ /* 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);
+ }
+
+ /* get a copy of the control file */
+ ControlFile = get_controlfile(DataDir, &crc_ok);
+ if (!crc_ok)
+ printf(_("WARNING: Calculated CRC checksum does not match value stored in file.\n"
+ "Either the file is corrupt, or it has a different layout than this program\n"
+ "is expecting. The results below are untrustworthy.\n\n"));
+
+ /* set wal segment size */
+ WalSegSz = ControlFile->xlog_seg_size;
+
+ if (!IsValidWalSegSize(WalSegSz))
+ {
+ printf(_("WARNING: invalid WAL segment size\n"));
+ printf(ngettext("The WAL segment size stored in the file, %d byte, is not a power of two\n"
+ "between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+ "untrustworthy.\n\n",
+ "The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+ "between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+ "untrustworthy.\n\n",
+ WalSegSz),
+ WalSegSz);
+ }
+
+ /*
+ * This slightly-chintzy coding will work as long as the control file
+ * timestamps are within the range of time_t; that should be the case in
+ * all foreseeable circumstances, so we don't bother importing the
+ * backend's timezone library into pg_controldata.
+ *
+ * Use variable for format to suppress overly-anal-retentive gcc warning
+ * about %c
+ */
+ time_tmp = (time_t) ControlFile->time;
+ strftime(pgctime_str, sizeof(pgctime_str), strftime_fmt,
+ localtime(&time_tmp));
+ time_tmp = (time_t) ControlFile->checkPointCopy.time;
+ strftime(ckpttime_str, sizeof(ckpttime_str), strftime_fmt,
+ localtime(&time_tmp));
+
+ /*
+ * Calculate name of the WAL file containing the latest checkpoint's REDO
+ * start point.
+ *
+ * A corrupted control file could report a WAL segment size of 0, and to
+ * guard against division by zero, we need to treat that specially.
+ */
+ if (WalSegSz != 0)
+ {
+ XLogSegNo segno;
+
+ XLByteToSeg(ControlFile->checkPointCopy.redo, segno, WalSegSz);
+ XLogFileName(xlogfilename, ControlFile->checkPointCopy.ThisTimeLineID,
+ segno, WalSegSz);
+ }
+ else
+ strcpy(xlogfilename, _("???"));
+
+ for (i = 0; i < MOCK_AUTH_NONCE_LEN; i++)
+ snprintf(&mock_auth_nonce_str[i * 2], 3, "%02x",
+ (unsigned char) ControlFile->mock_authentication_nonce[i]);
+
+ 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(_("Database cluster state: %s\n"),
+ dbState(ControlFile->state));
+ printf(_("pg_control last modified: %s\n"),
+ pgctime_str);
+ printf(_("Latest checkpoint location: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->checkPoint));
+ printf(_("Latest checkpoint's REDO location: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->checkPointCopy.redo));
+ printf(_("Latest checkpoint's REDO WAL file: %s\n"),
+ xlogfilename);
+ printf(_("Latest checkpoint's TimeLineID: %u\n"),
+ ControlFile->checkPointCopy.ThisTimeLineID);
+ printf(_("Latest checkpoint's PrevTimeLineID: %u\n"),
+ ControlFile->checkPointCopy.PrevTimeLineID);
+ 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(_("Time of latest checkpoint: %s\n"),
+ ckpttime_str);
+ printf(_("Fake LSN counter for unlogged rels: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->unloggedLSN));
+ printf(_("Minimum recovery ending location: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->minRecoveryPoint));
+ printf(_("Min recovery ending loc's timeline: %u\n"),
+ ControlFile->minRecoveryPointTLI);
+ printf(_("Backup start location: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->backupStartPoint));
+ printf(_("Backup end location: %X/%X\n"),
+ LSN_FORMAT_ARGS(ControlFile->backupEndPoint));
+ printf(_("End-of-backup record required: %s\n"),
+ ControlFile->backupEndRequired ? _("yes") : _("no"));
+ printf(_("wal_level setting: %s\n"),
+ wal_level_str(ControlFile->wal_level));
+ printf(_("wal_log_hints setting: %s\n"),
+ ControlFile->wal_log_hints ? _("on") : _("off"));
+ printf(_("max_connections setting: %d\n"),
+ ControlFile->MaxConnections);
+ printf(_("max_worker_processes setting: %d\n"),
+ ControlFile->max_worker_processes);
+ printf(_("max_wal_senders setting: %d\n"),
+ ControlFile->max_wal_senders);
+ printf(_("max_prepared_xacts setting: %d\n"),
+ ControlFile->max_prepared_xacts);
+ printf(_("max_locks_per_xact setting: %d\n"),
+ ControlFile->max_locks_per_xact);
+ printf(_("track_commit_timestamp setting: %s\n"),
+ ControlFile->track_commit_timestamp ? _("on") : _("off"));
+ 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);
+ printf(_("Mock authentication nonce: %s\n"),
+ mock_auth_nonce_str);
+ return 0;
+}
diff --git a/src/bin/pg_controldata/po/LINGUAS b/src/bin/pg_controldata/po/LINGUAS
new file mode 100644
index 0000000..4cc8bed
--- /dev/null
+++ b/src/bin/pg_controldata/po/LINGUAS
@@ -0,0 +1 @@
+cs de el es fr it ja ka ko pl pt_BR ru sv tr uk vi zh_CN zh_TW
diff --git a/src/bin/pg_controldata/po/cs.po b/src/bin/pg_controldata/po/cs.po
new file mode 100644
index 0000000..165b7d1
--- /dev/null
+++ b/src/bin/pg_controldata/po/cs.po
@@ -0,0 +1,559 @@
+# Czech message translation file for pg_controldata
+# 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_controldata-cs (PostgreSQL 9.3)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-10-31 16:17+0000\n"
+"PO-Revision-Date: 2020-10-31 20:50+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "nelze otevřít soubor \"%s\" pro čtení: %m"
+
+#: ../../common/controldata_utils.c:89
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "nelze číst soubor \"%s\": %m"
+
+#: ../../common/controldata_utils.c:101
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "nelze číst soubor \"%s\": načteno %d z %zu"
+
+#: ../../common/controldata_utils.c:117 ../../common/controldata_utils.c:259
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "nelze uzavřít soubor \"%s\": %m"
+
+#: ../../common/controldata_utils.c:135
+msgid "byte ordering mismatch"
+msgstr "pořadí bytů nesouhlasí"
+
+#: ../../common/controldata_utils.c:137
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the "
+"one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"možný nesoulad v pořadí bytů\n"
+"Pořadí bytů používané pro uložení pg_control souboru nemusí odpovídat "
+"tomu\n"
+"používanému tímto programem. V tom případě by výsledky uvedené níže byly "
+"chybné, a\n"
+"PostgreSQL instalace by byla nekompatibilní s tímto datovým adresářem."
+
+#: ../../common/controldata_utils.c:203
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "nelze otevřít soubor \"%s\": %m"
+
+#: ../../common/controldata_utils.c:224
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "nelze zapsat soubor \"%s\": %m"
+
+#: ../../common/controldata_utils.c:245
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "nelze provést fsync souboru \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s vypíše kontrolní informace o PostgreSQL databázi.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Použití:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [VOLBY] [DATOVÝ-ADRESÁŘ]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Volby:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR datový adresář\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version vypiš informaci o verzi, potom skonči\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help vypiš tuto nápovědu, potom skonči\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Není-li specifikován datový adresář, je použita proměnná prostředí\n"
+"PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Chyby hlašte na <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s domovská stránka: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "startování"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "ukončení"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "ukončení (shut down) během obnovy"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "ukončování"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "probíhá zotavení z pádu"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "probíhá obnova z archivu"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "v provozu"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "neznámý stavový kód"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "neznámý wal_level"
+
+#: pg_controldata.c:137 pg_controldata.c:155 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Zkuste \"%s --help\" pro více informací.\n"
+
+#: pg_controldata.c:153
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "příliš mnoho argumentů v příkazové řádce (první je \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "není specifikován datový adresář"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this "
+"program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"UPOZORNĚNÍ: Spočítaný CRC kontrolní součet nesouhlasí s hodnotou uloženou\n"
+"v souboru. Buď je soubor poškozen nebo má jinou strukturu než tento "
+"program\n"
+"očekává. Níže uvedené výsledky jsou nedůvěryhodné.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "WARNING: neplatná velikost WAL segmentu\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Velikost WAL segmentu uloženého v souboru, %d byte, není mocnina dvou\n"
+"mezi 1 MB a 1 GB. Soubor je poškozený a výsledky uvedené níže jsou\n"
+"nedůvěryhodné.\n"
+"\n"
+msgstr[1] ""
+"Velikost WAL segmentu uloženého v souboru, %d bytů, není mocnina dvou\n"
+"mezi 1 MB a 1 GB. Soubor je poškozený a výsledky uvedené níže jsou\n"
+"nedůvěryhodné.\n"
+"\n"
+msgstr[2] ""
+"Velikost WAL segmentu uloženého v souboru, %d bytů, není mocnina dvou\n"
+"mezi 1 MB a 1 GB. Soubor je poškozený a výsledky uvedené níže jsou\n"
+"nedůvěryhodné.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Číslo verze pg_controlu: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Číslo verze katalogu: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identifikátor databázového systému: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Status databázového klastru: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "Poslední modifikace pg_control: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Poslední umístění checkpointu: %X/%X\n"
+
+#: pg_controldata.c:241
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Poslední umístění REDO checkpointu: %X/%X\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "REDO WAL file posledního checkpointu: %s\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID posledního checkpointu: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID posledního checkpointu: %u\n"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Poslední full_page_writes checkpointu: %s\n"
+
+#: pg_controldata.c:251 pg_controldata.c:296 pg_controldata.c:308
+msgid "off"
+msgstr "vypnuto"
+
+#: pg_controldata.c:251 pg_controldata.c:296 pg_controldata.c:308
+msgid "on"
+msgstr "zapnuto"
+
+#: pg_controldata.c:252
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID posledního checkpointu: %u:%u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Poslední umístění NextOID checkpointu: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId posledního checkpointu: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset posledního checkpointu: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID posledního checkpointu: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB k oldestXID posledního checkpointu: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID posledního checkpointu: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid posledního checkpointu: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB k oldestMulti posledního checkpointu: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid posledního checkpointu: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid posledního checkpointu: %u\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Čas posledního checkpointu: %s\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Falešné LSN počítadlo pro unlogged relace: %X/%X\n"
+
+#: pg_controldata.c:280
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Minimální pozice ukončení obnovy: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Timeline minimální pozice ukončení obnovy: %u\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Pozice počátku backupu: %X/%X\n"
+
+#: pg_controldata.c:288
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Koncová pozice zálohy: %X/%X\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Vyžadován záznam konce backupu: %s\n"
+
+#: pg_controldata.c:292
+msgid "no"
+msgstr "ne"
+
+#: pg_controldata.c:292
+msgid "yes"
+msgstr "ano"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level hodnota: %s\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints hodnota: %s\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections hodnota: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes hodnota: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders setting: %d\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts hodnota: %d\n"
+
+#: pg_controldata.c:305
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact hodnota: %d\n"
+
+#: pg_controldata.c:307
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp hodnota: %s\n"
+
+#: pg_controldata.c:309
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximální zarovnání dat: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Velikost databázového bloku: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloků v segmentu velké relace: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Velikost WAL bloku: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytů ve WAL segmentu: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximální délka identifikátorů: %u\n"
+
+#: pg_controldata.c:322
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximální počet sloupců v indexu: %u\n"
+
+#: pg_controldata.c:324
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximální velikost úseku TOAST: %u\n"
+
+#: pg_controldata.c:326
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Velikost large-object chunku: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Způsob uložení typu date/time: %s\n"
+
+#: pg_controldata.c:330
+msgid "64-bit integers"
+msgstr "64-bitová čísla"
+
+#: pg_controldata.c:331
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Způsob předávání float8 hodnot: %s\n"
+
+#: pg_controldata.c:332
+msgid "by reference"
+msgstr "odkazem"
+
+#: pg_controldata.c:332
+msgid "by value"
+msgstr "hodnotou"
+
+#: pg_controldata.c:333
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Verze kontrolních součtů datových stránek: %u\n"
+
+#: pg_controldata.c:335
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Zkušební authentizační nonce: %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 ""
+#~ "Usage:\n"
+#~ " %s [OPTION] [DATADIR]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " --help show this help, then exit\n"
+#~ " --version output version information, then exit\n"
+#~ msgstr ""
+#~ "Použití:\n"
+#~ " %s [PŘEPÍNAČ] [ADRESÁŘ]\n"
+#~ "\n"
+#~ "Přepínače:\n"
+#~ " --help ukáže tuto nápovědu a skončí\n"
+#~ " --version ukáže verzi tohoto programu a skončí\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "čísla s plovoucí řádovou čárkou"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help ukáže tuto nápovědu, a skončí\n"
+
+#~ msgid " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version vypíše informaci o verzi, pak skončí\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Způsob předávání float4 hodnot: %s\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Oznámení o chybách zasílejte na <pgsql-bugs@postgresql.org>.\n"
diff --git a/src/bin/pg_controldata/po/de.po b/src/bin/pg_controldata/po/de.po
new file mode 100644
index 0000000..02b3a2d
--- /dev/null
+++ b/src/bin/pg_controldata/po/de.po
@@ -0,0 +1,512 @@
+# German message translation file for pg_controldata
+# 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-04-10 13:51+0000\n"
+"PO-Revision-Date: 2022-04-10 20: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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht lesen: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "konnte Datei »%s« nicht lesen: %d von %zu gelesen"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht schließen: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "falsche Byte-Reihenfolge"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"möglicherweise falsche Byte-Reihenfolge\n"
+"Die Byte-Reihenfolge, die zur Speicherung der Datei pg_control verwendet wurde,\n"
+"stimmt möglicherweise nicht mit der von diesem Programm verwendeten überein. In\n"
+"diesem Fall wären die Ergebnisse unten falsch und die PostgreSQL-Installation\n"
+"wäre inkompatibel mit diesem Datenverzeichnis."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht öffnen: %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht schreiben: %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "konnte Datei »%s« nicht fsyncen: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s zeigt Kontrollinformationen über einen PostgreSQL-Datenbankcluster.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Aufruf:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPTION] [DATENVERZEICHNIS]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Optionen:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]VERZ Datenbankverzeichnis\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Wenn kein Datenverzeichnis angegeben ist, wird die Umgebungsvariable\n"
+"PGDATA verwendet.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Berichten Sie Fehler an <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Homepage: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "startet"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "heruntergefahren"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "in der Wiederherstellung heruntergefahren"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "fährt herunter"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "bei der Wiederherstellung nach Absturz"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "bei der Archivwiederherstellung"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "im Produktionsmodus"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "nicht erkannter Statuscode"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "unbekanntes wal_level"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Versuchen Sie »%s --help« für weitere Informationen."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "zu viele Kommandozeilenargumente (das erste ist »%s«)"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "kein Datenverzeichnis angegeben"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"WARNUNG: Berechnete CRC-Prüfsumme stimmt nicht mit dem Wert in der Datei\n"
+"überein. Entweder ist die Datei kaputt oder sie hat ein anderes Layout\n"
+"als von diesem Programm erwartet. Die Ergebnisse unten sind nicht\n"
+"verlässlich.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "WARNUNG: ungültige WAL-Segmentgröße\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Die in der Datei gespeicherte WAL-Segmentgröße, %d Byte, ist keine\n"
+"Zweierpotenz zwischen 1 MB und 1 GB. Die Datei ist kaputt und die\n"
+"Ergebnisse unten sind nicht verlässlich.\n"
+"\n"
+msgstr[1] ""
+"Die in der Datei gespeicherte WAL-Segmentgröße, %d Bytes, ist keine\n"
+"Zweierpotenz zwischen 1 MB und 1 GB. Die Datei ist kaputt und die\n"
+"Ergebnisse unten sind nicht verlässlich.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control-Versionsnummer: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversionsnummer: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Datenbanksystemidentifikation: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Datenbank-Cluster-Status: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control zuletzt geändert: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Position des letzten Checkpoints: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "REDO-Position des letzten Checkpoints: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "REDO-WAL-Datei des letzten Checkpoints: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes des letzten Checkpoints: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "aus"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "an"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID des letzten Checkpoints: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB der oldestXID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB des oldestMulti des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid des letzten Checkpoints: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Zeit des letzten Checkpoints: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Fake-LSN-Zähler für ungeloggte Relationen: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Minimaler Wiederherstellungsendpunkt: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Zeitleiste des minimalen Wiederherstellungsendpunkts: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Backup-Startpunkt: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Backup-Endpunkt: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "End-of-Backup-Eintrag erforderlich: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "nein"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "ja"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level-Einstellung: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints-Einstellung: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections-Einstellung: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes-Einstellung: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders-Einstellung: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts-Einstellung: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact-Einstellung: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp-Einstellung: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximale Datenausrichtung (Alignment): %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Datenbankblockgröße: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blöcke pro Segment: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL-Blockgröße: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes pro WAL-Segment: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximale Bezeichnerlänge: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximale Spalten in einem Index: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximale Größe eines Stücks TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Größe eines Large-Object-Chunks: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Speicherung von Datum/Zeit-Typen: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-Bit-Ganzzahlen"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Übergabe von Float8-Argumenten: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "Referenz"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "Wert"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Datenseitenprüfsummenversion: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Mock-Authentifizierungs-Nonce: %s\n"
diff --git a/src/bin/pg_controldata/po/el.po b/src/bin/pg_controldata/po/el.po
new file mode 100644
index 0000000..f08b70f
--- /dev/null
+++ b/src/bin/pg_controldata/po/el.po
@@ -0,0 +1,521 @@
+# Greek message translation file for pg_controldata
+# Copyright (C) 2021 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_controldata (PostgreSQL) package.
+# Georgios Kokolatos <gkokolatos@pm.me>, 2021.
+#
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-04-14 09:20+0000\n"
+"PO-Revision-Date: 2023-04-14 13:09+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα αρχείου «%s» για ανάγνωση: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η ανάγνωση του αρχείου «%s»: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "δεν ήταν δυνατή η ανάγνωση του αρχείου «%s»: ανέγνωσε %d από %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "δεν ήταν δυνατό το κλείσιμο του αρχείου «%s»: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "αναντιστοιχία διάταξης byte"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"πιθανή αναντιστοιχία διάταξης byte\n"
+"Η διάταξη byte που χρησιμοποιείται για την αποθήκευση του αρχείου pg_control "
+"ενδέχεται να μην ταιριάζει με αυτήν\n"
+"που χρησιμοποιείται από αυτό το πρόγραμμα. Στην περίπτωση αυτή, τα παρακάτω "
+"αποτελέσματα θα ήταν εσφαλμένα, και\n"
+"η εγκατάσταση PostgreSQL θα ήταν ασύμβατη με αυτόν τον κατάλογο δεδομένων."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου «%s»: %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η εγγραφή αρχείου «%s»: %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "δεν ήταν δυνατή η εκτέλεση της εντολής fsync στο αρχείο «%s»: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s εμφανίζει πληροφορίες ελέγχου μίας συστάδας βάσεων δεδομένων PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Χρήση:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [ΕΠΙΛΟΓΗ] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Επιλογές:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR κατάλογος δεδομένων\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help εμφάνισε αυτό το μήνυμα βοήθειας, μετά έξοδος\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Εάν δεν έχει καθοριστεί κατάλογος δεδομένων (DATADIR), χρησιμοποιείται η\n"
+"μεταβλητή περιβάλλοντος PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Υποβάλετε αναφορές σφάλματων σε <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s αρχική σελίδα: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "εκκίνηση"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "τερματισμός"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "τερματισμός σε αποκατάσταση"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "τερματίζει"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "σε αποκατάσταση από κρασάρισμα"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "σε αποκατάσταση αρχειοθήκης"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "σε παραγωγή"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "μη αναγνωρίσιμος κωδικός κατάστασης"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "μη αναγνωρίσιμο wal_level"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "πάρα πολλές παράμετροι εισόδου από την γραμμή εντολών (η πρώτη είναι η «%s»)"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "δεν ορίστηκε κατάλογος δεδομένων"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Το υπολογιζόμενο άθροισμα ελέγχου CRC δεν συμφωνεί με την τιμή που "
+"είναι αποθηκευμένη στο αρχείο.\n"
+"Είτε το αρχείο είναι αλλοιωμένο είτε έχει διαφορετική διάταξη από αυτή που "
+"περιμένει\n"
+"αυτό το πρόγραμμα. Τα παρακάτω αποτελέσματα είναι αναξιόπιστα.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: μη έγκυρο μέγεθος τμήματος WAL\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Το μέγεθος τμήματος WAL που είναι αποθηκευμένο στο αρχείο, %d byte, δεν είναι "
+"δύναμη\n"
+"του δύο μεταξύ 1 MB και 1 GB. Το αρχείο είναι αλλοιωμένο και τα παρακάτω "
+"αποτελέσματα\n"
+"είναι αναξιόπιστα.\n"
+"\n"
+msgstr[1] ""
+"Το μέγεθος τμήματος WAL που είναι αποθηκευμένο στο αρχείο, %d bytes, δεν είναι "
+"δύναμη\n"
+"του δύο μεταξύ 1 MB και 1 GB. Το αρχείο είναι αλλοιωμένο και τα παρακάτω "
+"αποτελέσματα\n"
+"είναι αναξιόπιστα.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control αριθμός έκδοσης: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Αριθμός έκδοσης καταλόγου: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Αναγνωριστικό συστήματος βάσης δεδομένων: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Κατάσταση συστάδας βάσης δεδομένων: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "πιο πρόσφατη μετατροπή pg_control: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Πιο πρόσφατη τοποθεσία σημείου ελέγχου: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Πιο πρόσφατη τοποθεσία REDO του σημείου ελέγχου: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Πιο πρόσφατο αρχείο REDO WAL του σημείου ελέγχου: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Πιο πρόσφατο TimeLineID του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "Πιο πρόσφατο PrevTimeLineID του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Πιο πρόσφατο full_page_writes του σημείου ελέγχου: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "κλειστό"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "ανοικτό"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Πιο πρόσφατο NextXID του σημείου ελέγχου: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Πιο πρόσφατο NextOID του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Πιο πρόσφατο NextMultiXactId του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Πιο πρόσφατο NextMultiOffset του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Πιο πρόσφατο oldestXID του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestXID’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Πιο πρόσφατο oldestActiveXID του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Πιο πρόσφατο oldestMultiXid του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Πιο πρόσφατο oldestMulti’s DB του σημείου ελέγχου: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο oldestCommitTsXid του σημείου ελέγχου:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Πιο πρόσφατο newestCommitTsXid του σημείου ελέγχου:%u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Ώρα του πιο πρόσφατου σημείου ελέγχου: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Ψεύτικος μετρητής LSN για μη κενές rels: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Ελάχιστη τοποθεσία τερματισμού ανάκαμψης: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Χρονογραμμή ελάχιστης θέσης τερματισμού ανάκαμψης: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Τοποθεσία εκκίνησης Backup: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Τοποθεσία τερματισμου Backup: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Απαιτείται εγγραφή end-of-backup: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "όχι"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "ναι"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "ρύθμιση wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "ρύθμιση wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "ρύθμιση max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "ρύθμιση max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "ρύθμιση max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "ρύθμιση max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "ρύθμιση max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "ρύθμιση track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Μέγιστη στοίχιση δεδομένων: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Μέγεθος μπλοκ βάσης δεδομένων: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Μπλοκ ανά τμήμα μεγάλης σχέσης: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Μέγεθος μπλοκ WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes ανά τμήμα WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Μέγιστο μήκος αναγνωριστικών: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Μέγιστες στήλες σε ένα ευρετήριο: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Μέγιστο μέγεθος ενός τμήματος TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Μέγεθος τμήματος μεγάλου αντικειμένου: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Τύπος αποθήκευσης ημερομηνίας/ώρας: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "Ακέραιοι 64-bit"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Μεταβλητή Float8 τέθηκε: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "με αναφορά"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "με τιμή"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Έκδοση αθροίσματος ελέγχου σελίδας δεδομένων: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Μακέτα (mock) nonce ταυτοποίησης: %s\n"
diff --git a/src/bin/pg_controldata/po/es.po b/src/bin/pg_controldata/po/es.po
new file mode 100644
index 0000000..58127cb
--- /dev/null
+++ b/src/bin/pg_controldata/po/es.po
@@ -0,0 +1,515 @@
+# Spanish message translation file for pg_controldata
+#
+# Copyright (c) 2002-2021, PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Karim Mribti <karim@mribti.com>, 2002.
+# Alvaro Herrera <alvherre@alvh.no-ip.org>, 2003-2014
+# Martín Marqués <martin@2ndquadrant.com>, 2013
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 16\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-05-22 07:22+0000\n"
+"PO-Revision-Date: 2023-05-22 12:05+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"
+"X-Generator: Poedit 2.0.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "no se pudo abrir archivo «%s» para lectura: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "no se pudo leer el archivo «%s»: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "no se pudo leer el archivo «%s»: leídos %d de %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:236
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "no se pudo cerrar el archivo «%s»: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "discordancia en orden de bytes"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"posible discordancia en orden de bytes\n"
+"El ordenamiento de bytes usado para almacenar el archivo pg_control puede no\n"
+"coincidir con el usado por este programa. En tal caso los resultados de abajo\n"
+"serían erróneos, y la instalación de PostgreSQL sería incompatible con este\n"
+"directorio de datos."
+
+#: ../../common/controldata_utils.c:186
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "no se pudo abrir el archivo «%s»: %m"
+
+#: ../../common/controldata_utils.c:205
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "no se pudo escribir el archivo «%s»: %m"
+
+#: ../../common/controldata_utils.c:224
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s muestra información de control del cluster de PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Empleo:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPCIÓN] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opciones:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR directorio de datos\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version mostrar información de versión, luego salir\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostrar esta ayuda, luego salir\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Si no se especifica un directorio de datos (DATADIR), se utilizará\n"
+"la variable de entorno PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Reporte errores a <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sitio web de %s: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "iniciando"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "apagado"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "apagado durante recuperación"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "apagándose"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "en recuperación"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "en recuperación desde archivo"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "en producción"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "código de estado no reconocido"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "wal_level no reconocido"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Pruebe «%s --help» para mayor información."
+
+#: pg_controldata.c:154
+#, 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_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "no se especificó el directorio de datos"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"ATENCIÓN: La suma de verificación calculada no coincide con el valor\n"
+"almacenado en el archivo. Puede ser que el archivo esté corrupto, o\n"
+"bien tiene una estructura diferente de la que este programa está\n"
+"esperando. Los resultados presentados a continuación no son confiables.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "PRECAUCIÓN: tamaño de segmento de WAL no válido\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"El tamaño de segmento de WAL almacenado en el archivo, %d byte,\n"
+"no es una potencia de dos entre 1 MB y 1 GB. El archivo está corrupto y los\n"
+"resultados de abajo no son confiables.\n"
+msgstr[1] ""
+"El tamaño de segmento de WAL almacenado en el archivo, %d bytes,\n"
+"no es una potencia de dos entre 1 MB y 1 GB. El archivo está corrupto y los\n"
+"resultados de abajo no son confiables.\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Número de versión de pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Número de versión del catálogo: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificador de sistema: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Estado del sistema de base de datos: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "Última modificación de pg_control: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Ubicación del último checkpoint: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Ubicación de REDO de último checkpoint: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Ubicación de REDO de último checkpoint: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID del último checkpoint: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID del último checkpoint: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes del último checkpoint: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "desactivado"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "activado"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID de último checkpoint: %u/%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID de último checkpoint: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId de último checkpoint: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset de último checkpoint: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID del último checkpoint: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB del oldestXID del último checkpoint: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID del último checkpoint: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid del último checkpoint: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB del oldestMultiXid del últ. checkpoint: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid del último checkpoint: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Instante de último checkpoint: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Contador de LSN falsas para rels. unlogged: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Punto final mínimo de recuperación: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Timeline de dicho punto final mínimo: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Ubicación del inicio de backup: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Ubicación del fin de backup: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Registro fin-de-backup requerido: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "no"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "sí"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "Parámetro wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "Parámetro wal_log_hings: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "Parámetro max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "Parámetro max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "Parámetro max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "Parámetro max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "Parámetro max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "Parámetro track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Alineamiento máximo de datos: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Tamaño de bloque de la base de datos: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloques por segmento en relación grande: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Tamaño del bloque de WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes por segmento WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Máxima longitud de identificadores: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Máximo número de columnas de un índice: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longitud máxima de un trozo TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Longitud máx. de un trozo de objeto grande: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo de almacenamiento de horas y fechas: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "enteros de 64 bits"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Paso de parámetros float8: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "por referencia"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "por valor"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versión de sumas de verificación de datos: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Nonce para autentificación simulada: %s\n"
diff --git a/src/bin/pg_controldata/po/fr.po b/src/bin/pg_controldata/po/fr.po
new file mode 100644
index 0000000..a22d809
--- /dev/null
+++ b/src/bin/pg_controldata/po/fr.po
@@ -0,0 +1,569 @@
+# LANGUAGE message translation file for pg_controldata
+# Copyright (C) 2002-2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_controldata (PostgreSQL) package.
+#
+# Use these quotes: « %s »
+#
+# Loïc Hennequin <loic.hennequin@wanadoo.fr>, 2002.
+# 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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "n'a pas pu lire le fichier « %s » : %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "n'a pas pu lire le fichier « %s » : a lu %d sur %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "n'a pas pu fermer le fichier « %s » : %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "différence de l'ordre des octets"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"possible incohérence dans l'ordre des octets\n"
+"L'ordre des octets utilisé pour enregistrer le fichier pg_control peut ne\n"
+"pas correspondre à celui utilisé par ce programme. Dans ce cas, les\n"
+"résultats ci-dessous sont incorrects, et l'installation de PostgreSQL\n"
+"est incompatible avec ce répertoire des données."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » : %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "impossible d'écrire le fichier « %s » : %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s affiche les informations de contrôle de l'instance PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Usage :\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPTION] [RÉP_DONNÉES]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Options :\n"
+
+#: pg_controldata.c:39
+#, 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_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version affiche la version puis quitte\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help affiche cette aide puis quitte\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Si aucun répertoire (RÉP_DONNÉES) n'est indiqué, la variable d'environnement\n"
+"PGDATA est utilisée.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapporter les bogues à <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Page d'accueil de %s : <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "démarrage en cours"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "arrêt"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "arrêt pendant la restauration"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "arrêt en cours"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "restauration en cours (suite à un arrêt brutal)"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "restauration en cours (à partir des archives)"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "en production"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "code de statut inconnu"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "wal_level non reconnu"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Essayez « %s --help » pour plus d'informations."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "trop d'arguments en ligne de commande (le premier étant « %s »)"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "aucun répertoire de données indiqué"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"ATTENTION : Les sommes de contrôle (CRC) calculées ne correspondent pas aux\n"
+"valeurs stockées dans le fichier.\n"
+"Soit le fichier est corrompu, soit son organisation diffère de celle\n"
+"attendue par le programme.\n"
+"Les résultats ci-dessous ne sont pas dignes de confiance.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "ATTENTION : taille invalide du segment WAL\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"La taille d'un segment WAL enregistré dans le fichier, %d octet, n'est pas une puissance de deux "
+"entre 1 Mo et 1 Go. Le fichier est corrompu et les résultats ci-dessous ne proviennent pas d'une "
+"source fiable.\n"
+"\n"
+msgstr[1] ""
+"La taille d'un segment WAL enregistré dans le fichier, %d octets, n'est pas une puissance de deux "
+"entre 1 Mo et 1 Go. Le fichier est corrompu et les résultats ci-dessous ne proviennent pas d'une "
+"source fiable.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Numéro de version de pg_control : %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Numéro de version du catalogue : %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identifiant du système de base de données : %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "État du cluster de base de données : %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "Dernière modification de pg_control : %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Dernier point de contrôle : %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Dernier REDO (reprise) du point de contrôle : %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Dernier fichier WAL du rejeu du point de contrôle : %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Dernier TimeLineID du point de contrôle : %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "Dernier PrevTimeLineID du point de contrôle : %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Dernier full_page_writes du point de contrôle : %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "désactivé"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "activé"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Dernier NextXID du point de contrôle : %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Dernier NextOID du point de contrôle : %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Dernier NextMultiXactId du point de contrôle : %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Dernier NextMultiOffset du point de contrôle : %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Dernier oldestXID du point de contrôle : %u\n"
+
+#: pg_controldata.c:261
+#, 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_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Dernier oldestActiveXID du point de contrôle : %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Dernier oldestMultiXid du point de contrôle : %u\n"
+
+#: pg_controldata.c:267
+#, 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_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Heure du dernier point de contrôle : %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Faux compteur LSN pour les relations non journalisés : %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Emplacement de fin de la récupération minimale : %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Timeline de l'emplacement de fin de restauration : %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Début de la sauvegarde : %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Fin de la sauvegarde : %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Enregistrement de fin de sauvegarde requis : %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "non"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "oui"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "Paramètrage actuel de wal_level : %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "Paramétrage actuel de wal_log_hints : %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "Paramètrage actuel de max_connections : %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "Paramétrage actuel de max_worker_processes : %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "Paramètrage actuel de max_wal_senders : %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "Paramètrage actuel de max_prepared_xacts : %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "Paramètrage actuel de max_locks_per_xact : %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "Paramètrage actuel de track_commit_timestamp : %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Alignement maximal des données : %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Taille du bloc de la base de données : %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocs par segment des relations volumineuses : %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Taille de bloc du journal de transaction : %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Octets par segment du journal de transaction : %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Longueur maximale des identifiants : %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Nombre maximum de colonnes d'un index: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Longueur maximale d'un morceau TOAST : %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Taille d'un morceau de Large Object : %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Stockage du type date/heure : %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "entiers 64-bits"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passage d'argument float8 : %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "par référence"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "par valeur"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Version des sommes de contrôle des pages de données : %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Nonce pour simuler une identité: %s\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 et quitte\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 read file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n"
+
+#~ msgid "%s: could not read file \"%s\": read %d of %d\n"
+#~ msgstr "%s : n'a pas pu lire le fichier « %s » : a lu %d sur %d\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Passage d'argument float4 : %s\n"
+
+#~ msgid "Prior checkpoint location: %X/%X\n"
+#~ msgstr "Point de contrôle précédent : %X/%X\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Rapporter les bogues à <pgsql-bugs@lists.postgresql.org>.\n"
+
+#, c-format
+#~ msgid "Try \"%s --help\" for more information.\n"
+#~ msgstr "Essayer « %s --help » pour plus d'informations.\n"
+
+#~ msgid ""
+#~ "Usage:\n"
+#~ " %s [OPTION] [DATADIR]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " --help show this help, then exit\n"
+#~ " --version output version information, then exit\n"
+#~ msgstr ""
+#~ "Usage :\n"
+#~ " %s [OPTION] [RÉP_DONNÉES]\n"
+#~ "\n"
+#~ "Options :\n"
+#~ " --help affiche cette aide et quitte\n"
+#~ " --version affiche les informations de version et quitte\n"
+
+#~ msgid "calculated CRC checksum does not match value stored in file"
+#~ msgstr "la somme de contrôle CRC calculée ne correspond par à la valeur enregistrée dans le fichier"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "nombres à virgule flottante"
diff --git a/src/bin/pg_controldata/po/it.po b/src/bin/pg_controldata/po/it.po
new file mode 100644
index 0000000..cc35f96
--- /dev/null
+++ b/src/bin/pg_controldata/po/it.po
@@ -0,0 +1,547 @@
+#
+# pg_controldata.po
+# Italian message translation file for pg_controldata
+#
+# For development and bug report please use:
+# https://github.com/dvarrazzo/postgresql-it
+#
+# Copyright (C) 2012-2017 PostgreSQL Global Development Group
+# Copyright (C) 2010, Associazione Culturale ITPUG
+#
+# Daniele Varrazzo <daniele.varrazzo@gmail.com>, 2012-2017
+# Cosimo D'Arcangelo <cosimo.darcangelo@itpug.org> 2010
+# Mirko Tebaldi <mirko.tebaldi@libero.it>, 2004
+#
+# This file is distributed under the same license as the PostgreSQL package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 11\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-09-26 08:20+0000\n"
+"PO-Revision-Date: 2022-09-26 15:19+0200\n"
+"Last-Translator: Daniele Varrazzo <daniele.varrazzo@gmail.com>\n"
+"Language-Team: https://github.com/dvarrazzo/postgresql-it\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-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "apertura del file \"%s\" in lettura fallita: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "lettura del file \"%s\" fallita: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "lettura del file \"%s\" fallita: letti %d di %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "chiusura del file \"%s\" fallita: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "ordinamento dei byte non combaciante"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the "
+"one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"possibile mancata corrispondenza dell'ordine dei byte\n"
+"L'ordine dei byte utilizzato per memorizzare il file pg_control potrebbe "
+"non corrispondere a quello\n"
+"utilizzato da questo programma. In tal caso i risultati seguenti non "
+"sarebbero corretti, e\n"
+"l'installazione di PostgreSQL sarebbe incompatibile con questa directory "
+"di dati."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "apertura del file \"%s\" fallita: %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "scrittura nel file \"%s\" fallita: %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "fsync del file \"%s\" fallito: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s mostra informazioni di controllo su un cluster di database PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Utilizzo:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPZIONE] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opzioni:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR directory dei dati\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr ""
+" -V, --version mostra informazioni sulla versione ed esci\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostra questo aiuto ed esci\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Se non viene specificata un directory per i dati (DATADIR) verrà usata la\n"
+"variabile d'ambiente PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Segnala i bug a <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s pagina iniziale: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "avvio in corso"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "spento"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "arresto durante il ripristino"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "arresto in corso"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "in fase di recupero da un crash"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "in fase di recupero di un archivio"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "in produzione"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "codice di stato sconosciuto"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "wal_level sconosciuto"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Prova \"%s --help\" per maggiori informazioni."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "troppi argomenti della riga di comando (il primo è \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "nessuna directory di dati specificata"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this "
+"program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"ATTENZIONE: Il codice di controllo CRC calcolato non combacia con quello\n"
+"memorizzato nel file. O il file è corrotto o ha un formato diverso da "
+"quanto\n"
+"questo programma si aspetta. I risultati seguenti non sono affidabili.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "ATTENZIONE: dimensione del segmento WAL non valida\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"La dimensione del segmento WAL memorizzata nel file, %d byte, non è una\n"
+"potenza di 2 tra 1 MB e 1 GB. Il file è corrotto e i risultati\n"
+"sottostanti non sono affidabili.\n"
+"\n"
+msgstr[1] ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "numero di versione di pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Numero di versione del catalogo: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificatore di sistema del database: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Stato del cluster di database: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "ultima modifica a pg_control: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Ultima posizione del checkpoint: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Locazione di REDO dell'ultimo checkpoint: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "File WAL di REDO dell'ultimo checkpoint: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineId dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Full_page_writes dell'ultimo checkpoint: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "disattivato"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "attivato"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID dell'ultimo checkpoint: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "OldestXID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB dell'oldestXID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "OldestActiveXID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "OldestMultiXID dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB dell'oldestMulti dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "OldestCommitTsXid dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "NewestCommitTsXid dell'ultimo checkpoint: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Orario ultimo checkpoint: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Falso contatore LSN per rel. non loggate: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Posizione del minimum recovery ending: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Timeline posiz. minimum recovery ending: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Posizione dell'inizio del backup: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Posizione della fine del backup: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Record di fine backup richiesto: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "no"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "sì"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "impostazione di wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "impostazione di wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "impostazione di max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "impostazione di max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "impostazione di max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "impostazione di max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "impostazione di max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "impostazione di track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Massimo allineamento dei dati: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Dimensione blocco database: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocchi per ogni segmento grosse tabelle: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Dimensione blocco WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Byte per segmento WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Lunghezza massima degli identificatori: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Massimo numero di colonne in un indice: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Massima dimensione di un segmento TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Dimensione di un blocco large-object: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Memorizzazione per tipi data/ora: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "interi a 64 bit"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passaggio di argomenti Float8: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "per riferimento"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "per valore"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versione somma di controllo dati pagine: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Finto nonce di autenticazione: %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: apertura del file \"%s\" per la lettura fallita: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: lettura del file \"%s\" fallita: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": read %d of %d\n"
+#~ msgstr "%s: lettura del file \"%s\" fallita: letti %d di %d\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Passaggio di argomenti Float4: %s\n"
+
+#~ msgid "Try \"%s --help\" for more information.\n"
+#~ msgstr "Prova \"%s --help\" per maggiori informazioni.\n"
diff --git a/src/bin/pg_controldata/po/ja.po b/src/bin/pg_controldata/po/ja.po
new file mode 100644
index 0000000..c6d728d
--- /dev/null
+++ b/src/bin/pg_controldata/po/ja.po
@@ -0,0 +1,526 @@
+# Japanese message translation file for pg_controldata
+# Copyright (C) 2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
+# Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL 16)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-07-14 10:48+0900\n"
+"PO-Revision-Date: 2022-05-10 13:48+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "ファイル\"%s\"の読み取りに失敗しました: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "ファイル\"%1$s\"を読み込めませんでした: %3$zuバイトのうち%2$dバイトを読み込みました"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "ファイル\"%s\"をクローズできませんでした: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "バイトオーダの不整合"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"バイトオーダが異なる可能性があります。\n"
+"pg_controlファイルを格納するために使用するバイトオーダが本プログラムで使用\n"
+"されるものと一致しないようです。この場合以下の結果は不正確になります。また、\n"
+"PostgreSQLインストレーションはこのデータディレクトリと互換性がなくなります。"
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "ファイル\"%s\"をオープンできませんでした: %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "ファイル\"%s\"を書き出せませんでした: %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "ファイル\"%s\"をfsyncできませんでした: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s はPostgreSQLデータベースクラスタの制御情報を表示します。\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "使用方法:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPTION] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"オプション:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR データディレクトリ\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version バージョン情報を表示して終了\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help このヘルプを表示して終了\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"データディレクトリ(DATADIR)が指定されない場合、PGDATA環境変数が使用されます。\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "バグは<%s>に報告してください。\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ホームページ: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "起動処理中"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "シャットダウン"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "リカバリ中にシャットダウンされている"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "シャットダウン処理中"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "クラッシュリカバリ中"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "アーカイブリカバリ中"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "運用中"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "未知のステータスコード"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "wal_level を認識できません"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "詳細は\"%s --help\"を実行してください。"
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "コマンドライン引数が多すぎます。(先頭は\"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "データディレクトリが指定されていません"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"警告: CRCチェックサムの計算結果がファイル内の値と一致しません。\n"
+"ファイルの破損、あるいは、本プログラムが想定するレイアウトと異なる\n"
+"可能性があります。以下の結果は信頼できません。\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "警告: 不正なWALセグメントサイズ\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"ファイル中のWALセグメントサイズは %d バイトとなっていますが、これは\n"
+"1MBから1GBまでの2の累乗ではありません。このファイルは壊れており、\n"
+"以下の情報は信頼できません。\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_controlバージョン番号: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "カタログバージョン番号: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "データベースシステム識別子: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "データベースクラスタの状態: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control最終更新: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "最終チェックポイント位置: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "最終チェックポイントのREDO位置: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "最終チェックポイントのREDO WALファイル: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最終チェックポイントの時系列ID: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "最終チェックポイントのPrevTimeLineID: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最終チェックポイントのfull_page_writes: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "オフ"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "オン"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最終チェックポイントのNextXID: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最終チェックポイントのNextOID: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最終チェックポイントのNextMultiXactId: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最終チェックポイントのNextMultiOffset: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最終チェックポイントのoldestXID: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最終チェックポイントのoldestXIDのDB: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最終チェックポイントのoldestActiveXID: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最終チェックポイントのoldestMultiXid: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最終チェックポイントのoldestMultiのDB: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのoldestCommitTsXid: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最終チェックポイントのnewestCommitTsXid: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "最終チェックポイント時刻: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "UNLOGGEDリレーションの偽のLSNカウンタ: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "最小リカバリ終了位置: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "最小リカバリ終了位置のタイムライン: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "バックアップ開始位置: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "バックアップ終了位置: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "必要なバックアップ最終レコード: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "いいえ"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "はい"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_levelの設定: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hintsの設定: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connectionsの設定: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processesの設定: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_sendersの設定: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xactsの設定: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xactの設定: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestampの設定: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "最大データアラインメント: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "データベースのブロックサイズ: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大きなリレーションのセグメント毎のブロック数:%u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WALのブロックサイズ: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WALセグメント当たりのバイト数: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "識別子の最大長: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "インデックス内の最大列数: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOASTチャンクの最大サイズ: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "ラージオブジェクトチャンクのサイズ: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日付/時刻型の格納方式: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64ビット整数"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8引数の渡し方: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "参照渡し"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "値渡し"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "データベージチェックサムのバージョン: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "認証用の疑似nonce: %s\n"
+
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: 読み取り用の\"%s\"ファイルのオープンに失敗しました: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\"ファイルの読み取りに失敗しました: %s\n"
+
+#~ msgid "%s: could not read file \"%s\": read %d of %d\n"
+#~ msgstr "%1$s: ファイル\"%2$s\"を読み込めませんでした: %4$dバイトのうち%3$dバイトを読み込みました\n"
+
+#~ msgid "Prior checkpoint location: %X/%X\n"
+#~ msgstr "前回のチェックポイント位置: %X/%X\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 "Float4 argument passing: %s\n"
+#~ msgstr "Float4引数の渡し方: %s\n"
diff --git a/src/bin/pg_controldata/po/ka.po b/src/bin/pg_controldata/po/ka.po
new file mode 100644
index 0000000..49044c0
--- /dev/null
+++ b/src/bin/pg_controldata/po/ka.po
@@ -0,0 +1,515 @@
+# Georgian message translation file for pg_controldata
+# Copyright (C) 2022 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_controldata (PostgreSQL) package.
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 15\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-07-02 04:51+0000\n"
+"PO-Revision-Date: 2022-07-04 20:26+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "ფაილის (%s) გახსნის შეცდომა: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "ფაილის (%s) წაკითხვის შეცდომა: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "\"%s\"-ის წაკითხვის შეცდომა: წაკითხულია %d %zu-დან"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "ფაილის (%s) დახურვის შეცდომა: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "ბაიტების მიმდევრობა არ ემთხვევა"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the "
+"one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"ბაიტების მიმდევრობის შესაძლო შეუსაბამობა pg_control ფაილის შესანახად "
+"გამოყენებული \n"
+"ბაიტების მიმდევრობა შესაძლოა არ ემთხვეოდეს ამ პროგრამის მიერ გამოყენებულს. "
+"ამ შემთხვევაში ქვემოთ \n"
+"მოცემული შედეგები არასწორი იქნება და PostgreSQL ეს აგება ამ მონაცემთა "
+"საქაღალდესთან შეუთავსებელი იქნება."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "ფაილის (%s) გახსნის შეცდომა: %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "ფაილში (%s) ჩაწერის შეცდომა: %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "ფაილის (%s) fsync-ის შეცდომა: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s გამოიტანს ინფორმაციას PostgreSQL ბაზის კლასტერის შესახებ.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "გამოყენება:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [პარამეტრი]... [მონაცემებისსაქაღალდე]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"პარამეტრები\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR მონაცემების საქაღალდე\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version ვერსიის ინფორმაციის გამოტანა და გასვლა\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help ამ დახმარების ჩვენება და გასვლა\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"თუ მონაცემების საქაღალდე მითითებული არაა, გამოყენებული იქნება \n"
+"გარემოს ცვლადი PGDATA.\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "შეცდომების შესახებ მიწერეთ: <%s>\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s-ის საწყისი გვერდია: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "გაშვება"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "გამორთვა"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "გამორთვა აღდგენსთვის"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "მიმდინარეობს გამორთვა"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "ავარიის აღდგენა"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "არქივიდან აღდგენა"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "წარმოებაში გაშვებული"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "სტატუსის უცნობი კოდი"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "უცნობი wal_level"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "მეტი ინფორმაციისთვის სცადეთ '%s --help'."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "მეტისმეტად ბევრი ბრძანების-სტრიქონის არგუმენტი (პირველია \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "მონაცემების საქაღალდე მითითებული არაა"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this "
+"program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"გაფრთხილება: გამოთვლილი CRC საკონტროლო ჯამი ფაილში შენახულ მნიშვნელობას არ "
+"ემთხვევა. \n"
+"ფაილი ან დაზიანებულია, ან აქვს განსხვავებული მიმდევრობა. ვიდრე \n"
+"პროგრამა ელოდება. ქვემოთ მოყვანილი შედეგები არასანდოა.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "გაფრთხლება: WAL-ის სეგმენტის არასწორი ზომა\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"ფაილში შენახული WAL სეგმენტის ზომა, %d ბაიტი, არ არის ორის \n"
+"ხარისხი1 მბ-დან 1 გბ-მდე. ფაილი დაზიანებულია და ქვემოთ მოცემულია შედეგები\n"
+"არასანდოა.\n"
+msgstr[1] ""
+"ფაილში შენახული WAL სეგმენტის ზომა, %d ბაიტი, არ არის ორის \n"
+"ხარისხი1 მბ-დან 1 გბ-მდე. ფაილი დაზიანებულია და ქვემოთ მოცემულია შედეგები\n"
+"არასანდოა.\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control ვერსიის ნომერი: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "კატალოგის ვერსიის ნომერი: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "ბაზის სისტემური იდენტიფიკატორი: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "ბაზის კლასტერის მდგომარეობა: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control-ის ბოლო ცვლილების დრო: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "საკონტროლო წერტილის უკანასკნელი მდებარეობა: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "საკონტროლო წერტილის REDO-ის უკანასკნელი მდებარეობა: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "უკანასკნელი საკონტროლო წერტილის REDO WAL ფაილი: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილისTimeLineID: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის PrevTimeLineID: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "უახლესი უკანასკნელი საკონტროლო წერტილის full_page_writes: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "გამორთული"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "ჩართ"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextXID: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextOID: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextMultiXactId: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის NextMultiOffset: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestXID: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestXID's DB: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestActiveXID: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestMultiXid: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestMulti's DB: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის oldestCommitTsXid:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "უახლესი საკონტროლო წერტილის newestCommitTsXid:%u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "უახლესი საკონტოლო წერტილის დრო: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "LSN-ის ყალბი მთვლელი არაჟურნალიზებადი ურთ-თვის: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "მინიმალური აღდგენის დასასრულის მდებარეობა %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "მინ. აღდგ დასასრ მდებარ დროის ხაზი: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "მარქაფის დაწყების მდებარეობა: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "მარქაფს დასასრულის მდებარეობა: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "მარქაფის-ბოლო ჩანაწერი აუცილებელია: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "არა"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "დიახ"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level პარამეტრი: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints პარამეტრი: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections პარამეტრი: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes პარამეტრი: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders პარამეტრი: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts პარამეტრი: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact პარამეტრი: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp პარამეტრი: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "მონაცემების სწორების მაქსიმუმი: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "ბაზის ბლოკის ზომა: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "დიდი ურთიერთობის სეგმენტები თითოეულ ბლოკში: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL ბლოკის ზომა: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "ბაიტები თითოეულ WAL სეგმენტში: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "იდენტიფიკატორების მაქსიმალური სიგრძე: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "ინდექსში სვეტების მაქსიმალური რაოდენობა: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST ნაგლეჯის მაქსიმალური ზომა: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "დიდი ობიექტის ნაგლეჯის ზომა: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "თარიღის ტიპის საცავი: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-ბიტიანი მთელ რიცხვები"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 არგუმენტის გადაცემა: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "ბმით"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "მნიშვნელობით"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "მონაცემების გვერდის საკონტროლო ჯამის ვერსია: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "ფსევდოავთენტიკაციის შემთხვევითი რიცხვი: %s\n"
diff --git a/src/bin/pg_controldata/po/ko.po b/src/bin/pg_controldata/po/ko.po
new file mode 100644
index 0000000..4b40dca
--- /dev/null
+++ b/src/bin/pg_controldata/po/ko.po
@@ -0,0 +1,504 @@
+# Korean message translation file for PostgreSQL pg_controldata
+# Ioseph Kim <ioseph@uri.sarang.net>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 16\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-09-07 05:52+0000\n"
+"PO-Revision-Date: 2023-05-30 12:38+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "\"%s\" 파일을 읽기 모드로 열 수 없습니다: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "\"%s\" 파일을 읽을 수 없습니다: %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "\"%s\" 파일을 읽을 수 없음: %d 읽음, 전체 %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:236
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "\"%s\" 파일을 닫을 수 없습니다: %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "바이트 순서 불일치"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"바이트 순서가 일치하지 않습니다.\n"
+"pg_control 파일을 저장하는 데 사용된 바이트 순서는 \n"
+"이 프로그램에서 사용하는 순서와 일치해야 합니다. 이 경우 아래 결과는\n"
+"올바르지 않으며 이 데이터 디렉터리에 PostgreSQL을 설치할 수 없습니다."
+
+#: ../../common/controldata_utils.c:186
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "\"%s\" 파일을 읽을 수 없습니다: %m"
+
+#: ../../common/controldata_utils.c:205
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "\"%s\" 파일을 쓸 수 없습니다: %m"
+
+#: ../../common/controldata_utils.c:224
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "\"%s\" 파일을 fsync 할 수 없습니다: %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s 프로그램은 PostgreSQL 데이터베이스 클러스터의 제어정보를 보여줌.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "사용법:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [옵션] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"옵션들:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 데이터 디렉터리\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 버전 정보 보여주고 마침\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 이 도움말을 보여주고 마침\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"DATADIR인 데이터 디렉터리를 지정하지 않으며, PGDATA 환경 변수값을\n"
+"사용합니다.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "문제점 보고 주소: <%s>\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 홈페이지: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "시작 중"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "중지됨"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "복구 작업 중 중지됨"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "중지 중"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "비정상 종료 복구 중"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "자료 복구 중"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "정상가동중"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "알수 없는 상태 코드"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "알 수 없는 wal_level"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "자세한 사항은 \"%s --help\" 명령으로 살펴보세요."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "너무 많은 명령행 인수를 지정했습니다. (처음 \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "데이터 디렉터리를 지정하지 않았습니다"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"경고: 계산된 CRC 체크섬값이 파일에 있는 값과 틀립니다.\n"
+"이 경우는 파일이 손상되었거나, 이 프로그램과 컨트롤 파일의 버전이 틀린\n"
+"경우입니다. 결과값들은 믿지 못할 값들이 출력될 수 있습니다.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "경고: 잘못된 WAL 조각 크기\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"저장된 WAL 조각 파일의 크기는 %d 바이트입니다. 이 값은 1MB부터 1GB사이\n"
+"2^n 값이 아닙니다. 파일이 손상되었으며, 결과 또한 믿을 수 없습니다.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 버전 번호: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "카탈로그 버전 번호: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "데이터베이스 시스템 식별자: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "데이터베이스 클러스터 상태: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control 마지막 변경시간: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "마지막 체크포인트 위치: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "마지막 체크포인트 REDO 위치: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "마지막 체크포인트 REDO WAL 파일: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "마지막 체크포인트 TimeLineID: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "마지막 체크포인트 PrevTimeLineID: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "마지막 체크포인트 full_page_writes: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "off"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "on"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "마지막 체크포인트 NextXID: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "마지막 체크포인트 NextOID: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "마지막 체크포인트 NextMultiXactId: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "마지막 체크포인트 NextMultiOffset: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "마지막 체크포인트 제일오래된XID: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "마지막 체크포인트 제일오래된XID의 DB: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "마지막 체크포인트 제일오래된ActiveXID:%u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "마지막 체크포인트 제일오래된MultiXid: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "마지막 체크포인트 제일오래된멀티Xid DB:%u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 제일오래된CommitTsXid:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "마지막 체크포인트 최신CommitTsXid: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "마지막 체크포인트 시간: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "언로그 릴레이션의 가짜 LSN 카운터: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "최소 복구 마지막 위치: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "최소 복구 종료 위치의 타임라인: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "백업 시작 위치: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "백업 종료 위치: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "백업 종료 레코드 필요 여부: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "아니오"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "예"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level 설정값: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints 설정값: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections 설정값: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes 설정값: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders 설정값: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts 설정값: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact 설정값: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp 설정값: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "최대 자료 정렬: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "데이터베이스 블록 크기: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "대형 릴레이션의 세그먼트당 블럭 개수: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL 블록 크기: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "WAL 세그먼트의 크기(byte): %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "식별자 최대 길이: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "인덱스에서 사용하는 최대 열 수: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST 청크 최대 크기: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "대형 객체 청크 크기: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "날짜/시간형 자료의 저장방식: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-비트 정수"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 인수 전달: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "참조별"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "값별"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "데이터 페이지 체크섬 버전: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "임시 모의 인증: %s\n"
diff --git a/src/bin/pg_controldata/po/meson.build b/src/bin/pg_controldata/po/meson.build
new file mode 100644
index 0000000..685f1c1
--- /dev/null
+++ b/src/bin/pg_controldata/po/meson.build
@@ -0,0 +1,3 @@
+# Copyright (c) 2022-2023, PostgreSQL Global Development Group
+
+nls_targets += [i18n.gettext('pg_controldata-' + pg_version_major.to_string())]
diff --git a/src/bin/pg_controldata/po/pl.po b/src/bin/pg_controldata/po/pl.po
new file mode 100644
index 0000000..7f52886
--- /dev/null
+++ b/src/bin/pg_controldata/po/pl.po
@@ -0,0 +1,464 @@
+# PG_CONTROLDATA Translated Messages into the Polish Language
+# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
+# Distributed under the same licensing terms as PostgreSQL itself.
+# Begina Felicysym <begina.felicysym@wp.eu>, 2011, 2012, 2013.
+# grzegorz <begina.felicysym@wp.eu>, 2014, 2015, 2016, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL 9.1)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2017-03-14 17:46+0000\n"
+"PO-Revision-Date: 2017-03-14 19:40+0200\n"
+"Last-Translator: grzegorz <begina.felicysym@wp.eu>\n"
+"Language-Team: begina.felicysym@wp.eu\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.7.1\n"
+
+#: ../../common/controldata_utils.c:61
+#, c-format
+msgid "%s: could not open file \"%s\" for reading: %s\n"
+msgstr "%s: nie można otworzyć pliku \"%s\" do odczytu: %s\n"
+
+#: ../../common/controldata_utils.c:74
+#, c-format
+msgid "%s: could not read file \"%s\": %s\n"
+msgstr "%s: nie można czytać z pliku \"%s\": %s\n"
+
+#: ../../common/controldata_utils.c:95
+msgid "byte ordering mismatch"
+msgstr "niepoprawna kolejność bajtów"
+
+#: ../../common/controldata_utils.c:97
+#, c-format
+msgid ""
+"WARNING: possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory.\n"
+msgstr ""
+"OSTRZEŻENIE: możliwe niepoprawna kolejność bajtów\n"
+"Kolejność bajtów używana do przechowywania plików pg_control może nie "
+"pasować\n"
+"do używanej przez ten program. W tym przypadku wynik poniżej jest błędny,\n"
+"a instalacja PostgreSQL byłaby niezgodna z tym folderem danych.\n"
+
+#: pg_controldata.c:33
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s wyświetla informacje kontrolne klastra bazy danych PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:34
+#, c-format
+msgid "Usage:\n"
+msgstr "Składnia:\n"
+
+#: pg_controldata.c:35
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPCJA] [FOLDERDANYCH]\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opcje:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " [-D] DATADIR data directory\n"
+msgstr " [-D] DATADIR folder bazy danych\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version wypisuje informacje o wersji i kończy\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help pokazuje ten ekran pomocy i kończy\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"W przypadku gdy katalog danych nie jest podany (DATADIR), zmienna "
+"środowiskowa PGDATA\n"
+"jest używana.\n"
+"\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr "Błędy proszę przesyłać na adres <pgsql-bugs@postgresql.org>.\n"
+
+#: pg_controldata.c:52
+msgid "starting up"
+msgstr "włączanie"
+
+#: pg_controldata.c:54
+msgid "shut down"
+msgstr "wyłącz bazę danych"
+
+#: pg_controldata.c:56
+msgid "shut down in recovery"
+msgstr "baza danych w trybie odzyskiwania"
+
+#: pg_controldata.c:58
+msgid "shutting down"
+msgstr "wyłączanie bazy danych"
+
+#: pg_controldata.c:60
+msgid "in crash recovery"
+msgstr "w trybie odzyskiwania po awarii programu"
+
+#: pg_controldata.c:62
+msgid "in archive recovery"
+msgstr "w trybie odzyskiwania z archiwum"
+
+#: pg_controldata.c:64
+msgid "in production"
+msgstr "baza danych w trybie produkcji"
+
+#: pg_controldata.c:66
+msgid "unrecognized status code"
+msgstr "nieznany kod statusu"
+
+#: pg_controldata.c:81
+msgid "unrecognized wal_level"
+msgstr "nierozpoznany wal_level"
+
+#: pg_controldata.c:130 pg_controldata.c:148 pg_controldata.c:156
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n"
+
+#: pg_controldata.c:146
+#, c-format
+msgid "%s: too many command-line arguments (first is \"%s\")\n"
+msgstr "%s: za duża ilość parametrów (pierwszy to \"%s\")\n"
+
+#: pg_controldata.c:155
+#, c-format
+msgid "%s: no data directory specified\n"
+msgstr "%s: katalog danych nie został ustawiony\n"
+
+#: pg_controldata.c:163
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"UWAGA: obliczona suma kontrolna CRC pliku nie zgadza się.\n"
+"Albo plik jest uszkodzony albo posiada inny układ niż program się "
+"spodziewał.\n"
+"Rezultaty mogą być niepewne.\n"
+"\n"
+
+#: pg_controldata.c:201
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control w wersji numer: %u\n"
+
+#: pg_controldata.c:203
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalog w wersji numer: %u\n"
+
+#: pg_controldata.c:205
+#, c-format
+msgid "Database system identifier: %s\n"
+msgstr "Identyfikator systemu bazy danych: %s\n"
+
+#: pg_controldata.c:207
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Stan klastra bazy danych: %s\n"
+
+#: pg_controldata.c:209
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control ostatnio modyfikowano: %s\n"
+
+#: pg_controldata.c:211
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Najnowsza lokalizacja punktu kontrolnego: %X/%X\n"
+
+#: pg_controldata.c:214
+#, c-format
+msgid "Prior checkpoint location: %X/%X\n"
+msgstr "Uprzednia lokalizacja punktu kontrolnego: %X/%X\n"
+
+#: pg_controldata.c:217
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Najnowsza lokalizacja punktu kontrolnego REDO: %X/%X\n"
+
+#: pg_controldata.c:220
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Najnowszy plik WAL REDO punktu kontrolnego: %s\n"
+
+#: pg_controldata.c:222
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:224
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:226
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes najnowszego punktu kontrolnego: %s\n"
+
+#: pg_controldata.c:227 pg_controldata.c:272 pg_controldata.c:282
+msgid "off"
+msgstr "wyłączone"
+
+#: pg_controldata.c:227 pg_controldata.c:272 pg_controldata.c:282
+msgid "on"
+msgstr "włączone"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID najnowszego punktu kontrolnego: %u:%u\n"
+
+#: pg_controldata.c:231
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:233
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:235
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:237
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "NextXID najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:239
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB oldestXID'u najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:241
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:243
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:245
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB oldestMulti'u najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:247
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:249
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid najnowszego punktu kontrolnego: %u\n"
+
+#: pg_controldata.c:251
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Czas najnowszego punktu kontrolnego: %s\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Fałszywy licznik LSN dla niezalogowanych rel: %X/%X\n"
+
+#: pg_controldata.c:256
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Położenie zakończenia odzyskiwania minimalnego: %X/%X\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Położenie odzyskiwania min. zak. linii czasu: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Położenie początku kopii zapasowej: %X/%X\n"
+
+#: pg_controldata.c:264
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Położenie końca kopii zapasowej: %X/%X\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Wymagany rekord końca-kopii-zapasowej: %s\n"
+
+#: pg_controldata.c:268
+msgid "no"
+msgstr "nie"
+
+#: pg_controldata.c:268
+msgid "yes"
+msgstr "tak"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "ustawienie wal_level: %s\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "ustawienie wal_log_hints: %s\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "ustawienie max_connections: %d\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "ustawienie max_worker_processes: %d\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "ustawienie max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "ustawienie max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "ustawienie wal_log_hints: %s\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maksymalne wyrównanie danych: %u\n"
+
+#: pg_controldata.c:286
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Wielkość bloku bazy danych: %u\n"
+
+#: pg_controldata.c:288
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Bloki na segment są w relacji: %u\n"
+
+#: pg_controldata.c:290
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Wielkość bloku WAL: %u\n"
+
+#: pg_controldata.c:292
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bajtów na segment WAL: %u\n"
+
+#: pg_controldata.c:294
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maksymalna długość identyfikatorów: %u\n"
+
+#: pg_controldata.c:296
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maksymalna liczba kolumn w indeksie: %u\n"
+
+#: pg_controldata.c:298
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maksymalny rozmiar fragmentu TOAST: %u\n"
+
+#: pg_controldata.c:300
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Rozmiar fragmentu dużego obiektu: %u\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Typ przechowywania daty/czasu: %s\n"
+
+#: pg_controldata.c:304
+msgid "64-bit integers"
+msgstr "64-bitowe zmienne integer"
+
+#: pg_controldata.c:305
+#, c-format
+msgid "Float4 argument passing: %s\n"
+msgstr "Przekazywanie parametru float4: %s\n"
+
+#: pg_controldata.c:306 pg_controldata.c:308
+msgid "by reference"
+msgstr "przez referencję"
+
+#: pg_controldata.c:306 pg_controldata.c:308
+msgid "by value"
+msgstr "przez wartość"
+
+#: pg_controldata.c:307
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Przekazywanie parametru float8: %s\n"
+
+#: pg_controldata.c:309
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Suma kontrolna strony danych w wersji numer: %u\n"
+
+#: pg_controldata.c:311
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Makiety autoryzacji nonce: %s\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "liczby zmiennoprzecinkowe"
+
+#~ msgid "calculated CRC checksum does not match value stored in file"
+#~ msgstr "wyliczona suma kontrolna CRC nie pasuje do wartości przechowywanej w pliku"
diff --git a/src/bin/pg_controldata/po/pt_BR.po b/src/bin/pg_controldata/po/pt_BR.po
new file mode 100644
index 0000000..4a697d5
--- /dev/null
+++ b/src/bin/pg_controldata/po/pt_BR.po
@@ -0,0 +1,512 @@
+# Brazilian Portuguese message translation file for pg_controldata
+
+# 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: 2023-09-05 08:59+0200\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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "não pôde abrir arquivo \"%s\" para leitura: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "não pôde ler arquivo \"%s\": %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "não pôde ler arquivo \"%s\", leu %d de %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "não pôde fechar arquivo \"%s\": %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "ordenação de bytes não corresponde"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"possível não correspondência da ordenação de bytes\n"
+"A ordenação de bytes utilizada para armazenar o arquivo pg_control pode não \n"
+"corresponder com a utilizada por este programa. Neste caso os resultados abaixo\n"
+"seriam incorretos, e a instalação do PostgreSQL seria incompatível com o diretório de dados."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "não pôde abrir arquivo \"%s\": %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "não pôde escrever no arquivo \"%s\": %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "não pôde executar fsync no arquivo \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s mostra informações de controle de um agrupamento de banco de dados PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Uso:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPÇÃO] [DIRDADOS]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Opções:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DIRDADOS diretório de dados\n"
+
+#: pg_controldata.c:40
+#, 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_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help mostra essa ajuda e termina\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Se o diretório de dados (DIRDADOS) não for especificado, a variável de ambiente PGDATA\n"
+"é utilizada.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Relate erros a <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Página web do %s: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "iniciando"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "desligado"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "desligado em recuperação"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "desligando"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "recuperando de uma queda"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "recuperando de uma cópia"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "em produção"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "código de status desconhecido"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "wal_level desconhecido"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Tente \"%s --help\" para obter informações adicionais."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "muitos argumentos de linha de comando (primeiro é \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "nenhum diretório de dados foi especificado"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"AVISO: A soma de verificação de CRC não é a mesma do valor armazenado no arquivo.\n"
+"O arquivo está corrompido ou tem um formato diferente do que este programa\n"
+"está esperando. Os resultados abaixo não são confiáveis.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "AVISO: tamanho do segmento do WAL inválido\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Tamanho do segmento do WAL armazenado no arquivo, %d byte, não é uma potência de\n"
+"dois entre 1 MB e 1 GB. O arquivo está corrompido e os resultados abaixos não são\n"
+"confiáveis.\n"
+msgstr[1] ""
+"Tamanho do segmento do WAL armazenado no arquivo, %d bytes, não é uma potência de\n"
+"dois entre 1 MB e 1 GB. O arquivo está corrompido e os resultados abaixos não são\n"
+"confiáveis.\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "número da versão do pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Número da versão do catálogo: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Identificador do sistema de banco de dados: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Estado do agrupamento de banco de dados: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "Última modificação do pg_control: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Local do último ponto de controle: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Local de REDO do último ponto de controle: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Arquivo com REDO do último ponto de controle: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "full_page_writes do último ponto de controle: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "desabilitado"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "habilitado"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID do último ponto de controle: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId do último ponto de controle: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset do último ponto de controle: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "BD do oldestXID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID do último ponto de controle: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid do último ponto de controle: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "BD do oldestMulti do último ponto de controle: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid do último ponto de controle: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid do último ponto de controle: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Hora do último ponto de controle: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Contador LSN falso para relações unlogged: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Local final mínimo de recuperação: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Linha do tempo do local final mínimo de recuperação: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Local de início da cópia de segurança: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Local de fim da cópia de segurança: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Registro de fim-da-cópia-de-segurança requerido: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "não"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "sim"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "Definição de wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "Definição de wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "Definição de max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "Definição de max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "Definição de max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "Definição de max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "Definição de max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "Definição de track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Máximo alinhamento de dado: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Tamanho do bloco do banco de dados: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Blocos por segmento da relação grande: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Tamanho do bloco do WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Bytes por segmento do WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Tamanho máximo de identificadores: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Máximo de colunas em um índice: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Tamanho máximo do bloco TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Tamanho máximo do bloco de objeto grande: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tipo de data/hora do repositório: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "inteiros de 64 bits"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Passagem de argumento float8: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "por referência"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "por valor"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Versão da verificação de páginas de dados: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "nonce para autenticação simulada: %s\n"
diff --git a/src/bin/pg_controldata/po/ru.po b/src/bin/pg_controldata/po/ru.po
new file mode 100644
index 0000000..430ec92
--- /dev/null
+++ b/src/bin/pg_controldata/po/ru.po
@@ -0,0 +1,585 @@
+# Russian message translation file for pg_controldata
+# 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-2004.
+# Oleg Bartunov <oleg@sai.msu.su>, 2004.
+# Andrey Sudnik <sudnikand@gmail.com>, 2011.
+# Alexander Lakhin <exclusion@gmail.com>, 2012-2017, 2018, 2019, 2020, 2021, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL current)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-11-03 09:08+0300\n"
+"PO-Revision-Date: 2022-09-05 13:34+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"
+
+#: ../../common/controldata_utils.c:83
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не удалось открыть файл \"%s\" для чтения: %m"
+
+#: ../../common/controldata_utils.c:96
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не удалось прочитать файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:105
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "не удалось прочитать файл \"%s\" (прочитано байт: %d из %zu)"
+
+#: ../../common/controldata_utils.c:118 ../../common/controldata_utils.c:266
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "не удалось закрыть файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:154
+msgid "byte ordering mismatch"
+msgstr "несоответствие порядка байт"
+
+#: ../../common/controldata_utils.c:156
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"возможно несоответствие порядка байт\n"
+"Порядок байт в файле pg_control может не соответствовать используемому\n"
+"этой программой. В этом случае результаты будут неверными и\n"
+"установленный PostgreSQL будет несовместим с этим каталогом данных."
+
+#: ../../common/controldata_utils.c:216
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не удалось открыть файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:235
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не удалось записать файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:254
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "не удалось синхронизировать с ФС файл \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s показывает информацию о работе кластера баз PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Использование:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [ПАРАМЕТР] [КАТ_ДАННЫХ]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Параметры:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]КАТ_ДАННЫХ каталог данных\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version показать версию и выйти\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показать эту справку и выйти\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Если каталог данных (КАТ_ДАННЫХ) не задан, используется значение\n"
+"переменной окружения PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Об ошибках сообщайте по адресу <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашняя страница %s: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "запускается"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "выключен"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "выключен при восстановлении"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "выключение"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "восстановление после сбоя"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "восстановление из архива"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "в работе"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "нераспознанный код состояния"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "нераспознанный уровень WAL"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Для дополнительной информации попробуйте \"%s --help\"."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "слишком много аргументов командной строки (первый: \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог данных не указан"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: Вычисленная контрольная сумма не совпадает со значением в "
+"файле.\n"
+"Либо файл повреждён, либо его формат отличается от ожидаемого.\n"
+"Следующая информация может быть недостоверной.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: неверный размер сегмента WAL\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Сохранённый в этом файле размер сегмента WAL (байт: %d) не является "
+"степенью\n"
+"двух между 1 МБ и 1 ГБ. Файл испорчен, выводимая ниже информация\n"
+"подлежит сомнению.\n"
+"\n"
+msgstr[1] ""
+"Сохранённый в этом файле размер сегмента WAL (байт: %d) не является "
+"степенью\n"
+"двух между 1 МБ и 1 ГБ. Файл испорчен, выводимая ниже информация\n"
+"подлежит сомнению.\n"
+"\n"
+msgstr[2] ""
+"Сохранённый в этом файле размер сегмента WAL (байт: %d) не является "
+"степенью\n"
+"двух между 1 МБ и 1 ГБ. Файл испорчен, выводимая ниже информация\n"
+"подлежит сомнению.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Номер версии pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версии каталога: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Идентификатор системы баз данных: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Состояние кластера БД: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "Последнее обновление pg_control: %s\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Положение последней конт. точки: %X/%X\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Положение REDO последней конт. точки: %X/%X\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Файл WAL c REDO последней к. т.: %s\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Линия времени последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "Пред. линия времени последней к. т.: %u\n"
+
+# skip-rule: no-space-after-period
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Режим full_page_writes последней к.т: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "выкл."
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "вкл."
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID последней конт. точки: %u:%u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset послед. конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "БД с oldestXID последней конт. точки: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid последней конт. точки: %u\n"
+
+# skip-rule: double-space, capital-letter-first
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "БД с oldestMulti последней к. т.: %u\n"
+
+# skip-rule: double-space, capital-letter-first
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid последней к. т.: %u\n"
+
+# skip-rule: capital-letter-first, double-space
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid последней к. т.: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Время последней контрольной точки: %s\n"
+
+# skip-rule: capital-letter-first
+# well-spelled: нежурналир
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Фиктивный LSN для нежурналир. таблиц: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Мин. положение конца восстановления: %X/%X\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Линия времени мин. положения к. в.: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Положение начала копии: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Положение конца копии: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Требуется запись конец-копии: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "нет"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "да"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "Значение wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "Значение wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "Значение max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "Значение max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "Значение max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "Значение max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "Значение max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "Значение track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Макс. предел выравнивания данных: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Размер блока БД: %u\n"
+
+# skip-rule: double-space
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоков в макс. сегменте отношений: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Размер блока WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байт в сегменте WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальная длина идентификаторов: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Макс. число столбцов в индексе: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальный размер порции TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Размер порции большого объекта: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Формат хранения даты/времени: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-битные целые"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргумента float8: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "по ссылке"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "по значению"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версия контрольных сумм страниц: %u\n"
+
+# skip-rule: capital-letter-first
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Случ. число для псевдоаутентификации: %s\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Об ошибках сообщайте по адресу <pgsql-bugs@lists.postgresql.org>.\n"
+
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Передача аргумента Float4: %s\n"
+
+# skip-rule: capital-letter-first
+#~ msgid "Prior checkpoint location: %X/%X\n"
+#~ msgstr "Положение предыдущей конт. точки: %X/%X\n"
+
+#~ msgid "calculated CRC checksum does not match value stored in file"
+#~ msgstr ""
+#~ "вычисленная контрольная сумма (CRC) не соответствует значению, "
+#~ "сохранённому в файле"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "числа с плавающей точкой"
+
+#~ msgid ""
+#~ "Usage:\n"
+#~ " %s [OPTION] [DATADIR]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " --help show this help, then exit\n"
+#~ " --version output version information, then exit\n"
+#~ msgstr ""
+#~ "Использование:\n"
+#~ " %s [ПАРАМЕТР] [КАТАЛОГ_ДАННЫХ]\n"
+#~ "\n"
+#~ "Параметры:\n"
+#~ " --help показать эту справку и выйти\n"
+#~ " --version показать версию и выйти\n"
+
+#~ msgid "enabled"
+#~ msgstr "включен"
+
+#~ msgid "disabled"
+#~ msgstr "отключен"
diff --git a/src/bin/pg_controldata/po/sv.po b/src/bin/pg_controldata/po/sv.po
new file mode 100644
index 0000000..9836890
--- /dev/null
+++ b/src/bin/pg_controldata/po/sv.po
@@ -0,0 +1,518 @@
+# Swedish message translation file for pg_controldata
+# This file is put in the public domain.
+# Dennis Björklund <db@zigo.dhs.org>, 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021, 2022.
+# Mats Erik Andersson <bsd@gisladisker.se>, 2014.
+#
+# 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-04-11 09:21+0000\n"
+"PO-Revision-Date: 2023-08-17 16:56+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"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "kunde inte öppna filen \"%s\" för läsning: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "kunde inte läsa fil \"%s\": %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "kunde inte läsa fil \"%s\": läste %d av %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "kunde inte stänga fil \"%s\": %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "byte-ordning stämmer inte"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"möjligt fel i byteordning\n"
+"Den byteordning som filen från pg_control lagrats med passar kanske\n"
+"inte detta program. I så fall kan nedanstående resultat vara felaktiga\n"
+"och PostgreSQL-installationen vara inkompatibel med databaskatalogen."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "kunde inte öppna fil \"%s\": %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "kunde inte skriva fil \"%s\": %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "kunde inte fsync:a fil \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s visar kontrollinformation om ett databaskluster för PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Användning:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [FLAGGA] [DATAKATALOG]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Flaggor:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR datakatalog\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version visa versionsinformation, avsluta sedan\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help visa den här hjälpen, avsluta sedan\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Om ingen datakatalog (DATAKATALOG) har angivits så nyttjas omgivningsvariabeln\n"
+"PGDATA för detta syfte.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapportera fel till <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "hemsida för %s: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "startar"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "avstängt"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "avslutat med återställning"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "stänger ner"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "återställer efter krash"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "utför arkivåterställning"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "i full drift"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "okänd statuskod"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "okänd wal_level"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Försök med \"%s --help\" för mer information."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "för många kommandoradsargument (första är \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "ingen datakatalog angiven"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"VARNING: Beräknad CRC-kontrollsumma matchar inte det värde som har sparats i filen.\n"
+"Antingen är filen trasig, eller så har den en annan uppbyggnad än vad detta\n"
+"program förväntade sig. Resultatet nedan är inte helt tillförlitligt.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "VARNING: ogiltig WAL-segmentstorlek\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"WAL-segmentstorleken sparad i filen, %d byte, är inte en tvåpotens\n"
+"mellan 1 MB och 1 GB. Filen är trasig och resultatet nedan går\n"
+"ej att lita på.\n"
+"\n"
+msgstr[1] ""
+"WAL-segmentstorleken sparad i filen, %d byte, är inte en tvåpotens\n"
+"mellan 1 MB och 1 GB. Filen är trasig och resultatet nedan går\n"
+"ej att lita på.\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+# Sep. 6th, 2014:
+# Insert additional spaces in translated strings for the
+# purpose of alignment. Of lingustic reasons the separation
+# used for English is insufficient for Swedish. New indenting
+# is consistent for all reporting statements: six additional
+# space characters.
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "Versionsnummer för pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalogversion: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Databasens systemidentifierare: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Databasklustrets tillstånd: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control ändrades senast: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Läge för senaste kontrollpunkt: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "REDO-läge för senaste kontrollpunkt: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "REDO-WAL-fil vid senaste kontrollpunkt: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Senaste kontrollpunktens full_page_writes: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "av"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "på"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID vid senaste kontrollpunkt: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "oldestXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "DB för oldestXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "oldestActiveXID vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "oldestMultiXid vid senaste kontrollpunkt: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "DB för oldestMulti vid senaste kontrollpkt: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "oldestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "newestCommitTsXid vid senaste kontrollpunkt:%u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Tidpunkt för senaste kontrollpunkt: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Beräknat LSN-tal av ologgade relationer: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Minsta slutposition vid återställning: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Tidslinje för min slutpos vid återställning:%u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Startpunkt för backup: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Slutpunkt för backup: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Tvingande markering av backupslut: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "nej"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "ja"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "Värde på wal_level: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "Värde på wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "Värde på max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "Värde på max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "Värde på max_wal_senders setting %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "Värde på max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "Nuvarande max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "Värde på track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Maximal jämkning av data (alignment): %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Databasens blockstorlek: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Block per segment i en stor relation: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Blockstorlek i transaktionsloggen: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Segmentstorlek i transaktionsloggen: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Maximal längd för identifierare: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Maximalt antal kolonner i ett index: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Maximal storlek för en TOAST-enhet: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Storlek för large-object-enheter: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Representation av dag och tid: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-bitars heltal"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Överföring av float8-argument: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "med referens"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "med värde"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Checksummaversion för datasidor: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Fejkat authentiseringsvärde: %s\n"
diff --git a/src/bin/pg_controldata/po/tr.po b/src/bin/pg_controldata/po/tr.po
new file mode 100644
index 0000000..528889f
--- /dev/null
+++ b/src/bin/pg_controldata/po/tr.po
@@ -0,0 +1,555 @@
+# translation of pg_controldata.po to Turkish
+# Devrim GUNDUZ <devrim@CommandPrompt.com>, 2004, 2005, 2006.
+# Nicolai TUFAR <ntufar@gmail.com>, 2004, 2005, 2006.
+# Abdullah Gülner <agulner@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata-tr\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2018-11-27 07:46+0000\n"
+"PO-Revision-Date: 2018-11-27 16:39+0300\n"
+"Last-Translator: Abdullah Gülner\n"
+"Language-Team: Turkish <ceviri@postgresql.org.tr>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../../common/controldata_utils.c:62
+#, c-format
+msgid "%s: could not open file \"%s\" for reading: %s\n"
+msgstr "%s: \"%s\" dosyası okunmak için açılamadı: %s\n"
+
+#: ../../common/controldata_utils.c:78
+#, c-format
+msgid "%s: could not read file \"%s\": %s\n"
+msgstr "%s: \"%s\" dosyası okunamadı: %s\n"
+
+#: ../../common/controldata_utils.c:90
+#, c-format
+msgid "%s: could not read file \"%s\": read %d of %d\n"
+msgstr ""
+"%1$s: \"%2$s\" dosyası okuma hatası: %4$d nin %3$d si okundu\n"
+
+#: ../../common/controldata_utils.c:112
+msgid "byte ordering mismatch"
+msgstr "byte sıralama uyuşmazlığı"
+
+#: ../../common/controldata_utils.c:114
+#, c-format
+msgid ""
+"WARNING: possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not "
+"match the one\n"
+"used by this program. In that case the results below would be "
+"incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this "
+"data directory.\n"
+msgstr ""
+"UYARI: olası bayt sıralama uyumsuzluğu\n"
+"pg_control dosyasını saklamak için kullanılan bayt sıralaması, "
+"bu program\n"
+"tarafından kullanılan sıralama ile uyuşmayabilir. Bu durumda "
+"aşağıdaki\n"
+"sonuçlar yanlış olacak ve PostgreSQL kurulumu bu veri dizini "
+"ile uyumsuz\n"
+"olacaktır.\n"
+
+#: pg_controldata.c:34
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database "
+"cluster.\n"
+"\n"
+msgstr ""
+"%s PostgreSQL veritabanı kümesinin kontrol bilgisini "
+"gösterir.\n"
+"\n"
+
+#: pg_controldata.c:35
+#, c-format
+msgid "Usage:\n"
+msgstr "Kullanımı:\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [SEÇENEK] [DATADIR]\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Seçenekler:\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR veri dizini\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid ""
+" -V, --version output version information, then "
+"exit\n"
+msgstr ""
+" -V, --version sürüm bilgisini göster, sonra çık\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help bu yardımı göster, sonra çık\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment "
+"variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Eğer hiçbir veri dizini (DATADIR) belirtilmezse, PGDATA "
+"çevresel değişkeni\n"
+"kullanılır.\n"
+"\n"
+
+#: pg_controldata.c:43
+#, c-format
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr ""
+"Hataları <pgsql-bugs@postgresql.org> adresine "
+"bildirebilirsiniz.\n"
+
+#: pg_controldata.c:53
+msgid "starting up"
+msgstr "başlıyor"
+
+#: pg_controldata.c:55
+msgid "shut down"
+msgstr "kapat"
+
+#: pg_controldata.c:57
+msgid "shut down in recovery"
+msgstr "kurtarma modunda kapatma"
+
+#: pg_controldata.c:59
+msgid "shutting down"
+msgstr "kapanıyor"
+
+#: pg_controldata.c:61
+msgid "in crash recovery"
+msgstr "çöküş (crash) kurtarma modunda"
+
+#: pg_controldata.c:63
+msgid "in archive recovery"
+msgstr "arşiv kurtarma modunda"
+
+#: pg_controldata.c:65
+msgid "in production"
+msgstr "üretim modunda"
+
+#: pg_controldata.c:67
+msgid "unrecognized status code"
+msgstr "tanımlayamayan durum kodu"
+
+#: pg_controldata.c:82
+msgid "unrecognized wal_level"
+msgstr "tanımsız wal_level değeri"
+
+#: pg_controldata.c:136 pg_controldata.c:154 pg_controldata.c:162
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr ""
+"Ayrıntılı bilgi için \"%s --help\" komutunu "
+"kullanabilirsiniz.\n"
+
+#: pg_controldata.c:152
+#, c-format
+msgid "%s: too many command-line arguments (first is \"%s\")\n"
+msgstr "%s: Çok fazla komut satırı girdisi var (ilki \"%s\")\n"
+
+#: pg_controldata.c:161
+#, c-format
+msgid "%s: no data directory specified\n"
+msgstr "%s: hiçbir veri dizini belirtilmedi\n"
+
+#: pg_controldata.c:169
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored "
+"in file.\n"
+"Either the file is corrupt, or it has a different layout than "
+"this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"UYARI: Hesaplanan CRC kontrol toplamı dosyadakinden farklı.\n"
+"Dosya zarar görmüş ya da bu programın beklediğinden farklı \n"
+"bir yapıya sahip olabilir. Aşağıdaki sonuçlar güvenilir "
+"değildir.\n"
+"\n"
+
+#: pg_controldata.c:178
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "UYARI: geçersiz WAL kesim boyutu (segment size)\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a "
+"power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results "
+"below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a "
+"power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results "
+"below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"Dosyada tutulan WAL segment boyutu, %d bayt, 1MB ve 1GB \n"
+"arasında ikinin bir üssü değil. Dosya bozuk ve aşağıdaki "
+"sonuçlar\n"
+"güvenilmez.\n"
+msgstr[1] ""
+"Dosyada tutulan WAL segment boyutu, %d bayt, 1MB ve 1GB \n"
+"arasında ikinin bir üssü değil. Dosya bozuk ve aşağıdaki "
+"sonuçlar\n"
+"güvenilmez.\n"
+
+#: pg_controldata.c:221
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control sürüm numarası: %u\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Katalog sürüm numarası: %u\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Database system identifier: %s\n"
+msgstr "Veritabanı sistem belirteci: %s\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Veritabanı kümesinin durumu: %s\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control son düzenlenme tarihi: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "En son checkpoint yeri: %X/%X\n"
+
+#: pg_controldata.c:247
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "En son checkpoint'in REDO yeri: %X/%X\n"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "En son checkpoint'in REDO WAL dosyası: %s\n"
+
+#: pg_controldata.c:252
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "En son checkpoint'in TimeLineID'si: %u\n"
+
+#: pg_controldata.c:254
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "En son checkpoint'in PrevTimeLineID'si: %u\n"
+
+#: pg_controldata.c:256
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "En son checkpoint'in full_page_writes'ı: %s\n"
+
+#: pg_controldata.c:257 pg_controldata.c:302 pg_controldata.c:312
+msgid "off"
+msgstr "kapalı"
+
+#: pg_controldata.c:257 pg_controldata.c:302 pg_controldata.c:312
+msgid "on"
+msgstr "açık"
+
+#: pg_controldata.c:258
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "En son checkpoint'in NextXID'si: %u:%u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "En son checkpoint'in NextOID'si: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "En son checkpoint'in NextMultiXactId'si: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "En son checkpoint'in NextMultiOffset'i: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "En son checkpoint'in oldestXID'si: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "En son checkpoint'in oldestXID'sini DB'si: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "En son checkpoint'in odestActiveXID'si: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "En son checkpoint'in oldestMultiXid'si: %u\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "En son checkpoint'in oldestMulti'sinin DB'si: %u\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "En son checkpoint'in oldestCommitTsXid'si: %u\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "En son checkpoint'in newestCommitTsXid'si: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "En son checkpoint'in zamanı: %s\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Loglanmayan nesneler için sahte LSN sayacı: %X/%X\n"
+
+#: pg_controldata.c:286
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Minimum kurtarma sonlandırma yeri: %X/%X\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr ""
+"Minimum kurtarma sonlandırma yerinin zaman çizelgesi: %u\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Yedek başlama yeri: %X/%X\n"
+
+#: pg_controldata.c:294
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Yedek bitiş yeri: %X/%X\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Yedek sonu kaydı gerekiyor: %s\n"
+
+#: pg_controldata.c:298
+msgid "no"
+msgstr "hayır"
+
+#: pg_controldata.c:298
+msgid "yes"
+msgstr "evet"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level ayarı: %s\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints ayarı: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections ayarı: %d\n"
+
+#: pg_controldata.c:305
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes ayarı: %d\n"
+
+#: pg_controldata.c:307
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts ayarı: %d\n"
+
+#: pg_controldata.c:309
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact ayarı: %d\n"
+
+#: pg_controldata.c:311
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp ayarı: %s\n"
+
+#: pg_controldata.c:313
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Azami veri hizalama: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Veritabanı blok boyutu: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Büyük ilişkilerin parçası başına blok sayısı: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL blok boyutu: %u\n"
+
+#: pg_controldata.c:322
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr ""
+"Her bir WAL parçası başına byte sayısı: %u\n"
+
+#: pg_controldata.c:324
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Belirteçlerin en fazla uzunluğu: %u\n"
+
+#: pg_controldata.c:326
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "İndekste en fazla kolon sayısı: %u\n"
+
+#: pg_controldata.c:328
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST parçasının en yüksek boyutu: %u\n"
+
+#: pg_controldata.c:330
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Bir büyük-nesne parçasının boyutu: %u\n"
+
+#: pg_controldata.c:333
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Tarih/zaman tipi saklanması: %s\n"
+
+#: pg_controldata.c:334
+msgid "64-bit integers"
+msgstr "64-bit tamsayı"
+
+#: pg_controldata.c:335
+#, c-format
+msgid "Float4 argument passing: %s\n"
+msgstr "Float4 argument passing: %s\n"
+
+#: pg_controldata.c:336 pg_controldata.c:338
+msgid "by reference"
+msgstr "referans ile"
+
+#: pg_controldata.c:336 pg_controldata.c:338
+msgid "by value"
+msgstr "değer ile"
+
+#: pg_controldata.c:337
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 argument passing: %s\n"
+
+#: pg_controldata.c:339
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr ""
+"Veri sayfası sağlama (checksum) sürümü: %u\n"
+
+#: pg_controldata.c:341
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Sahte (mock) kimlik doğrulaması nonce'u: %s\n"
+
+#~ msgid ""
+#~ "Usage:\n"
+#~ " %s [OPTION] [DATADIR]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " --help show this help, then exit\n"
+#~ " --version output version information, then exit\n"
+#~ msgstr ""
+#~ "Kullanımı:\n"
+#~ " %s [SEÇENEK] [VERİ_DİZİNİ]\n"
+#~ "\n"
+#~ "SEÇENEKLER:\n"
+#~ " --help bu yardımı gösterir ve sonra çıkar\n"
+#~ " --version sürüm bilgisini gösterir ve çıkar\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "kayan noktalı sayılar"
+
+#~ msgid "Maximum length of locale name: %u\n"
+#~ msgstr "Yerel adının en fazla büyüklüğü: %u\n"
+
+#~ msgid "LC_COLLATE: %s\n"
+#~ msgstr "LC_COLLATE: %s\n"
+
+#~ msgid "LC_CTYPE: %s\n"
+#~ msgstr "LC_CTYPE: %s\n"
+
+#~ msgid "Prior checkpoint location: %X/%X\n"
+#~ msgstr "Önceki checkpoint yeri: %X/%X\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help bu yardımı göster, sonra çık\n"
+
+#~ msgid ""
+#~ " -V, --version output version information, then exit\n"
+#~ msgstr " -V, --version sürüm bilgisini göster, sonra çık\n"
+
+#~ msgid " [-D] DATADIR data directory\n"
+#~ msgstr " [-D] DATADIR veri dizini\n"
diff --git a/src/bin/pg_controldata/po/uk.po b/src/bin/pg_controldata/po/uk.po
new file mode 100644
index 0000000..758c4c1
--- /dev/null
+++ b/src/bin/pg_controldata/po/uk.po
@@ -0,0 +1,480 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: postgresql\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2022-08-12 10:51+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_controldata.pot\n"
+"X-Crowdin-File-ID: 924\n"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "не вдалося відкрити файл \"%s\" для читання: %m"
+
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "не вдалося прочитати файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "не вдалося прочитати файл \"%s\": прочитано %d з %zu"
+
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:244
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "неможливо закрити файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "неправильний порядок байтів"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid "possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr "можлива помилка у послідовності байтів.\n"
+"Порядок байтів, що використовують для зберігання файлу pg_control, може не відповідати тому, який використовується цією програмою. У такому випадку результати нижче будуть неправильним, і інсталяція PostgreSQL буде несумісною з цим каталогом даних."
+
+#: ../../common/controldata_utils.c:194
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не можливо відкрити файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:213
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "не вдалося записати файл \"%s\": %m"
+
+#: ../../common/controldata_utils.c:232
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "не вдалося fsync файл \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid "%s displays control information of a PostgreSQL database cluster.\n\n"
+msgstr "%s відображає контрольну інформацію щодо кластеру PostgreSQL.\n\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "Використання:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPTION] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid "\n"
+"Options:\n"
+msgstr "\n"
+"Параметри:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR каталог з даними\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version вивести інформацію про версію і вийти\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help показати цю довідку потім вийти\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid "\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n\n"
+msgstr "\n"
+"Якщо каталог даних не вказано (DATADIR), використовується змінна середовища PGDATA.\n\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Повідомляти про помилки на <%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашня сторінка %s: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "запуск"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "завершення роботи"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "завершення роботи у відновленні"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "завершення роботи"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "відновлення при збої"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "відновлення в архіві"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "у виробництві"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "невизнаний код статусу"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "невизнаний wal_рівень"
+
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Спробуйте \"%s --help\" для додаткової інформації."
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "забагато аргументів у командному рядку (перший \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "каталог даних не вказано"
+
+#: pg_controldata.c:170
+#, c-format
+msgid "WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n\n"
+msgstr "ПОПЕРЕДЖЕННЯ: Контрольна сума CRC не відповідає збереженому значенню у файлі. Або файл пошкоджено, або він містить іншу структуру, ніж очікує ця програма. Результати нижче є недостовірними.\n\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "ПОПЕРЕДЖЕННЯ: неправильний розмір WAL сегменту \n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid "The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n\n"
+msgid_plural "The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n\n"
+msgstr[0] "Розмір WAL сегменту збережений у файлі, %d байт, не є степенем двійки між 1 MB та 1 GB. Файл пошкоджено та результати нижче є недостовірними.\n\n"
+msgstr[1] "Розмір WAL сегменту збережений у файлі, %d байтів, не є степенем двійки між 1 MB та 1 GB. Файл пошкоджено та результати нижче є недостовірними.\n\n"
+msgstr[2] "Розмір WAL сегменту збережений у файлі, %d байтів, не є степенем двійки між 1 MB та 1 GB. Файл пошкоджено та результати нижче є недостовірними.\n\n"
+msgstr[3] "Розмір WAL сегменту збережений у файлі, %d байта, не є степенем двійки між 1 MB та 1 GB. Файл пошкоджено та результати нижче є недостовірними.\n\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control номер версії: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Номер версії каталогу: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "Системний ідентифікатор бази даних: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Стан кластеру бази даних: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control був модифікований востаннє: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Останнє місце знаходження контрольної точки: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Розташування останньої контрольної точки: %X%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Останній файл контрольної точки REDO WAL: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "Останній TimeLineID контрольної точки: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "Останній PrevTimeLineID контрольної точки: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Останній full_page_writes контрольної точки: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "вимк"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "увімк"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "Останній NextXID контрольної точки: %u%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "Останній NextOID контрольної точки: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "Останній NextMultiXactId контрольної точки: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "Останній NextMultiOffset контрольної точки: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "Останній oldestXID контрольної точки: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "Остання DB останнього oldestXID контрольної точки: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "Останній oldestActiveXID контрольної точки: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "Останній oldestMultiXid контрольної точки: %u \n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "Остання DB останньої oldestMulti контрольної точки: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "Останній oldestCommitTsXid контрольної точки:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "Останній newestCommitTsXid контрольної точки: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Час останньої контрольної точки: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Фіктивний LSN для таблиць без журналювання: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Мінімальне розташування кінця відновлення: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Мінімальна позиція історії часу завершення відновлення: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Початкове розташування резервного копіювання: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Кінцеве розташування резервного копіювання: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Вимагається запис кінця резервного копіювання: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "ні"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "так"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "налаштування wal_рівня: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "налаштування wal_log_hints: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "налаштування max_connections: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "налаштування max_worker_processes: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "налаштування max_wal_senders: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "налаштування max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "налаштування max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "налаштування track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Максимальне вирівнювання даних: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Розмір блоку бази даних: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Блоків на сегмент великого відношення: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Pозмір блоку WAL: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Байтів на сегмент WAL: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Максимальна довжина ідентифікаторів: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Максимальна кількість стовпців в індексі: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Максимальний розмір сегменту TOAST: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Розмір сегменту великих обїєктів: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Дата/час типу сховища: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64-бітні цілі"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Передача аргументу Float8: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "за посиланням"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "за значенням"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Версія контрольних сум сторінок даних: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Імітувати нонс для аутентифікації: %s\n"
+
diff --git a/src/bin/pg_controldata/po/vi.po b/src/bin/pg_controldata/po/vi.po
new file mode 100644
index 0000000..019b7b0
--- /dev/null
+++ b/src/bin/pg_controldata/po/vi.po
@@ -0,0 +1,476 @@
+# LANGUAGE message translation file for pg_controldata
+# Copyright (C) 2018 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_controldata (PostgreSQL) package.
+# FIRST AUTHOR <kakalot49@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 11\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2018-04-22 12:17+0000\n"
+"PO-Revision-Date: 2018-05-04 22:20+0900\n"
+"Language-Team: <pgvn_translators@postgresql.vn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.6\n"
+"Last-Translator: Dang Minh Huong <kakalot49@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: vi_VN\n"
+
+#: ../../common/controldata_utils.c:61
+#, c-format
+msgid "%s: could not open file \"%s\" for reading: %s\n"
+msgstr "%s: không thể mở tệp \"%s\" để đọc: %s\n"
+
+#: ../../common/controldata_utils.c:74
+#, c-format
+msgid "%s: could not read file \"%s\": %s\n"
+msgstr "%s: không đọc được tệp \"%s\": %s\n"
+
+#: ../../common/controldata_utils.c:95
+msgid "byte ordering mismatch"
+msgstr "thứ tự byte không khớp"
+
+#: ../../common/controldata_utils.c:97
+#, c-format
+msgid ""
+"WARNING: possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the "
+"one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data "
+"directory.\n"
+msgstr ""
+"CẢNH BÁO: có thể sắp xếp thứ tự byte không khớp\n"
+"Thứ tự byte được sử dụng để lưu trữ tệp pg_control có thể không khớp với\n"
+"cái được sử dụng bởi chương trình này. Trong trường hợp đó, kết quả bên\n"
+"dưới sẽ không chính xác và cài đặt PostgreSQL sẽ không tương thích với \n"
+"thư mục dữ liệu này.\n"
+
+#: pg_controldata.c:34
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s hiển thị thông tin điều khiển của hệ thống cơ sở dữ liệu PostgreSQL.\n"
+"\n"
+
+#: pg_controldata.c:35
+#, c-format
+msgid "Usage:\n"
+msgstr "Cách sử dụng:\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [TÙY CHỌN] [DATADIR]\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"Options:\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid " [-D,--pgdata=]DATADIR data directory\n"
+msgstr " [-D,--pgdata=]DATADIR thư mục dữ liệu\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr ""
+" -V, --version hiện thị thông tin phiên bản, sau đó kết thúc\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr ""
+" -?, --help hiện thị nội dung trợ giúp này, sau đó kết thúc\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"Nếu thư mục cơ sở dữ liệu(DATADIR) không được chỉ định, biến môi trường \n"
+"PGDATA sẽ được sử dụng.\n"
+"\n"
+
+#: pg_controldata.c:43
+#, c-format
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr "Báo cáo lỗi tới <pgsql-bugs@postgresql.org>.\n"
+
+#: pg_controldata.c:53
+msgid "starting up"
+msgstr "đang khởi động"
+
+#: pg_controldata.c:55
+msgid "shut down"
+msgstr "đang ngưng hoạt động"
+
+#: pg_controldata.c:57
+msgid "shut down in recovery"
+msgstr "đang ngưng hoạt động ở chế độ khôi phục"
+
+#: pg_controldata.c:59
+msgid "shutting down"
+msgstr "đang tắt"
+
+#: pg_controldata.c:61
+msgid "in crash recovery"
+msgstr "đang trong chế độ khôi phục sự cố"
+
+#: pg_controldata.c:63
+msgid "in archive recovery"
+msgstr "đang trong chế độ phục hồi từ archive log"
+
+#: pg_controldata.c:65
+msgid "in production"
+msgstr "đang hoạt động"
+
+#: pg_controldata.c:67
+msgid "unrecognized status code"
+msgstr "mã trạng thái không được công nhận"
+
+#: pg_controldata.c:82
+msgid "unrecognized wal_level"
+msgstr "wal_level không được công nhận"
+
+#: pg_controldata.c:136 pg_controldata.c:154 pg_controldata.c:162
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Thử \"%s --help\" để biết thêm thông tin.\n"
+
+#: pg_controldata.c:152
+#, c-format
+msgid "%s: too many command-line arguments (first is \"%s\")\n"
+msgstr "%s: quá nhiều đối số dòng lệnh (đầu tiên là \"%s\")\n"
+
+#: pg_controldata.c:161
+#, c-format
+msgid "%s: no data directory specified\n"
+msgstr "%s: không có thư mục dữ liệu nào được chỉ định\n"
+
+#: pg_controldata.c:169
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this "
+"program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"WARNING: Giá trị kiểm tra CRC checksum không khớp với giá trị lưu trữ \n"
+"trong tệp . Có thể tệp bị hỏng hoặc có bố cục khác với sự mong đợi của\n"
+"chương trình này. Các kết quả dưới đây là không đáng tin cậy.\n"
+"\n"
+
+#: pg_controldata.c:177
+#, c-format
+msgid ""
+"WARNING: invalid WAL segment size\n"
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr ""
+"CẢNH BÁO: kích thước phân đoạn WAL không hợp lệ\n"
+"Kích thước phân đoạn WAL được lưu trữ trong tệp, %d byte, không phải \n"
+"là lũy thừa của hai từ 1 MB đến 1 GB. Có thể tệp bị hỏng và kết quả bên\n"
+"dưới là không đáng tin cậy.\n"
+"\n"
+
+#: pg_controldata.c:215
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "phiên bản pg_control: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Phiên bản catalog: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %s\n"
+msgstr "Số định dạng hệ thống database: %s\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "Trạng thái hệ thống database: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control sửa đổi lần cuối: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "Vị trí checkpoint mới nhất: %X/%X\n"
+
+#: pg_controldata.c:241
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "Vị trí REDO của checkpoint gần nhất: %X/%X\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "Tệp REDO WAL của checkpoint gần nhất: %s\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "TimeLineID của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "PrevTimeLineID của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "Full_page_writes của checkpoint gần nhất: %s\n"
+
+#: pg_controldata.c:251 pg_controldata.c:296 pg_controldata.c:306
+msgid "off"
+msgstr "off"
+
+#: pg_controldata.c:251 pg_controldata.c:296 pg_controldata.c:306
+msgid "on"
+msgstr "on"
+
+#: pg_controldata.c:252
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "NextXID của checkpoint gần nhất: %u:%u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "NextOID của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "NextMultiXactId của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "NextMultiOffset của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "OldestXID của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "OldestXID DB của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "OldestActiveXID của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "OldestMultiXid của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "OldestMulti DB của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "OldestCommitTsXid DB của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "NewestCommitTsXid của checkpoint gần nhất: %u\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "Thời gian của lần checkpoint gần nhấ: %s\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "Bộ đếm LSN giả cho các unlogged relations: %X/%X\n"
+
+#: pg_controldata.c:280
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "Tối thiểu hóa vị trí kết thúc cho phụ hồi: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "Timeline của vị trí kết thúc phục hồi tối thiểu: %u\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "Vị trí bắt đầu Backup: %X/%X\n"
+
+#: pg_controldata.c:288
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "Vị trí kết thúc Backup: %X/%X\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "Yêu cầu bản ghi kết thúc-backup : %s\n"
+
+#: pg_controldata.c:292
+msgid "no"
+msgstr "no"
+
+#: pg_controldata.c:292
+msgid "yes"
+msgstr "yes"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "giá trị thiết lập wal_level: %s\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "giá trị thiết lập wal_log_hints: %s\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "giá trị thiết lập max_connections: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "giá trị thiết lập max_worker_processes: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "giá trị thiết lập max_prepared_xacts: %d\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "giá trị thiết lập max_locks_per_xact: %d\n"
+
+#: pg_controldata.c:305
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "giá trị thiết lập track_commit_timestamp: %s\n"
+
+#: pg_controldata.c:307
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "Căn chỉnh dữ liệu tối đa: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "Kích thước block cơ sở dữ liệu: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "Số block cho mỗi phân đoạn của relation lớn: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "Kích thước block của WAL: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "Số byte cho mỗi phân đoạn WAL: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "Độ dài tối đa cho mỗi số nhận dạng: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "Số lượng cột tối đa cho một index: %u\n"
+
+#: pg_controldata.c:322
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "Kích thước tối đa của đoạn TOAST: %u\n"
+
+#: pg_controldata.c:324
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "Kích thước của một đoạn đối tượng lớn: %u\n"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "Lưu trữ kiểu Date/time: %s\n"
+
+#: pg_controldata.c:328
+msgid "64-bit integers"
+msgstr "64-bit integers"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Float4 argument passing: %s\n"
+msgstr "Thiết lập đối số float4: %s\n"
+
+#: pg_controldata.c:330 pg_controldata.c:332
+msgid "by reference"
+msgstr "bằng cách tham chiếu"
+
+#: pg_controldata.c:330 pg_controldata.c:332
+msgid "by value"
+msgstr "theo giá trị"
+
+#: pg_controldata.c:331
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Thiết lập đối số float8: %s\n"
+
+#: pg_controldata.c:333
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "Phiên bản checksum page dữ liệu: %u\n"
+
+#: pg_controldata.c:335
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "Xác thực giả tạm thời: %s\n"
diff --git a/src/bin/pg_controldata/po/zh_CN.po b/src/bin/pg_controldata/po/zh_CN.po
new file mode 100644
index 0000000..d6d2140
--- /dev/null
+++ b/src/bin/pg_controldata/po/zh_CN.po
@@ -0,0 +1,505 @@
+# simplified Chinese translation file for pg_controldata and friends
+# Bao Wei <weibao@forevertek.com>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 14\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-08-14 05:49+0000\n"
+"PO-Revision-Date: 2021-08-15 18:00+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"
+"X-Generator: Poedit 1.5.7\n"
+
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "为了读取, 无法打开文件 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:89
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "无法读取文件 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:101
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "无法读取文件\"%1$s\":读取了%3$zu中的%2$d"
+
+#: ../../common/controldata_utils.c:117 ../../common/controldata_utils.c:259
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "无法关闭文件 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:135
+msgid "byte ordering mismatch"
+msgstr "字节排序不匹配"
+
+#: ../../common/controldata_utils.c:137
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the one\n"
+"used by this program. In that case the results below would be incorrect, and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"可能字节顺序不匹配\n"
+"用于存储文件pg_control的字节顺序可能与程序使用的不匹配\n"
+"在那种情况下结果将会是不正确的,并且所安装的PostgreSQL\n"
+"将会与这个数据目录不兼容"
+
+#: ../../common/controldata_utils.c:203
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "无法打开文件 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:224
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "无法写入文件 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:245
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "无法 fsync 文件 \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s 显示 PostgreSQL 数据库簇控制信息.\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "使用方法:\n"
+
+#: pg_controldata.c:37
+#, c-format
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [选项][数据目录]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"选项:\n"
+
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 数据目录\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 输出版本信息, 然后退出\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 显示此帮助, 然后退出\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"如果没有指定数据目录(DATADIR), 将使用\n"
+"环境变量PGDATA.\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "臭虫报告至<%s>.\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 主页: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "正在启动"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "关闭"
+
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "在恢复过程中关闭数据库"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "正在关闭"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "在恢复中"
+
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "正在归档恢复"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "在运行中"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "不被认可的状态码"
+
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "参数wal_level的值无法识别"
+
+#: pg_controldata.c:137 pg_controldata.c:155 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "请用 \"%s --help\" 获取更多的信息.\n"
+
+#: pg_controldata.c:153
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "命令行参数太多 (第一个是 \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "没有指定数据目录"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"警告: 计算出来的CRC校验值与已保存在文件中的值不匹配.\n"
+"不是文件坏了,就是设计与程序的期望值不同.\n"
+"下面的结果是不可靠的.\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "警告: 无效的WAL段大小\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"WAL段的大小保存在文件中,%d字节不是2的幂次方(在1MB至1BG之间)\n"
+"文件已损坏,下面的结果不可信.\n"
+msgstr[1] ""
+"WAL段的大小保存在文件中,%d字节不是2的幂次方(在1MB至1BG之间)\n"
+"文件已损坏,下面的结果不可信.\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 版本: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Catalog 版本: %u\n"
+
+#: pg_controldata.c:232
+msgid "Database system identifier: %llu\n"
+msgstr "数据库系统标识符: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "数据库簇状态: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control 最后修改: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "最新检查点位置: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "最新检查点的 REDO 位置: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "最新检查点的重做日志文件: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最新检查点的 TimeLineID: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "最新检查点的PrevTimeLineID: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最新检查点的full_page_writes: %s\n"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "关闭"
+
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "开启"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最新检查点的NextXID: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最新检查点的 NextOID: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最新检查点的NextMultiXactId: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最新检查点的NextMultiOffsetD: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最新检查点的oldestXID: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最新检查点的oldestXID所在的数据库:%u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最新检查点的oldestActiveXID: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最新检查点的oldestMultiXid: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最新检查点的oldestMulti所在的数据库:%u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最新检查点的oldestCommitTsXid:%u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最新检查点的newestCommitTsXid:%u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "最新检查点的时间: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "不带日志的关系: %X/%X使用虚假的LSN计数器\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "最小恢复结束位置: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "最小恢复结束位置时间表: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "开始进行备份的点位置: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "备份的最终位置: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "需要终止备份的记录: %s\n"
+
+#: pg_controldata.c:286
+msgid "no"
+msgstr "否"
+
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "是"
+
+#: pg_controldata.c:287
+#, c-format
+msgid "wal_level setting: %s\n"
+msgstr "wal_level设置: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints设置: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+msgid "max_connections setting: %d\n"
+msgstr "max_connections设置: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes设置: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders设置: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts设置: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact设置: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp设置: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "最大数据校准: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "数据库块大小: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大关系的每段块数: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL的块大小: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "每一个 WAL 段字节数: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "标识符的最大长度: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "在索引中可允许使用最大的列数: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST区块的最大长度: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "大对象区块的大小: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日期/时间 类型存储: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64位整数"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "正在传递Flloat8类型的参数: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "由引用"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "由值"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "数据页校验和版本: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "当前身份验证: %s\n"
+
diff --git a/src/bin/pg_controldata/po/zh_TW.po b/src/bin/pg_controldata/po/zh_TW.po
new file mode 100644
index 0000000..450aec7
--- /dev/null
+++ b/src/bin/pg_controldata/po/zh_TW.po
@@ -0,0 +1,587 @@
+# Traditional Chinese message translation file for pg_controldata
+# Copyright (C) 2023 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_controldata (PostgreSQL) package.
+# 2004-11-01 Zhenbang Wei <forth@zbwei.net>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pg_controldata (PostgreSQL) 16\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2023-09-08 21:52+0000\n"
+"PO-Revision-Date: 2023-11-06 08:49+0800\n"
+"Last-Translator: Zhenbang Wei <znbang@gmail.com>\n"
+"Language-Team: \n"
+"Language: zh_TW\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 3.4.1\n"
+
+# commands/copy.c:1031
+#: ../../common/controldata_utils.c:73
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "無法開啟檔案 \"%s\" 以供讀取: %m"
+
+# access/transam/xlog.c:1659 access/transam/xlog.c:2942
+# access/transam/xlog.c:5397 access/transam/xlog.c:5448
+# access/transam/xlog.c:5520 access/transam/xlog.c:5545
+# access/transam/xlog.c:5583
+#: ../../common/controldata_utils.c:86
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "無法讀取檔案 \"%s\": %m"
+
+# access/transam/xlog.c:1659 access/transam/xlog.c:2942
+# access/transam/xlog.c:5397 access/transam/xlog.c:5448
+# access/transam/xlog.c:5520 access/transam/xlog.c:5545
+# access/transam/xlog.c:5583
+#: ../../common/controldata_utils.c:95
+#, c-format
+msgid "could not read file \"%s\": read %d of %zu"
+msgstr "無法讀取檔案 \"%s\": 已讀取 %d / %zu"
+
+# access/transam/slru.c:680 access/transam/xlog.c:1567
+# access/transam/xlog.c:1691 access/transam/xlog.c:3013
+#: ../../common/controldata_utils.c:108 ../../common/controldata_utils.c:236
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "無法關閉檔案 \"%s\": %m"
+
+#: ../../common/controldata_utils.c:124
+msgid "byte ordering mismatch"
+msgstr "位元組順序不一致"
+
+#: ../../common/controldata_utils.c:126
+#, c-format
+msgid ""
+"possible byte ordering mismatch\n"
+"The byte ordering used to store the pg_control file might not match the "
+"one\n"
+"used by this program. In that case the results below would be incorrect, "
+"and\n"
+"the PostgreSQL installation would be incompatible with this data directory."
+msgstr ""
+"位元組順序可能不一致\n"
+"用於儲存 pg_control 檔案的位元組順序可能與此程式使用的位元組順序不同。\n"
+"在這種情況下,下面的結果將不正確,且 PostgreSQL 安裝將與這個資料目錄\n"
+"不相容。"
+
+# access/transam/slru.c:638 access/transam/xlog.c:1631
+# access/transam/xlog.c:2742 access/transam/xlog.c:2832
+# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
+# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
+# utils/misc/database.c:68
+#: ../../common/controldata_utils.c:186
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "無法開啟檔案 \"%s\": %m"
+
+# access/transam/xlog.c:5319 access/transam/xlog.c:5439
+#: ../../common/controldata_utils.c:205
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "無法寫入檔案 \"%s\": %m"
+
+# access/transam/slru.c:673 access/transam/xlog.c:1562
+# access/transam/xlog.c:1686 access/transam/xlog.c:3008
+#: ../../common/controldata_utils.c:224
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "無法 fsync 檔案 \"%s\": %m"
+
+#: pg_controldata.c:35
+#, c-format
+msgid ""
+"%s displays control information of a PostgreSQL database cluster.\n"
+"\n"
+msgstr ""
+"%s 顯示 PostgreSQL 資料庫叢集的控制資訊\n"
+"\n"
+
+#: pg_controldata.c:36
+#, c-format
+msgid "Usage:\n"
+msgstr "用法:\n"
+
+#: pg_controldata.c:37
+#, c-format
+#| msgid " %s [OPTION]... [DATADIR]\n"
+msgid " %s [OPTION] [DATADIR]\n"
+msgstr " %s [OPTION] [DATADIR]\n"
+
+#: pg_controldata.c:38
+#, c-format
+msgid ""
+"\n"
+"Options:\n"
+msgstr ""
+"\n"
+"選項:\n"
+
+# postmaster/postmaster.c:1024 tcop/postgres.c:2122
+#: pg_controldata.c:39
+#, c-format
+msgid " [-D, --pgdata=]DATADIR data directory\n"
+msgstr " [-D, --pgdata=]DATADIR 資料目錄\n"
+
+#: pg_controldata.c:40
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 顯示版本,然後結束\n"
+
+#: pg_controldata.c:41
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 顯示說明,然後結束\n"
+
+#: pg_controldata.c:42
+#, c-format
+msgid ""
+"\n"
+"If no data directory (DATADIR) is specified, the environment variable "
+"PGDATA\n"
+"is used.\n"
+"\n"
+msgstr ""
+"\n"
+"若未指定資料目錄(DATADIR)就用環境變數 PGDATA。\n"
+"\n"
+
+#: pg_controldata.c:44
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "回報錯誤至 <%s>。\n"
+
+#: pg_controldata.c:45
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 首頁: <%s>\n"
+
+#: pg_controldata.c:55
+msgid "starting up"
+msgstr "啟動中"
+
+#: pg_controldata.c:57
+msgid "shut down"
+msgstr "關閉"
+
+# access/transam/xlog.c:3596
+#: pg_controldata.c:59
+msgid "shut down in recovery"
+msgstr "復原關閉中"
+
+#: pg_controldata.c:61
+msgid "shutting down"
+msgstr "關閉中"
+
+#: pg_controldata.c:63
+msgid "in crash recovery"
+msgstr "損毀復原中"
+
+# access/transam/xlog.c:3596
+#: pg_controldata.c:65
+msgid "in archive recovery"
+msgstr "封存復原中"
+
+#: pg_controldata.c:67
+msgid "in production"
+msgstr "運作中"
+
+#: pg_controldata.c:69
+msgid "unrecognized status code"
+msgstr "無法識別的狀態碼"
+
+# access/transam/xlog.c:3720
+#: pg_controldata.c:84
+msgid "unrecognized wal_level"
+msgstr "無法識別的 wal_level"
+
+# tcop/postgres.c:2636 tcop/postgres.c:2652
+#: pg_controldata.c:138 pg_controldata.c:156 pg_controldata.c:163
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "用 \"%s --help\" 取得更多資訊。"
+
+#: pg_controldata.c:154
+#, c-format
+msgid "too many command-line arguments (first is \"%s\")"
+msgstr "命令列參數過多(第一個是 \"%s\")"
+
+#: pg_controldata.c:162
+#, c-format
+msgid "no data directory specified"
+msgstr "未指定資料目錄"
+
+#: pg_controldata.c:170
+#, c-format
+msgid ""
+"WARNING: Calculated CRC checksum does not match value stored in file.\n"
+"Either the file is corrupt, or it has a different layout than this "
+"program\n"
+"is expecting. The results below are untrustworthy.\n"
+"\n"
+msgstr ""
+"警告: 計算獲得的 CRC 檢查碼和存在檔案中的值不一致。\n"
+"可能是檔案損壞,或是檔案結構與程式所預期的不同。\n"
+"以下的結果不可信。\n"
+"\n"
+
+#: pg_controldata.c:179
+#, c-format
+msgid "WARNING: invalid WAL segment size\n"
+msgstr "警告: 無效的 WAL 片段大小\n"
+
+#: pg_controldata.c:180
+#, c-format
+msgid ""
+"The WAL segment size stored in the file, %d byte, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgid_plural ""
+"The WAL segment size stored in the file, %d bytes, is not a power of two\n"
+"between 1 MB and 1 GB. The file is corrupt and the results below are\n"
+"untrustworthy.\n"
+"\n"
+msgstr[0] ""
+"檔案中儲存的 WAL 片段大小為 %d 位元組,不是介於 1MB 和 1GB 之間的\n"
+" 2 的冪次方。該檔案已損壞,以下的結果不可信。\n"
+"\n"
+
+#: pg_controldata.c:222
+msgid "???"
+msgstr "???"
+
+#: pg_controldata.c:228
+#, c-format
+msgid "pg_control version number: %u\n"
+msgstr "pg_control 版本號碼: %u\n"
+
+#: pg_controldata.c:230
+#, c-format
+msgid "Catalog version number: %u\n"
+msgstr "Catalog 版本號碼: %u\n"
+
+#: pg_controldata.c:232
+#, c-format
+msgid "Database system identifier: %llu\n"
+msgstr "資料庫系統識別碼: %llu\n"
+
+#: pg_controldata.c:234
+#, c-format
+msgid "Database cluster state: %s\n"
+msgstr "資料庫叢集狀態: %s\n"
+
+#: pg_controldata.c:236
+#, c-format
+msgid "pg_control last modified: %s\n"
+msgstr "pg_control 最後修改時間: %s\n"
+
+#: pg_controldata.c:238
+#, c-format
+msgid "Latest checkpoint location: %X/%X\n"
+msgstr "最新檢查點位置: %X/%X\n"
+
+#: pg_controldata.c:240
+#, c-format
+msgid "Latest checkpoint's REDO location: %X/%X\n"
+msgstr "最新檢查點 REDO 位置: %X/%X\n"
+
+#: pg_controldata.c:242
+#, c-format
+msgid "Latest checkpoint's REDO WAL file: %s\n"
+msgstr "最新檢查點 REDO WAL 檔: %s\n"
+
+#: pg_controldata.c:244
+#, c-format
+msgid "Latest checkpoint's TimeLineID: %u\n"
+msgstr "最新檢查點 TimeLineID: %u\n"
+
+#: pg_controldata.c:246
+#, c-format
+msgid "Latest checkpoint's PrevTimeLineID: %u\n"
+msgstr "最新檢查點 PrevTimeLineID: %u\n"
+
+#: pg_controldata.c:248
+#, c-format
+msgid "Latest checkpoint's full_page_writes: %s\n"
+msgstr "最新檢查點 full_page_writes: %s\n"
+
+# help.c:48
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "off"
+msgstr "off"
+
+# help.c:48
+#: pg_controldata.c:249 pg_controldata.c:290 pg_controldata.c:302
+msgid "on"
+msgstr "on"
+
+#: pg_controldata.c:250
+#, c-format
+msgid "Latest checkpoint's NextXID: %u:%u\n"
+msgstr "最新檢查點 NextXID: %u:%u\n"
+
+#: pg_controldata.c:253
+#, c-format
+msgid "Latest checkpoint's NextOID: %u\n"
+msgstr "最新檢查點 NextOID: %u\n"
+
+#: pg_controldata.c:255
+#, c-format
+msgid "Latest checkpoint's NextMultiXactId: %u\n"
+msgstr "最新檢查點 NextMultiXactId: %u\n"
+
+#: pg_controldata.c:257
+#, c-format
+msgid "Latest checkpoint's NextMultiOffset: %u\n"
+msgstr "最新檢查點 NextMultiOffset: %u\n"
+
+#: pg_controldata.c:259
+#, c-format
+msgid "Latest checkpoint's oldestXID: %u\n"
+msgstr "最新檢查點 oldestXID: %u\n"
+
+#: pg_controldata.c:261
+#, c-format
+msgid "Latest checkpoint's oldestXID's DB: %u\n"
+msgstr "最新檢查點 oldestXID 的資料庫: %u\n"
+
+#: pg_controldata.c:263
+#, c-format
+msgid "Latest checkpoint's oldestActiveXID: %u\n"
+msgstr "最新檢查點 oldestActiveXID: %u\n"
+
+#: pg_controldata.c:265
+#, c-format
+msgid "Latest checkpoint's oldestMultiXid: %u\n"
+msgstr "最新檢查點 oldestMultiXid: %u\n"
+
+#: pg_controldata.c:267
+#, c-format
+msgid "Latest checkpoint's oldestMulti's DB: %u\n"
+msgstr "最新檢查點 oldestMulti 的資料庫: %u\n"
+
+#: pg_controldata.c:269
+#, c-format
+msgid "Latest checkpoint's oldestCommitTsXid:%u\n"
+msgstr "最新檢查點 oldestCommitTsXid: %u\n"
+
+#: pg_controldata.c:271
+#, c-format
+msgid "Latest checkpoint's newestCommitTsXid:%u\n"
+msgstr "最新檢查點 newestCommitTsXid: %u\n"
+
+#: pg_controldata.c:273
+#, c-format
+msgid "Time of latest checkpoint: %s\n"
+msgstr "最新檢查點的時間: %s\n"
+
+#: pg_controldata.c:275
+#, c-format
+msgid "Fake LSN counter for unlogged rels: %X/%X\n"
+msgstr "無日誌關聯的虛擬 LSN 計數: %X/%X\n"
+
+#: pg_controldata.c:277
+#, c-format
+msgid "Minimum recovery ending location: %X/%X\n"
+msgstr "最小還原結束位置: %X/%X\n"
+
+#: pg_controldata.c:279
+#, c-format
+msgid "Min recovery ending loc's timeline: %u\n"
+msgstr "最小還原結束位置的時間軸: %u\n"
+
+#: pg_controldata.c:281
+#, c-format
+msgid "Backup start location: %X/%X\n"
+msgstr "備份開始位置: %X/%X\n"
+
+#: pg_controldata.c:283
+#, c-format
+msgid "Backup end location: %X/%X\n"
+msgstr "備份結束位置: %X/%X\n"
+
+#: pg_controldata.c:285
+#, c-format
+msgid "End-of-backup record required: %s\n"
+msgstr "需要備份結束記錄: %s\n"
+
+# describe.c:1262
+# describe.c:1638
+# describe.c:1692
+#: pg_controldata.c:286
+msgid "no"
+msgstr "no"
+
+# describe.c:1262
+# describe.c:1637
+# describe.c:1694
+#: pg_controldata.c:286
+msgid "yes"
+msgstr "yes"
+
+#: pg_controldata.c:287
+#, c-format
+#| msgid "Current wal_level setting: %s\n"
+msgid "wal_level setting: %s\n"
+msgstr "wal_level 設定: %s\n"
+
+#: pg_controldata.c:289
+#, c-format
+#| msgid "Current wal_level setting: %s\n"
+msgid "wal_log_hints setting: %s\n"
+msgstr "wal_log_hints 設定: %s\n"
+
+#: pg_controldata.c:291
+#, c-format
+#| msgid "Current max_connections setting: %d\n"
+msgid "max_connections setting: %d\n"
+msgstr "max_connections 設定: %d\n"
+
+#: pg_controldata.c:293
+#, c-format
+#| msgid "Current max_connections setting: %d\n"
+msgid "max_worker_processes setting: %d\n"
+msgstr "max_worker_processes 設定: %d\n"
+
+#: pg_controldata.c:295
+#, c-format
+#| msgid "Current wal_level setting: %s\n"
+msgid "max_wal_senders setting: %d\n"
+msgstr "max_wal_senders 設定: %d\n"
+
+#: pg_controldata.c:297
+#, c-format
+#| msgid "Current max_prepared_xacts setting: %d\n"
+msgid "max_prepared_xacts setting: %d\n"
+msgstr "max_prepared_xacts 設定: %d\n"
+
+#: pg_controldata.c:299
+#, c-format
+#| msgid "Current max_locks_per_xact setting: %d\n"
+msgid "max_locks_per_xact setting: %d\n"
+msgstr "max_locks_per_xact 設定: %d\n"
+
+#: pg_controldata.c:301
+#, c-format
+#| msgid "Current max_connections setting: %d\n"
+msgid "track_commit_timestamp setting: %s\n"
+msgstr "track_commit_timestamp 設定: %s\n"
+
+#: pg_controldata.c:303
+#, c-format
+msgid "Maximum data alignment: %u\n"
+msgstr "資料對齊上限: %u\n"
+
+#: pg_controldata.c:306
+#, c-format
+msgid "Database block size: %u\n"
+msgstr "資料庫區塊大小: %u\n"
+
+#: pg_controldata.c:308
+#, c-format
+msgid "Blocks per segment of large relation: %u\n"
+msgstr "大型關聯每個片段的區塊數: %u\n"
+
+#: pg_controldata.c:310
+#, c-format
+msgid "WAL block size: %u\n"
+msgstr "WAL 區塊大小: %u\n"
+
+#: pg_controldata.c:312
+#, c-format
+msgid "Bytes per WAL segment: %u\n"
+msgstr "每個 WAL 片段的位元組數: %u\n"
+
+#: pg_controldata.c:314
+#, c-format
+msgid "Maximum length of identifiers: %u\n"
+msgstr "識別名稱長度上限: %u\n"
+
+#: pg_controldata.c:316
+#, c-format
+msgid "Maximum columns in an index: %u\n"
+msgstr "索引欄位數上限: %u\n"
+
+#: pg_controldata.c:318
+#, c-format
+msgid "Maximum size of a TOAST chunk: %u\n"
+msgstr "TOAST 區塊大小上限: %u\n"
+
+#: pg_controldata.c:320
+#, c-format
+msgid "Size of a large-object chunk: %u\n"
+msgstr "大物件區塊的大小: %u\n"
+
+#: pg_controldata.c:323
+#, c-format
+msgid "Date/time type storage: %s\n"
+msgstr "日期/時間類型的儲存方式: %s\n"
+
+#: pg_controldata.c:324
+msgid "64-bit integers"
+msgstr "64位元整數"
+
+#: pg_controldata.c:325
+#, c-format
+msgid "Float8 argument passing: %s\n"
+msgstr "Float8 參數傳遞方式: %s\n"
+
+#: pg_controldata.c:326
+msgid "by reference"
+msgstr "傳址"
+
+#: pg_controldata.c:326
+msgid "by value"
+msgstr "傳值"
+
+#: pg_controldata.c:327
+#, c-format
+msgid "Data page checksum version: %u\n"
+msgstr "資料頁檢查碼版本: %u\n"
+
+#: pg_controldata.c:329
+#, c-format
+msgid "Mock authentication nonce: %s\n"
+msgstr "模擬的驗證 nonce: %s\n"
+
+#, c-format
+#~ msgid "%s: could not open file \"%s\" for reading: %s\n"
+#~ msgstr "%s: 無法開啟檔案 \"%s\" 讀取: %s\n"
+
+#, c-format
+#~ msgid "%s: could not read file \"%s\": %s\n"
+#~ msgstr "%s: 無法讀取檔案 \"%s\": %s\n"
+
+#, c-format
+#~ msgid "Float4 argument passing: %s\n"
+#~ msgstr "Float4 參數傳遞方式: %s\n"
+
+#~ msgid "Maximum number of function arguments: %u\n"
+#~ msgstr "函式參數的最大個數: %u\n"
+
+#, c-format
+#~ msgid "Try \"%s --help\" for more information.\n"
+#~ msgstr "執行 \"%s --help\" 顯示更多資訊。\n"
+
+#, c-format
+#~ msgid ""
+#~ "Usage:\n"
+#~ " %s [OPTION] [DATADIR]\n"
+#~ "\n"
+#~ "Options:\n"
+#~ " --help show this help, then exit\n"
+#~ " --version output version information, then exit\n"
+#~ msgstr ""
+#~ "用法:\n"
+#~ " %s [選項] [資料目錄]\n"
+#~ "\n"
+#~ "選項:\n"
+#~ " --help 顯示說明訊息然後結束\n"
+#~ " --version 顯示版本資訊然後結束\n"
+
+#~ msgid "floating-point numbers"
+#~ msgstr "浮點數"
diff --git a/src/bin/pg_controldata/t/001_pg_controldata.pl b/src/bin/pg_controldata/t/001_pg_controldata.pl
new file mode 100644
index 0000000..0c64103
--- /dev/null
+++ b/src/bin/pg_controldata/t/001_pg_controldata.pl
@@ -0,0 +1,46 @@
+
+# Copyright (c) 2021-2023, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+use PostgreSQL::Test::Cluster;
+use PostgreSQL::Test::Utils;
+use Test::More;
+
+program_help_ok('pg_controldata');
+program_version_ok('pg_controldata');
+program_options_handling_ok('pg_controldata');
+command_fails(['pg_controldata'], 'pg_controldata without arguments fails');
+command_fails([ 'pg_controldata', 'nonexistent' ],
+ 'pg_controldata with nonexistent directory fails');
+
+my $node = PostgreSQL::Test::Cluster->new('main');
+$node->init;
+
+command_like([ 'pg_controldata', $node->data_dir ],
+ qr/checkpoint/, 'pg_controldata produces output');
+
+
+# check with a corrupted pg_control
+
+my $pg_control = $node->data_dir . '/global/pg_control';
+my $size = (stat($pg_control))[7];
+
+open my $fh, '>', $pg_control or BAIL_OUT($!);
+binmode $fh;
+
+# fill file with zeros
+print $fh pack("x[$size]");
+close $fh;
+
+command_checks_all(
+ [ 'pg_controldata', $node->data_dir ],
+ 0,
+ [
+ qr/WARNING: Calculated CRC checksum does not match value stored in file/,
+ qr/WARNING: invalid WAL segment size/
+ ],
+ [qr/^$/],
+ 'pg_controldata with corrupted pg_control');
+
+done_testing();