# Serbian translation of `libiconv'.
# Copyright (C) 2003 Free Software Foundation, Inc.
# This file is distributed under the same license as the `libiconv' package.
# Aleksandar Jelenak <jelenak@netlinkplus.net>, 2003.
msgid ""
msgstr ""
"Project-Id-Version: libiconv 1.9.1\n"
"Report-Msgid-Bugs-To: bug-gnu-libiconv@gnu.org\n"
"POT-Creation-Date: 2006-01-23 14:26+0100\n"
"PO-Revision-Date: 2003-11-13 14:36-0500\n"
"Last-Translator: Aleksandar Jelenak <jelenak@netlinkplus.net>\n"
"Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/iconv.c:80
msgid "Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
msgstr "Употреба: iconv [-c] [-s] [-f изкод] [-t укод] [датотека ...]"

#: src/iconv.c:82
msgid "or:    iconv -l"
msgstr "или:      iconv -l"

#: src/iconv.c:84
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""

#: src/iconv.c:87
#, c-format, no-wrap
msgid "Usage: %s [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...]\n"
msgstr ""

#: src/iconv.c:91
#, fuzzy, c-format, no-wrap
msgid "or:    %s -l\n"
msgstr "или:      iconv -l"

#: src/iconv.c:96
#, c-format, no-wrap
msgid "Converts text from one encoding to another encoding.\n"
msgstr ""

#: src/iconv.c:100
#, c-format, no-wrap
msgid "Options controlling the input and output format:\n"
msgstr ""

#: src/iconv.c:103
#, c-format, no-wrap
msgid ""
"  -f ENCODING, --from-code=ENCODING\n"
"                              the encoding of the input\n"
msgstr ""

#: src/iconv.c:107
#, c-format, no-wrap
msgid ""
"  -t ENCODING, --to-code=ENCODING\n"
"                              the encoding of the output\n"
msgstr ""

#: src/iconv.c:112
#, c-format, no-wrap
msgid "Options controlling conversion problems:\n"
msgstr ""

#: src/iconv.c:115
#, c-format, no-wrap
msgid "  -c                          discard unconvertible characters\n"
msgstr ""

#: src/iconv.c:118
#, c-format, no-wrap
msgid ""
"  --unicode-subst=FORMATSTRING\n"
"                              substitution for unconvertible Unicode characters\n"
msgstr ""

#: src/iconv.c:122
#, c-format, no-wrap
msgid "  --byte-subst=FORMATSTRING   substitution for unconvertible bytes\n"
msgstr ""

#: src/iconv.c:125
#, c-format, no-wrap
msgid ""
"  --widechar-subst=FORMATSTRING\n"
"                              substitution for unconvertible wide characters\n"
msgstr ""

#: src/iconv.c:130
#, c-format, no-wrap
msgid "Options controlling error output:\n"
msgstr ""

#: src/iconv.c:133
#, c-format, no-wrap
msgid "  -s, --silent                suppress error messages about conversion problems\n"
msgstr ""

#: src/iconv.c:137
#, c-format, no-wrap
msgid "Informative output:\n"
msgstr ""

#: src/iconv.c:140
#, c-format, no-wrap
msgid "  -l, --list                  list the supported encodings\n"
msgstr ""

#: src/iconv.c:143
#, c-format, no-wrap
msgid "  --help                      display this help and exit\n"
msgstr ""

#: src/iconv.c:146
#, c-format, no-wrap
msgid "  --version                   output version information and exit\n"
msgstr ""

#: src/iconv.c:149
msgid "Report bugs to <bug-gnu-libiconv@gnu.org>.\n"
msgstr ""

#: src/iconv.c:159
#, c-format
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"

#: src/iconv.c:162
#, c-format
msgid "Written by %s.\n"
msgstr "Написао %s.\n"

#: src/iconv.c:253
#, c-format
msgid ""
"%s argument: A format directive with a variable width is not allowed here."
msgstr ""

#: src/iconv.c:264
#, c-format
msgid ""
"%s argument: A format directive with a variable precision is not allowed "
"here."
msgstr ""

#: src/iconv.c:276
#, c-format
msgid "%s argument: A format directive with a size is not allowed here."
msgstr ""

#: src/iconv.c:314
#, c-format
msgid "%s argument: The string ends in the middle of a directive."
msgstr ""

#: src/iconv.c:316
#, c-format
msgid "%s argument: The character '%c' is not a valid conversion specifier."
msgstr ""

#: src/iconv.c:318
#, c-format
msgid ""
"%s argument: The character that terminates the format directive is not a "
"valid conversion specifier."
msgstr ""

#: src/iconv.c:329
#, c-format
msgid ""
"%s argument: The format string consumes more than one argument: %u arguments."
msgstr ""

#: src/iconv.c:381
#, c-format
msgid "cannot convert byte substitution to Unicode: %s"
msgstr ""

#: src/iconv.c:417
#, c-format
msgid "cannot convert unicode substitution to target encoding: %s"
msgstr ""

#: src/iconv.c:454
#, c-format
msgid "cannot convert byte substitution to wide string: %s"
msgstr ""

#: src/iconv.c:491
#, c-format
msgid "iconv: cannot convert widechar substitution to target encoding: %s"
msgstr ""

#: src/iconv.c:528
#, c-format
msgid "iconv: cannot convert byte substitution to target encoding: %s"
msgstr ""

#: src/iconv.c:562 src/iconv.c:606 src/iconv.c:680
#, fuzzy, c-format
msgid "%s:%u:%u: incomplete character or shift sequence"
msgstr "iconv: %s: непотпуни знаковни или шифт низ\n"

#: src/iconv.c:595 src/iconv.c:670
#, fuzzy, c-format
msgid "%s:%u:%u: cannot convert"
msgstr "iconv: %s: не може претворити\n"

#: src/iconv.c:637 src/iconv.c:700
#, fuzzy, c-format
msgid "%s:%u:%u"
msgstr "iconv: %s: "

#: src/iconv.c:712
#, fuzzy, c-format
msgid "%s: I/O error"
msgstr "iconv: %s: У/И грешка\n"

#: src/iconv.c:896
#, fuzzy, c-format
msgid "conversion from %s unsupported"
msgstr "iconv: претварање из %s није подржано\n"

#: src/iconv.c:898
#, fuzzy, c-format
msgid "conversion to %s unsupported"
msgstr "iconv: претварање у %s није подржано\n"

#: src/iconv.c:900
#, fuzzy, c-format
msgid "conversion from %s to %s unsupported"
msgstr "iconv: претварање из %s у %s није подржано\n"

#: src/iconv.c:901
#, c-format
msgid "try '%s -l' to get the list of supported encodings"
msgstr ""

#: src/iconv.c:955
msgid "(stdin)"
msgstr "(стдул)"

#: src/iconv.c:963
#, c-format
msgid "%s"
msgstr ""

#: src/iconv.c:974
#, fuzzy
msgid "I/O error"
msgstr "iconv: У/И грешка\n"

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

#~ msgid ""
#~ "Usage: iconv [--binary] [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
#~ msgstr ""
#~ "Употреба: iconv [--binary] [-c] [-s] [-f изкод] [-t укод] [датотека ...]"
