我正在使用@ngx-translate setTranslation方法根据代码中的某些条件在运行时更新多个值。
翻译的JSON文件如下所示:
"example":{
"tab":{
"firstValue": "someValue"
}
}
setTranslation函数被调用如下:
this.translateService.setTranslation('es', {
"example": {
"tab": {
"firstValue": "otherValue",
}
},
});
此:
this.translateService.get("example.tab.firstValue").subscribe(response => {
console.log(response);
});
始终返回" someValue" ,但它应返回更新后的值 - " otherValue"
我做错了什么?
答案 0 :(得分:-1)
我对此的第一反应可能并未完全解决问题。当我使用与现有对象相同的键添加对象时,'shouldMerge'标志没有区别。所以我采取了另一种方法: 我首先获得给定语言的翻译,这会返回一个对象然后操纵这个对象,之后我用这个被操纵的对象设置翻译。 在我的情况下,我现在有一个看起来像这样的方法:
private addDynamicTranslation(section:string,culture:string,k:string,v:string){
//if key already exists: overwrite it, if not create it
if(this.valueMapper.translateService.getLangs().includes(culture)){
this.valueMapper.translateService.getTranslation(culture).subscribe((t:Object)=>{
if(t.hasOwnProperty(section)){
if(t[section].hasOwnProperty(k)) t[section][k]=v;
else Object.defineProperty(t[section], k, {value:v, writable:true, configurable:true, enumerable:true});
}
else{
var obj={};
Object.defineProperty(obj, k, {value:v, writable:true, configurable:true, enumerable:true});
Object.defineProperty(t, section, obj);
};
this.valueMapper.translateService.setTranslation(culture,t);
})
}
}