/*
 * NET.EXE - Wine-compatible net program
 * Ukrainian language support
 *
 * Copyright (C) 2007 Tim Schwartz
 * Copyright (C) 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 "resources.h"

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

LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "Синтаксис цієї команди:\n\nNET [ HELP | START | STOP | USE ]\n"
    STRING_START_USAGE, "Вказіть службу для запуску.\n"
    STRING_STOP_USAGE, "Вказіть службу для зупинки.\n"
    STRING_STOP_DEP, "Зупинка залежної служби: %s\n"
    STRING_CANT_STOP, "Неможливо зупинити службу %s\n"
    STRING_NO_SCM, "Неможливо отримати доступ до диспетчера служб.\n"
    STRING_NO_SVCHANDLE, "Неможливо отримати доступ до служби.\n"
    STRING_START_SVC, "Запуск служби %s .\n"
    STRING_START_SVC_SUCCESS, "Служба %s успішно запущена.\n"
    STRING_START_SVC_FAIL, "Помилка запуску служби %s .\n"
    STRING_STOP_SVC, "Зупинка служби %s .\n"
    STRING_STOP_SVC_SUCCESS, "Служба %s успішно зупинена.\n"
    STRING_STOP_SVC_FAIL, "Помилка зупинки служби %s .\n"
    STRING_HELP_USAGE, "Синтаксис цієї команди:\n\nNET HELP команда\n    -чи-\nNET команда /HELP\n\n"\
                       "   Доступні команди:\n   NET HELP    NET START    NET STOP    NET USE\n"
    STRING_NO_ENTRIES, "Список порожній.\n"
    STRING_USE_HEADER, "\nСтатус  Локальний   Віддалений\n---------------------------------------------------------------\n"
    STRING_USE_ENTRY,  "%s      %S      %S      Відкритих ресурсів: %lu\n"
}
