@ ngx-translate'' setTranslation"和"设置"不工作

时间:2017-10-20 12:00:43

标签: angular translate ngx-translate

我正在使用@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"

我做错了什么?

1 个答案:

答案 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);
        })
    }
}