Skip to content

Commit da34245

Browse files
committed
Use translations
1 parent 165d363 commit da34245

File tree

7 files changed

+60
-11
lines changed

7 files changed

+60
-11
lines changed

.github/workflows/l10n-validate.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: L10n Validate
33
on:
44
pull_request:
55
paths:
6-
- 'translations/**/*.xlf'
6+
- 'resources/translations/**/*.xlf'
77

88
jobs:
99
validate-xliff:

resources/translations/messages.en.xlf

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,26 @@
1919
<target>Login attempt for disabled admin '%login%'</target>
2020
</trans-unit>
2121

22+
<!-- Identity -->
23+
<trans-unit id="identity.admin_not_found">
24+
<source>Administrator not found</source>
25+
<target>Administrator not found</target>
26+
</trans-unit>
27+
28+
<!-- Subscription -->
29+
<trans-unit id="subscription.list_not_found">
30+
<source>Subscriber list not found.</source>
31+
<target>Subscriber list not found.</target>
32+
</trans-unit>
33+
<trans-unit id="subscription.subscriber_not_found">
34+
<source>Subscriber does not exists.</source>
35+
<target>Subscriber does not exists.</target>
36+
</trans-unit>
37+
<trans-unit id="subscription.not_found_for_list_and_subscriber">
38+
<source>Subscription not found for this subscriber and list.</source>
39+
<target>Subscription not found for this subscriber and list.</target>
40+
</trans-unit>
41+
2242
</body>
2343
</file>
2444
</xliff>

src/Domain/Common/I18n/Messages.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ final class Messages
1515
public const AUTH_LOGIN_FAILED = 'auth.login_failed';
1616
public const AUTH_LOGIN_DISABLED = 'auth.login_disabled';
1717

18+
// Identity
19+
public const IDENTITY_ADMIN_NOT_FOUND = 'identity.admin_not_found';
20+
21+
// Subscription
22+
public const SUBSCRIPTION_LIST_NOT_FOUND = 'subscription.list_not_found';
23+
public const SUBSCRIPTION_SUBSCRIBER_NOT_FOUND = 'subscription.subscriber_not_found';
24+
public const SUBSCRIPTION_NOT_FOUND_FOR_LIST_AND_SUBSCRIBER = 'subscription.not_found_for_list_and_subscriber';
25+
1826
private function __construct()
1927
{
2028
}

src/Domain/Identity/Service/PasswordManager.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpList\Core\Domain\Identity\Service;
66

77
use DateTime;
8+
use PhpList\Core\Domain\Common\I18n\Messages;
89
use PhpList\Core\Domain\Identity\Model\AdminPasswordRequest;
910
use PhpList\Core\Domain\Identity\Model\Administrator;
1011
use PhpList\Core\Domain\Identity\Repository\AdminPasswordRequestRepository;
@@ -13,6 +14,7 @@
1314
use PhpList\Core\Security\HashGenerator;
1415
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1516
use Symfony\Component\Messenger\MessageBusInterface;
17+
use Symfony\Contracts\Translation\TranslatorInterface;
1618

