【发布时间】:2018-06-15 08:46:42
【问题描述】:
我有一个 Translation.json 文件,其中定义了与应用程序相关的属性。
{
"firstName": "Vorname",
"First Name": "Vorname",
"lastName": "Nachname",
"Last Name": "Nachname",
"Experience": "Erfahrung",
"experience": "erfahrung",
"Country": "Land",
"Currency": "Währung",
"currency": "währung",
"country": "land",
"DefaultSelectValue": "--${$displayName} auswählen--",
"switchLanguage": "Sprache wechseln",
"youHaveErrors": "Es gibt Fehler!",
"allGood": "Alles in Ordnung!",
"latestValidationResult": "Aktuelles Validierungsergebnis",
"heading": "Validierungsergebnis" }
同样,我在 Validation.json 文件中放置了验证消息
{
"errorMessages": {
"required": "${$displayName} fehlt!",
"minLength": "Der ${$displayName} sollte mindestens ${$config.length} Zeichen lang sein",
"matches": "${$displayName} ist nicht gültig",
"email": "${$displayName} is not a valid email.",
} }
并且默认命名空间是 Translation.json,现在当我运行应用程序时,验证消息不会显示 displayName。
HTML:
<span class="help-block" repeat.for="errorInfo of ValueErrors">${errorInfo.error.message & t:{ns:'validation'}}</span>
TypesScript:
ValidationRules.ensure('value').displayName(this.i18n.tr(model.displayName, {ns:'translation'})).required()
.minLength(model.minLength)
.on(this.model);
输出: ${$displayName} 感觉!
预期: Vorname fehlt!
errorMessages 应该在默认命名空间中声明还是我遗漏了什么?
【问题讨论】:
-
您能否上传一个显示该问题的示例?如果没有一个真实的例子,很难弄清楚配置方面的事情
-
谢谢,无论如何问题已解决。,在覆盖“getMessage”函数以查找自定义 json 文件以查找错误消息后,它开始按预期工作。
-
您能否发布您的解决方案,以便其他有相同问题的人知道该怎么做?谢谢
-
@zewa666 我所做的只是明确指定在validation.json 文件中查找错误消息
ValidationMessageProvider.prototype.getMessage = function (key) { const i18n = aurelia.container.get(I18N); const translation = i18n.tr(errorMessages.${key}, {ns:'validation'}); return this.parser.parse(translation); }; -
请将此添加为答案并接受为答案