# Ukrainian translation of libiconv.
# Copyright (C) 2003 Free Software Foundation, Inc.
# This file is distributed under the same license as the libiconv package.
#
# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2003.
# Yuri Chornoivan <yurchor@ukr.net>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: libiconv 1.12\n"
"Report-Msgid-Bugs-To: bug-gnu-libiconv@gnu.org\n"
"POT-Creation-Date: 2009-06-30 22:53+0200\n"
"PO-Revision-Date: 2011-02-05 20:28+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
"Language: ukX-Generator: Lokalize 1.2\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==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 1.2\n"

#. TRANSLATORS: The first line of the short usage message.
#: src/iconv.c:103
msgid "Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
msgstr ""
"Використання: iconv [-c] [-s] [-f з_кодування] [-t у_кодування] [файл ...]"

#. TRANSLATORS: The second line of the short usage message.
#. Align it correctly against the first line.
#: src/iconv.c:107
msgid "or:    iconv -l"
msgstr "або:   iconv -l"

#: src/iconv.c:109
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Щоб дізнатися більше, віддайте команду «%s --help».\n"

#. TRANSLATORS: The first line of the long usage message.
#. The %s placeholder expands to the program name.
#: src/iconv.c:114
#, c-format, no-wrap
msgid "Usage: %s [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...]\n"
msgstr "Використання: %s [ПАРАМЕТР...] [-f КОДУВАННЯ] [-t КОДУВАННЯ] [ФАЙЛ ВХІДНИХ ДАНИХ...]\n"

#. TRANSLATORS: The second line of the long usage message.
#. Align it correctly against the first line.
#. The %s placeholder expands to the program name.
#: src/iconv.c:121
#, c-format, no-wrap
msgid "or:    %s -l\n"
msgstr "або:    %s -l\n"

#. TRANSLATORS: Description of the iconv program.
#: src/iconv.c:127
#, c-format, no-wrap
msgid "Converts text from one encoding to another encoding.\n"
msgstr "Перетворює текст у одному кодуванні на текст у іншому кодуванні.\n"

#: src/iconv.c:131
#, c-format, no-wrap
msgid "Options controlling the input and output format:\n"
msgstr "Параметри керування форматом вхідних та вихідних даних:\n"

#: src/iconv.c:134
#, c-format, no-wrap
msgid ""
"  -f ENCODING, --from-code=ENCODING\n"
"                              the encoding of the input\n"
msgstr ""
"  -f КОДУВАННЯ, --from-code=КОДУВАННЯ\n"
"                              кодування вхідних даних\n"

#: src/iconv.c:138
#, c-format, no-wrap
msgid ""
"  -t ENCODING, --to-code=ENCODING\n"
"                              the encoding of the output\n"
msgstr ""
"  -t КОДУВАННЯ, --to-code=КОДУВАННЯ\n"
"                              кодування вихідних даних\n"

#: src/iconv.c:143
#, c-format, no-wrap
msgid "Options controlling conversion problems:\n"
msgstr "Параметри керування обробкою помилок під час перетворення:\n"

#: src/iconv.c:146
#, c-format, no-wrap
msgid "  -c                          discard unconvertible characters\n"
msgstr "  -c                          викидати символи, непридатні до перетворення\n"

#: src/iconv.c:149
#, c-format, no-wrap
msgid ""
"  --unicode-subst=FORMATSTRING\n"
"                              substitution for unconvertible Unicode characters\n"
msgstr ""
"  --unicode-subst=РЯДОК_ФОРМАТУВАННЯ\n"
"                              заміна непридатних до перетворення символів Unicode\n"

#: src/iconv.c:153
#, c-format, no-wrap
msgid "  --byte-subst=FORMATSTRING   substitution for unconvertible bytes\n"
msgstr "  --byte-subst=РЯДОК_ФОРМАТУВАННЯ заміна непридатних до перетворення байтів\n"

#: src/iconv.c:156
#, c-format, no-wrap
msgid ""
"  --widechar-subst=FORMATSTRING\n"
"                              substitution for unconvertible wide characters\n"
msgstr ""
"  --wide-subst=РЯДОК_ФОРМАТУВАННЯ\n"
"                              заміна непридатних до перетворення «широких» символів\n"

