/*
 * Copyright 2009 André Hentschel
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    IDS_TO_PRIMITIVE        "Fehler beim umwandeln des Objektes in einen Grundtyp"
    IDS_INVALID_CALL_ARG    "Ungültiger Funktionsaufruf oder Argument"
    IDS_SUBSCRIPT_OUT_OF_RANGE "Index außerhalb des Bereichs"
    IDS_CREATE_OBJ_ERROR    "Automatisierungsserver konnte das Objekt nicht erstellen"
    IDS_NO_PROPERTY         "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"
    IDS_UNSUPPORTED_ACTION  "Das Objekt unterstützt diese Aktion nicht"
    IDS_ARG_NOT_OPT         "Argument nicht optional"
    IDS_SYNTAX_ERROR        "Syntax Fehler"
    IDS_SEMICOLON           "';' erwartet"
    IDS_LBRACKET            "'(' erwartet"
    IDS_RBRACKET            "')' erwartet"
    IDS_UNTERMINATED_STR    "konstante Zeichenkette nicht terminiert"
    IDS_NOT_FUNC            "Funktion erwartet"
    IDS_NOT_DATE            "'[Objekt]' ist kein Datums-Objekt"
    IDS_NOT_NUM             "Nummer erwartet"
    IDS_OBJECT_EXPECTED     "Objekt erwartet"
    IDS_ILLEGAL_ASSIGN      "Unzulässige Zuweisung"
    IDS_UNDEFINED           "'|' nicht definiert"
    IDS_NOT_BOOL            "Boolisches Objekt erwartet"
    IDS_NOT_VBARRAY         "VBArray Objekt erwartet"
    IDS_JSCRIPT_EXPECTED    "JScript Objekt erwartet"
    IDS_REGEXP_SYNTAX_ERROR "Syntax Fehler in regulärem Ausdruck"
    IDS_URI_INVALID_CHAR    "Zu verschlüsselnde URI enthält ungültige Zeichen"
    IDS_INVALID_LENGTH      "Array-Größe muss eine endliche, positive Ganzzahl sein"
    IDS_ARRAY_EXPECTED      "Array Objekt erwartet"
}
