使用AngularJS和Angular Translate如何检查字符串是否已被翻译?

时间:2013-12-01 16:00:17

标签: javascript angularjs angularjs-filter angular-translate

如何检查字符串是否具有翻译值?我正在使用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>

这很好但我想知道是否有更好的方法吗?

3 个答案:

答案 0 :(得分:6)

Angular-translate也提供了a 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>

答案 1 :(得分:0)

从现在开始,如果没有找到翻译,您可以使用a custom error handler https://angular-translate.github.io/docs/#/guide/17_custom-error-handler返回空字符串。

答案 2 :(得分:0)

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