#: src/iconv.c:161
#, c-format, no-wrap
msgid "Options controlling error output:\n"
msgstr "Параметри керування показом повідомлень про помилки:\n"

#: src/iconv.c:164
#, c-format, no-wrap
msgid "  -s, --silent                suppress error messages about conversion problems\n"
msgstr "  -s, --silent                придушити повідомлення щодо проблем під час перетворення\n"

#: src/iconv.c:168
#, c-format, no-wrap
msgid "Informative output:\n"
msgstr "Показ інформації:\n"

#: src/iconv.c:171
#, c-format, no-wrap
msgid "  -l, --list                  list the supported encodings\n"
msgstr "  -l, --list                  показати список підтримуваних кодувань\n"

#: src/iconv.c:174
#, c-format, no-wrap
msgid "  --help                      display this help and exit\n"
msgstr "  --help                      показати ці довідкові дані і завершити роботу\n"

#: src/iconv.c:177
#, c-format, no-wrap
msgid "  --version                   output version information and exit\n"
msgstr "  --version                   показати дані щодо версії і завершити роботу\n"

#. TRANSLATORS: The placeholder indicates the bug-reporting address
#. for this package.  Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
#: src/iconv.c:184
msgid "Report bugs to <bug-gnu-libiconv@gnu.org>.\n"
msgstr "Про вади слід повідомляти на адресу <bug-gnu-libiconv@gnu.org>.\n"

#: src/iconv.c:195
#, fuzzy, no-wrap
msgid ""
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"Умови ліцензування викладено у GPLv2+: GNU GPL версії 2 або новішій, <http://gnu.org/licenses/gpl.html>\n"
"Це вільне програмне забезпечення: ви можете вільно змінювати і поширювати його.\n"
"Вам не надається ЖОДНИХ ГАРАНТІЙ, окрім гарантій передбачених законодавством.\n"

#. TRANSLATORS: The %s placeholder expands to an author's name.
#: src/iconv.c:201
#, c-format
msgid "Written by %s.\n"
msgstr "Автор — %s.\n"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:295
#, c-format
msgid ""
"%s argument: A format directive with a variable width is not allowed here."
msgstr ""
"Аргумент %s: тут не можна використовувати команду форматування з визначенням "
"ширини змінної."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:310
#, c-format
msgid ""
"%s argument: A format directive with a variable precision is not allowed "
"here."
msgstr ""
"Аргумент %s: тут не можна використовувати команду форматування з визначенням "
"точності змінної."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:326
#, c-format
msgid "%s argument: A format directive with a size is not allowed here."
msgstr ""
"Аргумент %s: тут не можна використовувати команду форматування з визначенням "
"розміру."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:368
#, c-format
msgid "%s argument: The string ends in the middle of a directive."
msgstr "Аргумент %s: завершення рядка посередині команди."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#. The %c placeholder expands to an unknown format directive.
#: src/iconv.c:375
#, c-format
msgid "%s argument: The character '%c' is not a valid conversion specifier."
msgstr ""
"Аргумент %s: символ «%c» не є коректним символом визначення перетворення."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:381
#, c-format
msgid ""
"%s argument: The character that terminates the format directive is not a "
"valid conversion specifier."
msgstr ""
"Аргумент %s: символ, що перериває команду форматування не є коректним "
"символом визначення перетворення."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#. The %u placeholder expands to the number of arguments consumed by the format string.
#: src/iconv.c:397
#, c-format
msgid ""
"%s argument: The format string consumes more than one argument: %u argument."
msgid_plural ""
"%s argument: The format string consumes more than one argument: %u arguments."
msgstr[0] ""
"Аргумент %s: слід вказати декілька аргументів, а саме %u аргументів."
msgstr[1] ""
"Аргумент %s: слід вказати декілька аргументів, а саме %u аргументів."
msgstr[2] ""
"Аргумент %s: слід вказати декілька аргументів, а саме %u аргументів."
msgstr[3] ""
"Аргумент %s: слід вказати декілька аргументів, а саме %u аргументів."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:455
#, c-format
msgid "cannot convert byte substitution to Unicode: %s"
msgstr "не вдалося перетворити замінник байтів у символ Unicode: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --unicode-subst.
#: src/iconv.c:495
#, c-format
msgid "cannot convert unicode substitution to target encoding: %s"
msgstr "не вдалося перетворити замінник unicode у кодування призначення: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:536
#, c-format
msgid "cannot convert byte substitution to wide string: %s"
msgstr "не вдалося перетворити замінник байтів у «широкий» рядок: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --widechar-subst.
#: src/iconv.c:577
#, c-format
msgid "cannot convert widechar substitution to target encoding: %s"
msgstr ""
"не вдалося перетворити замінник «широкого» символу у кодування призначення: "
"%s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:618
#, c-format
msgid "cannot convert byte substitution to target encoding: %s"
msgstr "не вдалося перетворити замінник байтів у кодування призначення: %s"

