diff --git a/apps/provisioning_api/lib/AppInfo/Application.php b/apps/provisioning_api/lib/AppInfo/Application.php
index b7a93d6fb1384d41b289c85b31b935dff97116e6..7e9e04978febcf873700806b7742e5da1a11051f 100644
--- a/apps/provisioning_api/lib/AppInfo/Application.php
+++ b/apps/provisioning_api/lib/AppInfo/Application.php
@@ -43,7 +43,7 @@ class Application extends App {
 			return new NewUserMailHelper(
 				$server->query(Defaults::class),
 				$server->getURLGenerator(),
-				$server->getL10N('settings'),
+				$server->getL10NFactory(),
 				$server->getMailer(),
 				$server->getSecureRandom(),
 				new TimeFactory(),
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 9aa32e1186aa20e5aeac88ea4c343a6fd1abe561..27d66a83c81db96f622e7f2e937ab6563ad26df7 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -894,16 +894,8 @@ class UsersController extends AUserData {
 		if ($email === '' || $email === null) {
 			throw new OCSException('Email address not available', 101);
 		}
-		$username = $targetUser->getUID();
-		$lang = $this->config->getUserValue($username, 'core', 'lang', 'en');
-		if (!$this->l10nFactory->languageExists('settings', $lang)) {
-			$lang = 'en';
-		}
-
-		$l10n = $this->l10nFactory->get('settings', $lang);
 
 		try {
-			$this->newUserMailHelper->setL10N($l10n);
 			$emailTemplate = $this->newUserMailHelper->generateTemplate($targetUser, false);
 			$this->newUserMailHelper->sendMail($targetUser, $emailTemplate);
 		} catch(\Exception $e) {
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index adbdb9d8685e399ae5eb734408dc9793ec8a7668..57283e11912b896145c8aeeabdd7a1115687c103 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -3257,35 +3257,13 @@ class UsersControllerTest extends TestCase {
 			->expects($this->once())
 			->method('getEmailAddress')
 			->will($this->returnValue('abc@example.org'));
-		$this->config
-			->expects($this->at(0))
-			->method('getUserValue')
-			->with('user-id', 'core', 'lang')
-			->willReturn('es');
-		$l10n = $this->getMockBuilder(IL10N::class)
-			->disableOriginalConstructor()
-			->getMock();
-		$this->l10nFactory
-			->expects($this->at(0))
-			->method('languageExists')
-			->with('settings', 'es')
-			->willReturn(true);
-		$this->l10nFactory
-			->expects($this->at(1))
-			->method('get')
-			->with('settings', 'es')
-			->willReturn($l10n);
 		$emailTemplate = $this->createMock(IEMailTemplate::class);
 		$this->newUserMailHelper
 			->expects($this->at(0))
-			->method('setL10N')
-			->willReturn($l10n);
-		$this->newUserMailHelper
-			->expects($this->at(1))
 			->method('generateTemplate')
 			->willReturn($emailTemplate);
 		$this->newUserMailHelper
-			->expects($this->at(2))
+			->expects($this->at(1))
 			->method('sendMail')
 			->with($targetUser, $emailTemplate);
 
@@ -3327,35 +3305,16 @@ class UsersControllerTest extends TestCase {
 			->expects($this->once())
 			->method('getEmailAddress')
 			->will($this->returnValue('abc@example.org'));
-		$this->config
-			->expects($this->at(0))
-			->method('getUserValue')
-			->with('user-id', 'core', 'lang')
-			->willReturn('es');
 		$l10n = $this->getMockBuilder(IL10N::class)
 			->disableOriginalConstructor()
 			->getMock();
-		$this->l10nFactory
-			->expects($this->at(0))
-			->method('languageExists')
-			->with('settings', 'es')
-			->willReturn(false);
-		$this->l10nFactory
-			->expects($this->at(1))
-			->method('get')
-			->with('settings', 'en')
-			->willReturn($l10n);
 		$emailTemplate = $this->createMock(IEMailTemplate::class);
 		$this->newUserMailHelper
 			->expects($this->at(0))
-			->method('setL10N')
-			->willReturn($l10n);
-		$this->newUserMailHelper
-			->expects($this->at(1))
 			->method('generateTemplate')
 			->willReturn($emailTemplate);
 		$this->newUserMailHelper
-			->expects($this->at(2))
+			->expects($this->at(1))
 			->method('sendMail')
 			->with($targetUser, $emailTemplate);
 
@@ -3402,35 +3361,13 @@ class UsersControllerTest extends TestCase {
 			->expects($this->once())
 			->method('getEmailAddress')
 			->will($this->returnValue('abc@example.org'));
-		$this->config
-			->expects($this->at(0))
-			->method('getUserValue')
-			->with('user-id', 'core', 'lang')
-			->willReturn('es');
-		$l10n = $this->getMockBuilder(IL10N::class)
-			->disableOriginalConstructor()
-			->getMock();
-		$this->l10nFactory
-			->expects($this->at(0))
-			->method('languageExists')
-			->with('settings', 'es')
-			->willReturn(true);
-		$this->l10nFactory
-			->expects($this->at(1))
-			->method('get')
-			->with('settings', 'es')
-			->willReturn($l10n);
 		$emailTemplate = $this->createMock(IEMailTemplate::class);
 		$this->newUserMailHelper
 			->expects($this->at(0))
-			->method('setL10N')
-			->willReturn($l10n);
-		$this->newUserMailHelper
-			->expects($this->at(1))
 			->method('generateTemplate')
 			->willReturn($emailTemplate);
 		$this->newUserMailHelper
-			->expects($this->at(2))
+			->expects($this->at(1))
 			->method('sendMail')
 			->with($targetUser, $emailTemplate)
 			->willThrowException(new \Exception());
diff --git a/settings/Application.php b/settings/Application.php
index 5b2b606353f988fc111044d9babc867bbf34b2d3..4ad59a64d40bddc9a57395ca69ed868512ec91a7 100644
--- a/settings/Application.php
+++ b/settings/Application.php
@@ -100,7 +100,7 @@ class Application extends App {
 			return new NewUserMailHelper(
 				$defaults,
 				$server->getURLGenerator(),
-				$server->getL10N('settings'),
+				$server->getL10NFactory(),
 				$server->getMailer(),
 				$server->getSecureRandom(),
 				new TimeFactory(),
diff --git a/settings/Mailer/NewUserMailHelper.php b/settings/Mailer/NewUserMailHelper.php
index bcd8ae0a538722c2089d33e8454f10a798f33c80..d88f7300f847c0ec411bc646578eb1e6c63d9b86 100644
--- a/settings/Mailer/NewUserMailHelper.php
+++ b/settings/Mailer/NewUserMailHelper.php
@@ -26,6 +26,7 @@
 
 namespace OC\Settings\Mailer;
 
+use OCP\L10N\IFactory;
 use OCP\Mail\IEMailTemplate;
 use OCP\AppFramework\Utility\ITimeFactory;
 use OCP\Defaults;
@@ -42,8 +43,8 @@ class NewUserMailHelper {
 	private $themingDefaults;
 	/** @var IURLGenerator */
 	private $urlGenerator;
-	/** @var IL10N */
-	private $l10n;
+	/** @var IFactory */
+	private $l10nFactory;
 	/** @var IMailer */
 	private $mailer;
 	/** @var ISecureRandom */
@@ -60,7 +61,7 @@ class NewUserMailHelper {
 	/**
 	 * @param Defaults $themingDefaults
 	 * @param IURLGenerator $urlGenerator
-	 * @param IL10N $l10n
+	 * @param IFactory $l10nFactory
 	 * @param IMailer $mailer
 	 * @param ISecureRandom $secureRandom
 	 * @param ITimeFactory $timeFactory
@@ -70,7 +71,7 @@ class NewUserMailHelper {
 	 */
 	public function __construct(Defaults $themingDefaults,
 								IURLGenerator $urlGenerator,
-								IL10N $l10n,
+								IFactory $l10nFactory,
 								IMailer $mailer,
 								ISecureRandom $secureRandom,
 								ITimeFactory $timeFactory,
@@ -79,7 +80,7 @@ class NewUserMailHelper {
 								$fromAddress) {
 		$this->themingDefaults = $themingDefaults;
 		$this->urlGenerator = $urlGenerator;
-		$this->l10n = $l10n;
+		$this->l10nFactory = $l10nFactory;
 		$this->mailer = $mailer;
 		$this->secureRandom = $secureRandom;
 		$this->timeFactory = $timeFactory;
@@ -88,21 +89,20 @@ class NewUserMailHelper {
 		$this->fromAddress = $fromAddress;
 	}
 
-	/**
-	 * Set the IL10N object
-	 *
-	 * @param IL10N $l10n
-	 */
-	public function setL10N(IL10N $l10n) {
-		$this->l10n = $l10n;
-	}
-
 	/**
 	 * @param IUser $user
 	 * @param bool $generatePasswordResetToken
 	 * @return IEMailTemplate
 	 */
 	public function generateTemplate(IUser $user, $generatePasswordResetToken = false) {
+		$userId = $user->getUID();
+		$lang = $this->config->getUserValue($userId, 'core', 'lang', 'en');
+		if (!$this->l10nFactory->languageExists('settings', $lang)) {
+			$lang = 'en';
+		}
+
+		$l10n = $this->l10nFactory->get('settings', $lang);
+
 		if ($generatePasswordResetToken) {
 			$token = $this->secureRandom->generate(
 				21,
@@ -119,7 +119,6 @@ class NewUserMailHelper {
 			$link = $this->urlGenerator->getAbsoluteURL('/');
 		}
 		$displayName = $user->getDisplayName();
-		$userId = $user->getUID();
 
 		$emailTemplate = $this->mailer->createEMailTemplate('settings.Welcome', [
 			'link' => $link,
@@ -129,24 +128,24 @@ class NewUserMailHelper {
 			'resetTokenGenerated' => $generatePasswordResetToken,
 		]);
 
-		$emailTemplate->setSubject($this->l10n->t('Your %s account was created', [$this->themingDefaults->getName()]));
+		$emailTemplate->setSubject($l10n->t('Your %s account was created', [$this->themingDefaults->getName()]));
 		$emailTemplate->addHeader();
 		if ($displayName === $userId) {
-			$emailTemplate->addHeading($this->l10n->t('Welcome aboard'));
+			$emailTemplate->addHeading($l10n->t('Welcome aboard'));
 		} else {
-			$emailTemplate->addHeading($this->l10n->t('Welcome aboard %s', [$displayName]));
+			$emailTemplate->addHeading($l10n->t('Welcome aboard %s', [$displayName]));
 		}
-		$emailTemplate->addBodyText($this->l10n->t('Welcome to your %s account, you can add, protect, and share your data.', [$this->themingDefaults->getName()]));
-		$emailTemplate->addBodyText($this->l10n->t('Your username is: %s', [$userId]));
+		$emailTemplate->addBodyText($l10n->t('Welcome to your %s account, you can add, protect, and share your data.', [$this->themingDefaults->getName()]));
+		$emailTemplate->addBodyText($l10n->t('Your username is: %s', [$userId]));
 		if ($generatePasswordResetToken) {
-			$leftButtonText = $this->l10n->t('Set your password');
+			$leftButtonText = $l10n->t('Set your password');
 		} else {
-			$leftButtonText = $this->l10n->t('Go to %s', [$this->themingDefaults->getName()]);
+			$leftButtonText = $l10n->t('Go to %s', [$this->themingDefaults->getName()]);
 		}
 		$emailTemplate->addBodyButtonGroup(
 			$leftButtonText,
 			$link,
-			$this->l10n->t('Install Client'),
+			$l10n->t('Install Client'),
 			'https://nextcloud.com/install/#install-clients'
 		);
 		$emailTemplate->addFooter();
diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php
index d59b371acfd2352a1368244fad803ceb04a83cf0..5eccc5bc9f4aa1b6d5e4a3440e05b8cf62865525 100644
--- a/tests/Settings/Mailer/NewUserMailHelperTest.php
+++ b/tests/Settings/Mailer/NewUserMailHelperTest.php
@@ -22,6 +22,7 @@
 namespace Tests\Settings\Mailer;
 
 use OC\Mail\EMailTemplate;
+use OCP\L10N\IFactory;
 use OCP\Mail\IEMailTemplate;
 use OC\Mail\Message;
 use OC\Settings\Mailer\NewUserMailHelper;
@@ -64,6 +65,7 @@ class NewUserMailHelperTest extends TestCase {
 			->willReturn('myLogo');
 		$this->urlGenerator = $this->createMock(IURLGenerator::class);
 		$this->l10n = $this->createMock(IL10N::class);
+		$this->l10nFactory = $this->createMock(IFactory::class);
 		$this->mailer = $this->createMock(IMailer::class);
 		$template = new EMailTemplate(
 			$this->defaults,
@@ -82,11 +84,15 @@ class NewUserMailHelperTest extends TestCase {
 			->will($this->returnCallback(function ($text, $parameters = []) {
 				return vsprintf($text, $parameters);
 			}));
+		$this->l10nFactory->method('get')
+			->will($this->returnCallback(function ($text, $lang) {
+				return $this->l10n;
+			}));
 
 		$this->newUserMailHelper = new NewUserMailHelper(
 			$this->defaults,
 			$this->urlGenerator,
-			$this->l10n,
+			$this->l10nFactory,
 			$this->mailer,
 			$this->secureRandom,
 			$this->timeFactory,
@@ -113,15 +119,11 @@ class NewUserMailHelperTest extends TestCase {
 		/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
 		$user = $this->createMock(IUser::class);
 		$user
-			->expects($this->at(0))
-			->method('getEmailAddress')
-			->willReturn('recipient@example.com');
-		$user
-			->expects($this->at(1))
+			->expects($this->any())
 			->method('getEmailAddress')
 			->willReturn('recipient@example.com');
 		$this->config
-			->expects($this->at(0))
+			->expects($this->any())
 			->method('getSystemValue')
 			->with('secret')
 			->willReturn('MyInstanceWideSecret');
@@ -131,24 +133,20 @@ class NewUserMailHelperTest extends TestCase {
 			->with('12345:MySuperLongSecureRandomToken', 'recipient@example.comMyInstanceWideSecret')
 			->willReturn('TokenCiphertext');
 		$user
-			->expects($this->at(2))
+			->expects($this->any())
 			->method('getUID')
 			->willReturn('john');
 		$this->config
-			->expects($this->at(1))
+			->expects($this->once())
 			->method('setUserValue')
 			->with('john', 'core', 'lostpassword', 'TokenCiphertext');
-		$user
-			->expects($this->at(3))
-			->method('getUID')
-			->willReturn('john');
 		$this->urlGenerator
 			->expects($this->at(0))
 			->method('linkToRouteAbsolute')
 			->with('core.lost.resetform', ['userId' => 'john', 'token' => 'MySuperLongSecureRandomToken'])
 			->willReturn('https://example.com/resetPassword/MySuperLongSecureRandomToken');
 		$user
-			->expects($this->at(4))
+			->expects($this->any())
 			->method('getDisplayName')
 			->willReturn('john');
 		$user
@@ -385,11 +383,11 @@ EOF;
 		/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
 		$user = $this->createMock(IUser::class);
 		$user
-			->expects($this->at(0))
+			->expects($this->any())
 			->method('getDisplayName')
 			->willReturn('John Doe');
 		$user
-			->expects($this->at(1))
+			->expects($this->any())
 			->method('getUID')
 			->willReturn('john');
 		$this->defaults