使用 ngx-translate 进行 ngx-cookie-consent 消息翻译

ngx-cookie-consent message translation with ngx-translate

我正在做我的项目,基本上想实现多语言 webapp。我为此使用 ngx-translate。现在我在尝试使用 ngx-cookie-consent 实现 cookie 栏时遇到了问题。 我有 2 种语言:en|ru,当我单击按钮更改语言时 - 除了 cookiebar 之外,整个应用程序都被翻译了。也许您遇到过这样的问题,请提供一些提示,说明您是如何处理它的。 感谢任何帮助。

这是我如何将翻译消息加载到 cookie-consent 中的代码:

this.translateService
  .get(['FOOTER.COOKIES'])
  .subscribe(data => {
    console.log(data)
    this.ccService.getConfig().content = this.ccService.getConfig().content || {} ;
    // Override default messages with the translated ones
    this.ccService.getConfig().content.message = data['FOOTER.COOKIES'];
    this.ccService.destroy();//remove previous cookie bar (with default messages)
    this.ccService.init(this.ccService.getConfig()); // update config with translated messages
  });
}

您可以在语言更改时订阅并在每次发生时配置它,而不是仅在您首次加载应用程序时配置一次 cookie 同意(至少这似乎是您的代码中发生的事情):

export class MyComponent implements OnInit {
    ngOnInit() {
      this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {
        this.configureCookieConsent();
      });
    
      this.configureCookieConsent();
    }
    
    configureCookieConsent() {
      this.translateService
            .get(['FOOTER.COOKIES'])
            .subscribe(data => {
                console.log(data)
                this.ccService.getConfig().content = this.ccService.getConfig().content || {} ;
                // Override default messages with the translated ones
                this.ccService.getConfig().content.message = data['FOOTER.COOKIES'];
                this.ccService.destroy();//remove previous cookie bar (with default messages)
                this.ccService.init(this.ccService.getConfig()); // update config with translated messages
            });
        }
    }
}

我使用了一个组件作为示例,但当然它应该放在您当前配置 cookie 同意的任何地方