Skip to content

Commit 08d393e

Browse files
committed
Translate PasswordResetMessageHandler texts
1 parent fe66ee0 commit 08d393e

File tree

3 files changed

+90
-15
lines changed

3 files changed

+90
-15
lines changed

resources/translations/messages.en.xlf

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,55 @@
2929
<target>Attribute definition already exists.</target>
3030
</trans-unit>
3131

32+
<trans-unit id="identity.password_reset.subject">
33+
<source>Password Reset Request</source>
34+
</trans-unit>
35+
36+
<trans-unit id="identity.password_reset.text">
37+
<source>Hello,
38+
39+
A password reset has been requested for your account.
40+
Please use the following token to reset your password:
41+
42+
%token%
43+
44+
If you did not request this password reset, please ignore this email.
45+
46+
Thank you.
47+
</source>
48+
<target>
49+
Hello,
50+
51+
A password reset has been requested for your account.
52+
Please use the following token to reset your password:
53+
54+
%token%
55+
56+
If you did not request this password reset, please ignore this email.
57+
58+
Thank you.
59+
</target>
60+
</trans-unit>
61+
62+
<trans-unit id="identity.password_reset.html">
63+
<source><![CDATA[<p>Password Reset Request!</p>
64+
<p>Hello! A password reset has been requested for your account.</p>
65+
<p>Please use the following token to reset your password:</p>
66+
<p><a href="%confirmationLink%">Reset Password</a></p>
67+
<p>If you did not request this password reset, please ignore this email.</p>
68+
<p>Thank you.</p>]]></source>
69+
<target>
70+
<![CDATA[
71+
<p>Password Reset Request!</p>
72+
<p>Hello! A password reset has been requested for your account.</p>
73+
<p>Please use the following token to reset your password:</p>
74+
<p><a href="%confirmationLink%">Reset Password</a></p>
75+
<p>If you did not request this password reset, please ignore this email.</p>
76+
<p>Thank you.</p>
77+
]]>
78+
</target>
79+
</trans-unit>
80+
3281
<!-- Messaging -->
3382
<trans-unit id="messaging.imap_not_available">
3483
<source>PHP IMAP extension not available. Falling back to Webklex IMAP.</source>

src/Domain/Messaging/MessageHandler/PasswordResetMessageHandler.php

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@
88
use PhpList\Core\Domain\Messaging\Service\EmailService;
99
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
1010
use Symfony\Component\Mime\Email;
11+
use Symfony\Contracts\Translation\TranslatorInterface;
1112

1213
#[AsMessageHandler]
1314
class PasswordResetMessageHandler
1415
{
1516
private EmailService $emailService;
17+
private TranslatorInterface $translator;
1618
private string $passwordResetUrl;
1719

18-
public function __construct(EmailService $emailService, string $passwordResetUrl)
20+
public function __construct(EmailService $emailService, TranslatorInterface $translator, string $passwordResetUrl)
1921
{
2022
$this->emailService = $emailService;
23+
$this->translator = $translator;
2124
$this->passwordResetUrl = $passwordResetUrl;
2225
}
2326

@@ -28,19 +31,37 @@ public function __invoke(PasswordResetMessage $message): void
2831
{
2932
$confirmationLink = $this->generateLink($message->getToken());
3033

31-
$subject = 'Password Reset Request';
32-
$textContent = "Hello,\n\n"
33-
. "A password reset has been requested for your account.\n"
34-
. "Please use the following token to reset your password:\n\n"
35-
. $message->getToken()
36-
. "\n\nIf you did not request this password reset, please ignore this email.\n\nThank you.";
37-
38-
$htmlContent = '<p>Password Reset Request!</p>'
39-
. '<p>Hello! A password reset has been requested for your account.</p>'
40-
. '<p>Please use the following token to reset your password:</p>'
41-
. '<p><a href="' . $confirmationLink . '">Reset Password</a></p>'
42-
. '<p>If you did not request this password reset, please ignore this email.</p>'
43-
. '<p>Thank you.</p>';
34+
$subject = $this->translator->trans('Password Reset Request');
35+
$textContent = $this->translator->trans(
36+
<<<TXT
37+
Hello,
38+
39+
A password reset has been requested for your account.
40+
Please use the following token to reset your password:
41+
42+
%token%
43+
44+
If you did not request this password reset, please ignore this email.
45+
46+
Thank you.
47+
TXT,
48+
['%token%' => $message->getToken()]
49+
);
50+
51+
$htmlContent = $this->translator->trans(
52+
<<<HTML
53+
<p>Password Reset Request!</p>
54+
<p>Hello! A password reset has been requested for your account.</p>
55+
<p>Please use the following token to reset your password:</p>
56+
<p><a href="%confirmationLink%">Reset Password</a></p>
57+
<p>If you did not request this password reset, please ignore this email.</p>
58+
<p>Thank you.</p>
59+
HTML,
60+
[
61+
'%token%' => $message->getToken(),
62+
'%confirmationLink%' => $confirmationLink,
63+
]
64+
);
4465

4566
$email = (new Email())
4667
->to($message->getEmail())

tests/Unit/Domain/Messaging/MessageHandler/PasswordResetMessageHandlerTest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use PHPUnit\Framework\MockObject\MockObject;
1111
use PHPUnit\Framework\TestCase;
1212
use Symfony\Component\Mime\Email;
13+
use Symfony\Component\Translation\Translator;
1314

1415
class PasswordResetMessageHandlerTest extends TestCase
1516
{
@@ -20,7 +21,11 @@ class PasswordResetMessageHandlerTest extends TestCase
2021
protected function setUp(): void
2122
{
2223
$this->emailService = $this->createMock(EmailService::class);
23-
$this->handler = new PasswordResetMessageHandler($this->emailService, $this->passwordResetUrl);
24+
$this->handler = new PasswordResetMessageHandler(
25+
$this->emailService,
26+
new Translator('en'),
27+
$this->passwordResetUrl
28+
);
2429
}
2530

2631
public function testInvoke(): void

0 commit comments

Comments
 (0)