web-dev-qa-db-fra.com

La configuration de reCAPTCHA version 2 définit une autre langue que l'anglais

enter image description here

Comment puis-je définir cela dans une autre langue, c'est-à-dire :. français

J'ai essayé:

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

Trouvé ci-dessus ici

Ce qui ne fait rien.

Je n'ai pas trouvé d'informations pertinentes sous Référence API -> Version 2 sur Google Docs for reCAPTCHA

Informations supplémentaires:

J'utilise ceci sur Rails, avec gem "recaptcha"Trouvé ici

44
neo

Vous avez juste besoin de spécifier le paramètre "? Hl = " dans l'url du script:

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

Pas très bien documenté, en effet!

trouvez votre code de langue ici: https://developers.google.com/recaptcha/docs/language

125
LuBre

Si vous utilisez la gemme recaptcha, vous devez fournir le paramètre hl dans recaptcha_tags.

Exemple:

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

Solution simple

Vous pouvez le faire comme ceci:

[~ # ~] 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 + '&'));
    }
}

Démo en ligne (jsFiddle)

5
Ali Soltani

Oui, l'approche "hl = code de langue " fonctionne bien. Le hic, bien sûr, est de le faire pour CHAQUE instance de <script src='https://www.google.com/recaptcha/api.js'></script> sur la page - à la fois celui dans l'en-tête de page ET celui dans le corps. Seul mettre hl = ... dans le corps conduit à des résultats incohérents.

3
Rudy Lopes

Merci @ ALi-soltani d'avoir coupé! A fait la chose! :)

Je fournis ma version "Vanille" pour ceux qui n'utilisent pas jQuery, pour sauver les quelques coups.

    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
Luckylooke