1719
class PasswordManager
1820
{
@@ -22,17 +24,20 @@ class PasswordManager
2224
private AdministratorRepository $administratorRepository;
2325
private HashGenerator $hashGenerator;
2426
private MessageBusInterface $messageBus;
27+
private TranslatorInterface $translator;
2528

2629
public function __construct(
2730
AdminPasswordRequestRepository $passwordRequestRepository,
2831
AdministratorRepository $administratorRepository,
2932
HashGenerator $hashGenerator,
30-
MessageBusInterface $messageBus
33+
MessageBusInterface $messageBus,
34+
TranslatorInterface $translator
3135
) {
3236
$this->passwordRequestRepository = $passwordRequestRepository;
3337
$this->administratorRepository = $administratorRepository;
3438
$this->hashGenerator = $hashGenerator;
3539
$this->messageBus = $messageBus;
40+
$this->translator = $translator;
3641
}
3742

3843
/**
@@ -47,7 +52,8 @@ public function generatePasswordResetToken(string $email): string
4752
{
4853
$administrator = $this->administratorRepository->findOneBy(['email' => $email]);
4954
if ($administrator === null) {
50-
throw new NotFoundHttpException('Administrator not found', null, 1500567100);
55+
$message = $this->translator->trans(Messages::IDENTITY_ADMIN_NOT_FOUND);
56+
throw new NotFoundHttpException($message, null, 1500567100);
5157
}
5258

5359
$existingRequests = $this->passwordRequestRepository->findByAdmin($administrator);

src/Domain/Subscription/Service/Manager/SubscriptionManager.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,33 @@
44

55
namespace PhpList\Core\Domain\Subscription\Service\Manager;
66

7+
use PhpList\Core\Domain\Common\I18n\Messages;
78
use PhpList\Core\Domain\Subscription\Exception\SubscriptionCreationException;
89
use PhpList\Core\Domain\Subscription\Model\Subscriber;
910
use PhpList\Core\Domain\Subscription\Model\SubscriberList;
1011
use PhpList\Core\Domain\Subscription\Model\Subscription;
1112
use PhpList\Core\Domain\Subscription\Repository\SubscriberListRepository;
1213
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
1314
use PhpList\Core\Domain\Subscription\Repository\SubscriptionRepository;
15+
use Symfony\Contracts\Translation\TranslatorInterface;
1416

1517
class SubscriptionManager
1618
{
1719
private SubscriptionRepository $subscriptionRepository;
1820
private SubscriberRepository $subscriberRepository;
1921
private SubscriberListRepository $subscriberListRepository;
22+
private TranslatorInterface $translator;
2023

2124
public function __construct(
2225
SubscriptionRepository $subscriptionRepository,
2326
SubscriberRepository $subscriberRepository,
24-
SubscriberListRepository $subscriberListRepository
27+
SubscriberListRepository $subscriberListRepository,
28+
TranslatorInterface $translator
2529
) {
2630
$this->subscriptionRepository = $subscriptionRepository;
2731
$this->subscriberRepository = $subscriberRepository;
2832
$this->subscriberListRepository = $subscriberListRepository;
33+
$this->translator = $translator;
2934
}
3035

3136
public function addSubscriberToAList(Subscriber $subscriber, int $listId): Subscription
@@ -37,7 +42,8 @@ public function addSubscriberToAList(Subscriber $subscriber, int $listId): Subsc
3742
}
3843
$subscriberList = $this->subscriberListRepository->find($listId);
3944
if (!$subscriberList) {
40-
throw new SubscriptionCreationException('Subscriber list not found.', 404);
45+
$message = $this->translator->trans(Messages::SUBSCRIPTION_LIST_NOT_FOUND);
46+
throw new SubscriptionCreationException($message, 404);
4147
}
4248

4349
$subscription = new Subscription();
@@ -64,7 +70,8 @@ private function createSubscription(SubscriberList $subscriberList, string $emai
6470
{
6571
$subscriber = $this->subscriberRepository->findOneBy(['email' => $email]);
6672
if (!$subscriber) {
67-
throw new SubscriptionCreationException('Subscriber does not exists.', 404);
73+
$message = $this->translator->trans(Messages::SUBSCRIPTION_SUBSCRIBER_NOT_FOUND);
74+
throw new SubscriptionCreationException($message, 404);
6875
}
6976

7077
$existingSubscription = $this->subscriptionRepository
@@ -101,7 +108,8 @@ private function deleteSubscription(SubscriberList $subscriberList, string $emai
101108
->findOneBySubscriberEmailAndListId($subscriberList->getId(), $email);
102109

103110
if (!$subscription) {
104-
throw new SubscriptionCreationException('Subscription not found for this subscriber and list.', 404);
111+
$message = $this->translator->trans(Messages::SUBSCRIPTION_NOT_FOUND_FOR_LIST_AND_SUBSCRIBER);
112+
throw new SubscriptionCreationException($message, 404);
105113
}
106114

107115
$this->subscriptionRepository->remove($subscription);

tests/Unit/Domain/Identity/Service/PasswordManagerTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use PHPUnit\Framework\MockObject\MockObject;
1818
use PHPUnit\Framework\TestCase;
1919
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
20+
use Symfony\Contracts\Translation\TranslatorInterface;
2021

2122
class PasswordManagerTest extends TestCase
2223
{
@@ -36,7 +37,8 @@ protected function setUp(): void
3637
passwordRequestRepository: $this->passwordRequestRepository,
3738
administratorRepository: $this->administratorRepository,
3839
hashGenerator: $this->hashGenerator,
39-
messageBus: $this->messageBus
40+
messageBus: $this->messageBus,
41+
translator: $this->createMock(TranslatorInterface::class)
4042
);
4143
}
4244

tests/Unit/Domain/Subscription/Service/Manager/SubscriptionManagerTest.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,26 @@
1414
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriptionManager;
1515
use PHPUnit\Framework\MockObject\MockObject;
1616
use PHPUnit\Framework\TestCase;
17+
use Symfony\Contracts\Translation\TranslatorInterface;
1718

1819
class SubscriptionManagerTest extends TestCase
1920
{
2021
private SubscriptionRepository&MockObject $subscriptionRepository;
2122
private SubscriberRepository&MockObject $subscriberRepository;
23+
private TranslatorInterface&MockObject $translator;
2224
private SubscriptionManager $manager;
2325

2426
protected function setUp(): void
2527
{
2628
$this->subscriptionRepository = $this->createMock(SubscriptionRepository::class);
2729
$this->subscriberRepository = $this->createMock(SubscriberRepository::class);
2830
$subscriberListRepository = $this->createMock(SubscriberListRepository::class);
31+
$this->translator = $this->createMock(TranslatorInterface::class);
2932
$this->manager = new SubscriptionManager(
30-
$this->subscriptionRepository,
31-
$this->subscriberRepository,
32-
$subscriberListRepository
33+
subscriptionRepository: $this->subscriptionRepository,
34+
subscriberRepository: $this->subscriberRepository,
35+
subscriberListRepository: $subscriberListRepository,
36+
translator: $this->translator,
3337
);
3438
}
3539

@@ -51,6 +55,7 @@ public function testCreateSubscriptionWhenSubscriberExists(): void
5155

5256
public function testCreateSubscriptionThrowsWhenSubscriberMissing(): void
5357
{
58+
$this->translator->method('trans')->willReturn('Subscriber does not exists.');
5459
$this->expectException(SubscriptionCreationException::class);
5560
$this->expectExceptionMessage('Subscriber does not exists.');
5661

0 commit comments

Comments
 (0)