#. TRANSLATORS: An error message.
#. The placeholders expand to the input file name, a line number, and a column number.
#: src/iconv.c:637
#, c-format
msgid "%s:%u:%u: cannot convert"
msgstr "%s:%u:%u: не вдалося перетворити"

#. TRANSLATORS: An error message.
#. The placeholders expand to the input file name, a line number, and a column number.
#. A "shift sequence" is a sequence of bytes that changes the state of the converter;
#. this concept exists only for "stateful" encodings like ISO-2022-JP.
#: src/iconv.c:651
#, c-format
msgid "%s:%u:%u: incomplete character or shift sequence"
msgstr "%s:%u:%u: незавершений символ чи послідовність зміни регістру"

#. TRANSLATORS: The first part of an error message.
#. It is followed by a colon and a detail message.
#. The placeholders expand to the input file name, a line number, and a column number.
#: src/iconv.c:664
#, c-format
msgid "%s:%u:%u"
msgstr "%s:%u:%u"

#. TRANSLATORS: An error message.
#. The placeholder expands to the input file name.
#: src/iconv.c:819
#, c-format
msgid "%s: I/O error"
msgstr "%s: помилка вводу-виводу"

#. TRANSLATORS: An error message.
#. The placeholder expands to the encoding name, specified through --from-code.
#: src/iconv.c:1007
#, c-format
msgid "conversion from %s unsupported"
msgstr "підтримки перетворення з %s не передбачено"

#. TRANSLATORS: An error message.
#. The placeholder expands to the encoding name, specified through --to-code.
#: src/iconv.c:1013
#, c-format
msgid "conversion to %s unsupported"
msgstr "підтримки перетворення у %s не передбачено"

#. TRANSLATORS: An error message.
#. The placeholders expand to the encoding names, specified through --from-code and --to-code, respectively.
#: src/iconv.c:1019
#, c-format
msgid "conversion from %s to %s unsupported"
msgstr "підтримки перетворення з %s у %s не передбачено"

#. TRANSLATORS: Additional advice after an error message.
#. The %s placeholder expands to the program name.
#: src/iconv.c:1024
#, c-format
msgid "try '%s -l' to get the list of supported encodings"
msgstr ""
"список кодувань, які підтримуються програмою, можна отримати командою «%s -l»"

#. TRANSLATORS: A filename substitute denoting standard input.
#: src/iconv.c:1081
msgid "(stdin)"
msgstr "(стд. ввід)"

#. TRANSLATORS: The first part of an error message.
#. It is followed by a colon and a detail message.
#. The %s placeholder expands to the input file name.
#: src/iconv.c:1093
#, c-format
msgid "%s"
msgstr "%s"

#. TRANSLATORS: An error message.
#: src/iconv.c:1107
#, c-format
msgid "I/O error"
msgstr "помилка вводу-виводу"

#~ msgid ""
#~ "Usage: iconv [--binary] [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
#~ msgstr ""
#~ "Використання:\n"
#~ "  iconv [--binary] [-c] [-s] [-f з_кодування] [-t у_кодування] [файл ...]"

#~ msgid ""
#~ "This is free software; see the source for copying conditions.  There is "
#~ "NO\n"
#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
#~ "PURPOSE.\n"
#~ msgstr ""
#~ "Це вільне програмне забезпечення; умови копіювання приведені у\n"
#~ "джерельних текстах програми.  Нема НІЯКИХ гарантій; навіть гарантії "
#~ "КОМЕРЦІЙНОЇ\n"
#~ "ЦІННОСТІ або ПРИДАТНОСТІ ДЛЯ КОНКРЕТНОЇ ЦІЛІ.\n"

#~ msgid "iconv: %s: "
#~ msgstr "iconv: %s: "
