我需要翻译(并覆盖英语)“用户帐户被禁用”。用户尝试使用已禁用的用户帐户登录时显示的消息。
中找到了此消息似乎此消息不是任何xliff或yml转换文件的一部分。这是否意味着我们必须覆盖此类才能更改/翻译此消息?
有没有更清洁的解决方案?
由于
答案 0 :(得分:4)
未捕获的异常通常由TwigBundle中的ExceptionController呈现,然后根据请求使用TwigBundle/Resources/Resources/views/Exception中的一个模板进行呈现 - 很可能是exception.html.twig。
在这种情况下,这些例外都会扩展AuthenticationException,因此在身份验证过程中会被Symfony\Component\Security\Http\Firewall\ExceptionListener捕获。
该异常将触发SecurityContext包含一个身份验证错误,该错误将(在FOSUserBundle的示例中)作为a variable called error传递给您的登录表单。然后,此变量将在the login template中呈现(并使用反式过滤器进行翻译)。
您可以在app / Resources / translations或app / Resources / FOSUserBundle / translation中添加这些消息的新翻译,或者通过symfony(documentation)搜索其中一个翻译位置 - 确保您正在使用权限translation domain - 如果您正在使用该捆绑包,则为FOSUserBundle
。
答案 1 :(得分:1)
感谢@nifr的回答。我几乎在那里,除了我没有考虑翻译领域。现在我的翻译文件已从security.en.xlf重命名为FOSUserBundle.en.xlf并包含以下内容:
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>User account is disabled.</source>
<target>The actual error label I wanted...</target>
</trans-unit>
</body>
</file>
</xliff>
答案 2 :(得分:0)
把
'User account is disabled.': Ce compte n'est pas activé.
进入MyBundle / Resources / translations / security.fr.yml为我工作。