我使用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),但我对这些消息有疑问。
这些消息的特殊程序?
答案 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会话消息的消息并重定向到您的忘记密码页。