﻿// -*- Coding: utf-8; -*-  [all uconv resource files]
// Copyright (c) 2000 IBM, Inc. and Others.
// $Revision: 1.1 $
//
// Root translation file for uconv messages.
// So you want to translate this file??? Great!
// 1. copy it to a new name [ex: se.txt]
//
// 2. You might wish to comment out ALL lines, and then uncomment them
//    as you add translations. That way, you don't inadvertently mark
//    an untranslated English (or whatever) string as already
//    translated. The base translation might change!
// 
// 3. These files are in UTF-8 format (even though root uses only
//    ASCII)
//
// 4. Make note of the location of {0}, {1}, etc.. they are taken from
//    arguments to u_wmsg() in order..
//
// 5. Add se.txt to RESSRC= in resfiles.mk and to the project file on 
//    the Windows side.
//
// 6. Send it in to srl@jtcsv.com or ask on the ICU mailing list! thanks!

fr
{
  // uconv errors

    lcUsageWord { "usage" } 
    ucUsageWord { "Usage" } 
    usage { "{0} : {1} [ -h, -?, --help ] [ -V, --version ] [ -s, --silent ] [ -v, --verbose ] [ -l, --list | --list-code code | --default-code | -L, --list-transliterators ] [ --canon ] [ -x translitération ] [ --to-callback callback | -c ] [ --from-callback callback | -i ] [ --callback callback ] [ --fallback | --no-fallback ] [ -b, --block-size taille ] [ -f, --from-code code ] [ -t, --to-code code ] [ fichier ... ] [ -o, --output fichier ]\n" } 

    help { "Options :  -h, --help                   affiche ce message\n"
           "           -V, --version                affiche la version du programme\n"
"           -s, --silent                 supprime les messages\n"
"           -v, --verbose                affiche les progrès\n"
"           -l, --list                   liste tous les encodages disponibles\n"
"           --list-code code             liste juste l''encodage donné\n"
"           --default-code               liste juste l''encodage par défaut\n"
"           -L, --list-transliterators   liste tous les translitérateurs\n"
"           --canon                      affiche la liste dans le format de cnvrtrs.txt(5)\n"
"           -x translitération           passe le texte à travers translitération\n"
"           --to-callback callback       utilise callback sur l''encodage cible\n"
"           -c                           omet les caractères invalides de la sortie\n"
"           --from-callback callback     utilise callback sur l''encodage source\n"
"           -i                           omet les séquences invalides de l''entrée\n"
"           --callback callback          utilise callback sur les deux encodages\n"
"           -b, --block-size taille      lit des blocks de taille octets (défaut : 4096)\n"
"           --fallback                   utilise les correspondances de secours\n"
"           --no-fallback                n''utilise pas les correspondances de secours\n"
"           -f, --from-code code         fixe l''encodage d''origine\n"
"           -t, --to-code code           fixe l''encodage de destination\n"
"           -o, --output fichier         écrit la sortie dans fichier\n"
"\n"
"Callbacks :" } 

    cantGetNames { "Ne peux obtenir la liste des encodages.\n" } // 0: err
    cantGetTag { "Ne peux obtenir le nom de l'étiquette standard : {0}.\n" } // 0: err

    noSuchCodeset { "Ne peux trouver l''encodage : {0}.\n" } // 0: name of the encoding
    noFromCodeset { "L''encodage d''origine n''a pas été fixé (utilisez -f).\n" } 
    noToCodeset { "L''encodage de destination n''a pas été fixé (utilisez -t).\n" } 

    badBlockSize { "Taille de bloc incorrecte : {0}.\n" } // 0: size of the block

    cantSetInBinMode { "Ne peux mettre l''entrée standard en mode binaire.\n" } 
    cantSetOutBinMode { "Ne peux mettre la sortie standard en mode binaire.\n" } 

    cantOpenFromCodeset { "Ne peux ouvrir de convertisseur pour l''encodage d''origine {0} : {1}.\n" } // 0:set, 1: err
    cantOpenToCodeset { "Ne peux ouvrir de convertisseur pour l''encodage de destination {0} : {1}.\n" } // 0:set, 1: err

    cantCreateTranslit { "Ne peux créer la translitération \"{0}\": {1}.\n" } // 0:set, 1: err
    cantCreateTranslitParseErr { "Ne peux créer la translitération \"{0}\": {1}, ligne {2}, position {3}.\n" } // 0: set, 1: err, 2: line, 3: offset

    cantSetCallback { "Ne peux fixer le callack de transcodage : {0}.\n" } // 0: err

    unknownCallback { "Callback inconnu : {0}.\n" } // 0: callback name

    cantOpenInputF { "Ne peux ouvrir le fichier d''entrée {0} : {1}.\n" } // 0: file, 1: strerror [OS error string] 
    cantCreateOutputF { "Ne peux créer le fichier de sortie {0} : {1}.\n" } // 0: file, 1: strerror [OS error string]

    cantWrite { "Le texte converti ne peut pas être écrit : {0}.\n" } // 0: OS error string
    cantRead { "Erreur de lecture du fichier d''entrée : {0}.\n" } // 0: OS error string

    premEnd { "Fin prématurée de la conversion d''Unicode vers l''encodage de destination à la position {0}.\n" } // 0: position
    premEndInput { "Fin prématurée de l''entrée durant la conversion de l''encodage original vers Unicode à la position {0}.\n" } // 0: position

    problemCvtToU { "La conversion d''Unicode vers l''encodage de destination a échoué à la position {0} : {1}.\n" } // 0: position, 1: err
    problemCvtFromU { "La conversion de l''encodage original vers Unicode a échoué à la position {0} : {1}.\n" } // 0: position, 1: err
    problemCvtFromUOut { "La conversion de l''encodage original vers Unicode a échoué à la position {0} de la sortie : {1}.\n" } // 0: position, 1: err
}
