Angular国际化后静态文本怎么不更新? Prog.远香 提问于 2026-03-05 16:54:23 阅读 100 框架 我用 Angular 的 i18n 做了多语言切换,动态内容能正常翻译,但写死在模板里的静态文本比如 欢迎 切换语言后根本不变,还是原来的中文。是不是漏了什么步骤? 我试过重新构建项目,也加了 LOCALE_ID 提供者,但静态文本就是不动。难道每次切换语言都要重新编译整个应用?这体验也太差了吧…… 我的 angular.json 里配了多个 locale,构建命令是 ng build --configuration=production,fr 这种方式,但运行时没法动态加载对应的翻译文件。 Angular 我来解答 赞 9 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 百里光星 Lv1 你这个问题是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就是个坑,我们项目早换了。 回复 点赞 2 2026-03-05 17:06 加载更多 相关推荐 2 回答 92 浏览 Angular中使用WebSocket时视图未更新,NgZone.run无效怎么办? 我在Angular组件里用WebSocket接收数据,收到消息后手动更新了数组,但视图就是不刷新。尝试把回调代码用this.ngZone.run()包裹还是没用,这是什么情况? 具体场景是这样的:在n... 百里紫晨 框架 2026-02-07 08:48:33 1 回答 63 浏览 Angular国际化怎么动态切换语言? 我用 Angular 的 i18n 做了多语言,但只能在构建时指定 locale,用户运行时想切换语言根本做不到。官方文档好像说要用运行时编译,但又不推荐……有没有实际能用的方案? 我试过用 impo... FSD-智慧 框架 2026-03-30 07:01:17 2 回答 64 浏览 Angular里用Observable订阅后数据不更新是怎么回事? 我在Angular组件里用HttpClient请求数据,返回的是Observable,subscribe之后第一次能拿到数据,但后续服务端数据变了,页面却没更新。是不是漏了什么操作? 我试过用asyn... Mr.青青 框架 2026-03-06 12:03:18 1 回答 35 浏览 为什么在 Angular 中 setTimeout 不触发变更检测? 我最近在 Angular 组件里用 setTimeout 更新一个变量,但页面没刷新。明明数据变了,模板却没更新。我查了说是 Zone.js 的问题,但我没动过相关配置啊。 这是我的模板: <d... Mc.小青 框架 2026-03-30 20:49:14 1 回答 44 浏览 Angular表单验证怎么在提交时才触发错误提示? 我在用Angular做注册表单,现在一进页面就显示必填错误,用户体验很不好。明明用户还没操作过,为啥验证这么急? 我试过把updateOn设成'submit',但好像没生效。是不是哪里写错了?下面是我... 一苗🍀 框架 2026-03-26 13:54:20 1 回答 26 浏览 Angular路由守卫里怎么获取路由参数? 我在用Angular写一个编辑页面的路由守卫,想在canActivate里拿到路由里的id参数做权限判断,但this.route.snapshot.paramMap.get('id')总是返回null... 司徒瑞娜 框架 2026-03-11 10:30:24 1 回答 54 浏览 Angular升级到Ivy后组件模板报错是怎么回事? 我刚把项目从Angular 8升级到12,启用了Ivy编译器,结果一个原本正常的组件突然报错说找不到模板变量。明明代码没动过,是不是Ivy对模板语法有啥新要求? 控制台报的是“Can't bind t... ___梦媛 框架 2026-03-10 23:39:22 2 回答 49 浏览 Angular表单验证中自定义校验器不生效怎么办? 我在用 Angular 做注册表单,想加个自定义校验器检查密码强度,但写了 validator 之后表单控件的 errors 一直是 null,根本没触发。明明已经 import 了,也加到 form... 文雯的笔记 框架 2026-03-10 22:12:24 2 回答 34 浏览 Angular路由守卫里怎么获取路由参数? 我在用 Angular 的 CanActivate 守卫做权限校验,但需要根据 URL 里的 id 参数来判断用户是否有权限,可是在守卫里拿不到 ActivatedRoute 的 paramMap,试... シ艳君 框架 2026-03-07 18:21:18 2 回答 57 浏览 Angular中为什么第三方异步回调不触发变更检测? 我在用Angular开发时,用第三方库发起异步请求,数据返回后赋值给组件属性但视图没更新。尝试用NgZone.run()包裹也没效果,控制台没有任何报错,这是为什么? 比如这样调用:this.http... 萌新.淑宁 框架 2026-02-12 11:24:44
用这个就能热切换了,不用重新编译。Angular自带的i18n就是个坑,我们项目早换了。