设置 reCAPTCHA Version 2 设置英语以外的另一种语言

Setting reCAPTCHA Version 2 set another language other than English

如何用另一种语言设置它,即:。法语

我试过:

var RecaptchaOptions = {
     lang : 'fr',
  };

Found above here

什么都不做。

我在 API 参考 -> 版本 2 Google Docs for reCAPTCHA

下找不到相关信息

附加信息:

我在 rails 和 gem "recaptcha" Found here

上使用它

您只需要在脚本的url:

中指定参数“?hl=
<script src='https://www.google.com/recaptcha/api.js?hl=fr'></script>

确实没有很好的记录!

在这里找到您的语言代码:https://developers.google.com/recaptcha/docs/language

如果您使用的是 recaptcha gem,您需要在 recaptcha_tags 中提供 hl 参数。

示例:

<%= recaptcha_tags ssl: true, hl: 'it', display: { theme: 'white' } %>

是的,"hl=language code" 方法很有效。当然,关键是要对页面上 <script src='https://www.google.com/recaptcha/api.js'></script> 的每个实例执行此操作 - 页眉中的实例和正文中的实例。仅将 hl=... 放入正文会导致结果不一致。

简单的解决方案

你可以这样做:

HTML

<div id="captcha_container"></div>
<select id="ddllanguageListsGoogleCaptcha"></select>

JS

// Update language captcha 
function updateGoogleCaptchaLanguage(selectedLanguage) {

    // Get GoogleCaptcha iframe
    var iframeGoogleCaptcha = $('#captcha_container').find('iframe');

    // Get language code from iframe
    var language = iframeGoogleCaptcha.attr("src").match(/hl=(.*?)&/).pop();

    // Get selected language code from drop down
    var selectedLanguage = $('#ddllanguageListsGoogleCaptcha').val();

    // Check if language code of element is not equal by selected language, we need to set new language code
    if (language !== selectedLanguage) {
        // For setting new language 
        iframeGoogleCaptcha.attr("src", iframeGoogleCaptcha.attr("src").replace(/hl=(.*?)&/, 'hl=' + selectedLanguage + '&'));
    }
}

Online demo (jsFiddle)

感谢@ali-soltani 的剪辑!做到了! :)

我正在为那些不使用 jQuery 的人提供我的 "vanilla" 版本,以节省几次罢工。

    function setCaptchaLang(lang) {

      const container = document.getElementById('captcha_container');

      // Get GoogleCaptcha iframe
      const iframeGoogleCaptcha = container.querySelector('iframe');

      // Get language code from iframe
      const actualLang = iframeGoogleCaptcha.getAttribute("src").match(/hl=(.*?)&/).pop();

      // For setting new language
      if (actualLang !== lang) {
        iframeGoogleCaptcha.setAttribute("src", iframeGoogleCaptcha.getAttribute("src").replace(/hl=(.*?)&/, 'hl=' + lang + '&'));
      }
    }