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

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

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

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

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

#: src/iconv.c:153 src/iconv.c:192 src/iconv.c:310
#, c-format
msgid "iconv: %s: "
msgstr "iconv: %s: "

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

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

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

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

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

#: src/iconv.c:323
#, 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 укод] [датотека ...]"
