Angular国际化后静态文本怎么不更新?

Prog.远香 阅读 25

我用 Angular 的 i18n 做了多语言切换,动态内容能正常翻译,但写死在模板里的静态文本比如

欢迎

切换语言后根本不变,还是原来的中文。是不是漏了什么步骤?

我试过重新构建项目,也加了 LOCALE_ID 提供者,但静态文本就是不动。难道每次切换语言都要重新编译整个应用?这体验也太差了吧……

我的 angular.json 里配了多个 locale,构建命令是 ng build --configuration=production,fr 这种方式,但运行时没法动态加载对应的翻译文件。

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
百里光星
你这个问题是Angular i18n的老毛病了,静态文本必须重新编译才能更新。想动态切换就得换方案,用ngx-translate吧,三行代码搞定:

// 安装
npm install @ngx-translate/core @ngx-translate/http-loader

// app.module.ts
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { HttpClientModule, HttpClient } from '@angular/common/http';

@NgModule({
imports: [
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
]
})
export class AppModule { }

export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}


用这个就能热切换了,不用重新编译。Angular自带的i18n就是个坑,我们项目早换了。
点赞
2026-03-05 17:06