It is possible to implement in two ways:
1) Switch to the core database and see the following item:
/sitecore/system/Dictionary/Y/Your login attempt was not successful Please try again
You can put updated phrase to the Phrase field. But as you said in comments, in this case message will be changed for each events.
2) The second way is to customize a handler of Login form.
Add the following class to your solution:
using System.Web.Security;
using Sitecore.Web;
namespace Your_Namespace
{
/// <summary>
/// </summary>
public class CustomLogin : Sitecore.sitecore.login.Default
{
protected override bool Login()
{
var fullUserName = WebUtil.HandleFullUserName(this.UserName.Text);
if (!string.IsNullOrWhiteSpace(fullUserName))
{
var user = Membership.GetUser(fullUserName, false);
if (user != null)
{
if (user.IsLockedOut)
{
RenderError(Sitecore.Globalization.Translate.Text("User Is Locked out"));
return false;
}
}
}
return base.Login();
}
private void RenderError(string text)
{
if (string.IsNullOrEmpty(text))
return;
this.FailureHolder.Visible = true;
this.FailureText.Text = text;
}
}
}
Then, navigate to the \sitecore\login\
folder and find the default.aspx file. You need update the following line with your custom class:
<%@ Page Language="C#" AutoEventWireup="true" Async="true" CodeBehind="Default.aspx.cs" Inherits="Sitecore.sitecore.login.Default" %>
It should look like below (Inherits attribute is updated):
<%@ Page Language="C#" AutoEventWireup="true" Async="true" CodeBehind="Default.aspx.cs" Inherits="Your_Namespace.CustomLogin, Your_Namespace" %>
The last step to add the dictionary for message. Switch to the core database and see the following item:
/sitecore/system/Dictionary/U
Add the dictionary entry. I called it "User Is Locked out":

Result:
