diff --git a/apps/encryption/templates/settings-admin.php b/apps/encryption/templates/settings-admin.php
index 405dbaf703f385ea7571ae25005142a4b7139b0d..efe9c44ece768b87e90fdb89edd3b7603c7390a3 100644
--- a/apps/encryption/templates/settings-admin.php
+++ b/apps/encryption/templates/settings-admin.php
@@ -1,6 +1,6 @@
 <?php
 /** @var array $_ */
-/** @var OC_L10N $l */
+/** @var \OCP\IL10N $l */
 script('encryption', 'settings-admin');
 script('core', 'multiselect');
 style('encryption', 'settings-admin');
diff --git a/apps/encryption/templates/settings-personal.php b/apps/encryption/templates/settings-personal.php
index b92a9a197230481ac05ee9bf01918241976ab5b9..2ea55e15c8094f807edee2731a4ecc2c488c956f 100644
--- a/apps/encryption/templates/settings-personal.php
+++ b/apps/encryption/templates/settings-personal.php
@@ -1,6 +1,6 @@
 <?php
 	/** @var array $_ */
-	/** @var OC_L10N $l */
+	/** @var \OCP\IL10N $l */
 script('encryption', 'settings-personal');
 script('core', 'multiselect');
 ?>
diff --git a/apps/federatedfilesharing/templates/settings-admin.php b/apps/federatedfilesharing/templates/settings-admin.php
index c454eeba17bf2f0842493564632c4c4f608ebc1d..3ffd4bd5b2750da9c77795e6f849e068627a60ad 100644
--- a/apps/federatedfilesharing/templates/settings-admin.php
+++ b/apps/federatedfilesharing/templates/settings-admin.php
@@ -1,5 +1,5 @@
 <?php
-/** @var OC_L10N $l */
+/** @var \OCP\IL10N $l */
 /** @var array $_ */
 script('federatedfilesharing', 'settings-admin');
 ?>
diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php
index 6b43f70495f8f2770410e48bff1cc840de2a8770..98a1cd7f751f9603b3ce6c436224ba5a6c679b44 100644
--- a/apps/federatedfilesharing/templates/settings-personal.php
+++ b/apps/federatedfilesharing/templates/settings-personal.php
@@ -1,5 +1,5 @@
 <?php
-/** @var OC_L10N $l */
+/** @var \OCP\IL10N $l */
 /** @var array $_ */
 script('federatedfilesharing', 'settings-personal');
 style('federatedfilesharing', 'settings-personal');
diff --git a/apps/federation/templates/settings-admin.php b/apps/federation/templates/settings-admin.php
index 70d051ad7d6457b3b35118ee6f50edfaecd22d5b..8773851c7687a5b03e7e8fa476d1e678f37bbb17 100644
--- a/apps/federation/templates/settings-admin.php
+++ b/apps/federation/templates/settings-admin.php
@@ -2,7 +2,7 @@
 /** @var array $_ */
 use OCA\Federation\TrustedServers;
 
-/** @var OC_L10N $l */
+/** @var \OCP\IL10N $l */
 script('federation', 'settings-admin');
 style('federation', 'settings-admin')
 ?>
diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php
index 26bc020c8711762c93a15a97701fa980846f9de8..b6b209dea70d11fccbcc300b7de8b4d94e4c6931 100644
--- a/apps/files/lib/Helper.php
+++ b/apps/files/lib/Helper.php
@@ -45,7 +45,7 @@ class Helper {
 	public static function buildFileStorageStatistics($dir) {
 		// information about storage capacities
 		$storageInfo = \OC_Helper::getStorageInfo($dir);
-		$l = new \OC_L10N('files');
+		$l = \OC::$server->getL10N('files');
 		$maxUploadFileSize = \OCP\Util::maxUploadFilesize($dir, $storageInfo['free']);
 		$maxHumanFileSize = \OCP\Util::humanFileSize($maxUploadFileSize);
 		$maxHumanFileSize = $l->t('Upload (max. %s)', array($maxHumanFileSize));
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php
index 92345d3063e1d3d95336077f3cd99be3e8eba96a..17958d330b776f0a4fd418e28a3d9fd9852bf2fb 100644
--- a/apps/files/templates/index.php
+++ b/apps/files/templates/index.php
@@ -1,4 +1,4 @@
-<?php /** @var $l OC_L10N */ ?>
+<?php /** @var $l \OCP\IL10N */ ?>
 <?php $_['appNavigation']->printPage(); ?>
 <div id="app-content">
 	<?php foreach ($_['appContents'] as $content) { ?>
diff --git a/apps/files/templates/recentlist.php b/apps/files/templates/recentlist.php
index 1667eb4cc8d9a81552daaeafc289b61fd104bf14..6c271a07f5fabdc48d689ae9689d63c2a077ac61 100644
--- a/apps/files/templates/recentlist.php
+++ b/apps/files/templates/recentlist.php
@@ -1,4 +1,4 @@
-<?php /** @var $l OC_L10N */ ?>
+<?php /** @var $l \OCP\IL10N */ ?>
 <div id='notification'></div>
 
 <div id="emptycontent" class="hidden"></div>
diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php
index 909e839177cbad02cd242eb63c7341c936a1ebd8..fbc1d72a3331cc5592b42254d9b94276dc6ee5a8 100644
--- a/apps/files_sharing/templates/authenticate.php
+++ b/apps/files_sharing/templates/authenticate.php
@@ -1,6 +1,6 @@
 <?php
 	/** @var $_ array */
-	/** @var $l OC_L10N */
+	/** @var $l \OCP\IL10N */
 	style('files_sharing', 'authenticate');
 	script('files_sharing', 'authenticate'); 
 ?>
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index 785b2bc72a4cc48d70edb71187a4300b45313c95..ec13b5c1f77799e00bcb93938b84589880d4799c 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -1,4 +1,4 @@
-<?php /** @var $l OC_L10N */ ?>
+<?php /** @var $l \OCP\IL10N */ ?>
 <div id='notification'></div>
 
 <div id="emptycontent" class="hidden"></div>
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index 80c7d4d7460e82b80fb73fbe59f16836e2d65238..e1a816e7feeb9a162965a06afd2e9483a3866c52 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -1,5 +1,5 @@
 <?php
-/** @var $l OC_L10N */
+/** @var $l \OCP\IL10N */
 /** @var $_ array */
 ?>
 
diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php
index 9ea8a9d14c4d4b2b1e3c8f70ca7adff491893ed7..c3f0304d40883a4e4203f0107377682ed9308bc5 100644
--- a/apps/files_trashbin/templates/index.php
+++ b/apps/files_trashbin/templates/index.php
@@ -1,4 +1,4 @@
-<?php /** @var $l OC_L10N */ ?>
+<?php /** @var $l \OCP\IL10N */ ?>
 <div id="controls">
 	<div id="file_action_panel"></div>
 </div>
diff --git a/core/templates/404.php b/core/templates/404.php
index a0d2f0160b7e99e89c479fb0419739adca9ff7e7..79a67b3ce2c57433a678fd1381305f423121cddd 100644
--- a/core/templates/404.php
+++ b/core/templates/404.php
@@ -1,6 +1,6 @@
 <?php
 /** @var $_ array */
-/** @var $l OC_L10N */
+/** @var $l \OCP\IL10N */
 /** @var $theme OC_Theme */
 // @codeCoverageIgnoreStart
 if(!isset($_)) {//also provide standalone error page
diff --git a/core/templates/exception.php b/core/templates/exception.php
index 899ea29456c4e0a0bdaf3090ec3773d40818b887..e90a326815595af9eb82b1ac62f197446c1d92f8 100644
--- a/core/templates/exception.php
+++ b/core/templates/exception.php
@@ -1,6 +1,6 @@
 <?php
 	/** @var array $_ */
-	/** @var OC_L10N $l */
+	/** @var \OCP\IL10N $l */
 
 style('core', ['styles', 'header']);
 ?>
diff --git a/core/templates/login.php b/core/templates/login.php
index 36ed59e9309329eaba20ee9b7ff98d00834e6e95..46045f86b506979a5bd7b9deac868996844a0066 100644
--- a/core/templates/login.php
+++ b/core/templates/login.php
@@ -1,4 +1,4 @@
-<?php /** @var $l OC_L10N */ ?>
+<?php /** @var $l \OCP\IL10N */ ?>
 <?php
 vendor_script('jsTimezoneDetect/jstz');
 script('core', [
diff --git a/core/templates/twofactorshowchallenge.php b/core/templates/twofactorshowchallenge.php
index 197de8a288e9efbfe6e8eb1cbc804e10e4ddb23d..20b92be952020057f1383f2b3d9c3d396ac25def 100644
--- a/core/templates/twofactorshowchallenge.php
+++ b/core/templates/twofactorshowchallenge.php
@@ -1,5 +1,5 @@
 <?php
-/** @var $l OC_L10N */
+/** @var $l \OCP\IL10N */
 /** @var $_ array */
 /* @var $error boolean */
 $error = $_['error'];
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 671093ff08bdbcee5c605c613ce36cf389dcb216..a1e845f132ecbd2b86e41397ae294e3e5e5d1b1e 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -533,6 +533,9 @@ class DIContainer extends SimpleContainer implements IAppContainer {
 		$this->query('OC\CapabilitiesManager')->registerCapability(function() use ($serviceName) {
 			return $this->query($serviceName);
 		});
+	}
 
+	public function query($name) {
+		return parent::query($name);
 	}
 }
diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php
index 47c3e5ee1c68ae094fd055e3333201996450de6f..2b9d7afb367bf7db8a395c010636f489a3e0a866 100644
--- a/lib/private/Setup/AbstractDatabase.php
+++ b/lib/private/Setup/AbstractDatabase.php
@@ -29,12 +29,13 @@ namespace OC\Setup;
 use OC\AllConfig;
 use OC\DB\ConnectionFactory;
 use OCP\IConfig;
+use OCP\IL10N;
 use OCP\ILogger;
 use OCP\Security\ISecureRandom;
 
 abstract class AbstractDatabase {
 
-	/** @var \OC_L10N */
+	/** @var IL10N */
 	protected $trans;
 	/** @var string */
 	protected $dbDefinitionFile;
@@ -57,7 +58,7 @@ abstract class AbstractDatabase {
 	/** @var ISecureRandom */
 	protected $random;
 
-	public function __construct($trans, $dbDefinitionFile, IConfig $config, ILogger $logger, ISecureRandom $random) {
+	public function __construct(IL10N $trans, $dbDefinitionFile, IConfig $config, ILogger $logger, ISecureRandom $random) {
 		$this->trans = $trans;
 		$this->dbDefinitionFile = $dbDefinitionFile;
 		$this->config = $config;
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index 9f89174e7f96e62cf2760c10e05fd81bf93269b3..7878737bdef5a74854b97a760cff092778eb4787 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -127,7 +127,7 @@ class TemplateLayout extends \OC_Template {
 
 		}
 		// Send the language to our layouts
-		$this->assign('language', \OC_L10N::findLanguage());
+		$this->assign('language', \OC::$server->getL10NFactory()->findLanguage());
 
 		if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
 			if (empty(self::$versionHash)) {
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 42fd0ba7db3ab62555374a4054ed01a954a6bd2d..e4c2caeafd7a55828e8e0eaae9c6af16e265f3d0 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -526,7 +526,7 @@ class OC_Util {
 	 */
 	public static function addTranslations($application, $languageCode = null, $prepend = false) {
 		if (is_null($languageCode)) {
-			$languageCode = \OC_L10N::findLanguage($application);
+			$languageCode = \OC::$server->getL10NFactory()->findLanguage($application);
 		}
 		if (!empty($application)) {
 			$path = "$application/l10n/$languageCode";
diff --git a/lib/public/Util.php b/lib/public/Util.php
index d5b0752553d3470302d8f0f14560059b73e7916c..08661fd88ca45b8075f0627a42fd9b25afe67380 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -195,7 +195,7 @@ class Util {
 	 * get l10n object
 	 * @param string $application
 	 * @param string|null $language
-	 * @return \OC_L10N
+	 * @return \OCP\IL10N
 	 * @since 6.0.0 - parameter $language was added in 8.0.0
 	 */
 	public static function getL10N($application, $language = null) {
diff --git a/settings/personal.php b/settings/personal.php
index a0d08aa0bd57a62b40538357c1b71b8a97d147ae..01c358de3aefa4cd7a77ea22e3d934506f9d48fc 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -68,7 +68,7 @@ $storageInfo=OC_Helper::getStorageInfo('/');
 $user = OC::$server->getUserManager()->get(OC_User::getUser());
 $email = $user->getEMailAddress();
 
-$userLang=$config->getUserValue( OC_User::getUser(), 'core', 'lang', OC_L10N::findLanguage() );
+$userLang=$config->getUserValue( OC_User::getUser(), 'core', 'lang', \OC::$server->getL10NFactory()->findLanguage() );
 $languageCodes = \OC::$server->getL10NFactory()->findAvailableLanguages();
 
 // array of common languages