/*
 * 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_DISABLED_CC         "Bedingte Kompilierung ist ausgeschaltet"
    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"
}
