﻿// -*- Coding: utf-8; -*-  [all uconv resource files]
// Copyright (c) 2000-2004 IBM, Inc. and Others.
//
// 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 ] "
        "[ --add-signature ] [ --remove-signature ] "
        "[ -o, --output fichier ] "
        "[ fichier ... ]\n"
    }

    // TODO there is some English in here
    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"
"          --add-signature               add a U+FEFF Unicode signature character (BOM)\n"
"          --remove-signature            remove a U+FEFF Unicode signature character (BOM)\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

    // TODO retranslate the problemCvt... messages because their format changed
    //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
}
