/*
 * French resources for jscript
 *
 * Copyright 2009-2010 Frédéric Delanoy
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "resource.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
{
    IDS_TO_PRIMITIVE        "Erreur lors de la conversion de l'objet vers un type primitif"
    IDS_INVALID_CALL_ARG    "Appel de procédure ou argument invalide"
    IDS_SUBSCRIPT_OUT_OF_RANGE "Indice hors limites"
    IDS_CREATE_OBJ_ERROR    "Le serveur d'automatisation ne peut créer l'objet"
    IDS_NO_PROPERTY         "Cet objet ne supporte pas cette propriété ou méthode"
    IDS_UNSUPPORTED_ACTION  "Cet objet ne supporte pas cette action"
    IDS_ARG_NOT_OPT         "Argument non optionnel"
    IDS_SYNTAX_ERROR        "Erreur de syntaxe"
    IDS_SEMICOLON           "« ; » attendu"
    IDS_LBRACKET            "« ( » attendu"
    IDS_RBRACKET            "« ) » attendu"
    IDS_UNTERMINATED_STR    "Constante chaîne de caractères non clôturée"
    IDS_NOT_FUNC            "Fonction attendue"
    IDS_NOT_DATE            "« [objet] » n'est pas un objet de type date"
    IDS_NOT_NUM             "Nombre attendu"
    IDS_OBJECT_EXPECTED     "Objet attendu"
    IDS_ILLEGAL_ASSIGN      "Affectation illégale"
    IDS_UNDEFINED           "« | » n'est pas défini"
    IDS_NOT_BOOL            "Objet booléen attendu"
    IDS_NOT_VBARRAY         "Objet VBArray attendu"
    IDS_JSCRIPT_EXPECTED    "Objet JScript attendu"
    IDS_REGEXP_SYNTAX_ERROR "Erreur de syntaxe dans l'expression rationnelle"
    IDS_URI_INVALID_CHAR    "L'URI à coder contient des caractères invalides"
    IDS_INVALID_LENGTH      "La longueur d'un tableau doit être un entier positif"
    IDS_ARRAY_EXPECTED      "Objet tableau attendu"
}
