【发布时间】:2020-01-04 18:54:16
【问题描述】:
我正在使用角材料组件示例 mat-menu mat-button 并使用 ngx-translate 来翻译我的应用程序中的标签。但是 html 的所有其他元素都在被翻译,但使用 mat-button 和 mat-tabs ngx-translate 等角度材料类不起作用。请帮忙
我在我的代码中尝试了以下内容。
这是我使用 [translate] 指令的 html 文件。
<button mat-button [matMenuTriggerFor]="file" [hidden]="isFullScreen" [translate] = "'FILE.MENU_FILE'" #matformbutton = "matButton" >{{fileMenu.name}}</button>
<button mat-button [matMenuTriggerFor]="edit" [hidden]="isFullScreen" [translate] = "'EDIT.MENU_EDIT'" #matformbutton = "matButton">{{editMenu.name}}</button>
<button mat-button [hidden]="isFullScreen" [translate] = "'VIEW.MENU_VIEW'" #matformbutton= "matButton">{{viewMenu.name}}</button>
还有我的 component.ts 文件
import { TranslateService } from '@ngx-translate/core';
declare var $ :any;
constructor( public translateService: TranslateService) {
translateService.addLangs(['en_gb', 'zh', 'en']);
translateService.setDefaultLang('en');
let browserLang = translateService.getBrowserLang();
browserLang = navigator.language;
if (browserLang.indexOf('-') !== -1) {
browserLang = browserLang.split('-')[0];
}
console.log('Language', browserLang);
translateService.use(browserLang.match(/en|zh|en_gb/) ? browserLang : 'en');
}
ngOnInit() {
let m;
let n;
const isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
if ( isIEOrEdge ) {
$.ajax({
url: 'http://ajaxhttpheaders.appspot.com',
dataType: 'jsonp',
success(headers) {
let language = headers['Accept-Language'];
m = language.split(',');
n = m[0].toString();
if (m[0].indexOf('-')) {
m[0] = m[0].split('-');
n = m[0][0].toString();
}
console.log(typeof(n));
}
});
setTimeout(() => {
this.useLanguage(n);
}, 3000);
} else {
let browserLang = navigator.language;
if (browserLang.indexOf('-') !== -1) {
browserLang = browserLang.split('-')[0];
}
this.useLanguage(browserLang);
}
}
useLanguage(language: string) {
console.log('Language called:', language);
// this.data.addNewTabWithCanvas(language);
this.translateService.use(language);
}
【问题讨论】:
-
哪些条款没有翻译?
-
按钮文本中的所有术语,即按钮文本 {{filemenu.name}} 、 {{filemenu.edit}} 和 {{filemenu.view}} 他们没有得到翻译。当我删除 mat-button 他们被翻译的那一刻。
标签: angular angular-material ngx-translate