/*
 * Top level resource file for Credentials UI
 *
 * Copyright 2007 Robert Shearman (for CodeWeavers)
 *
 * 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 "credui_resources.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    IDS_TITLEFORMAT     "Connect to %s"
    IDS_MESSAGEFORMAT   "Connecting to %s"
    IDS_INCORRECTPASSWORDTITLE  "Logon unsuccessful"
    IDS_INCORRECTPASSWORD       "Make sure that your user name\nand password are correct."
    IDS_CAPSLOCKONTITLE "Caps Lock is On"
    IDS_CAPSLOCKON      "Having Caps Lock on may cause you to enter your password incorrectly.\n\nPress the Caps Lock key on your keyboard to turn off Caps Lock before\nentering your password."
}

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/* @makedep: banner.bmp */
IDB_BANNER BITMAP banner.bmp
