/*
 * Copyright 2009 Paul Vriens
 *
 * 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"

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

STRINGTABLE DISCARDABLE
{
    IDS_TO_PRIMITIVE        "Fout bij het omzetten van het object naar een primitief type"
    IDS_INVALID_CALL_ARG    "Ongeldige procedure-aanroep of argument"
    IDS_NO_PROPERTY         "Dit object ondersteunt deze eigenschap of methode niet"
    IDS_ARG_NOT_OPT         "Argument is niet optioneel"
    IDS_SYNTAX_ERROR        "Syntax fout"
    IDS_SEMICOLON           "';' verwacht"
    IDS_LBRACKET            "'(' verwacht"
    IDS_RBRACKET            "')' verwacht"
    IDS_UNTERMINATED_STR    "Onafgesloten tekenreeksconstante"
    IDS_NOT_FUNC            "Functie verwacht"
    IDS_NOT_DATE            "'[object]' is geen datum object"
    IDS_NOT_NUM             "Getal verwacht"
    IDS_OBJECT_EXPECTED     "Object verwacht"
    IDS_ILLEGAL_ASSIGN      "Ongeldige toekenning"
    IDS_UNDEFINED           "'|' is ongedefinieerd"
    IDS_NOT_BOOL            "Boolean object verwacht"
    IDS_JSCRIPT_EXPECTED    "JScript object verwacht"
    IDS_REGEXP_SYNTAX_ERROR "Syntax fout in reguliere expressie"
    IDS_INVALID_LENGTH      "Array lengte moet een eindig, positief geheel getal zijn"
    IDS_ARRAY_EXPECTED      "Array object verwacht"
}
