Setting reCAPTCHA Version 2 set another language other than English

后端 未结 5 484
走了就别回头了
走了就别回头了 2021-01-30 16:19

\"enter

How can I set this in another language, ie:. French

I\'ve tried:

相关标签:
5条回答
  • 2021-01-30 16:47

    You just need to specify the parameter "?hl=" in the script's url:

    <script src='https://www.google.com/recaptcha/api.js?hl=fr'></script>
    

    Not very well documented, indeed!

    find your language code here: https://developers.google.com/recaptcha/docs/language

    0 讨论(0)
  • 2021-01-30 16:47

    Simple solution

    You can do it like this:

    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)

    0 讨论(0)
  • 2021-01-30 16:52

    If you are using the recaptcha gem you need to provide the hl param in recaptcha_tags.

    Example:

    <%= recaptcha_tags ssl: true, hl: 'it', display: { theme: 'white' } %>
    
    0 讨论(0)
  • 2021-01-30 16:54

    Yes, the "hl=language code" approach works well. The catch, of course, is to do this to EVERY instance of <script src='https://www.google.com/recaptcha/api.js'></script> on the page - both the one in the page head AND the one in the body. Only putting hl=... in the body leads to inconsistent results.

    0 讨论(0)
  • 2021-01-30 17:00

    Thank you @ali-soltani for snipped! Did the thing! :)

    I am providing my "vanilla" version for those who do not use jQuery, to save the few strikes.

        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 + '&'));
          }
        }
    
    0 讨论(0)
提交回复
热议问题