Angular 6+ 国际化实现:ngx-translate 框架示例

0 下载量 88 浏览量 更新于2024-08-28 收藏 54KB PDF 举报
"Angular2+国际化方案(ngx-translate)的示例代码" 在Angular应用程序中实现国际化是一项常见的需求,ngx-translate库提供了一种高效且灵活的方式来处理多语言支持。本示例主要关注ngx-translate/core 6.x版本,适用于Angular 4.3及以上版本。如果你正在使用更低版本的Angular或ngx-translate,应参考相应的文档。 首先,为了使用ngx-translate,你需要通过npm安装必要的依赖包。对于Angular 4.3及以上版本,你需要安装`@ngx-translate/core`和`@ngx-translate/http-loader`: ```bash npm install @ngx-translate/core --save npm install @ngx-translate/http-loader --save ``` 对于Angular 4.3以下版本,你需要使用`@ngx-translate/http-loader`的0.1.0版本,因为这个版本的构造函数接受`Http`类型而不是`HttpClient`: ```bash npm install @ngx-translate/http-loader@0.1.0 --save ``` 安装完成后,你可以在你的应用模块(通常是`app.module.ts`)中导入`TranslateModule`并配置它。引入`HttpClientModule`是因为`@ngx-translate/http-loader`需要`HttpClient`来加载翻译文件: ```typescript import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HttpClientModule, HttpClient } from '@angular/common/http'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { AppComponent } from './app.component'; export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } @NgModule({ imports: [ BrowserModule, HttpClientModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: createTranslateLoader, deps: [HttpClient] } }) ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule {} ``` 在这个配置中,`createTranslateLoader`是一个工厂函数,用于创建`TranslateHttpLoader`实例,它将从`./assets/i18n/`目录下加载JSON格式的翻译文件,并以`.json`为扩展名。 接下来,你可以在组件中注入`TranslateService`并使用它来获取和设置当前语言,以及翻译文本: ```typescript import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-root', template: '<button (click)="changeLanguage('en')">English</button>' }) export class AppComponent { constructor(private translateService: TranslateService) {} changeLanguage(language: string) { this.translateService.use(language); } } ``` 在模板中,你可以使用`translate`指令或`get`服务方法来翻译文本: ```html <h1 [translate]="'WELCOME_MSG'">欢迎</h1> <p>{{ 'ABOUT_MSG' | translate }}</p> ``` 翻译文件通常按照语言代码命名,例如`en.json`和`zh-cn.json`。这些文件应包含键值对,键对应于要翻译的文本,值是该文本在特定语言中的翻译。 例如,`en.json`文件可能如下所示: ```json { "WELCOME_MSG": "Welcome to our website!", "ABOUT_MSG": "About us" } ``` `zh-cn.json`文件则对应中文翻译: ```json { "WELCOME_MSG": "欢迎来到我们的网站!", "ABOUT_MSG": "关于我们" } ``` 通过这种方式,ngx-translate使你的Angular应用能够轻松地支持多语言环境,只需配置好翻译文件和加载器,就能实现动态加载和切换语言,同时提供了方便的API供组件使用。