angular-recaptcha:随着网站语言更改而更改语言

8

我有一个网站,用户可以切换三种不同的语言。语言切换是通过客户端JavaScript(AngularJS)完成的。

我在我的网站上使用了reCAPTCHA 2,并且需要在用户切换网站语言时更改reCAPTCHA的语言。

我已经知道在reCAPTCHA初始化时可以通过以下代码强制设置语言:

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

然而,当您需要重新加载reCAPTCHA时,使用此代码即可,它不需要任何自定义语言的参数:

grecaptcha.reset();

是否有可能在不刷新页面并使用不同语言重新初始化reCAPTCHA小部件的情况下进行操作?

编辑

我正在使用angular-recaptcha来渲染小部件。这意味着:

  • 需要在reCAPTCHA API初始化后调用vcRecaptchaApiLoaded回调函数
  • 无法更改由vcRecaptcha指令呈现的代码

以下是呈现reCAPTCHA小部件的代码:

<div
    vc-recaptcha
    key="'---- YOUR PUBLIC KEY GOES HERE ----'"
></div>

这是将reCAPTCHA API集成到我的网站中的代码:

<script
  src="https://www.google.com/recaptcha/api.js?onload=vcRecaptchaApiLoaded&render=explicit&hl=cs"
  async defer
></script>
5个回答

10
您可以简单地清空并再次加载

1
我认为这是一个重复的问题。请参见以下建议解决方案: 更改ReCaptcha语言OnClick 总结: 目前无法直接通过javascript设置recaptcha语言。正如您所述,但可以在脚本加载期间使用参数“hl”进行设置。
如果您需要在不重新加载页面的情况下动态更改应用程序的语言,则可以通过从头部删除recaptcha脚本链接并改为直接从javascript调用来实现此操作。当用户通过单击按钮更改语言时,您现在可以通过再次调用load函数来重新加载具有新语言的recaptcha。

1
你可以简单地在“lang”指令中添加值。

<div vc-recaptcha key="publicKey" lang="en"></div>


0

如何在初始化时设置ng-recaptcha语言:

 <re-captcha class="g-recaptcha"
             siteKey="asdfasdfasdfasdfasdasd"
             [(ngModel)]="myRecaptcha"
             name="captcha"
             #recaptcha></re-captcha>

app.module.ts

import {RecaptchaModule ,RECAPTCHA_LANGUAGE} from 'ng-recaptcha';

const getDomainBaseUrl = location.toString();
export const language = baseUrl.toLocaleLowerCase();

...


 providers: [
    ...

    {
      provide: RECAPTCHA_LANGUAGE,
      useValue: language,
    },

  ],

嗨,你怎么称呼动态语言? - rayss

0

我刚刚偶然发现了这个问题。我知道它已经被问了一段时间,但我认为最好的方法是在变量lang的$watch中使用服务中的useLang方法。 因此,在html中识别我们所处的语言:

<div id="g-recaptcha" class="g-recaptcha" vc-recaptcha key="domainkey" lang="$root.lang" on-success="setResponse(response)"></div>

而且,如果可以的话,在指令内部只需将$watch放在该变量上:

scope.$watch('lang', function(){
        if(scope.widgetId!=null){
           vcRecaptcha.useLang(scope.widgetId,scope.lang);
        }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接