使用ngx-translate模块的动态翻译功能,通过调用翻译服务中的translate方法实现。
示例代码如下:
1.在app.module.ts文件中导入ngx-translate模块和相关配置
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import {TranslateLoader, TranslateModule} from '@ngx-translate/core'; import {TranslateHttpLoader} from '@ngx-translate/http-loader'; import {HttpClientModule, HttpClient} from '@angular/common/http';
@NgModule({ imports: [ BrowserModule, HttpClientModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: (http: HttpClient) => { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); }, deps: [HttpClient] } }) ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { }
2.在app.component.ts文件中,在翻译服务中调用translate方法
import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core';
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private translate: TranslateService) { translate.setDefaultLang('en'); translate.use('en'); }
changeLanguage(lang: string) {
this.translate.use(lang);
}
//需要动态翻译的文本
textToTranslate: string = "Hello world!";
translateText() {
this.translate.get(this.textToTranslate).subscribe((res: string) => {
this.textToTranslate = res;
});
}
}
3.在app.component.html文件中,使用ngModel绑定文本框中的文本,并通过按钮触发translateText方法。
4.在assets/i18n文件夹下,创建.json文件存放翻译文本