如何使用 ngx-translate 在其他组件中使用语言选择选项传递和翻译
How to pass and translate with the language selected option in other component using ngx-translate
使用 ngx-translate 库进行本地化。它在我放置的组件中工作正常。 场景: 我已经为 select 语言下拉列表创建了一个组件,我在登录组件中调用该组件并在那里使用。它工作正常。现在,我想在登录后将 selected 语言传输到所有其他组件。
我不想在每个地方都使用 select 语言选项。登录页面中 selected 的语言也应该反映在其他页面上。我怎样才能做到这一点? (目前我没有其他模块)
i18nService.ts :
currentLang = 'en';
translateService: TranslateService;
setSelectedLanguage(language:any) {
this.currentLang = language;
this.applyLanguage(this.currentLang);
}
private applyLanguage(language:any) {
this.translateService.use(language);
}
getLanguages() {
return this.translateService.getLangs();
}
constructor(translateService: TranslateService) {
this.translateService = translateService;
}
setUpConf() {
this.translateService.addLangs(['en', 'te', 'kn', 'hi']);
this.translateService.setDefaultLang(this.currentLang);
this.applyLanguage(this.currentLang);
}
LanguageDropdown.ts
i18nConf: I18nConfigService;
constructor(i18nConf: I18nConfigService) {
this.i18nConf = i18nConf;
this.i18nConf.setUpConf();
}
LanguageDropdown.html
<select class="form-input col-md-2" #langSelect
(change)="i18nConf.setSelectedLanguage(langSelect.value)">
<option *ngFor="let lang of i18nConf.getLanguages()" [value]="lang"
[selected]="lang === this.i18nConf.currentLang">
{{ lang }}</option>
</select>
您实际上可以通过TranslateService
获取使用的语言。在 API 中,您有 currentLang
属性,它应该为您提供当前应用的语言:https://github.com/ngx-translate/core#properties
currentLang: The lang currently used
要在其他组件中使用它,您当然需要导入 TranslateService
。
要使用你需要这样调用它:
// This will contain the currently set language
const currentLang = this.translateService.currentLang;
如果你想翻译东西,你有多种方法。一种方法是 get 方法。
this.translateService.get('Message Not Found').subscribe(translation => {
console.log(translation); // Here should be the translation
});
另一种方式(我的首选方式)是使用 translate 管道:
<button mat-raised-button
color="primary"
(click)="confirm()">
{{ 'Yes' | translate }}
</button>
使用 ngx-translate 库进行本地化。它在我放置的组件中工作正常。 场景: 我已经为 select 语言下拉列表创建了一个组件,我在登录组件中调用该组件并在那里使用。它工作正常。现在,我想在登录后将 selected 语言传输到所有其他组件。
我不想在每个地方都使用 select 语言选项。登录页面中 selected 的语言也应该反映在其他页面上。我怎样才能做到这一点? (目前我没有其他模块)
i18nService.ts :
currentLang = 'en';
translateService: TranslateService;
setSelectedLanguage(language:any) {
this.currentLang = language;
this.applyLanguage(this.currentLang);
}
private applyLanguage(language:any) {
this.translateService.use(language);
}
getLanguages() {
return this.translateService.getLangs();
}
constructor(translateService: TranslateService) {
this.translateService = translateService;
}
setUpConf() {
this.translateService.addLangs(['en', 'te', 'kn', 'hi']);
this.translateService.setDefaultLang(this.currentLang);
this.applyLanguage(this.currentLang);
}
LanguageDropdown.ts
i18nConf: I18nConfigService;
constructor(i18nConf: I18nConfigService) {
this.i18nConf = i18nConf;
this.i18nConf.setUpConf();
}
LanguageDropdown.html
<select class="form-input col-md-2" #langSelect
(change)="i18nConf.setSelectedLanguage(langSelect.value)">
<option *ngFor="let lang of i18nConf.getLanguages()" [value]="lang"
[selected]="lang === this.i18nConf.currentLang">
{{ lang }}</option>
</select>
您实际上可以通过TranslateService
获取使用的语言。在 API 中,您有 currentLang
属性,它应该为您提供当前应用的语言:https://github.com/ngx-translate/core#properties
currentLang: The lang currently used
要在其他组件中使用它,您当然需要导入 TranslateService
。
要使用你需要这样调用它:
// This will contain the currently set language
const currentLang = this.translateService.currentLang;
如果你想翻译东西,你有多种方法。一种方法是 get 方法。
this.translateService.get('Message Not Found').subscribe(translation => {
console.log(translation); // Here should be the translation
});
另一种方式(我的首选方式)是使用 translate 管道:
<button mat-raised-button
color="primary"
(click)="confirm()">
{{ 'Yes' | translate }}
</button>