【问题标题】:Translate the menu bar component of PrimeNG翻译 PrimeNG 的菜单栏组件
【发布时间】:2021-12-05 23:38:57
【问题描述】:

我想翻译 primeNG 菜单栏组件。但我不知道如何处理 .ts 文件中的翻译。我想从 .json 文件中获取翻译数据。

import { Component, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { SocialAuthService, SocialUser } from 'angularx-social-login';
import { MenuItem, MessageService } from 'primeng/api';

@Component({
  selector: 'app-admin',
  templateUrl: './admin.component.html',
  styleUrls: ['./admin.component.scss']
})
export class AdminComponent implements OnInit {

  display: boolean = true;
  socialUser: SocialUser = new SocialUser();
  items: MenuItem[] = [];

  constructor(private socialAuthService: SocialAuthService
    , private toast: MessageService, private translateService: TranslateService
    ) {
      this.items.map(item => item.label = this.translateService.instant(item.label));
     }

  ngOnInit(): void {
    this.socialAuthService.authState.subscribe(_ => {
      this.socialUser = _;
    });

    

    this.items = [
      { label: 'menu.pManagement', icon: 'pi pi-chart-line'},
      { label: 'menu.iList', icon: 'pi pi-wallet', routerLink: 'outsourcing' },
      { label: 'menu.iAnalysis, icon: 'pi pi-clock'}
    ];
  }

  addToast() {
    this.toast.add({
      severity: 'success',
      summary: 'Success',
      detail: ''
    });
  }

}

你可以看到我的菜单栏项目。当我从语言更改下拉菜单更改语言时,我想更改标签名称。

这里是 en.json 文件

{
    
"menu" : {
        "pManagement" : "Project Management",
        "iList" : "Item list",
        "iAnalysis" : "Item analysis"
    }
}

【问题讨论】:

    标签: angular typescript primeng


    【解决方案1】:

    您需要为 Angular 使用 NGX-Translate 国际化库。了解更多信息here

    然后您需要在label 中提供密钥。例如label: 'menu.pManagement'。然后在您的组件中导入翻译服务并更改每个label

    import { TranslateService } from '@ngx-translate/core';
    export class YourComponent {
       constructor(private translateService: TranslateService) {
         this.items.map(item => item.label = this.translateService.instant(item.label));
     }
    }
    

    【讨论】:

    • 我已经在使用 NGX-Translate 国际化库。但我想知道如何翻译primeng菜单标签,因为标签名称在打字稿组件中。我不知道如何为打字稿文件添加翻译。
    • 你能再检查一下我的component.ts文件吗? @RohitMaurya
    • 正如我已经说过的,label 需要成为这里的关键,例如:label: 'menu.pManagement'
    • 我做了,但没有用! @RohitMaury
    • 然后尝试使用.get()translateService 而不是instant(),它会返回一个observable。
    猜你喜欢
    • 2015-11-06
    • 2021-02-24
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多