/*
 * Copyright 2009-2010 Aurimas Fišeras <aurimas@gmail.com>
 *
 * 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"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    IDS_TO_PRIMITIVE        "Klaida keičiant objektą į primityvų tipą"
    IDS_INVALID_CALL_ARG    "Netinkamas kreipinys į procedūrą ar argumentas"
    IDS_SUBSCRIPT_OUT_OF_RANGE "Indeksas nepatenka į rėžius"
    IDS_CREATE_OBJ_ERROR    "Automatizacijos serveriui nepavyko sukurti objekto"
    IDS_NO_PROPERTY         "Objektas nepalaiko šios savybės ar metodo"
    IDS_UNSUPPORTED_ACTION  "Objektas nepalaiko šio veiksmo"
    IDS_ARG_NOT_OPT         "Argumentas nėra neprivalomas"
    IDS_SYNTAX_ERROR        "Sintaksės klaida"
    IDS_SEMICOLON           "Tikėtasi „;“"
    IDS_LBRACKET            "Tikėtasi „(“"
    IDS_RBRACKET            "Tikėtasi „)“"
    IDS_UNTERMINATED_STR    "Nebaigta eilutės konstanta"
    IDS_NOT_FUNC            "Tikėtasi funkcijos"
    IDS_NOT_DATE            "„[objektas]“ nėra datos objektas"
    IDS_NOT_NUM             "Tikėtasi skaičiaus"
    IDS_OBJECT_EXPECTED     "Tikėtasi objekto"
    IDS_ILLEGAL_ASSIGN      "Neleistinas priskyrimas"
    IDS_UNDEFINED           "„|“ yra neapibrėžtas"
    IDS_NOT_BOOL            "Tikėtasi loginio objekto"
    IDS_NOT_VBARRAY         "Tikėtasi VBArray objekto"
    IDS_JSCRIPT_EXPECTED    "Tikėtasi JScript objekto"
    IDS_REGEXP_SYNTAX_ERROR "Sintaksės klaida reguliariajame reiškinyje"
    IDS_URI_INVALID_CHAR    "Koduotiname URI yra netinkamų simbolių"
    IDS_INVALID_LENGTH      "Masyvo dydis turi būti teigiamas sveikasis skaičius"
    IDS_ARRAY_EXPECTED      "Tikėtasi masyvo objekto"
}
