# Hungarian translation of libiconv.
# Copyright (C) 2002 Free Software Foundation, Inc.
# This file is distributed under the same license as the libiconv package.
#
# Emese Kovács <emese@gnome.hu>, 2002.
# Balázs Úr <urbalazs@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: libiconv 1.12\n"
"Report-Msgid-Bugs-To: bug-gnu-libiconv@gnu.org\n"
"POT-Creation-Date: 2011-08-07 15:24+0200\n"
"PO-Revision-Date: 2014-05-28 22:00+0200\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"Language: hu\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: Lokalize 1.5\n"

#. TRANSLATORS: The first line of the short usage message.
#: src/iconv.c:104
msgid "Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
msgstr "Használat: iconv [-c] [-s] [-f kódolásról] [-t kódolásra] [fájl …]"

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

#: src/iconv.c:110
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "További információkért próbálja a(z) „%s --help” parancsot.\n"

#. TRANSLATORS: The first line of the long usage message.
#. The %s placeholder expands to the program name.
#: src/iconv.c:115
#, c-format, no-wrap
msgid "Usage: %s [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...]\n"
msgstr "Használat: %s [KAPCSOLÓ…] [-f KÓDOLÁS] [-t KÓDOLÁS] [BEMENETFÁJL…]\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:122
#, c-format, no-wrap
msgid "or:    %s -l\n"
msgstr "vagy:    %s -l\n"

#. TRANSLATORS: Description of the iconv program.
#: src/iconv.c:128
#, c-format, no-wrap
msgid "Converts text from one encoding to another encoding.\n"
msgstr "Átalakítja a szöveget egy adott kódolásról egy másik kódolásra.\n"

#: src/iconv.c:132
#, c-format, no-wrap
msgid "Options controlling the input and output format:\n"
msgstr "A bemeneti és kimeneti formátumokat vezérlő kapcsolók:\n"

#: src/iconv.c:135
#, c-format, no-wrap
msgid ""
"  -f ENCODING, --from-code=ENCODING\n"
"                              the encoding of the input\n"
msgstr ""
"  -f KÓDOLÁS, --from-code=KÓDOLÁS\n"
"                              a bemenet kódolása\n"

#: src/iconv.c:139
#, c-format, no-wrap
msgid ""
"  -t ENCODING, --to-code=ENCODING\n"
"                              the encoding of the output\n"
msgstr ""
"  -t KÓDOLÁS, --to-code=KÓDOLÁS\n"
"                              a kimenet kódolása\n"

#: src/iconv.c:144
#, c-format, no-wrap
msgid "Options controlling conversion problems:\n"
msgstr "Átalakítási problémákat vezérlő kapcsolók:\n"

#: src/iconv.c:147
#, c-format, no-wrap
msgid "  -c                          discard unconvertible characters\n"
msgstr "  -c                          átalakíthatatlan karakterek eldobása\n"

#: src/iconv.c:150
#, c-format, no-wrap
msgid ""
"  --unicode-subst=FORMATSTRING\n"
"                              substitution for unconvertible Unicode characters\n"
msgstr ""
"  --unicode-subst=FORMÁTUMSZÖVEG\n"
"                              helyettesítés az átalakíthatatlan Unicode karakterekhez\n"

#: src/iconv.c:154
#, c-format, no-wrap
msgid "  --byte-subst=FORMATSTRING   substitution for unconvertible bytes\n"
msgstr "  --byte-subst=FORMÁTUMSZÖVEG   helyettesítés az átalakíthatatlan byte-okhoz\n"

#: src/iconv.c:157
#, c-format, no-wrap
msgid ""
"  --widechar-subst=FORMATSTRING\n"
"                              substitution for unconvertible wide characters\n"
msgstr ""
"  --widechar-subst=FORMÁTUMSZÖVEG\n"
"                              helyettesítés az átalakíthatatlan széles karakterekhez\n"

#: src/iconv.c:162
#, c-format, no-wrap
msgid "Options controlling error output:\n"
msgstr "A hibakimenetet vezérlő kapcsolók:\n"

#: src/iconv.c:165
#, c-format, no-wrap
msgid "  -s, --silent                suppress error messages about conversion problems\n"
msgstr "  -s, --silent                az átalakítási problémákról szóló hibaüzenetek elnyomása\n"

#: src/iconv.c:169
#, c-format, no-wrap
msgid "Informative output:\n"
msgstr "Tájékoztató kimenet:\n"

#: src/iconv.c:172
#, c-format, no-wrap
msgid "  -l, --list                  list the supported encodings\n"
msgstr "  -l, --list                  a támogatott kódolások felsorolása\n"

#: src/iconv.c:175
#, c-format, no-wrap
msgid "  --help                      display this help and exit\n"
msgstr "  --help                      ezen súgó megjelenítése és kilépés\n"

#: src/iconv.c:178
#, c-format, no-wrap
msgid "  --version                   output version information and exit\n"
msgstr "  --version                   verzióinformációk kiírása és kilépés\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:185
msgid "Report bugs to <bug-gnu-libiconv@gnu.org>.\n"
msgstr "A hibákat ezen a címen jelentse: <bug-gnu-libiconv@gnu.org>.\n"

#: src/iconv.c:196
#, 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 ""
"Licenc GPLv2+: GNU GPL 2. vagy későbbi verzió <http://gnu.org/licenses/gpl.html>\n"
"Ez egy szabad szoftver: szabadon módosíthatja és terjesztheti.\n"
"Nincs SEMMIFÉLE GARANCIA, a törvény által megengedett mértékben.\n"

