/*
 * 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_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_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"
}
