# translation of libiconv to Croatian.
# Copyright (C) 2002 Free Software Foundation, Inc.
# Denis Lackovic <delacko@fly.srk.fer.hr>, 2002.
# This file is distributed under the same license as the libiconv package.
# Denis Lackovic <delacko@fly.srk.fer.hr>, 2002.
#
msgid ""
msgstr ""
"Project-Id-Version: libiconv 1.8\n"
"Report-Msgid-Bugs-To: bug-gnu-libiconv@gnu.org\n"
"POT-Creation-Date: 2004-01-22 11:54+0100\n"
"PO-Revision-Date: 2002-06-14 14:48-01\n"
"Last-Translator: Denis Lackovic <delacko@fly.srk.fer.hr>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\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?0:1);\n"
"X-Generator: TransDict server\n"

#: src/iconv.c:54
msgid "Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
msgstr "Uporaba: iconv [-c] [-s] [-f izkoda] [-t ukod] [datoteka ...]"

#: src/iconv.c:56
msgid "or:    iconv -l"
msgstr "ili:    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 ""
"Ovo je slobodni softver; pogledajte kod kako biste doznali uvjete "
"kopiranja.  NEMA\n"
"garancije; čak ni tvrdnje o ISPLATIVOSTI ili POGODNOSTI ZA NEKU SVRHU.\n"

#: src/iconv.c:69
#, c-format
msgid "Written by %s.\n"
msgstr "Napisao %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: nezavršena znakovna ili shift sekvenca\n"

#: src/iconv.c:131 src/iconv.c:182
#, c-format
msgid "iconv: %s: cannot convert\n"
msgstr "iconv: %s: ne mogu konvertirati\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: U/I greška\n"

#: src/iconv.c:294
#, c-format
msgid "iconv: conversion from %s unsupported\n"
msgstr "iconv: konverzija iz %s nije podržana\n"

#: src/iconv.c:296
#, c-format
msgid "iconv: conversion to %s unsupported\n"
msgstr "iconv: konverzija u %s nije podržana\n"

#: src/iconv.c:298
#, c-format
msgid "iconv: conversion from %s to %s unsupported\n"
msgstr "iconv: konverzija iz %s u %s nije podržana\n"

#: src/iconv.c:302
msgid "(stdin)"
msgstr "(stdin)"

#: src/iconv.c:323
#, c-format
msgid "iconv: I/O error\n"
msgstr "iconv: U/I greška\n"

#~ msgid ""
#~ "Usage: iconv [--binary] [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
#~ msgstr ""
#~ "Uporaba: iconv [--binary] [-c] [-s] [-f izkoda] [-t ukod] [datoteka ...]"
