如何无需页面重载为$translateProvider动态添加英文JSON翻译条目?
动态添加AngularJS $translate英文翻译条目(无需刷新页面)
你在config阶段通过$translateProvider初始化了英文语言包,要在运行时动态追加新的翻译条目,需要使用运行时的$translate服务,而非config阶段的$translateProvider。
具体实现步骤:
- 在需要添加翻译的控制器或服务中注入
$translate服务 - 准备好要追加的新翻译JSON对象
- 调用
$translate.translations()方法,传入目标语言、新翻译对象,并设置第三个参数为true(表示合并而非覆盖原有翻译)
代码示例:
假设你要追加的新翻译条目是:
const newEnTranslations = { 'PROFILE_TITLE': 'User Profile', 'SETTINGS_LABEL': 'Account Settings' };
在控制器中执行添加操作:
app.controller('SomeController', ['$translate', function($translate) { // 可在用户操作触发后执行,比如按钮点击、异步请求完成后 function addNewTranslations() { // 第三个参数true:合并新翻译到现有en语言包,而非替换原内容 $translate.translations('en', newEnTranslations, true); } // 调用方法完成翻译追加 addNewTranslations(); }]);
关键说明:
- 第三个参数
true是核心:如果不传或设为false,新翻译会直接覆盖原有的translate_EN内容,设为true才是追加合并 - 添加完成后无需刷新页面,直接就能在模板或代码中使用新的翻译键(比如
{{ 'PROFILE_TITLE' | translate }}) - 后续切换语言再切回英文,新添加的翻译依然有效,因为已经合并到语言包中
内容的提问来源于stack exchange,提问作者RedTenZ
相关产品推荐
相关产品推荐

