/*
 * Copyright 2010 Thomas Larsen
 *                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"

#pragma code_page(65001)

LANGUAGE LANG_DANISH, SUBLANG_DEFAULT

STRINGTABLE DISCARDABLE
{
    IDS_TO_PRIMITIVE        "Fejl ved konvertering af objekt til primitiv type"
    IDS_INVALID_CALL_ARG    "Ugyldig procedure kald eller argument"
    IDS_CREATE_OBJ_ERROR    "Automations-serveren kan ikke oprette objektet"
    IDS_NO_PROPERTY         "Objektet understøtter ikke denne egenskab eller metode"
    IDS_ARG_NOT_OPT         "Argument ikke valgfrit"
    IDS_SYNTAX_ERROR        "Syntaksfejl"
    IDS_SEMICOLON           "Forventet ';'"
    IDS_LBRACKET            "Forventet '('"
    IDS_RBRACKET            "Forventet ')'"
    IDS_UNTERMINATED_STR    "Uafsluttet streng konstant"
    IDS_NOT_FUNC            "Funktion forventet"
    IDS_NOT_DATE            "[objekt]' er ikke en dato objekt"
    IDS_NOT_NUM             "Nummer forventet"
    IDS_OBJECT_EXPECTED     "objekt forventet"
    IDS_ILLEGAL_ASSIGN      "Ulovlig tildeling"
    IDS_UNDEFINED           "'|' er ikke defineret"
    IDS_NOT_BOOL            "Boolean objekt forventet"
    IDS_JSCRIPT_EXPECTED    "JScript objekt forventet"
    IDS_REGEXP_SYNTAX_ERROR "Syntax fejl i regulært udtryk"
    IDS_URI_INVALID_CHAR    "URI, der skal kodes indeholder ugyldige tegn"
    IDS_INVALID_LENGTH      "Array længde skal være et endeligt positivt heltal"
    IDS_ARRAY_EXPECTED      "Array objekt forventet"
}
