/*
 * Copyright 2009 Piotr Caban
 * Copyright 2010 Igor Paliychuk
 *
 * 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_UKRAINIAN, SUBLANG_DEFAULT

STRINGTABLE
{
    IDS_TO_PRIMITIVE        "Помилка конвертування об'єкту в примітивний тип"
    IDS_INVALID_CALL_ARG    "Невірний виклик процедури або аргумент"
    IDS_SUBSCRIPT_OUT_OF_RANGE "Індекс поза діапазоном"
    IDS_CREATE_OBJ_ERROR    "Сервер автоматизації не може створити об'єкт"
    IDS_NO_PROPERTY         "Об'єкт не підтримує цю властивість чи метод"
    IDS_UNSUPPORTED_ACTION  "Об'єкт не підтримує цю дію"
    IDS_ARG_NOT_OPT         "Відсутній обов'язковий аргумент"
    IDS_SYNTAX_ERROR        "Синтаксична помилка"
    IDS_SEMICOLON           "Очікується ';'"
    IDS_LBRACKET            "Очікується '('"
    IDS_RBRACKET            "Очікується ')'"
    IDS_UNTERMINATED_STR    "Незавершена рядкова константа"
    IDS_NOT_FUNC            "Очікується функція"
    IDS_NOT_DATE            "'[object]' не об'єкт типу date"
    IDS_NOT_NUM             "Очікується число"
    IDS_OBJECT_EXPECTED     "Очікується об'єкт"
    IDS_ILLEGAL_ASSIGN      "Невірне присвоєння"
    IDS_UNDEFINED           "'|' не визначено"
    IDS_NOT_BOOL            "Очікується об'єкт Boolean"
    IDS_NOT_VBARRAY         "Очікується об'єкт VBArray"
    IDS_JSCRIPT_EXPECTED    "Очікується об'єкт JScript"
    IDS_REGEXP_SYNTAX_ERROR "Синтаксична помилка в регулярному виразі"
    IDS_URI_INVALID_CHAR    "URI, що буде закодований, містить неприпустимі символи"
    IDS_INVALID_LENGTH      "Довжиною масиву повинне бути скінченне додатнє ціле число"
    IDS_ARRAY_EXPECTED      "Очікується об'єкт Array"
}
