[英]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.