Javascript 如何检查translate.instant的返回值是否翻译一次

Javascript 如何检查translate.instant的返回值是否翻译一次,javascript,angular,logic,ngx-translate,Javascript,Angular,Logic,Ngx Translate,使用ngx translate,我编写了这个函数,我想做的是 接口IWidgetFilterValue={ 标签:字符串; 值:字符串; } 现在我期望的是,如果a.key或b.key没有得到正确的翻译文本,那么我想返回a.value或b.value, 问题是this.translateService.instant方法将返回翻译文本(如果可用),或者返回标识符/键值 也就是说,根据上面的功能,我永远不会得到a.value/b.value var a = {"label":&

使用ngx translate,我编写了这个函数,我想做的是

接口IWidgetFilterValue={ 标签:字符串; 值:字符串; }

现在我期望的是,如果a.key或b.key没有得到正确的翻译文本,那么我想返回a.value或b.value, 问题是this.translateService.instant方法将返回翻译文本(如果可用),或者返回标识符/键值

也就是说,根据上面的功能,我永远不会得到a.value/b.value

var a = {"label":"Approved in english","key":"30349a66-1f39-412e-a841-052890516b2a","value":"Approved in english"}

this.translateService.instant(a.key);
"Approved in english"    //CORRECT

a.key; // "30349a66-1f39-412e-a841-052890516b2a"
a.key = a.key+'11111111111';  // NOW changed the key, such that I should not get the translation
"30349a66-1f39-412e-a841-052890516b2a11111111111"

this.translateService.instant(a.key);
"30349a66-1f39-412e-a841-052890516b2a11111111111" // So translateService.instant will return some value when the key passed to it is a truthy
但是我想要的是,如果我没有为传递的键提供翻译文本,我想返回a.value/b.value

我可以想出一个解决方案,比如代码的返回值>。TrimeService。即时(A.KEY)< /C> >是特定的ReGEXP模式,并且是这样的格式,这意味着我还没有得到翻译的文本,那么我可以考虑A.Value/B.Value


有没有其他合适的方法来解决这个问题

我认为解决方案隐藏在你的问题中

问题是,this.translateService.instant方法将返回翻译后的文本(如果可用),或者返回标识符/键值

您只需将从
translateService
中获得的内容与密钥进行比较,如果相同,则只需返回
a.value

private isTranslatedTextFound(a){
const trans=this.translateService.instant(a.key);
返回trans==a.键?a.值:trans;
}

我认为解决方案隐藏在你的问题中

问题是,this.translateService.instant方法将返回翻译后的文本(如果可用),或者返回标识符/键值

您只需将从
translateService
中获得的内容与密钥进行比较,如果相同,则只需返回
a.value

private isTranslatedTextFound(a){
const trans=this.translateService.instant(a.key);
返回trans==a.键?a.值:trans;
}
var a = {"label":"Approved in english","key":"30349a66-1f39-412e-a841-052890516b2a","value":"Approved in english"}

this.translateService.instant(a.key);
"Approved in english"    //CORRECT

a.key; // "30349a66-1f39-412e-a841-052890516b2a"
a.key = a.key+'11111111111';  // NOW changed the key, such that I should not get the translation
"30349a66-1f39-412e-a841-052890516b2a11111111111"

this.translateService.instant(a.key);
"30349a66-1f39-412e-a841-052890516b2a11111111111" // So translateService.instant will return some value when the key passed to it is a truthy
private isTranslatedTextFound(a) { 
  const trans = this.translateService.instant(a.key);
// reg_exp look like for this pattern [a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}
  if(//check trans against regexp){ 

      return a.value
  }else{
     return trans;
 }
  
}

getSortedOptions(filterOptionsArr: IWidgetFilterValue[]): IWidgetFilterValue[] {
    const filterOptionsArrNew = [...filterOptionsArr];
    return filterOptionsArrNew.sort((a: IWidgetFilterValue, b: IWidgetFilterValue): number => {
      this.translateService
      const aTranslated =
        (a && a.key && a.value && this.isTranslatedTextFound(a) || '';
      const bTranslated =
        (b && b.key && b.value && this.isTranslatedTextFound(b) || '';
      return aTranslated.localeCompare(bTranslated);
    });
  }