繁体   English   中英

角度翻译不区分大小写

[英]angular-translate case insensitive

我正在使用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 }} {{ 'UseRnAme' | lowercase | translate }} {{ 'UseRnAme' | lowercase | translate }}因为这意味着调整html代码中的每一行。 translate指令也用于某些地方<p translate>UsErNamE</p>

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

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

最简洁的答案是不。

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

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

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

请尝试以下方法,(使用翻译过滤器,不管区分大小写和文本之间的空格)

第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'
          }

希望,这很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM