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"