8

如何检查字符串是否具有翻译值?我正在使用 AngularJS 和 AngularTranslate。

如果它已被翻译,我只想显示一个值。如果没有可用的翻译,Angular Translate 将显示未翻译的字符串。

我开始这样做:

<div ng-if="question.text | translate != question.text">{{ question.text | translate }}</div>

但这不起作用,因为比较发生在翻译过滤器完成工作之前。(至少我认为会发生这种情况)。

我最终做的是:

  .filter('isTranslated', function(){
return function(translatedVal, originalVal){
  return (translatedVal === originalVal) ? false : true;
}

})

<div ng-if="question.text | translate | isTranslated:question.text">{{ question.text | translate }}</div>

这工作正常,但我想知道是否有更好的方法来做到这一点?

4

3 回答 3

7

Angular-translate 也提供了一个 service,所以你可以围绕它构建你自己的过滤器:

.filter('myTranslate', function($translate){
   return function(key){
      var translation = $translate(key);
      if(translation==key) {
         return "";
      } else {
         return translation;
   }  
}

这将使您的 HTML 更清晰:

<div>{{ question.text | myTranslate }}</div>
于 2013-12-06T14:24:52.743 回答
0

从现在开始,如果没有找到翻译,您可以使用自定义错误处理程序https://angular-translate.github.io/docs/#/guide/17_custom-error-handler返回一个空字符串。

于 2018-01-16T15:35:36.520 回答
0

*ngIf="!(question.text | 翻译)"

于 2019-01-09T11:07:25.080 回答