【问题标题】:Using AngularJS and Angular Translate how do you check if a string has been translated?使用 AngularJS 和 Angular Translate 如何检查字符串是否已被翻译?
【发布时间】:2013-12-17 07:44:52
【问题描述】:

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

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

【问题讨论】:

    标签: javascript angularjs angularjs-filter angular-translate


    【解决方案1】:

    *ngIf="!(question.text | translate)"

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        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>
        

        【讨论】:

        • 您的链接已损坏。
        • @delkant 修复了链接
        • 如果您的翻译和密钥实际上相同怎么办?
        • @SebSob 请看看我的新答案
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 2015-11-24
        • 2014-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多