/*
 * REG.EXE - Wine-compatible reg program.
 * English language support
 *
 * Copyright 2008 Andrew Riedi
 *
 * 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 "reg.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "The syntax of this command is:\n\nREG [ ADD | DELETE | QUERY ]\nREG command /?\n"
    STRING_ADD_USAGE, "REG ADD key_name [/v value_name | /ve] [/t type] [/s separator] [/d data] [/f]\n"
    STRING_DELETE_USAGE, "REG DELETE key_name [/v value_name | /ve | /va] [/f]\n"
    STRING_QUERY_USAGE, "REG QUERY key_name [/v value_name | /ve] [/s]\n"
    STRING_SUCCESS, "The operation completed successfully\n"
    STRING_INVALID_KEY, "Error: Invalid key name\n"
    STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n"
    STRING_NO_REMOTE, "Error: Unable to add keys to remote machine\n"
    STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n"
}
