翻译登录表单的错误消息

时间:2011-12-13 17:22:18

标签: symfony translation

我使用FOSUserBundle登录表单,我想翻译错误消息。这些消息在此处启动: vendor / symfony / src / Symfony / Component / Security / Core / Authentication / Provider / DaoAuthenticationProvider.php

protected function checkAuthentication(UserInterface $user, UsernamePasswordToken $token)
    {
        $currentUser = $token->getUser();
        if ($currentUser instanceof UserInterface) {
            if ($currentUser->getPassword() !== $user->getPassword()) {
                throw new BadCredentialsException('The credentials were changed from another session.');
            }
        } else {
            if (!$presentedPassword = $token->getCredentials()) {
                throw new BadCredentialsException('The presented password cannot be empty.');
            }

            if (!$this->encoderFactory->getEncoder($user)->isPasswordValid($user->getPassword(), $presentedPassword, $user->getSalt())) {
                throw new BadCredentialsException('The presented password is invalid.');
            }
        }
    }

我写了 app / Resources / translations / validators.fr.yml

"The presented password cannot be empty.":      "Veuillez saisir un mot de passe."

我写了 app / Resources / translations / messages.fr.yml

"The presented password cannot be empty.":      "Veuillez saisir un mot de passe."

但它不起作用。 其他翻译工作(=> fr),但我对这些消息有疑问。

这些消息的特殊程序?

3 个答案:

答案 0 :(得分:7)

在文件Sonata / UserBundle / Resources / views / Admin / Security / login.html.twig中你有:

<div class="alert-message error">{{ error|trans({}, 'SonataUserBundle') }}</div>

所以您必须将SonataUserBundle更改为您正在使用或添加的任何翻译文件 SRC /你/捆绑/资源/翻译/ SonataUserBundle。{区域设置} .yml

和内部翻译文件:

'Bad credentials': 'Your translation'
'The presented password is invalid.': 'Your translation'
'The presented password cannot be empty.': 'Your translation'

我希望它足够清楚;]

答案 1 :(得分:2)

在FOSUserBundle的版本1.3&#34; Bad Credentials&#34;它实际上是“坏证书”。&#34; (记住最后一点)。

答案 2 :(得分:0)

我不这么认为。 您必须捕获错误并执行您需要执行的操作...例如,显示带有Flash会话消息的消息并重定向到您的忘记密码页。