首页 > 其他分享 >Angular primeNg i18n 国际化多语言处理

Angular primeNg i18n 国际化多语言处理

时间:2024-05-28 14:23:22浏览次数:27  
标签:翻译 primeNg translate menu i18n import pi ngx Angular

i18n API 允许为组件全局设置翻译并与翻译库集成。 PrimeNg 官网相关地址

详细步骤如下:

 1:安装如下两个包。一个是翻译的一个是语音请求的

npm install @ngx-translate/core @ngx-translate/http-loader --save

2:项目 assets目录下创建 en.json 和 zh.json 两个文件或者更多国际化的文件

3:en.json内容如下,请根据你的项目来实际处理

{
    "menu.accept": "Accept",
    "menu.reject": "Cancel",
    "menu.changeLang2Zh":"Change to Chinese",
    "menu.changeLang2en":"Change to English"
}

4:zh.json内容如下

{
    "menu.accept": "接收",
    "menu.reject": "拒绝",
    "menu.changeLang2Zh":"翻译为中文",
    "menu.changeLang2en":"翻译为英文"
}

5:app.module.ts 中code如下

import { TranslateModule,TranslateLoader } from '@ngx-translate/core';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http,'../assets/i18n/',".json");
}

@NgModule({
  declarations: [
    AppComponent, HomeComponent,
    TopComponent, MenuComponent,
    ProductComponent,BodyComponent
  ],
  imports: [
    BrowserModule, AppRoutingModule,
    BrowserAnimationsModule,
    ButtonModule, FormsModule,
    CalendarModule, PanelMenuModule,

//如下
HttpClientModule,
TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useFactory: HttpLoaderFactory,
    deps: [HttpClient]
  }
})
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

6: 在需要翻译或者多语言翻译的页面上处理,如案例:

import { Component } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { PrimeNGConfig } from 'primeng/api'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-menu', templateUrl: './menu.component.html', styleUrl: './menu.component.scss' }) export class MenuComponent { menuitems: MenuItem[]; constructor(private config: PrimeNGConfig,private translateService:TranslateService) { this.menuitems = [ { label: 'product', icon: 'pi pi-fw pi-home', routerLink: '/home/product' }, { label: 'top', icon: 'pi pi-fw pi-info-circle', routerLink: '/home/top' }] } ngOnInit() { // this.config.setTranslation({ // 这里没有使用到 // accept: 'Accept', // reject: 'Cancel' // }); this.translateService.setDefaultLang("zh"); } switchLanguage(languae:string){ //点击按钮确认翻译 this.translateService.use(languae); } }

7:在一个页面上使用翻译的code如下

<p>menu works!</p>

<div>{{"menu.accept"|translate}}</div>

<p-button icon="pi pi-iconName" label="{{'menu.changeLang2Zh'|translate}}" (onClick)="switchLanguage('zh')"></p-button>
<p-button icon="pi pi-iconName" label="{{'menu.changeLang2en'|translate}}"  (onClick)="switchLanguage('en')" [style]="{'margin-left': '6px'}"></p-button>

<p-panelMenu [model]="menuitems" [style]="{'width':'300px'}"></p-panelMenu>

8:测试截图如下

9:小结

  在实际项目中,通常都是统一来设置当前环境为哪一个语言,并不会在每一个页面这样硬编码 this.translateService.setDefaultLang("zh"); 
 具体为哪一种语言我们可以选择 h5的 localStorage.getItem(""),
localStorage.setItem("", "") 来全局获取和设置 或者Angular 的service服务来统一处理也是可行的方案,具体的语言切换如通过页面的下拉选择来修改当前web的语言即可

 

标签:翻译,primeNg,translate,menu,i18n,import,pi,ngx,Angular
From: https://www.cnblogs.com/Fengge518/p/18217910

相关文章

  • java+Angular+Nginx微服务架构+VUE 基于SaaS云部署、云计算的区域医院云HIS系统源码
    java+Angular+Nginx微服务架构+VUE基于SaaS云部署、云计算的区域医院云HIS系统源码HIS系统:可以根据医院规模、个性流程定制个性化程序;以临床工作为核心,方便医生的临床医疗行为,提高医疗服务质量,能提供临床专科数据分析系统,可用于医疗评估、生物医学研究、教育和医疗保健管理......
  • 界面组件Kendo UI for Angular教程 - 构建强大的PDF阅读器(二)
    如今当用户需要处理PDF文件时,通常不得不下载应用程序或者浏览器插件,控制用户如何与PDF交互并不是一件容易的事。如果我们提供PDF作为内容,用户可以下载它并使用浏览器或PDF本身提供的控件进行交互。然而,一些企业可能希望控制用户使用PDF的方式,以提供更好的体验或在某些条件下限制下......
  • Angular等了三年,那个她已经来了
    Angular生态丰富,功能强大,支撑了许多大型项目的开发。而且一直在前方等待着其他框架跟上。但是不得不直面的一个问题就是:“在等待其他框架跟上的这三年”,Angular在陆陆续续抛弃之前引以为豪的设计。又由于大量的历史包袱,这些设计变更又做得扭扭捏捏,做不到轻装上阵。比如NgModule之......
  • Angular多环境打包项目并发布到nginx运行
    1:官网下载稳定版本Nginx1.26.0  2:先跑起来看是否异常,如果没有跑起来我们可以检查分析nginx的log日志3:项目路径如下: 4:前端多环境简单测试配置 5:路由配置简单测试数据constroutes:Routes=[{path:'',redirectTo:'/home',pathMatch:"full"},{......
  • Angular | 使用事件和表单
    0.表单相应模块的引入import{FormsModule}@angular/forms1.事件绑定​ 以html的常用事件名如:mouseover,click包含在()中的形式定为事件绑定,(keyup.enter)是可过滤的按键事件​ 模板变量:例如$event,事件中使用的值,可以再html代码中直接使用​ 模板引用变量:例如定一个input......
  • angular、node、npm版本对应
    升级node到指定版本利用nvm切换node版本https://blog.csdn.net/MmQqJj66/article/details/133942977angular卸载与安装https://blog.csdn.net/zf2451597310/article/details/129989137 ......
  • 前端服务端React(Next.js)、Vue(Nuxt.js)、Angular(Universal)渲染搭建和开发案例
    前端服务端渲染(Server-SideRendering,简称SSR)是一种Web开发技术,它允许服务器动态生成HTML内容,然后将其发送到客户端,客户端再将这些HTML内容渲染成页面。这种方式可以提高首屏加载速度,改善SEO,以及提供更好的用户体验。前端服务端渲染搭建步骤:选择框架:选择支持服务端渲染......
  • Angular Material 17+ 高级教程 – CDK Table
    前言CDKTable是AngularMaterial对<table>的抽象(无styles)封装。无styles的table有什么好封装的呢?CDKTable最重要的3个功能是:以column概念来做管理动态输出columnstickycolumn都不算什么大功能,但如果我们要自己实现这些功能,确实也挺费劲的,所......
  • angular - 表单
    (1)模板驱动表单参考:构建模板驱动表单简单表单​ngForm​固定的,需要提交的值ngModel​<form#sub="ngForm"(submit)="onSubmit(sub)"><inputtype="text"name="username"ngModel><inputtype="id"name=......
  • Angular-2-示例-全-
    Angular2示例(全)原文:zh.annas-archive.org/md5/529E3E7FE7FFE986F90814E2C501C746译者:飞龙协议:CCBY-NC-SA4.0前言Angular2来了,我们非常兴奋!这本书让我们能够与您联系,并在您学习Angular2的过程中伸出援手。虽然Angular1的增长是有机的,但Angular2却不能这样说......