Поддержка русского языка в recaptcha для .NET - CodeHelper

Поддержка русского языка в recaptcha для .NET

2

Как локализовать recaptcha в ASP.NET проекте? Изначально есть возможность локализации recaptcha посредством задания настроек в JavaScript коде:

<script type="text/javascript">
    var RecaptchaOptions = { lang : 'ru'};
</script>

Но в случае сайта на ASP.NET для генерации recaptcha-кода используется control, который переопределяет эти настройки.

Лучший ответ:

2

Стандартный контрол для 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();
}
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.