#. TRANSLATORS: The %s placeholder expands to an author's name.
#: src/iconv.c:202
#, c-format
msgid "Written by %s.\n"
msgstr "Írta %s.\n"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:296
#, c-format
msgid ""
"%s argument: A format directive with a variable width is not allowed here."
msgstr ""
"%s argumentum: Egy formátum utasítás egy változó szélességgel itt nem "
"engedélyezett."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:311
#, c-format
msgid ""
"%s argument: A format directive with a variable precision is not allowed "
"here."
msgstr ""
"%s argumentum: Egy formátum utasítás egy változó pontossággal itt nem "
"engedélyezett."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:327
#, c-format
msgid "%s argument: A format directive with a size is not allowed here."
msgstr ""
"%s argumentum: Egy formátum utasítás egy mérettel itt nem engedélyezett."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:369
#, c-format
msgid "%s argument: The string ends in the middle of a directive."
msgstr "%s argumentum: A szöveg befejeződik egy utasítás közepén."

#. 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:376
#, c-format
msgid "%s argument: The character '%c' is not a valid conversion specifier."
msgstr ""
"%s argumentum: A(z) „%c” karakter nem érvényes átalakítási meghatározó."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a command-line option.
#: src/iconv.c:382
#, c-format
msgid ""
"%s argument: The character that terminates the format directive is not a "
"valid conversion specifier."
msgstr ""
"%s argumentum: Az a karakter, amely megszakítja a formátum utasítást, nem "
"érvényes átalakítási meghatározó."

#. 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:398
#, 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 argumentum: A formátumszöveg több mint egy argumentumot fogyaszt: %u "
"argumentum."
msgstr[1] ""
"%s argumentum: A formátumszöveg több mint egy argumentumot fogyaszt: %u "
"argumentum."

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:456
#, c-format
msgid "cannot convert byte substitution to Unicode: %s"
msgstr "nem sikerült átalakítani a byte helyettesítést Unicode kódolásra: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --unicode-subst.
#: src/iconv.c:496
#, c-format
msgid "cannot convert unicode substitution to target encoding: %s"
msgstr "nem sikerült átalakítani a Unicode helyettesítést a cél kódolásra: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:537
#, c-format
msgid "cannot convert byte substitution to wide string: %s"
msgstr "nem sikerült átalakítani a byte helyettesítést széles szövegre: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --widechar-subst.
#: src/iconv.c:578
#, c-format
msgid "cannot convert widechar substitution to target encoding: %s"
msgstr ""
"nem sikerült átalakítani a széles karakter helyettesítést a cél kódolásra: %s"

#. TRANSLATORS: An error message.
#. The %s placeholder expands to a piece of text, specified through --byte-subst.
#: src/iconv.c:619
#, c-format
msgid "cannot convert byte substitution to target encoding: %s"
msgstr "nem sikerült átalakítani a byte helyettesítést a cél kódolásra: %s"

#. TRANSLATORS: An error message.
#. The placeholders expand to the input file name, a line number, and a column number.
#: src/iconv.c:638
#, c-format
msgid "%s:%u:%u: cannot convert"
msgstr "%s:%u:%u: nem sikerült átalakítani"

#. 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:652
#, c-format
msgid "%s:%u:%u: incomplete character or shift sequence"
msgstr "%s:%u:%u: nem teljes karakter vagy eltolási szekvencia"

#. 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:665
#, 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:826
#, c-format
msgid "%s: I/O error"
msgstr "%s: I/O hiba"

#. TRANSLATORS: An error message.
#. The placeholder expands to the encoding name, specified through --from-code.
#: src/iconv.c:1014
#, c-format
msgid "conversion from %s unsupported"
msgstr "az átalakítás %s kódolásról nem támogatott"

#. TRANSLATORS: An error message.
#. The placeholder expands to the encoding name, specified through --to-code.
#: src/iconv.c:1020
#, c-format
msgid "conversion to %s unsupported"
msgstr "az átalakítás %s kódolásra nem támogatott"

#. TRANSLATORS: An error message.
#. The placeholders expand to the encoding names, specified through --from-code and --to-code, respectively.
#: src/iconv.c:1026
#, c-format
msgid "conversion from %s to %s unsupported"
msgstr "az átalakítás %s kódolásról %s kódolásra nem támogatott"

#. TRANSLATORS: Additional advice after an error message.
#. The %s placeholder expands to the program name.
#: src/iconv.c:1031
#, c-format
msgid "try '%s -l' to get the list of supported encodings"
msgstr "próbálja a(z) „%s -l” parancsot a támogatott kódolások listájához"

#. TRANSLATORS: A filename substitute denoting standard input.
#: src/iconv.c:1088
msgid "(stdin)"
msgstr "(stdin)"

#. 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:1100
#, c-format
msgid "%s"
msgstr "%s"

#. TRANSLATORS: An error message.
#: src/iconv.c:1114
#, c-format
msgid "I/O error"
msgstr "I/O hiba"

#~ msgid ""
#~ "Usage: iconv [--binary] [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
#~ msgstr ""
#~ "Használat: iconv [--binary] [-c] [-s] [-f kódolásról] [-t kódolásra] "
#~ "[fájl ...]"

#~ 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 ""
#~ "Ez szabad szoftver; a sokszorosításra vonatkozó feltételeket lásd a "
#~ "forrásban.\n"
#~ "SEMMILYEN garanciát nem vállalunk, még azt sem állítjuk, hogy ez a "
#~ "program\n"
#~ "KERESKEDELMI CÉLOKRA ALKALMAS vagy HASZNÁLHATÓ EGY ADOTT FELADATRA.\n"

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