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

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "The syntax of this command is:\n\nNET [ HELP | START | STOP | USE ]\n"
    STRING_START_USAGE, "Specify service name to start.\n"
    STRING_STOP_USAGE, "Specify service name to stop.\n"
    STRING_STOP_DEP, "Stopping dependent service: %s\n"
    STRING_CANT_STOP, "Could not stop service %s\n"
    STRING_NO_SCM, "Could not get handle to service control manager.\n"
    STRING_NO_SVCHANDLE, "Could not get handle to service.\n"
    STRING_START_SVC, "The %s service is starting.\n"
    STRING_START_SVC_SUCCESS, "The %s service was started successfully.\n"
    STRING_START_SVC_FAIL, "The %s service failed to start.\n"
    STRING_STOP_SVC, "The %s service is stopping.\n"
    STRING_STOP_SVC_SUCCESS, "The %s service was stopped successfully.\n"
    STRING_STOP_SVC_FAIL, "The %s service failed to stop.\n"
    STRING_HELP_USAGE, "The syntax of this command is:\n\nNET HELP command\n    -or-\nNET command /HELP\n\n"\
                       "   Commands available are:\n   NET HELP    NET START    NET STOP    NET USE\n"
    STRING_NO_ENTRIES, "There are no entries in the list.\n"
    STRING_USE_HEADER, "\nStatus  Local   Remote\n---------------------------------------------------------------\n"
    STRING_USE_ENTRY,  "%s      %S      %S      Open resources: %lu\n"
}
