# Translation of tuxpaint into the walloon language.
# Copyright (C) 2003 Free Software Foundation, Inc.
# Pablo Saratxaga <pablo@walon.org>, 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-06-26 20:08+0100\n"
"Last-Translator: Pablo Saratxaga <pablo@walon.org>\n"
"Language-Team: Walloon <linux-wa@walon.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 ""
"Po s' è siervi: iconv [-c] [-s] [-f ecôd._sourd] [-t ecôd._såme] [fitchî...]"

#: src/iconv.c:56
msgid "or:    iconv -l"
msgstr "oudonbén:       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 ""
"Çouchal, c' est on libe programe; vos l' poloz bén spåde et sel poloz vs\n"
"bén candjî tot shuvant li Licinse Publike Djeneråle (GPL)\n"
"I n' a NOLE WAERANTEYE; nén minme ki vos VINDRÎZ bén\n"
"li programe ou ki vos vs è SIEVRÎZ BÉN PO ENE SÔRE OU L' ÔTE.\n"

#: src/iconv.c:69
#, c-format
msgid "Written by %s.\n"
msgstr "Sicrît pa %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: caractere ou secwénce di candjmint nén complete\n"

#: src/iconv.c:131 src/iconv.c:182
#, c-format
msgid "iconv: %s: cannot convert\n"
msgstr "iconv: %s: dji n' sai fé l' kiviersaedje\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: aroke d' intrêye/rexhowe\n"

#: src/iconv.c:294
#, c-format
msgid "iconv: conversion from %s unsupported\n"
msgstr "iconv: li cviersaedje a pårti d' l' ecôdaedje %s n' est nén sopoirté\n"

#: src/iconv.c:296
#, c-format
msgid "iconv: conversion to %s unsupported\n"
msgstr "iconv: li cviersaedje viè l' ecôdaedje %s n' est nén sopoirté\n"

#: src/iconv.c:298
#, c-format
msgid "iconv: conversion from %s to %s unsupported\n"
msgstr "iconv: li cviersaedje di l' ecôdaedje %s viè %s n' est nén sopoirté\n"

#: src/iconv.c:302
msgid "(stdin)"
msgstr "(intrêye sitandård)"

#: src/iconv.c:323
#, c-format
msgid "iconv: I/O error\n"
msgstr "iconv: aroke d' intrêye/rexhowe\n"

#~ msgid ""
#~ "Usage: iconv [--binary] [-c] [-s] [-f fromcode] [-t tocode] [file ...]"
#~ msgstr ""
#~ "Po s' è siervi: iconv [--binary] [-c] [-s] [-f ecôd._sourd] [-t ecôd."
#~ "_såme] [fitchî...]"
