diff options
Diffstat (limited to 'src/bin/pg_checksums')
-rw-r--r-- | src/bin/pg_checksums/.gitignore | 3 | ||||
-rw-r--r-- | src/bin/pg_checksums/Makefile | 47 | ||||
-rw-r--r-- | src/bin/pg_checksums/nls.mk | 8 | ||||
-rw-r--r-- | src/bin/pg_checksums/pg_checksums.c | 655 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/de.po | 330 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/el.po | 337 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/es.po | 332 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/fr.po | 374 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/it.po | 327 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/ja.po | 339 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/ka.po | 351 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/ko.po | 355 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/pt_BR.po | 328 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/ru.po | 352 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/sv.po | 329 | ||||
-rw-r--r-- | src/bin/pg_checksums/po/uk.po | 319 | ||||
-rw-r--r-- | src/bin/pg_checksums/t/001_basic.pl | 13 | ||||
-rw-r--r-- | src/bin/pg_checksums/t/002_actions.pl | 253 |
18 files changed, 5052 insertions, 0 deletions
diff --git a/src/bin/pg_checksums/.gitignore b/src/bin/pg_checksums/.gitignore new file mode 100644 index 0000000..7888625 --- /dev/null +++ b/src/bin/pg_checksums/.gitignore @@ -0,0 +1,3 @@ +/pg_checksums + +/tmp_check/ diff --git a/src/bin/pg_checksums/Makefile b/src/bin/pg_checksums/Makefile new file mode 100644 index 0000000..77dc97a --- /dev/null +++ b/src/bin/pg_checksums/Makefile @@ -0,0 +1,47 @@ +#------------------------------------------------------------------------- +# +# Makefile for src/bin/pg_checksums +# +# Copyright (c) 1998-2022, PostgreSQL Global Development Group +# +# src/bin/pg_checksums/Makefile +# +#------------------------------------------------------------------------- + +PGFILEDESC = "pg_checksums - verify data checksums in an offline cluster" +PGAPPICON=win32 + +subdir = src/bin/pg_checksums +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +# We need libpq only because fe_utils does. +LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) + +OBJS = \ + $(WIN32RES) \ + pg_checksums.o + +all: pg_checksums + +pg_checksums: $(OBJS) | submake-libpgport + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +install: all installdirs + $(INSTALL_PROGRAM) pg_checksums$(X) '$(DESTDIR)$(bindir)/pg_checksums$(X)' + +installdirs: + $(MKDIR_P) '$(DESTDIR)$(bindir)' + +uninstall: + rm -f '$(DESTDIR)$(bindir)/pg_checksums$(X)' + +clean distclean maintainer-clean: + rm -f pg_checksums$(X) $(OBJS) + rm -rf tmp_check + +check: + $(prove_check) + +installcheck: + $(prove_installcheck) diff --git a/src/bin/pg_checksums/nls.mk b/src/bin/pg_checksums/nls.mk new file mode 100644 index 0000000..a0d776c --- /dev/null +++ b/src/bin/pg_checksums/nls.mk @@ -0,0 +1,8 @@ +# src/bin/pg_checksums/nls.mk +CATALOG_NAME = pg_checksums +AVAIL_LANGUAGES = de el es fr it ja ka ko pt_BR ru sv uk +GETTEXT_FILES = $(FRONTEND_COMMON_GETTEXT_FILES) \ + pg_checksums.c \ + ../../fe_utils/option_utils.c +GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS) +GETTEXT_FLAGS = $(FRONTEND_COMMON_GETTEXT_FLAGS) diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c new file mode 100644 index 0000000..21dfe1b --- /dev/null +++ b/src/bin/pg_checksums/pg_checksums.c @@ -0,0 +1,655 @@ +/*------------------------------------------------------------------------- + * + * pg_checksums.c + * Checks, enables or disables page level checksums for an offline + * cluster + * + * Copyright (c) 2010-2022, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/bin/pg_checksums/pg_checksums.c + * + *------------------------------------------------------------------------- + */ + +#include "postgres_fe.h" + +#include <dirent.h> +#include <limits.h> +#include <time.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "access/xlog_internal.h" +#include "common/controldata_utils.h" +#include "common/file_perm.h" +#include "common/file_utils.h" +#include "common/logging.h" +#include "fe_utils/option_utils.h" +#include "getopt_long.h" +#include "pg_getopt.h" +#include "storage/bufpage.h" +#include "storage/checksum.h" +#include "storage/checksum_impl.h" + + +static int64 files_scanned = 0; +static int64 files_written = 0; +static int64 blocks_scanned = 0; +static int64 blocks_written = 0; +static int64 badblocks = 0; +static ControlFileData *ControlFile; + +static char *only_filenode = NULL; +static bool do_sync = true; +static bool verbose = false; +static bool showprogress = false; + +typedef enum +{ + PG_MODE_CHECK, + PG_MODE_DISABLE, + PG_MODE_ENABLE +} PgChecksumMode; + +/* + * Filename components. + * + * XXX: fd.h is not declared here as frontend side code is not able to + * interact with the backend-side definitions for the various fsync + * wrappers. + */ +#define PG_TEMP_FILES_DIR "pgsql_tmp" +#define PG_TEMP_FILE_PREFIX "pgsql_tmp" + +static PgChecksumMode mode = PG_MODE_CHECK; + +static const char *progname; + +/* + * Progress status information. + */ +int64 total_size = 0; +int64 current_size = 0; +static pg_time_t last_progress_report = 0; + +static void +usage(void) +{ + printf(_("%s enables, disables, or verifies data checksums in 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(_(" -c, --check check data checksums (default)\n")); + printf(_(" -d, --disable disable data checksums\n")); + printf(_(" -e, --enable enable data checksums\n")); + printf(_(" -f, --filenode=FILENODE check only relation with specified filenode\n")); + printf(_(" -N, --no-sync do not wait for changes to be written safely to disk\n")); + printf(_(" -P, --progress show progress information\n")); + printf(_(" -v, --verbose output verbose messages\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); +} + +/* + * Definition of one element part of an exclusion list, used for files + * to exclude from checksum validation. "name" is the name of the file + * or path to check for exclusion. If "match_prefix" is true, any items + * matching the name as prefix are excluded. + */ +struct exclude_list_item +{ + const char *name; + bool match_prefix; +}; + +/* + * List of files excluded from checksum validation. + * + * Note: this list should be kept in sync with what basebackup.c includes. + */ +static const struct exclude_list_item skip[] = { + {"pg_control", false}, + {"pg_filenode.map", false}, + {"pg_internal.init", true}, + {"PG_VERSION", false}, +#ifdef EXEC_BACKEND + {"config_exec_params", true}, +#endif + {NULL, false} +}; + +/* + * Report current progress status. Parts borrowed from + * src/bin/pg_basebackup/pg_basebackup.c. + */ +static void +progress_report(bool finished) +{ + int percent; + pg_time_t now; + + Assert(showprogress); + + now = time(NULL); + if (now == last_progress_report && !finished) + return; /* Max once per second */ + + /* Save current time */ + last_progress_report = now; + + /* Adjust total size if current_size is larger */ + if (current_size > total_size) + total_size = current_size; + + /* Calculate current percentage of size done */ + percent = total_size ? (int) ((current_size) * 100 / total_size) : 0; + + fprintf(stderr, _("%lld/%lld MB (%d%%) computed"), + (long long) (current_size / (1024 * 1024)), + (long long) (total_size / (1024 * 1024)), + percent); + + /* + * Stay on the same line if reporting to a terminal and we're not done + * yet. + */ + fputc((!finished && isatty(fileno(stderr))) ? '\r' : '\n', stderr); +} + +static bool +skipfile(const char *fn) +{ + int excludeIdx; + + for (excludeIdx = 0; skip[excludeIdx].name != NULL; excludeIdx++) + { + int cmplen = strlen(skip[excludeIdx].name); + + if (!skip[excludeIdx].match_prefix) + cmplen++; + if (strncmp(skip[excludeIdx].name, fn, cmplen) == 0) + return true; + } + + return false; +} + +static void +scan_file(const char *fn, int segmentno) +{ + PGAlignedBlock buf; + PageHeader header = (PageHeader) buf.data; + int f; + BlockNumber blockno; + int flags; + int64 blocks_written_in_file = 0; + + Assert(mode == PG_MODE_ENABLE || + mode == PG_MODE_CHECK); + + flags = (mode == PG_MODE_ENABLE) ? O_RDWR : O_RDONLY; + f = open(fn, PG_BINARY | flags, 0); + + if (f < 0) + pg_fatal("could not open file \"%s\": %m", fn); + + files_scanned++; + + for (blockno = 0;; blockno++) + { + uint16 csum; + int r = read(f, buf.data, BLCKSZ); + + if (r == 0) + break; + if (r != BLCKSZ) + { + if (r < 0) + pg_fatal("could not read block %u in file \"%s\": %m", + blockno, fn); + else + pg_fatal("could not read block %u in file \"%s\": read %d of %d", + blockno, fn, r, BLCKSZ); + } + blocks_scanned++; + + /* + * Since the file size is counted as total_size for progress status + * information, the sizes of all pages including new ones in the file + * should be counted as current_size. Otherwise the progress reporting + * calculated using those counters may not reach 100%. + */ + current_size += r; + + /* New pages have no checksum yet */ + if (PageIsNew(header)) + continue; + + csum = pg_checksum_page(buf.data, blockno + segmentno * RELSEG_SIZE); + if (mode == PG_MODE_CHECK) + { + if (csum != header->pd_checksum) + { + if (ControlFile->data_checksum_version == PG_DATA_CHECKSUM_VERSION) + pg_log_error("checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X", + fn, blockno, csum, header->pd_checksum); + badblocks++; + } + } + else if (mode == PG_MODE_ENABLE) + { + int w; + + /* + * Do not rewrite if the checksum is already set to the expected + * value. + */ + if (header->pd_checksum == csum) + continue; + + blocks_written_in_file++; + + /* Set checksum in page header */ + header->pd_checksum = csum; + + /* Seek back to beginning of block */ + if (lseek(f, -BLCKSZ, SEEK_CUR) < 0) + pg_fatal("seek failed for block %u in file \"%s\": %m", blockno, fn); + + /* Write block with checksum */ + w = write(f, buf.data, BLCKSZ); + if (w != BLCKSZ) + { + if (w < 0) + pg_fatal("could not write block %u in file \"%s\": %m", + blockno, fn); + else + pg_fatal("could not write block %u in file \"%s\": wrote %d of %d", + blockno, fn, w, BLCKSZ); + } + } + + if (showprogress) + progress_report(false); + } + + if (verbose) + { + if (mode == PG_MODE_CHECK) + pg_log_info("checksums verified in file \"%s\"", fn); + if (mode == PG_MODE_ENABLE) + pg_log_info("checksums enabled in file \"%s\"", fn); + } + + /* Update write counters if any write activity has happened */ + if (blocks_written_in_file > 0) + { + files_written++; + blocks_written += blocks_written_in_file; + } + + close(f); +} + +/* + * Scan the given directory for items which can be checksummed and + * operate on each one of them. If "sizeonly" is true, the size of + * all the items which have checksums is computed and returned back + * to the caller without operating on the files. This is used to compile + * the total size of the data directory for progress reports. + */ +static int64 +scan_directory(const char *basedir, const char *subdir, bool sizeonly) +{ + int64 dirsize = 0; + char path[MAXPGPATH]; + DIR *dir; + struct dirent *de; + + snprintf(path, sizeof(path), "%s/%s", basedir, subdir); + dir = opendir(path); + if (!dir) + pg_fatal("could not open directory \"%s\": %m", path); + while ((de = readdir(dir)) != NULL) + { + char fn[MAXPGPATH]; + struct stat st; + + if (strcmp(de->d_name, ".") == 0 || + strcmp(de->d_name, "..") == 0) + continue; + + /* Skip temporary files */ + if (strncmp(de->d_name, + PG_TEMP_FILE_PREFIX, + strlen(PG_TEMP_FILE_PREFIX)) == 0) + continue; + + /* Skip temporary folders */ + if (strncmp(de->d_name, + PG_TEMP_FILES_DIR, + strlen(PG_TEMP_FILES_DIR)) == 0) + continue; + + snprintf(fn, sizeof(fn), "%s/%s", path, de->d_name); + if (lstat(fn, &st) < 0) + pg_fatal("could not stat file \"%s\": %m", fn); + if (S_ISREG(st.st_mode)) + { + char fnonly[MAXPGPATH]; + char *forkpath, + *segmentpath; + int segmentno = 0; + + if (skipfile(de->d_name)) + continue; + + /* + * Cut off at the segment boundary (".") to get the segment number + * in order to mix it into the checksum. Then also cut off at the + * fork boundary, to get the filenode the file belongs to for + * filtering. + */ + strlcpy(fnonly, de->d_name, sizeof(fnonly)); + segmentpath = strchr(fnonly, '.'); + if (segmentpath != NULL) + { + *segmentpath++ = '\0'; + segmentno = atoi(segmentpath); + if (segmentno == 0) + pg_fatal("invalid segment number %d in file name \"%s\"", + segmentno, fn); + } + + forkpath = strchr(fnonly, '_'); + if (forkpath != NULL) + *forkpath++ = '\0'; + + if (only_filenode && strcmp(only_filenode, fnonly) != 0) + /* filenode not to be included */ + continue; + + dirsize += st.st_size; + + /* + * No need to work on the file when calculating only the size of + * the items in the data folder. + */ + if (!sizeonly) + scan_file(fn, segmentno); + } +#ifndef WIN32 + else if (S_ISDIR(st.st_mode) || S_ISLNK(st.st_mode)) +#else + else if (S_ISDIR(st.st_mode) || pgwin32_is_junction(fn)) +#endif + { + /* + * If going through the entries of pg_tblspc, we assume to operate + * on tablespace locations where only TABLESPACE_VERSION_DIRECTORY + * is valid, resolving the linked locations and dive into them + * directly. + */ + if (strncmp("pg_tblspc", subdir, strlen("pg_tblspc")) == 0) + { + char tblspc_path[MAXPGPATH]; + struct stat tblspc_st; + + /* + * Resolve tablespace location path and check whether + * TABLESPACE_VERSION_DIRECTORY exists. Not finding a valid + * location is unexpected, since there should be no orphaned + * links and no links pointing to something else than a + * directory. + */ + snprintf(tblspc_path, sizeof(tblspc_path), "%s/%s/%s", + path, de->d_name, TABLESPACE_VERSION_DIRECTORY); + + if (lstat(tblspc_path, &tblspc_st) < 0) + pg_fatal("could not stat file \"%s\": %m", + tblspc_path); + + /* + * Move backwards once as the scan needs to happen for the + * contents of TABLESPACE_VERSION_DIRECTORY. + */ + snprintf(tblspc_path, sizeof(tblspc_path), "%s/%s", + path, de->d_name); + + /* Looks like a valid tablespace location */ + dirsize += scan_directory(tblspc_path, + TABLESPACE_VERSION_DIRECTORY, + sizeonly); + } + else + { + dirsize += scan_directory(path, de->d_name, sizeonly); + } + } + } + closedir(dir); + return dirsize; +} + +int +main(int argc, char *argv[]) +{ + static struct option long_options[] = { + {"check", no_argument, NULL, 'c'}, + {"pgdata", required_argument, NULL, 'D'}, + {"disable", no_argument, NULL, 'd'}, + {"enable", no_argument, NULL, 'e'}, + {"filenode", required_argument, NULL, 'f'}, + {"no-sync", no_argument, NULL, 'N'}, + {"progress", no_argument, NULL, 'P'}, + {"verbose", no_argument, NULL, 'v'}, + {NULL, 0, NULL, 0} + }; + + char *DataDir = NULL; + int c; + int option_index; + bool crc_ok; + + pg_logging_init(argv[0]); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_checksums")); + progname = get_progname(argv[0]); + + if (argc > 1) + { + if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) + { + usage(); + exit(0); + } + if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) + { + puts("pg_checksums (PostgreSQL) " PG_VERSION); + exit(0); + } + } + + while ((c = getopt_long(argc, argv, "cD:deNPf:v", long_options, &option_index)) != -1) + { + switch (c) + { + case 'c': + mode = PG_MODE_CHECK; + break; + case 'd': + mode = PG_MODE_DISABLE; + break; + case 'e': + mode = PG_MODE_ENABLE; + break; + case 'f': + if (!option_parse_int(optarg, "-f/--filenode", 0, + INT_MAX, + NULL)) + exit(1); + only_filenode = pstrdup(optarg); + break; + case 'N': + do_sync = false; + break; + case 'v': + verbose = true; + break; + case 'D': + DataDir = optarg; + break; + case 'P': + showprogress = true; + 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"); + + /* If no DataDir was specified, and none could be found, error out */ + if (DataDir == NULL) + { + pg_log_error("no data directory specified"); + pg_log_error_hint("Try \"%s --help\" for more information.", progname); + exit(1); + } + } + + /* 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); + } + + /* filenode checking only works in --check mode */ + if (mode != PG_MODE_CHECK && only_filenode) + { + pg_log_error("option -f/--filenode can only be used with --check"); + pg_log_error_hint("Try \"%s --help\" for more information.", progname); + exit(1); + } + + /* Read the control file and check compatibility */ + ControlFile = get_controlfile(DataDir, &crc_ok); + if (!crc_ok) + pg_fatal("pg_control CRC value is incorrect"); + + if (ControlFile->pg_control_version != PG_CONTROL_VERSION) + pg_fatal("cluster is not compatible with this version of pg_checksums"); + + if (ControlFile->blcksz != BLCKSZ) + { + pg_log_error("database cluster is not compatible"); + pg_log_error_detail("The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u.", + ControlFile->blcksz, BLCKSZ); + exit(1); + } + + /* + * Check if cluster is running. A clean shutdown is required to avoid + * random checksum failures caused by torn pages. Note that this doesn't + * guard against someone starting the cluster concurrently. + */ + if (ControlFile->state != DB_SHUTDOWNED && + ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY) + pg_fatal("cluster must be shut down"); + + if (ControlFile->data_checksum_version == 0 && + mode == PG_MODE_CHECK) + pg_fatal("data checksums are not enabled in cluster"); + + if (ControlFile->data_checksum_version == 0 && + mode == PG_MODE_DISABLE) + pg_fatal("data checksums are already disabled in cluster"); + + if (ControlFile->data_checksum_version > 0 && + mode == PG_MODE_ENABLE) + pg_fatal("data checksums are already enabled in cluster"); + + /* Operate on all files if checking or enabling checksums */ + if (mode == PG_MODE_CHECK || mode == PG_MODE_ENABLE) + { + /* + * If progress status information is requested, we need to scan the + * directory tree twice: once to know how much total data needs to be + * processed and once to do the real work. + */ + if (showprogress) + { + total_size = scan_directory(DataDir, "global", true); + total_size += scan_directory(DataDir, "base", true); + total_size += scan_directory(DataDir, "pg_tblspc", true); + } + + (void) scan_directory(DataDir, "global", false); + (void) scan_directory(DataDir, "base", false); + (void) scan_directory(DataDir, "pg_tblspc", false); + + if (showprogress) + progress_report(true); + + printf(_("Checksum operation completed\n")); + printf(_("Files scanned: %lld\n"), (long long) files_scanned); + printf(_("Blocks scanned: %lld\n"), (long long) blocks_scanned); + if (mode == PG_MODE_CHECK) + { + printf(_("Bad checksums: %lld\n"), (long long) badblocks); + printf(_("Data checksum version: %u\n"), ControlFile->data_checksum_version); + + if (badblocks > 0) + exit(1); + } + else if (mode == PG_MODE_ENABLE) + { + printf(_("Files written: %lld\n"), (long long) files_written); + printf(_("Blocks written: %lld\n"), (long long) blocks_written); + } + } + + /* + * Finally make the data durable on disk if enabling or disabling + * checksums. Flush first the data directory for safety, and then update + * the control file to keep the switch consistent. + */ + if (mode == PG_MODE_ENABLE || mode == PG_MODE_DISABLE) + { + ControlFile->data_checksum_version = + (mode == PG_MODE_ENABLE) ? PG_DATA_CHECKSUM_VERSION : 0; + + if (do_sync) + { + pg_log_info("syncing data directory"); + fsync_pgdata(DataDir, PG_VERSION_NUM); + } + + pg_log_info("updating control file"); + update_controlfile(DataDir, ControlFile, do_sync); + + if (verbose) + printf(_("Data checksum version: %u\n"), ControlFile->data_checksum_version); + if (mode == PG_MODE_ENABLE) + printf(_("Checksums enabled in cluster\n")); + else + printf(_("Checksums disabled in cluster\n")); + } + + return 0; +} diff --git a/src/bin/pg_checksums/po/de.po b/src/bin/pg_checksums/po/de.po new file mode 100644 index 0000000..460b5b5 --- /dev/null +++ b/src/bin/pg_checksums/po/de.po @@ -0,0 +1,330 @@ +# German message translation file for pg_checksums +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Peter Eisentraut <peter@eisentraut.org>, 2018 - 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-05-11 15:51+0000\n" +"PO-Revision-Date: 2022-05-11 22: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" + +#: ../../../src/common/logging.c:277 +#, c-format +msgid "error: " +msgstr "Fehler: " + +#: ../../../src/common/logging.c:284 +#, c-format +msgid "warning: " +msgstr "Warnung: " + +#: ../../../src/common/logging.c:295 +#, c-format +msgid "detail: " +msgstr "Detail: " + +#: ../../../src/common/logging.c:302 +#, c-format +msgid "hint: " +msgstr "Tipp: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "ungültiger Wert »%s« für Option %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s muss im Bereich %d..%d sein" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s überprüft die Datenprüfsummen in einem PostgreSQL-Datenbankcluster oder schaltet sie ein oder aus.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Aufruf:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPTION]... [DATENVERZEICHNIS]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Optionen:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]VERZ Datenbankverzeichnis\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check Datenprüfsummen prüfen (Voreinstellung)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable Datenprüfsummen ausschalten\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable Datenprüfsummen einschalten\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE nur Relation mit angegebenem Filenode prüfen\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr "" +" -N, --no-sync nicht warten, bis Änderungen sicher auf Festplatte\n" +" geschrieben sind\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress Fortschrittsinformationen zeigen\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose »Verbose«-Modus\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Berichten Sie Fehler an <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s Homepage: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) berechnet" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "konnte Datei »%s« nicht öffnen: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "konnte Block %u in Datei »%s« nicht lesen: %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "konnte Block %u in Datei »%s« nicht lesen: %d von %d gelesen" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "Prüfsummenprüfung fehlgeschlagen in Datei »%s«, Block %u: berechnete Prüfsumme ist %X, aber der Block enthält %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "seek fehlgeschlagen für Block %u in Datei »%s«: %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "konnte Block %u in Datei »%s« nicht schreiben: %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "konnte Block %u in Datei »%s« nicht schreiben: %d von %d geschrieben" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "Prüfsummen wurden überprüft in Datei »%s«" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "Prüfsummen wurden eingeschaltet in Datei »%s«" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "konnte Verzeichnis »%s« nicht öffnen: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "ungültige Segmentnummer %d in Dateiname »%s«" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Versuchen Sie »%s --help« für weitere Informationen." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "kein Datenverzeichnis angegeben" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "zu viele Kommandozeilenargumente (das erste ist »%s«)" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "Option -f/--filenode kann nur mit --check verwendet werden" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "CRC-Wert in pg_control ist falsch" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "die Cluster sind nicht mit dieser Version von pg_checksums kompatibel" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "Datenbank-Cluster ist nicht kompatibel" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "Der Datenbank-Cluster wurde mit Blockgröße %u initialisiert, aber pg_checksums wurde mit Blockgröße %u kompiliert." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "Cluster muss heruntergefahren sein" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "Datenprüfsummen sind im Cluster nicht eingeschaltet" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "Datenprüfsummen sind im Cluster bereits ausgeschaltet" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "Datenprüfsummen sind im Cluster bereits eingeschaltet" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Prüfsummenoperation abgeschlossen\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Überprüfte Dateien: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Überprüfte Blöcke: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Falsche Prüfsummen: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Datenprüfsummenversion: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Geschriebene Dateien: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Geschriebene Blöcke: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "synchronisiere Datenverzeichnis" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "aktualisiere Kontrolldatei" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Prüfsummen wurden im Cluster eingeschaltet\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Prüfsummen wurden im Cluster ausgeschaltet\n" diff --git a/src/bin/pg_checksums/po/el.po b/src/bin/pg_checksums/po/el.po new file mode 100644 index 0000000..86395be --- /dev/null +++ b/src/bin/pg_checksums/po/el.po @@ -0,0 +1,337 @@ +# Greek message translation file for pg_checksums +# Copyright (C) 2021 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_checksums (PostgreSQL) package. +# Georgios Kokolatos <gkokolatos@pm.me>, 2021 +# +# +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-04-14 09:21+0000\n" +"PO-Revision-Date: 2023-04-14 13:01+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" +"X-Generator: Poedit 3.2.2\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "σφάλμα: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "προειδοποίηση: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "λεπτομέρεια: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "υπόδειξη: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "μη έγκυρη τιμή «%s» για την επιλογή %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s πρέπει να βρίσκεται εντός εύρους %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s ενεργοποιεί, απενεργοποιεί ή επαληθεύει τα αθροίσματα ελέγχου δεδομένων σε μία συστάδα βάσεων δεδομένων PostgreSQL.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Χρήση:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [ΕΠΙΛΟΓΗ]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Επιλογές:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR κατάλογος δεδομένων\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check έλεγξε αθροίσματα ελέγχου δεδομένων (προεπιλογή)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable απενεργοποίησε τα αθροίσματα ελέγχου δεδομένων\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable ενεργοποίησε τα αθροίσματα ελέγχου δεδομένων\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE έλεγξε μόνο τη σχέση με το καθορισμένο filenode\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync να μην αναμένει την ασφαλή εγγραφή αλλαγών στον δίσκο\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress εμφάνισε πληροφορίες προόδου\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose περιφραστικά μηνύματα εξόδου\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help εμφάνισε αυτό το μήνυμα βοήθειας, στη συνέχεια έξοδος\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Υποβάλετε αναφορές σφάλματων σε <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s αρχική σελίδα: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld ΜΒ (%d%%) υπολογισμένο" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου «%s»: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "δεν ήταν δυνατή η ανάγνωση του μπλοκ %u στο αρχείο «%s»: %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "δεν ήταν δυνατή η ανάγνωση του μπλοκ %u στο αρχείο «%s»: ανάγνωσε %d από %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "επαλήθευση του αθροίσματος ελέγχου απέτυχε στο αρχείο «%s», μπλοκ %u: υπολογισμένο άθροισμα ελέγχου %X αλλά το μπλοκ περιέχει %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "αναζήτηση απέτυχε για μπλοκ %u στο αρχείο «%s»: %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "δεν ήταν δυνατή η εγγραφή μπλοκ %u στο αρχείο «%s»: %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "δεν ήταν δυνατή η εγγραφή μπλοκ %u στο αρχείο «%s»: έγραψε %d από %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "επαληθευμένα αθροίσματα ελέγχου στο αρχείο «%s»" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "ενεργοποιημένα αθροίσματα ελέγχου στο αρχείο «%s»" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "δεν ήταν δυνατό το άνοιγμα του καταλόγου «%s»: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "δεν ήταν δυνατή η εκτέλεση stat στο αρχείο «%s»: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "μη έγκυρος αριθμός τμήματος %d στο αρχείο με όνομα «%s»" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "δεν ορίστηκε κατάλογος δεδομένων" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "πάρα πολλές παράμετροι εισόδου από την γραμμή εντολών (η πρώτη είναι η «%s»)" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "η επιλογή -f/--filenode μπορεί να χρησιμοποιηθεί μόνο μαζί με την --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "η τιμή pg_control CRC είναι λανθασμένη" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "η συστάδα δεν είναι συμβατή με αυτήν την έκδοση pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "η συστάδα βάσεων δεδομένων δεν είναι συμβατή" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "Η συστάδα βάσεων δεδομένων αρχικοποιήθηκε με μέγεθος μπλοκ %u, αλλά το pg_checksums συντάχθηκε με μέγεθος μπλοκ %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "η συστάδα πρέπει να τερματιστεί" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "τα αθροίσματα ελέγχου δεδομένων δεν είναι ενεργοποιημένα στη συστάδα" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "τα αθροίσματα ελέγχου δεδομένων είναι ήδη απενεργοποιημένα στη συστάδα" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "τα αθροίσματα ελέγχου δεδομένων είναι ήδη ενεργοποιημένα στη συστάδα" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Ολοκληρώθηκε η λειτουργία του αθροίσματος ελέγχου\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Σαρωμένα αρχεία: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Σαρωμένα μπλοκ: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Εσφαλμένα αθροίσματα ελέγχου: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Έκδοση αθροισμάτων ελέγχου: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Γραμμένα αρχεία: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Γραμμένα μπλοκ: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "συγχρονίζεται κατάλογος δεδομένων" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "ενημερώνεται αρχείο ελέγχου" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Ενεργοποίηση των αθροισμάτων ελέγχου στη συστάδα\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Τα αθροίσματα ελέγχου δεδομένων είναι απενεργοποιημένα στη συστάδα\n" + +#~ msgid "fatal: " +#~ msgstr "κρίσιμο: " + +#~ msgid "invalid filenode specification, must be numeric: %s" +#~ msgstr "μη έγκυρη προδιαγραφή filenode, πρέπει να είναι αριθμητική: %s" diff --git a/src/bin/pg_checksums/po/es.po b/src/bin/pg_checksums/po/es.po new file mode 100644 index 0000000..3e390e5 --- /dev/null +++ b/src/bin/pg_checksums/po/es.po @@ -0,0 +1,332 @@ +# Spanish message translation file for pg_checksums +# +# Copyright (c) 2019-2021, PostgreSQL Global Development Group +# +# This file is distributed under the same license as the pg_checksums (PostgreSQL) package. +# Álvaro Herrera <alvherre@alvh.no-ip.org>, 2019. +# Carlos Chapi <carloswaldo@babelruins.org>, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-05-07 16:51+0000\n" +"PO-Revision-Date: 2022-10-20 09:06+0200\n" +"Last-Translator: Carlos Chapi <carloswaldo@babelruins.org>\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.4.2\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "error: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "precaución: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "detalle: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "consejo: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "el valor «%s» no es válido para la opción %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s debe estar en el rango %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s activa, desactiva o verifica checksums de datos en un clúster PostgreSQL.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Empleo:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPCIÓN]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opciones:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR directorio de datos\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check verificar checksums (por omisión)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable desactivar checksums\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable activar checksums\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE verificar sólo la relación con el filenode dado\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync no esperar que los cambios se sincronicen a disco\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress mostrar información de progreso\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose desplegar mensajes verbosos\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version mostrar información de versión y salir\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help mostrar esta ayuda y salir\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Reportar errores a <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Sitio web de %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) calculado" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "no se pudo abrir el archivo «%s»: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "no se pudo leer el bloque %u del archivo «%s»: %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "no se pudo leer bloque %u en archivo «%s»: leídos %d de %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "verificación de checksums falló en archivo «%s», bloque %u: checksum calculado %X pero bloque contiene %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "posicionamiento (seek) falló para el bloque %u en archivo «%s»: %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "no se pudo escribir el bloque %u en el archivo «%s»: %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "no se pudo escribir el bloque %u en el archivo «%s»: se escribieron %d de %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "checksums verificados en archivo «%s»" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "checksums activados en archivo «%s»" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "no se pudo abrir el directorio «%s»: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "no se pudo hacer stat al archivo «%s»: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "número de segmento %d no válido en nombre de archivo «%s»" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Pruebe «%s --help» para mayor información." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "no se especificó el directorio de datos" + +#: pg_checksums.c:536 +#, 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_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "la opción -f/--filenode sólo puede usarse con --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "el valor de CRC de pg_control es incorrecto" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "el clúster no es compatible con esta versión de pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "el clúster de bases de datos no es compatible" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "El clúster fue inicializado con tamaño de bloque %u, pero pg_checksums fue compilado con tamaño de bloques %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "el clúster debe estar apagado" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "los checksums de datos no están activados en el clúster" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "los checksums de datos ya están desactivados en el clúster" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "los checksums de datos ya están activados en el clúster" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Operación de checksums completa\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Archivos recorridos: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Bloques recorridos: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Checksums incorrectos: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Versión de checksums de datos: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Archivos escritos: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Bloques escritos: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "sincronizando directorio de datos" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "actualizando archivo de control" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Checksums activos en el clúster\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Checksums inactivos en el clúster\n" diff --git a/src/bin/pg_checksums/po/fr.po b/src/bin/pg_checksums/po/fr.po new file mode 100644 index 0000000..dcdb4c7 --- /dev/null +++ b/src/bin/pg_checksums/po/fr.po @@ -0,0 +1,374 @@ +# LANGUAGE message translation file for pg_verify_checksums +# Copyright (C) 2018-2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_verify_checksums (PostgreSQL) package. +# +# Use these quotes: « %s » +# +# Guillaume Lelarge <guillaume@lelarge.info>, 2018-2022. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-05-14 10:21+0000\n" +"PO-Revision-Date: 2022-05-14 17:15+0200\n" +"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n" +"Language-Team: French <guillaume@lelarge.info>\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0.1\n" + +#: ../../../src/common/logging.c:277 +#, c-format +msgid "error: " +msgstr "erreur : " + +#: ../../../src/common/logging.c:284 +#, c-format +msgid "warning: " +msgstr "attention : " + +#: ../../../src/common/logging.c:295 +#, c-format +msgid "detail: " +msgstr "détail : " + +#: ../../../src/common/logging.c:302 +#, c-format +msgid "hint: " +msgstr "astuce : " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "valeur « %s » invalide pour l'option %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s doit être compris entre %d et %d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s active, désactive ou vérifie les sommes de contrôle de données dans\n" +"une instance PostgreSQL.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Usage :\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPTION]... [RÉP_DONNÉES]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Options :\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]REP_DONNEES répertoire des données\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check vérifie les sommes de contrôle (par défaut)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable désactive les sommes de contrôle\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable active les sommes de contrôle\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr "" +" -f, --filenode=FILENODE vérifie seulement la relation dont l'identifiant\n" +" relfilenode est indiqué\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr "" +" -N, --no-sync n'attend pas que les modifications soient\n" +" proprement écrites sur disque\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress affiche la progression de l'opération\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose affiche des messages verbeux\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version affiche la version puis quitte\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help affiche cette aide puis quitte\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapporter les bogues à <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Page d'accueil de %s : <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld Mo (%d%%) traités" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier « %s » : %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %d lus sur %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "échec de la vérification de la somme de contrôle dans le fichier « %s », bloc %u : somme de contrôle calculée %X, alors que le bloc contient %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "n'a pas pu rechercher le bloc %u dans le fichier « %s » : %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "n'a pas pu écrire le bloc %u dans le fichier « %s » : %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "n'a pas pu écrire le bloc %u du fichier « %s » : a écrit %d octets sur %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "sommes de contrôle vérifiées dans le fichier « %s »" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "sommes de contrôle activées dans le fichier « %s »" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "n'a pas pu ouvrir le répertoire « %s » : %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "n'a pas pu tester le fichier « %s » : %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "numéro de segment %d invalide dans le nom de fichier « %s »" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Essayez « %s --help » pour plus d'informations." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "aucun répertoire de données indiqué" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "trop d'arguments en ligne de commande (le premier étant « %s »)" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "l'option « -f/--filenode » peut seulement être utilisée avec --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "la valeur CRC de pg_control n'est pas correcte" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "l'instance n'est pas compatible avec cette version de pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "l'instance n'est pas compatible" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "L'instance a été initialisée avec une taille de bloc à %u alors que pg_checksums a été compilé avec une taille de bloc à %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "l'instance doit être arrêtée" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "les sommes de contrôle sur les données ne sont pas activées sur cette instance" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "les sommes de contrôle sur les données sont déjà désactivées sur cette instance" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "les sommes de contrôle sur les données sont déjà activées sur cette instance" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Opération sur les sommes de contrôle terminée\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Fichiers parcourus : %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Blocs parcourus : %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Mauvaises sommes de contrôle : %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Version des sommes de contrôle sur les données : %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Fichiers écrits : %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Blocs écrits : %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "synchronisation du répertoire des données" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "mise à jour du fichier de contrôle" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Sommes de contrôle sur les données activées sur cette instance\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Sommes de contrôle sur les données désactivées sur cette instance\n" + +#~ msgid " -?, --help show this help, then exit\n" +#~ msgstr " -?, --help affiche cette aide puis quitte\n" + +#~ msgid " -V, --version output version information, then exit\n" +#~ msgstr " -V, --version affiche la version puis quitte\n" + +#~ msgid "%s: could not open directory \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" + +#~ msgid "%s: could not open file \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" + +#~ msgid "%s: could not stat file \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n" + +#~ msgid "%s: no data directory specified\n" +#~ msgstr "%s : aucun répertoire de données indiqué\n" + +#~ msgid "%s: too many command-line arguments (first is \"%s\")\n" +#~ msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" + +#~ msgid "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 "Essayez « %s --help » pour plus d'informations.\n" + +#, c-format +#~ msgid "fatal: " +#~ msgstr "fatal : " + +#, c-format +#~ msgid "invalid filenode specification, must be numeric: %s" +#~ msgstr "spécification invalide du relfilnode, doit être numérique : %s" diff --git a/src/bin/pg_checksums/po/it.po b/src/bin/pg_checksums/po/it.po new file mode 100644 index 0000000..9e37af3 --- /dev/null +++ b/src/bin/pg_checksums/po/it.po @@ -0,0 +1,327 @@ +# LANGUAGE message translation file for pg_checksums +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_checksums (PostgreSQL) package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-09-26 08:21+0000\n" +"PO-Revision-Date: 2022-09-29 20:10+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.1.1\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "errore: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "avvertimento: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "dettaglio: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "suggerimento: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "valore \"%s\" non valido per l'opzione %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s deve essere compreso nell'intervallo %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "%s abilita, disabilita o verifica i checksum dei dati in un cluster di database PostgreSQL.\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Utilizzo:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPZIONE]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opzioni:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR directory dei dati\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check controlla i checksum dei dati (predefinito)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable disabilita i checksum dei dati\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable abilita i checksum dei dati\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE controlla solo la relazione con il filenode specificato\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync non attende che le modifiche vengano scritte in modo sicuro sul disco\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress mostra le informazioni sullo stato di avanzamento\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose genera messaggi dettagliati\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version mostra informazioni sulla versione ed esci\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help mostra questo aiuto ed esci\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Segnala i bug a <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Pagina iniziale di %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) calcolati" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "apertura del file \"%s\" fallita: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "lettura del blocco %u nel file \"%s\" fallita: %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "impossibile leggere il blocco %u nel file \"%s\": leggere %d di %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "verifica del checksum non riuscita nel file \"%s\", blocco %u: checksum calcolato %X ma il blocco contiene %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "ricerca non riuscita per il blocco %u nel file \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "scrittura del blocco %u nel file \"%s\" fallita: %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "impossibile scrivere il blocco %u nel file \"%s\": ha scritto %d di %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "checksum verificati nel file \"%s\"" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "checksum abilitati nel file \"%s\"" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "apertura della directory \"%s\" fallita: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "non è stato possibile ottenere informazioni sul file \"%s\": %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "numero segmento non valido %d nel nome file \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Prova \"%s --help\" per maggiori informazioni." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "nessuna directory di dati specificata" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "troppi argomenti della riga di comando (il primo è \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "l'opzione -f/--filenode può essere utilizzata solo con --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "pg_control Il valore CRC non è corretto" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "cluster non è compatibile con questa versione di pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "il cluster di database non è compatibile" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "Il cluster di database è stato inizializzato con la dimensione del blocco %u, ma pg_checksums è stato compilato con la dimensione del blocco %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "il cluster deve essere spento" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "i checksum dei dati non sono abilitati nel cluster" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "i checksum dei dati sono già disabilitati nel cluster" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "i checksum dei dati sono già abilitati nel cluster" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Operazione di checksum completata\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "File scansionati: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Blocchi scansionati: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Checksum errati: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Versione checksum dati: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "File scritti: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Blocchi scritti: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "sincronizzazione della directory dei dati" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "aggiornamento del file di controllo" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Checksum abilitati nel cluster\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Checksum disabilitati nel cluster\n" diff --git a/src/bin/pg_checksums/po/ja.po b/src/bin/pg_checksums/po/ja.po new file mode 100644 index 0000000..aacabde --- /dev/null +++ b/src/bin/pg_checksums/po/ja.po @@ -0,0 +1,339 @@ +# Japanese message translation file for pg_checksums +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (PostgreSQL 15)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-08-09 12:00+0900\n" +"PO-Revision-Date: 2022-05-10 13:45+0900\n" +"Last-Translator: Kyotaro Horiguchi <horikyota.ntt@gmail.com>\n" +"Language-Team: Japan PostgreSQL Users Group <jpug-doc@ml.postgresql.jp>\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.13\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "エラー: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "警告: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "詳細: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "ヒント: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "オプション%sの不正な値\"%s\"" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%sは%d..%dの範囲でなければなりません" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%sはPostgreSQLデータベースクラスタにおけるデータチェックサムの有効化、無効化および検証を行います。\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "使用方法:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPTION]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"オプション:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR データディレクトリ\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check データチェックサムを検証(デフォルト)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable データチェックサムを無効化\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable データチェックサムを有効化\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE 指定したファイルノードのリレーションのみ検証\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync ディスクへの安全な書き込みを待機しない\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress 進行状況を表示\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose 冗長メッセージを出力\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version バージョン情報を表示して終了\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help このヘルプを表示して終了\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "バグは<%s>に報告してください。\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s ホームページ: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) 完了" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "ファイル\"%s\"をオープンできませんでした: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "ファイル\"%2$s\"で%1$uブロックを読み取れませんでした: %3$m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr " ファイル\"%2$s\"のブロック%1$uが読み込めませんでした: %4$d中%3$d読み込み済み" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "ファイル\"%s\" ブロック%uでチェックサム検証が失敗: 算出したチェックサムは%X 、しかしブロック上の値は%X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "ファイル\"%2$s\" ブロック%1$uへのシーク失敗: %3$m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "ファイル\"%2$s\"で%1$uブロックが書き出せませんでした: %3$m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "ファイル\"%2$s\"のブロック%1$uの書き込みに失敗しました: %4$dバイト中%3$dバイトのみ書き込みました" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "ファイル\"%s\"のチェックサムは検証されました" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "ファイル\"%s\"のチェックサムは有効化されました" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "ファイル\"%s\"のstatに失敗しました: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "ファイル名\"%2$s\"の不正なセグメント番号%1$d" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "詳細については\"%s --help\"を実行してください。" + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "データディレクトリが指定されていません" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "コマンドライン引数が多すぎます (最初は\"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "オプション-f/--filenodeは--checkを指定したときのみ指定可能" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "pg_controlのCRC値が正しくありません" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "クラスタはこのバージョンのpg_checksumsと互換性がありません" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "データベースクラスタが非互換です" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "データベースクラスタはブロックサイズ%uで初期化されています、しかしpg_checksumsはブロックサイズ%uでコンパイルされています。" + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "クラスタはシャットダウンされていなければなりません" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "クラスタのデータチェックサムは有効になっていません" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "クラスタのデータチェックサムはすでに無効になっています" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "クラスタのデータチェックサムはすでに有効になっています" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "チェックサム操作が完了しました\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "スキャンしたファイル数: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "スキャンしたブロック数: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "不正なチェックサム数: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "データチェックサムバージョン: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "スキャンしたファイル数: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "スキャンしたブロック数: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "データディレクトリを同期しています" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "コントロールファイルを更新しています" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "クラスタのチェックサムが有効化されました\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "クラスタのチェックサムが無効化されました\n" + +#~ msgid "fatal: " +#~ msgstr "致命的エラー: " + +#~ msgid "invalid filenode specification, must be numeric: %s" +#~ msgstr "不正なファイルノード指定、数値である必要があります: %s" + +#~ msgid "could not update checksum of block %u in file \"%s\": %m" +#~ msgstr "ファイル\"%2$s\" ブロック%1$uのチェックサム更新失敗: %3$m" + +#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n" +#~ msgstr "バグは <pgsql-bugs@lists.postgresql.org> に報告してください。\n" diff --git a/src/bin/pg_checksums/po/ka.po b/src/bin/pg_checksums/po/ka.po new file mode 100644 index 0000000..d202cd7 --- /dev/null +++ b/src/bin/pg_checksums/po/ka.po @@ -0,0 +1,351 @@ +# Georgian message translation file for pg_checksums +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_checksums (PostgreSQL) package. +# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (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 17:50+0200\n" +"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n" +"Language-Team: Georgian <nothing>\n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.1\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "შეცდომა: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "გაფრთხილება: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "დეტალები: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "მინიშნება: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "არასწორი მნიშვნელობა \"%s\" პარამეტრისთვის %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s არაა საზღვრებში %d-დან %d-მდე" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database " +"cluster.\n" +"\n" +msgstr "" +"%s ჩართავს, გამორთავს და შეამოწმებს მონაცემების საკონტროლო ჯამებს " +"PostgreSQL მონაცემთა ბაზის კლასტერში.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "გამოყენება:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [პარამეტრი]... [მონაცემებისსაქაღალდე]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"პარამეტრები:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR მონაცემების საქაღალდე\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr "" +" -c, --check მონაცემების საკნტროლო ჯამის " +"შემოწმება(ნაგულისხმები)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable მონაცემების საკონტროლო ჯამების გამორთვა\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable მონაცემების საკონტროლო ჯამების ჩართვა\n" + +#: pg_checksums.c:87 +#, c-format +msgid "" +" -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr "" +" -f, --filenode=ფაილისკვანძი მხოლოდ მითითებულ ფაილის კვანძთან ურთიერთობის " +"შემოწმება\n" + +#: pg_checksums.c:88 +#, c-format +msgid "" +" -N, --no-sync do not wait for changes to be written safely to " +"disk\n" +msgstr "" +" -N, --no-sync არ დაველოდო ცვლილებების დისკზე უსაფრთხოდ " +"ჩაწერას\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress მიმდინარეობის ინფორმაციის ჩვენება\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose დამატებითი ინფორმაციის გამოტანა\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version ვერსიის ინფორმაციის გამოტანა და გასვლა\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help ამ დახმარების ჩვენება და გასვლა\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "შეცდომების შესახებ მიწერეთ: <%s>\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s-ის საწყისი გვერდია: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld მბ (%d%%) გამოთვლილია" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "ფაილის (%s) გახსნის შეცდომა: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "ბლოკის %u წაკითხვის შეცდომა ფაილში \"%s\": %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "ბლოკის %u წაკითხვის შეცდომა ფაილში \"%s\": წაკითხულია %d %d-დან" + +#: pg_checksums.c:240 +#, c-format +msgid "" +"checksum verification failed in file \"%s\", block %u: calculated checksum " +"%X but block contains %X" +msgstr "" +"საკონტროლო ჯამის გამოთვლის შეცდომა ფაილში \"%s\", ბლოკი \"%u\": გამოთვლილი " +"საკონტროლო კამია %X, მაგრამ ბლოკი შეიცავს: %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "გადახვევის შეცდომა ბლოკისთვის %u ფაილში \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "ბლოკის %u ჩაწერის შეცდომა ფაილში \"%s\": %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "ბლოკის %u ჩაწერის შეცდომა ფაილში \"%s\": ჩაწერილია %d %d-დან" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "ფაილის საკონტროლო ჯამები შემოწმებულია ფაილში: \"%s\"" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "ფაილის საკონტროლო ჯამები ჩართულია ფაილიდან: \"%s\"" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "საქაღალდის (%s) გახსნის შეცდომა: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "ფაილი \"%s\" არ არსებობს: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "სეგმენტის არასწორი ნომერი %d ფაილის სახელში \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "მეტი ინფორმაციისთვის სცადეთ '%s --help'." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "მონაცემების საქაღალდე მითითებული არაა" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "მეტისმეტად ბევრი ბრძანების-სტრიქონის არგუმენტი (პირველია \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "" +"პარამეტრი -f/--filenode მხოლოდ --check -თან ერთად შეიძლება იქნას " +"გამოყენებული" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "pg_control CRC მნიშვნელობა არასწორია" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "კლასტერი შეუთავსებელია pg_checksums-ის ამ ვერსიასთან" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "ბაზის კლასტერი შეუთავსებელია" + +#: pg_checksums.c:561 +#, c-format +msgid "" +"The database cluster was initialized with block size %u, but pg_checksums " +"was compiled with block size %u." +msgstr "" +"ბაზის კლასტერის ინიციალიზაცია მოხდა ბლოკის ზომით %u მაშინ, როცა " +"pg_checksums აგებულია ბლოკის ზომით: %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "კლასტერი უნდა გამოირთოს" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "კლასტერში მონაცემების საკონტროლო ჯამები ჩართული არაა" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "კლასტერში მონაცემების საკონტროლო ჯამები უკვე გამორთულია" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "კლასტერში მონაცემების საკონტროლო ჯამები უკვე ჩართულია" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "საკონტროლო ჯამების ოპერაცია დასრულდა\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "დასკანერებულია ფაილები: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "დასკარერებული ბლოკები: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "ცუდი საკონტროლო ჯამები: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "მონაცემების საკონტროლო ჯამის ვერსია: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "ჩაწერილი ფაილები: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "ჩაწერილი ბლოკები: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "მონაცემების საქაღალდის სინქრონიზაცია" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "საკონტროლო ფაილის ატვირთვა" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "კლასტერში მონაცემების საკონტროლო ჯამები ჩართულია\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "კლასტერში საკონტროლო ჯამები გამორთულია\n" diff --git a/src/bin/pg_checksums/po/ko.po b/src/bin/pg_checksums/po/ko.po new file mode 100644 index 0000000..10c4241 --- /dev/null +++ b/src/bin/pg_checksums/po/ko.po @@ -0,0 +1,355 @@ +# LANGUAGE message translation file for pg_verify_checksums +# Copyright (C) 2018 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_verify_checksums (PostgreSQL) package. +# Ioseph Kim <ioseph@uri.sarang.net>, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_checksums (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-04-12 00:51+0000\n" +"PO-Revision-Date: 2023-04-05 18:06+0900\n" +"Last-Translator: Ioseph Kim <ioseph@uri.sarang.net>\n" +"Language-Team: PostgreSQL Korea <kr@postgresql.org>\n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "오류: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "경고: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "상세정보: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "힌트: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "\"%s\" 값은 \"%s\" 옵션값으로 유효하지 않음" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s 값은 %d부터 %d까지 지정할 수 있습니다." + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database " +"cluster.\n" +"\n" +msgstr "" +"%s 명령은 PostgreSQL 데이터베이스 클러스터 내 자료 체크섬을 활성화 또는\n" +"비활성화 또는 유효성 검사를 합니다.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "사용법:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [옵션]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"옵션들:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR 데이터 디렉터리\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check 실 작업 없이, 그냥 검사만 (기본값)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable 자료 페이지 체크섬 비활성화\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable 자료 페이지 체크섬 활성화\n" + +#: pg_checksums.c:87 +#, c-format +msgid "" +" -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE 지정한 파일노드만 검사\n" + +#: pg_checksums.c:88 +#, c-format +msgid "" +" -N, --no-sync do not wait for changes to be written safely to " +"disk\n" +msgstr "" +" -N, --no-sync 작업 완료 뒤 디스크 동기화 작업을 하지 않음\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress 진행 과정 보여줌\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose 자세한 작업 메시지 보여줌\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version 버전 정보를 보여주고 마침\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help 이 도움말을 보여주고 마침\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "문제점 보고 주소: <%s>\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s 홈페이지: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) 계산됨" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "\"%s\" 파일을 열 수 없음: %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "%u 블럭을 \"%s\" 파일에서 읽을 수 없음: %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "%u 블럭을 \"%s\" 파일에서 읽을 수 없음: %d / %d 바이트만 읽음" + +#: pg_checksums.c:240 +#, c-format +msgid "" +"checksum verification failed in file \"%s\", block %u: calculated checksum " +"%X but block contains %X" +msgstr "" +"\"%s\" 파일, %u 블럭의 체크섬 검사 실패: 계산된 체크섬은 %X 값이지만, 블럭에" +"는 %X 값이 있음" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "%u 블럭을 \"%s\" 파일에서 찾을 수 없음: %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "%u 블럭을 \"%s\" 파일에 쓸 수 없음: %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "%u 블럭을 \"%s\" 파일에 쓸 수 없음: %d / %d 바이트만 씀" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "\"%s\" 파일 체크섬 검사 마침" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "\"%s\" 파일 체크섬 활성화 함" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "\"%s\" 디렉터리 열 수 없음: %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "\"%s\" 파일의 상태값을 알 수 없음: %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "잘못된 조각 번호 %d, 해당 파일: \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "자세한 사항은 \"%s --help\" 명령으로 살펴보세요." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "데이터 디렉터리를 지정하지 않았음" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "너무 많은 명령행 인수를 지정했음 (처음 \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "-f/--filenode 옵션은 --check 옵션만 사용할 수 있음" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "pg_control CRC 값이 잘못되었음" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "해당 클러스터는 이 버전 pg_checksum과 호환되지 않음" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "데이터베이스 클러스터는 호환되지 않음" + +#: pg_checksums.c:561 +#, c-format +msgid "" +"The database cluster was initialized with block size %u, but pg_checksums " +"was compiled with block size %u." +msgstr "" +"이 데이터베이스 클러스터는 %u 블록 크기로 초기화 되었지만, pg_checksum은 %u " +"블록 크기로 컴파일 되어있습니다." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "먼저 서버가 중지되어야 함" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "이 클러스터는 자료 체크섬이 비활성화 상태임" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "이 클러스터는 이미 자료 체크섬이 비활성화 상태임" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "이 클러스터는 이미 자료 체크섬이 활성화 상태임" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "체크섬 작업 완료\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "조사한 파일수: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "조사한 블럭수: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "잘못된 체크섬: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "자료 체크섬 버전: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "기록한 파일수: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "기록한 블럭수: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "데이터 디렉터리 fsync 중" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "컨트롤 파일 바꾸는 중" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "이 클러스터는 자료 체크섬 옵션이 활성화 되었음\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "이 클러스터는 자료 체크섬 옵션이 비활성화 되었음\n" + +#, c-format +#~ msgid "Try \"%s --help\" for more information.\n" +#~ msgstr "자제한 사항은 \"%s --help\" 명령으로 살펴보십시오.\n" + +#, c-format +#~ msgid "fatal: " +#~ msgstr "심각: " + +#, c-format +#~ msgid "invalid filenode specification, must be numeric: %s" +#~ msgstr "파일노드 값이 이상함. 이 값은 숫자여야 함: %s" diff --git a/src/bin/pg_checksums/po/pt_BR.po b/src/bin/pg_checksums/po/pt_BR.po new file mode 100644 index 0000000..d310b37 --- /dev/null +++ b/src/bin/pg_checksums/po/pt_BR.po @@ -0,0 +1,328 @@ +# Brazilian Portuguese message translation file for pg_checksums + +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Euler Taveira <euler@eulerto.com>, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-09-27 13:15-0300\n" +"PO-Revision-Date: 2022-09-27 20:27-0300\n" +"Last-Translator: Euler Taveira <euler@eulerto.com>\n" +"Language-Team: Brazilian Portuguese <pgsql-translators@postgresql.org>\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "erro: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "detalhe: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "dica: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "valor \"%s\" é inválido para opção %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s deve estar no intervalo de %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "%s habilita, desabilita ou verifica somas de verificação de dados em um agrupamento de banco de dados do PostgreSQL.\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Uso:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPÇÃO]... [DIRDADOS]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opções:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DIRDADOS diretório de dados\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check verifica soma de verificação de dados (padrão)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable desabilita soma de verificação de dados\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable habilita soma de verificação de dados\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE verifica somente relação com o filenode especificado\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync não espera mudanças serem escritas com segurança no disco\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress mostra informação de progresso\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose mostra mensagens de detalhe\n" + +#: pg_checksums.c:91 +#, 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_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help mostra essa ajuda e termina\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Relate erros a <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "página web do %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) calculado" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "não pôde abrir arquivo \"%s\": %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "não pôde ler bloco %u no arquivo \"%s\": %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "não pôde ler bloco %u no arquivo \"%s\": leu %d de %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "comparação de soma de verificação falhou no arquivo \"%s\", bloco %u: soma de verificação calculada %X mas bloco contém %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "posicionamento falhou para block %u no arquivo \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "não pôde escrever bloco %u no arquivo \"%s\": %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "não pôde escrever bloco %u no arquivo \"%s\": escreveu %d de %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "somas de verificação comparadas no arquivo \"%s\"" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "somas de verificação habilitadas no arquivo \"%s\"" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "não pôde abrir diretório \"%s\": %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "não pôde executar stat no arquivo \"%s\": %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "número de segmento %d é inválido no nome do arquivo \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Tente \"%s --help\" para obter informações adicionais." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "nenhum diretório de dados foi especificado" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "muitos argumentos de linha de comando (primeiro é \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "opção -f/--filenode só pode ser utilizado com --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "valor de CRC do pg_control está incorreto" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "agrupamento de banco de dados não é compatível com esta versão do pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "agrupamento de banco de dados não é compatível" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "O agrupamento de banco de dados foi inicializado com tamanho de bloco %u, mas pg_checksums foi compilado com tamanho de bloco %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "agrupamento de banco de dados deve ser desligado" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "somas de verificação de dados não estão habilitadas no agrupamento de banco de dados" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "somas de verificação de dados já estão desabilitadas no agrupamento de banco de dados" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "somas de verificação de dados já estão habilitadas no agrupamento de banco de dados" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Operação de soma de verificação concluída\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Arquivos verificados: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Blocos verificados: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Somas de verificação incorretas: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Versão da soma de verificação de dados: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Arquivos verificados: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Blocos verificados: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "sincronizando diretório de dados" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "atualizando arquivo de controle" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Somas de verificação habilitadas no agrupamento de banco de dados\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Somas de verificação desabilitadas no agrupamento de banco de dados\n" diff --git a/src/bin/pg_checksums/po/ru.po b/src/bin/pg_checksums/po/ru.po new file mode 100644 index 0000000..df62e9d --- /dev/null +++ b/src/bin/pg_checksums/po/ru.po @@ -0,0 +1,352 @@ +# Alexander Lakhin <a.lakhin@postgrespro.ru>, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: pg_verify_checksums (PostgreSQL) 11\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-08-27 14:52+0300\n" +"PO-Revision-Date: 2022-09-05 13: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" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "ошибка: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "предупреждение: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "подробности: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "подсказка: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "неверное значение \"%s\" для параметра %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "значение %s должно быть в диапазоне %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database " +"cluster.\n" +"\n" +msgstr "" +"%s включает, отключает, проверяет контрольные суммы данных в кластере БД " +"PostgreSQL.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Использование:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [ПАРАМЕТР]... [КАТАЛОГ]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Параметры:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]КАТ_ДАННЫХ каталог данных\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr "" +" -c, --check проверить контрольные суммы данных (по " +"умолчанию)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable отключить контрольные суммы\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable включить контрольные суммы\n" + +#: pg_checksums.c:87 +#, c-format +msgid "" +" -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr "" +" -f, --filenode=ФАЙЛ_УЗЕЛ проверить только отношение с заданным файловым " +"узлом\n" + +#: pg_checksums.c:88 +#, c-format +msgid "" +" -N, --no-sync do not wait for changes to be written safely to " +"disk\n" +msgstr "" +" -N, --no-sync не ждать завершения сохранения данных на диске\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress показывать прогресс операции\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose выводить подробные сообщения\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version показать версию и выйти\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help показать эту справку и выйти\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Об ошибках сообщайте по адресу <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Домашняя страница %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld МБ (%d%%) обработано" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "не удалось открыть файл \"%s\": %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "не удалось прочитать блок %u в файле \"%s\": %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "не удалось прочитать блок %u в файле \"%s\" (прочитано байт: %d из %d)" + +#: pg_checksums.c:240 +#, c-format +msgid "" +"checksum verification failed in file \"%s\", block %u: calculated checksum " +"%X but block contains %X" +msgstr "" +"ошибка контрольных сумм в файле \"%s\", блоке %u: вычислена контрольная " +"сумма %X, но блок содержит %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "ошибка при переходе к блоку %u в файле \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "не удалось записать блок %u в файл \"%s\": %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "не удалось записать блок %u в файле \"%s\" (записано байт: %d из %d)" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "контрольные суммы в файле \"%s\" проверены" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "контрольные суммы в файле \"%s\" включены" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "не удалось открыть каталог \"%s\": %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "не удалось получить информацию о файле \"%s\": %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "неверный номер сегмента %d в имени файла \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Для дополнительной информации попробуйте \"%s --help\"." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "каталог данных не указан" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "слишком много аргументов командной строки (первый: \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "параметр -f/--filenode можно использовать только с --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "ошибка контрольного значения в pg_control" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "кластер несовместим с этой версией pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "несовместимый кластер баз данных" + +#: pg_checksums.c:561 +#, c-format +msgid "" +"The database cluster was initialized with block size %u, but pg_checksums " +"was compiled with block size %u." +msgstr "" +"Кластер баз данных был инициализирован с размером блока %u, а утилита " +"pg_checksums скомпилирована для размера блока %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "кластер должен быть отключён" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "контрольные суммы в кластере не включены" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "контрольные суммы в кластере уже отключены" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "контрольные суммы в кластере уже включены" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Обработка контрольных сумм завершена\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Просканировано файлов: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Просканировано блоков: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Неверные контрольные суммы: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Версия контрольных сумм данных: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Записано файлов: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Записано блоков: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "синхронизация каталога данных" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "модификация управляющего файла" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Контрольные суммы в кластере включены\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Контрольные суммы в кластере отключены\n" + +#~ msgid "fatal: " +#~ msgstr "важно: " + +#~ msgid "invalid filenode specification, must be numeric: %s" +#~ msgstr "неверное указание файлового узла, требуется число: %s" + +#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n" +#~ msgstr "Об ошибках сообщайте по адресу <pgsql-bugs@lists.postgresql.org>.\n" diff --git a/src/bin/pg_checksums/po/sv.po b/src/bin/pg_checksums/po/sv.po new file mode 100644 index 0000000..8e92a9e --- /dev/null +++ b/src/bin/pg_checksums/po/sv.po @@ -0,0 +1,329 @@ +# Swedish message translation file for pg_checksums +# Copyright (C) 2019 PostgreSQL Global Development Group +# This file is distributed under the same license as the pg_checksums (PostgreSQL) package. +# Dennis Björklund <db@zigo.dhs.org>, 2019, 2020, 2021, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-05-09 18:52+0000\n" +"PO-Revision-Date: 2022-05-09 21:46+0200\n" +"Last-Translator: Dennis Björklund <db@zigo.dhs.org>\n" +"Language-Team: Swedish <pgsql-translators@postgresql.org>\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ../../../src/common/logging.c:277 +#, c-format +msgid "error: " +msgstr "fel: " + +#: ../../../src/common/logging.c:284 +#, c-format +msgid "warning: " +msgstr "varning: " + +#: ../../../src/common/logging.c:295 +#, c-format +msgid "detail: " +msgstr "detalj: " + +#: ../../../src/common/logging.c:302 +#, c-format +msgid "hint: " +msgstr "tips: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "ogiltigt värde \"%s\" för flaggan \"%s\"" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s måste vara i intervallet %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "" +"%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s slår på, slår av eller verifierar datakontrollsummor i ett PostgreSQL databaskluster.\n" +"\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Användning:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [FLAGGA]... [DATAKATALOG]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Flaggor:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATAKAT datakatalog\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check kontrollera datakontrollsummor (standard)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable slå av datakontrollsummor\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable slå på datakontrollsummor\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILNOD kontrollera bara relation med angiven filnod\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync vänta inte på att ändingar säkert skrivits till disk\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress visa förloppsinformation\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose visa utförliga meddelanden\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version visa versionsinformation, avsluta sedan\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help visa denna hjälp, avsluta sedan\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapportera fel till <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "hemsida för %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) beräknad" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "kunde inte öppna fil \"%s\": %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "kunde inte läsa block %u i fil \"%s\": %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "kunde inte läsa block %u i fil \"%s\": läste %d av %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "verifiering av kontrollsumma misslyckades i fil \"%s\", block %u: beräknad kontrollsumma är %X men blocket innehåller %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "seek misslyckades för block %u i fil \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "kunde inte skriva block %u i fil \"%s\": %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "kunde inte skriva block %u i fil \"%s\": skrev %d av %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "kontrollsummor verifierade i fil \"%s\"" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "kontrollsummor påslagen i fil \"%s\"" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "kunde inte öppna katalog \"%s\": %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "kunde inte göra stat() på fil \"%s\": %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "ogiltigt segmentnummer %d i filnamn \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Försök med \"%s --help\" för mer information." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "ingen datakatalog angiven" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "för många kommandoradsargument (första är \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "inställningen -f/--filenode tillåts bara med --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "pg_control CRC-värde är inkorrekt" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "klustret är inte kompatibelt med denna version av pg_checksums" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "databasklustret är inte kompatibelt" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "Databasklustret initierades med blockstorlek %u men pg_checksums kompilerades med blockstorlek %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "klustret måste stängas ner" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "datakontrollsummor är inte påslaget i klustret" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "datakontrollsummor är redan avslaget i klustret" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "datakontrollsummor är redan påslagna i klustret" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Kontrollsummeoperation avslutad\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Skannade filer: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Skannade block: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Felaktiga kontrollsummor: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Datakontrollsummeversion: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Skrivna filer: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Skrivna block: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "synkar datakatalogen" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "uppdaterar kontrollfil" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Kontrollsummor påslaget i klustret\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Kontrollsummor avslaget i klustret\n" diff --git a/src/bin/pg_checksums/po/uk.po b/src/bin/pg_checksums/po/uk.po new file mode 100644 index 0000000..0a994be --- /dev/null +++ b/src/bin/pg_checksums/po/uk.po @@ -0,0 +1,319 @@ +msgid "" +msgstr "" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2022-08-12 10:52+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_checksums.pot\n" +"X-Crowdin-File-ID: 888\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "помилка: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "попередження: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "деталі: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "підказка: " + +#: ../../fe_utils/option_utils.c:69 +#, c-format +msgid "invalid value \"%s\" for option %s" +msgstr "неприпустиме значення \"%s\" для параметра %s" + +#: ../../fe_utils/option_utils.c:76 +#, c-format +msgid "%s must be in range %d..%d" +msgstr "%s має бути в діапазоні %d..%d" + +#: pg_checksums.c:79 +#, c-format +msgid "%s enables, disables, or verifies data checksums in a PostgreSQL database cluster.\n\n" +msgstr "%s активує, деактивує або перевіряє контрольні суми даних в кластері бази даних PostgreSQL.\n\n" + +#: pg_checksums.c:80 +#, c-format +msgid "Usage:\n" +msgstr "Використання:\n" + +#: pg_checksums.c:81 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPTION]... [DATADIR]\n" + +#: pg_checksums.c:82 +#, c-format +msgid "\n" +"Options:\n" +msgstr "\n" +"Параметри:\n" + +#: pg_checksums.c:83 +#, c-format +msgid " [-D, --pgdata=]DATADIR data directory\n" +msgstr " [-D, --pgdata=]DATADIR каталог даних\n" + +#: pg_checksums.c:84 +#, c-format +msgid " -c, --check check data checksums (default)\n" +msgstr " -c, --check перевірити контрольні суми даних (за замовчуванням)\n" + +#: pg_checksums.c:85 +#, c-format +msgid " -d, --disable disable data checksums\n" +msgstr " -d, --disable вимкнути контрольні суми даних\n" + +#: pg_checksums.c:86 +#, c-format +msgid " -e, --enable enable data checksums\n" +msgstr " -e, --enable активувати контрольні суми даних\n" + +#: pg_checksums.c:87 +#, c-format +msgid " -f, --filenode=FILENODE check only relation with specified filenode\n" +msgstr " -f, --filenode=FILENODE перевіряти відношення лише із вказаним файлом\n" + +#: pg_checksums.c:88 +#, c-format +msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" +msgstr " -N, --no-sync не чекати на безпечний запис змін на диск\n" + +#: pg_checksums.c:89 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress показати інформацію про прогрес\n" + +#: pg_checksums.c:90 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose виводити детальні повідомлення\n" + +#: pg_checksums.c:91 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version вивести інформацію про версію, потім вийти\n" + +#: pg_checksums.c:92 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help показати цю довідку, потім вийти\n" + +#: pg_checksums.c:93 +#, 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_checksums.c:95 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Повідомляти про помилки на <%s>.\n" + +#: pg_checksums.c:96 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Домашня сторінка %s: <%s>\n" + +#: pg_checksums.c:153 +#, c-format +msgid "%lld/%lld MB (%d%%) computed" +msgstr "%lld/%lld MB (%d%%) обчислено" + +#: pg_checksums.c:200 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "не можливо відкрити файл \"%s\": %m" + +#: pg_checksums.c:214 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "не вдалося прочитати блок %u в файлі \"%s\": %m" + +#: pg_checksums.c:217 +#, c-format +msgid "could not read block %u in file \"%s\": read %d of %d" +msgstr "не вдалося прочитати блок %u у файлі \"%s\": прочитано %d з %d" + +#: pg_checksums.c:240 +#, c-format +msgid "checksum verification failed in file \"%s\", block %u: calculated checksum %X but block contains %X" +msgstr "помилка перевірки контрольних сум у файлі \"%s\", блок %u: обчислена контрольна сума %X, але блок містить %X" + +#: pg_checksums.c:263 +#, c-format +msgid "seek failed for block %u in file \"%s\": %m" +msgstr "помилка пошуку для блоку %u у файлі \"%s\": %m" + +#: pg_checksums.c:270 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "не вдалося записати блок %u у файл \"%s\": %m" + +#: pg_checksums.c:273 +#, c-format +msgid "could not write block %u in file \"%s\": wrote %d of %d" +msgstr "не вдалося записати блок %u у файлі \"%s\": записано %d з %d" + +#: pg_checksums.c:285 +#, c-format +msgid "checksums verified in file \"%s\"" +msgstr "контрольні суми у файлі \"%s\" перевірені" + +#: pg_checksums.c:287 +#, c-format +msgid "checksums enabled in file \"%s\"" +msgstr "контрольні суми у файлі \"%s\" активовані" + +#: pg_checksums.c:318 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "не вдалося відкрити каталог \"%s\": %m" + +#: pg_checksums.c:342 pg_checksums.c:415 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "не вдалося отримати інформацію від файлу \"%s\": %m" + +#: pg_checksums.c:366 +#, c-format +msgid "invalid segment number %d in file name \"%s\"" +msgstr "неприпустимий номер сегменту %d в імені файлу \"%s\"" + +#: pg_checksums.c:512 pg_checksums.c:528 pg_checksums.c:538 pg_checksums.c:546 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Спробуйте \"%s --help\" для додаткової інформації." + +#: pg_checksums.c:527 +#, c-format +msgid "no data directory specified" +msgstr "каталог даних не вказано" + +#: pg_checksums.c:536 +#, c-format +msgid "too many command-line arguments (first is \"%s\")" +msgstr "забагато аргументів у командному рядку (перший \"%s\")" + +#: pg_checksums.c:545 +#, c-format +msgid "option -f/--filenode can only be used with --check" +msgstr "параметр -f/--filenode може бути використаний тільки з --check" + +#: pg_checksums.c:553 +#, c-format +msgid "pg_control CRC value is incorrect" +msgstr "значення CRC pg_control неправильне" + +#: pg_checksums.c:556 +#, c-format +msgid "cluster is not compatible with this version of pg_checksums" +msgstr "кластер не сумісний з цією версією pg_checksum" + +#: pg_checksums.c:560 +#, c-format +msgid "database cluster is not compatible" +msgstr "кластер бази даних не сумісний" + +#: pg_checksums.c:561 +#, c-format +msgid "The database cluster was initialized with block size %u, but pg_checksums was compiled with block size %u." +msgstr "Кластер бази даних було ініціалізовано з розміром блоку %u, але pg_checksums було скомпільовано з розміром блоку %u." + +#: pg_checksums.c:573 +#, c-format +msgid "cluster must be shut down" +msgstr "кластер повинен бути закритий" + +#: pg_checksums.c:577 +#, c-format +msgid "data checksums are not enabled in cluster" +msgstr "контрольні суми в кластері неактивовані" + +#: pg_checksums.c:581 +#, c-format +msgid "data checksums are already disabled in cluster" +msgstr "контрольні суми вже неактивовані в кластері" + +#: pg_checksums.c:585 +#, c-format +msgid "data checksums are already enabled in cluster" +msgstr "контрольні суми вже активовані в кластері" + +#: pg_checksums.c:609 +#, c-format +msgid "Checksum operation completed\n" +msgstr "Операція контрольної суми завершена\n" + +#: pg_checksums.c:610 +#, c-format +msgid "Files scanned: %lld\n" +msgstr "Файлів проскановано: %lld\n" + +#: pg_checksums.c:611 +#, c-format +msgid "Blocks scanned: %lld\n" +msgstr "Блоків відскановано: %lld\n" + +#: pg_checksums.c:614 +#, c-format +msgid "Bad checksums: %lld\n" +msgstr "Помилкові контрольні суми: %lld\n" + +#: pg_checksums.c:615 pg_checksums.c:647 +#, c-format +msgid "Data checksum version: %u\n" +msgstr "Версія контрольних сум даних: %u\n" + +#: pg_checksums.c:622 +#, c-format +msgid "Files written: %lld\n" +msgstr "Файлів записано: %lld\n" + +#: pg_checksums.c:623 +#, c-format +msgid "Blocks written: %lld\n" +msgstr "Блоків записано: %lld\n" + +#: pg_checksums.c:639 +#, c-format +msgid "syncing data directory" +msgstr "синхронізація даних каталогу" + +#: pg_checksums.c:643 +#, c-format +msgid "updating control file" +msgstr "оновлення контрольного файлу" + +#: pg_checksums.c:649 +#, c-format +msgid "Checksums enabled in cluster\n" +msgstr "Контрольні суми активовані в кластері\n" + +#: pg_checksums.c:651 +#, c-format +msgid "Checksums disabled in cluster\n" +msgstr "Контрольні суми вимкнені у кластері\n" + diff --git a/src/bin/pg_checksums/t/001_basic.pl b/src/bin/pg_checksums/t/001_basic.pl new file mode 100644 index 0000000..d7cede1 --- /dev/null +++ b/src/bin/pg_checksums/t/001_basic.pl @@ -0,0 +1,13 @@ + +# Copyright (c) 2021-2022, PostgreSQL Global Development Group + +use strict; +use warnings; +use PostgreSQL::Test::Utils; +use Test::More; + +program_help_ok('pg_checksums'); +program_version_ok('pg_checksums'); +program_options_handling_ok('pg_checksums'); + +done_testing(); diff --git a/src/bin/pg_checksums/t/002_actions.pl b/src/bin/pg_checksums/t/002_actions.pl new file mode 100644 index 0000000..0309cbb --- /dev/null +++ b/src/bin/pg_checksums/t/002_actions.pl @@ -0,0 +1,253 @@ + +# Copyright (c) 2021-2022, PostgreSQL Global Development Group + +# Do basic sanity checks supported by pg_checksums using +# an initialized cluster. + +use strict; +use warnings; +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; + +use Test::More; + + +# Utility routine to create and check a table with corrupted checksums +# on a wanted tablespace. Note that this stops and starts the node +# multiple times to perform the checks, leaving the node started +# at the end. +sub check_relation_corruption +{ + my $node = shift; + my $table = shift; + my $tablespace = shift; + my $pgdata = $node->data_dir; + + # Create table and discover its filesystem location. + $node->safe_psql( + 'postgres', + "CREATE TABLE $table AS SELECT a FROM generate_series(1,10000) AS a; + ALTER TABLE $table SET (autovacuum_enabled=false);"); + + $node->safe_psql('postgres', + "ALTER TABLE " . $table . " SET TABLESPACE " . $tablespace . ";"); + + my $file_corrupted = + $node->safe_psql('postgres', "SELECT pg_relation_filepath('$table');"); + my $relfilenode_corrupted = $node->safe_psql('postgres', + "SELECT relfilenode FROM pg_class WHERE relname = '$table';"); + + $node->stop; + + # Checksums are correct for single relfilenode as the table is not + # corrupted yet. + command_ok( + [ + 'pg_checksums', '--check', + '-D', $pgdata, + '--filenode', $relfilenode_corrupted + ], + "succeeds for single relfilenode on tablespace $tablespace with offline cluster" + ); + + # Time to create some corruption + $node->corrupt_page_checksum($file_corrupted, 0); + + # Checksum checks on single relfilenode fail + $node->command_checks_all( + [ + 'pg_checksums', '--check', + '-D', $pgdata, + '--filenode', $relfilenode_corrupted + ], + 1, + [qr/Bad checksums:.*1/], + [qr/checksum verification failed/], + "fails with corrupted data for single relfilenode on tablespace $tablespace" + ); + + # Global checksum checks fail as well + $node->command_checks_all( + [ 'pg_checksums', '--check', '-D', $pgdata ], + 1, + [qr/Bad checksums:.*1/], + [qr/checksum verification failed/], + "fails with corrupted data on tablespace $tablespace"); + + # Drop corrupted table again and make sure there is no more corruption. + $node->start; + $node->safe_psql('postgres', "DROP TABLE $table;"); + $node->stop; + $node->command_ok([ 'pg_checksums', '--check', '-D', $pgdata ], + "succeeds again after table drop on tablespace $tablespace"); + + $node->start; + return; +} + +# Initialize node with checksums disabled. +my $node = PostgreSQL::Test::Cluster->new('node_checksum'); +$node->init(); +my $pgdata = $node->data_dir; + +# Control file should know that checksums are disabled. +command_like( + [ 'pg_controldata', $pgdata ], + qr/Data page checksum version:.*0/, + 'checksums disabled in control file'); + +# These are correct but empty files, so they should pass through. +append_to_file "$pgdata/global/99999", ""; +append_to_file "$pgdata/global/99999.123", ""; +append_to_file "$pgdata/global/99999_fsm", ""; +append_to_file "$pgdata/global/99999_init", ""; +append_to_file "$pgdata/global/99999_vm", ""; +append_to_file "$pgdata/global/99999_init.123", ""; +append_to_file "$pgdata/global/99999_fsm.123", ""; +append_to_file "$pgdata/global/99999_vm.123", ""; + +# These are temporary files and folders with dummy contents, which +# should be ignored by the scan. +append_to_file "$pgdata/global/pgsql_tmp_123", "foo"; +mkdir "$pgdata/global/pgsql_tmp"; +append_to_file "$pgdata/global/pgsql_tmp/1.1", "foo"; +append_to_file "$pgdata/global/pg_internal.init", "foo"; +append_to_file "$pgdata/global/pg_internal.init.123", "foo"; + +# Enable checksums. +command_ok([ 'pg_checksums', '--enable', '--no-sync', '-D', $pgdata ], + "checksums successfully enabled in cluster"); + +# Successive attempt to enable checksums fails. +command_fails([ 'pg_checksums', '--enable', '--no-sync', '-D', $pgdata ], + "enabling checksums fails if already enabled"); + +# Control file should know that checksums are enabled. +command_like( + [ 'pg_controldata', $pgdata ], + qr/Data page checksum version:.*1/, + 'checksums enabled in control file'); + +# Disable checksums again. Flush result here as that should be cheap. +command_ok( + [ 'pg_checksums', '--disable', '-D', $pgdata ], + "checksums successfully disabled in cluster"); + +# Successive attempt to disable checksums fails. +command_fails( + [ 'pg_checksums', '--disable', '--no-sync', '-D', $pgdata ], + "disabling checksums fails if already disabled"); + +# Control file should know that checksums are disabled. +command_like( + [ 'pg_controldata', $pgdata ], + qr/Data page checksum version:.*0/, + 'checksums disabled in control file'); + +# Enable checksums again for follow-up tests. +command_ok([ 'pg_checksums', '--enable', '--no-sync', '-D', $pgdata ], + "checksums successfully enabled in cluster"); + +# Control file should know that checksums are enabled. +command_like( + [ 'pg_controldata', $pgdata ], + qr/Data page checksum version:.*1/, + 'checksums enabled in control file'); + +# Checksums pass on a newly-created cluster +command_ok([ 'pg_checksums', '--check', '-D', $pgdata ], + "succeeds with offline cluster"); + +# Checksums are verified if no other arguments are specified +command_ok( + [ 'pg_checksums', '-D', $pgdata ], + "verifies checksums as default action"); + +# Specific relation files cannot be requested when action is --disable +# or --enable. +command_fails( + [ 'pg_checksums', '--disable', '--filenode', '1234', '-D', $pgdata ], + "fails when relfilenodes are requested and action is --disable"); +command_fails( + [ 'pg_checksums', '--enable', '--filenode', '1234', '-D', $pgdata ], + "fails when relfilenodes are requested and action is --enable"); + +# Test postgres -C for an offline cluster. +# Run-time GUCs are safe to query here. Note that a lock file is created, +# then removed, leading to an extra LOG entry showing in stderr. This uses +# log_min_messages=fatal to remove any noise. This test uses a startup +# wrapped with pg_ctl to allow the case where this runs under a privileged +# account on Windows. +command_checks_all( + [ + 'pg_ctl', 'start', '-D', $pgdata, '-s', '-o', + '-C data_checksums -c log_min_messages=fatal' + ], + 1, + [qr/^on$/], + [qr/could not start server/], + 'data_checksums=on is reported on an offline cluster'); + +# Checks cannot happen with an online cluster +$node->start; +command_fails([ 'pg_checksums', '--check', '-D', $pgdata ], + "fails with online cluster"); + +# Check corruption of table on default tablespace. +check_relation_corruption($node, 'corrupt1', 'pg_default'); + +# Create tablespace to check corruptions in a non-default tablespace. +my $basedir = $node->basedir; +my $tablespace_dir = "$basedir/ts_corrupt_dir"; +mkdir($tablespace_dir); +$node->safe_psql('postgres', + "CREATE TABLESPACE ts_corrupt LOCATION '$tablespace_dir';"); +check_relation_corruption($node, 'corrupt2', 'ts_corrupt'); + +# Utility routine to check that pg_checksums is able to detect +# correctly-named relation files filled with some corrupted data. +sub fail_corrupt +{ + my $node = shift; + my $file = shift; + my $pgdata = $node->data_dir; + + # Create the file with some dummy data in it. + my $file_name = "$pgdata/global/$file"; + append_to_file $file_name, "foo"; + + $node->command_checks_all( + [ 'pg_checksums', '--check', '-D', $pgdata ], + 1, + [qr/^$/], + [qr/could not read block 0 in file.*$file\":/], + "fails for corrupted data in $file"); + + # Remove file to prevent future lookup errors on conflicts. + unlink $file_name; + return; +} + +# Stop instance for the follow-up checks. +$node->stop; + +# Create a fake tablespace location that should not be scanned +# when verifying checksums. +mkdir "$tablespace_dir/PG_99_999999991/"; +append_to_file "$tablespace_dir/PG_99_999999991/foo", "123"; +command_ok([ 'pg_checksums', '--check', '-D', $pgdata ], + "succeeds with foreign tablespace"); + +# Authorized relation files filled with corrupted data cause the +# checksum checks to fail. Make sure to use file names different +# than the previous ones. +fail_corrupt($node, "99990"); +fail_corrupt($node, "99990.123"); +fail_corrupt($node, "99990_fsm"); +fail_corrupt($node, "99990_init"); +fail_corrupt($node, "99990_vm"); +fail_corrupt($node, "99990_init.123"); +fail_corrupt($node, "99990_fsm.123"); +fail_corrupt($node, "99990_vm.123"); + +done_testing(); |