我使用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>
。
答案 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'
}
希望,这很有用。