# 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: 2005-07-07 14:54+0200\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:56
msgid "Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
msgstr "Употреба: iconv [-c] [-s] [-f изкод] [-t укод] [датотека ...]"

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

#: src/iconv.c:68
#, 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:71
#, c-format
msgid "Written by %s.\n"
msgstr "Написао %s.\n"

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

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

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

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

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

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

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

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

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

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

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

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