Стандартный контрол для ASP.NET не поддерживает изменение языка (свойства Lang
унего просто нет). Единственная возможность — изменить исходный код этого контрола (файл RecaptchaControl.cs
). Добавить свойство Lang:
[Category("Settings")]
[DefaultValue(null)]
[Description("Use this to enable auto i18n.")]
public string Lang
{
get; set;
}
Изменить код генерации кода настроек:
protected override void RenderContents(HtmlTextWriter output)
{
// <script> setting
output.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
output.RenderBeginTag(HtmlTextWriterTag.Script);
output.Indent++;
output.WriteLine("var RecaptchaOptions = {");
output.Indent++;
output.WriteLine("theme : '{0}',", this.theme ?? string.Empty);
// ДОБАВЛЯЕМ ВЫВОД НАСТРОЕК ЯЗЫКА
if(!string.IsNullOrEmpty(Lang))
{
output.WriteLine("lang : '{0}',", Lang);
}
// ...
}
Теперь этот контрол можно использовать так:
<recaptcha:RecaptchaControl
ID="recaptcha"
runat="server"
PublicKey=""
PrivateKey=""
Lang="ru"
/>
Или для ASP.NET MVC:
public static string GenerateCaptcha(this HtmlHelper helper)
{
var captchaControl = new Recaptcha.RecaptchaControl
{
ID = "recaptcha",
Theme = "white",
PublicKey = "",
PrivateKey = "",
Lang = "ru"
};
var htmlWriter = new HtmlTextWriter(new StringWriter());
captchaControl.RenderControl(htmlWriter);
return htmlWriter.InnerWriter.ToString();
}