/*
 * Copyright 2009 Piotr Caban
 * Copyright 2010 Claudia Cotună
 *                Michael Stefaniuc
 *
 * 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_ROMANIAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

STRINGTABLE DISCARDABLE
{
    IDS_TO_PRIMITIVE        "Eroare la convertirea obiectului la un tip primitiv"
    IDS_INVALID_CALL_ARG    "Apel de procedură sau argument nevalid"
    IDS_CREATE_OBJ_ERROR    "Serverul de automatizare nu poate crea obiectul"
    IDS_NO_PROPERTY         "Obiectul nu suportă această proprietate sau metodă"
    IDS_ARG_NOT_OPT         "Argumentul nu este opțional"
    IDS_SYNTAX_ERROR        "Eroare de sintaxă"
    IDS_SEMICOLON           "Se așteaptă „;”"
    IDS_LBRACKET            "Se așteaptă „(”"
    IDS_RBRACKET            "Se așteaptă „)”"
    IDS_UNTERMINATED_STR    "Șir constant neterminat"
    IDS_NOT_FUNC            "Se așteaptă o funcție"
    IDS_NOT_DATE            "„[obiect]” nu este un obiect de tip dată"
    IDS_NOT_NUM             "Se așteaptă un număr"
    IDS_OBJECT_EXPECTED     "Se așteaptă un obiect"
    IDS_ILLEGAL_ASSIGN      "Atribuire ilegală"
    IDS_UNDEFINED           "„|” nu este definit"
    IDS_NOT_BOOL            "Se așteaptă un obiect boolean"
    IDS_JSCRIPT_EXPECTED    "Se așteaptă un obiect JScript"
    IDS_REGEXP_SYNTAX_ERROR "Eroare de sintaxă în expresia regulată"
    IDS_URI_INVALID_CHAR    "URI care trebuie codificat conține caractere nevalide"
    IDS_INVALID_LENGTH      "Lungimea unei matrice trebuie să fie un număr întreg pozitiv"
    IDS_ARRAY_EXPECTED      "Se așteaptă un obiect matrice"
}
