angular-translate不区分大小写的

时间:2016-06-21 10:52:44

标签: javascript angularjs angular-translate

我使用angular-translate翻译给定的标识符。

标识符列表:

{
  'UserName': 'Benutzername',
  'EmailAddress': 'E-mail Adresse'
}

在View im中使用翻译过滤器:

<p>{{ 'UserName' | translate }}</p>

有没有办法告诉翻译过滤器匹配案例insensetive:

<p>{{ 'username' | translate }}</p>
<p>{{ 'UsErNaMe' | translate }}</P>

修改

这适用于较大的项目,因此不能只选择小写所有标识符并将其放入{{ 'UseRnAme' | lowercase | translate }}之类的其他过滤器,因为这意味着调整html代码中的每一行。 translate指令也用于某些地方<p translate>UsErNamE</p>

3 个答案:

答案 0 :(得分:2)

扩展@ Martin的答案,如果您决定在单个案例中使用翻译文字,可以添加过滤器以将值进一步传递给translate指令。就像这样:

<p>{{ 'username'| uppercase/lowercase | translate }}</p>
<p>{{ 'UsErNaMe'| uppercase/lowercase | translate }}</P>

答案 1 :(得分:1)

简短的回答是否定的。

答案很长,如果你知道你的翻译密钥是什么情况,你可以解决问题,如果使用的密钥和标识符符合一些要求。

如果您的翻译键全部为大写或全部小写但没有下划线或连字符,那将是最简单的。如果是这种情况,您可以使用自己的指令包装翻译服务,该指令将更改键的大小写。

如果翻译键是PascalCase,那么您将能够将camelCase或SNAKE_CASE或kabab-case的指令标识符规范化为PascalCase。您将无法将ALLUPPERCASE或alllowercase规范化为PascalCase。

答案 2 :(得分:0)

尝试以下操作,(无论大小写和文本之间是否有空格,都应使用翻译过滤器

步骤1:定义一个自定义过滤器,以翻译控制器中的文本:

      app.register.filter('translated', ['$translate', function ($translate) {
    return function (text) {
        return $translate.instant(text.replace(/\s/g,'').toUpperCase()); 
    };
}]);

第2步:使用自定义过滤器“翻译”而不是“翻译”

            <p>{{ 'username' | translated}}</p>
            <p>{{ 'UsErNaMe' | translated}}</p>
            <p>{{ 'User Name' | translated}}</p>
            <p>{{ 'User    Name' | translated}}</p>

第3步:翻译中

          {
               'USERNAME': 'Benutzername',
               'EmailAddress': 'E-mail Adresse'
          }

希望,这很有用。