Symfony2-如何翻译;“不良凭证”;来自FOSUserBundle的登录错误消息?
如果出现登录错误,我想自定义错误消息(“错误凭据”)。 我做了,但不起作用。 这是模板登录:Symfony2-如何翻译;“不良凭证”;来自FOSUserBundle的登录错误消息?,symfony,fosuserbundle,Symfony,Fosuserbundle,如果出现登录错误,我想自定义错误消息(“错误凭据”)。 我做了,但不起作用。 这是模板登录: {% if error %} <div>{{ error.message|trans }}</div> {% endif %}<form action="{{ path('login_check') }}" method="post"> <label for="username">Username:</label> <input type
{% if error %}
<div>{{ error.message|trans }}</div>
{% endif %}<form action="{{ path('login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="hidden" name="_target_path" value="/account" />
<input type="submit" name="login" />
在parametre.yml中,我有:
locale: en
我在目录MyBundle/Resources/translations/messages.en.ymy中添加了该文件:
security:
login:
username: "Username:"
password: "Password:"
submit: Login
forgot_username: "Forgot username"
forgot_password: "Forgot password"
registration: register
# Security
"Bad credentials": "Your user name or password are incorrect."
但我总是收到错误凭据错误消息您使用了错误的翻译域 FOSUserBundle使用
FOSUserBundle
而不是消息
。查看默认的
捆绑包中的翻译文件存储在:
<bundle>/Resources/translations/<translationDomain>.<locale>.<format>
/Resources/translations/。。
解决方案:
将翻译文件重命名为
FOSUserBundle..
。然后清除缓存以解决此问题。错误不属于任何父组(security.login
或域)
要翻译它,您需要将密钥/值对添加到常规的消息..
文件中,如下所示
Acme/DemoBundle/Resources/translations/messages.en.yml
"Bad Credentials": Incorrect username and/or password
// Other stuff
acme_demo:
form:
cats: Cats
仅供参考
这个答案(基本上)可以在以下任何一项中找到:
仅是信息我不使用FosUserBundle,我遵循每个步骤,但在我的登录表单中有相同的消息错误错误凭据:
{# Error login form #}
{% if error %}
<div class="alert alert-danger">
<strong>{% trans %}login.error{% endtrans %}!</strong> {{ error.messageKey|trans({}, 'messages') }}
</div>
{% endif %}
我希望这将有助于您需要喜欢:
<div>{{ error|trans }}</div>
{{error | trans}}
而不是:
<div>{{ error.message|trans }}</div>
{{error.message | trans}
这对我来说很有效。消息“糟糕的凭证”漏掉了一点。
这可能是“糟糕的凭证”
您只能在捆绑包下使用此行的翻译覆盖翻译文件
别忘了添加翻译域
{{ error|trans({}, 'FOSUserBundle') }}
还是全球
{% trans_default_domain 'FOSUserBundle' %}
注意:此解决方案使用FOSuserBundle进行测试,因为被询问的人说他没有使用它。问题是错误消息在字符串末尾有点(.) 您可以使用细枝修剪过滤器更正此问题:
{{ error|trim('.')|trans({}, 'FOSUserBundle') }}
像这样更改MyBundle/Resources/translations/messages.en.yml中编写的代码
Bad credentials.: "Invalid user/password"
不:不在
登录下使用:
直接写下答案可能重复不正确FOSUserBundle
是呈现表单的模板的默认翻译域。。。设置应用于error | trans
->的通孔……这是正确的,有点像。如果您正在扩展基本FOSUserBundle模板,则域是(正如@nifr正确说明的)FOSUserBundle
,否则它将只是消息(或者您曾经设置过的任何内容,如果您设置了其他内容)您引用了覆盖/明确地将翻译域设置为消息
。。。如果你想让你的翻译井然有序的话,我认为这不是最好的解决方案。。。这就是域名的用途:)无论如何+1用于链接集合:)对于其他寻求相同问题帮助的人肯定会有帮助。
{{ error|trim('.')|trans({}, 'FOSUserBundle') }}
Bad credentials.: "Invalid user/password"