diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index cc2de17450990de47adf567acace90fa0f29d7c7..1a7fff432291621e8a66b83444825f5a5616e281 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -244,6 +244,26 @@ class Factory implements IFactory {
 		return 'en_US';
 	}
 
+	/**
+	 * find the matching lang from the locale
+	 *
+	 * @param string $app
+	 * @param string $locale
+	 * @return null|string
+	 */
+	public function findLanguageFromLocale($app = 'core', $locale = null) {
+		if ($this->languageExists($app, $locale)) {
+			return $locale;
+		}
+		
+		// Try to split e.g: fr_FR => fr
+		$locale = explode('_', $locale)[0];
+		if ($this->languageExists($app, $locale)) {
+			return $locale;
+		}
+
+	}
+
 	/**
 	 * Find all available languages for an app
 	 *
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index 0bd57c4139b42d4ef4a95330c4eb5a44970be5bc..a710ee856e38e63be1d43b4add519caebd71972b 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -139,9 +139,12 @@ class TemplateLayout extends \OC_Template {
 		}
 		// Send the language and the locale to our layouts
 		$lang = \OC::$server->getL10NFactory()->findLanguage();
+		$locale = \OC::$server->getL10NFactory()->findLocale($lang);
+		$localeLang = \OC::$server->getL10NFactory()->findLanguageFromLocale('lib', $locale);
+
 		$lang = str_replace('_', '-', $lang);
 		$this->assign('language', $lang);
-		$this->assign('locale', \OC::$server->getL10NFactory()->findLocale($lang));
+		$this->assign('locale', $locale);
 
 		if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
 			if (empty(self::$versionHash)) {
@@ -159,7 +162,7 @@ class TemplateLayout extends \OC_Template {
 		if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') {
 			if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) {
 				$jsConfigHelper = new JSConfigHelper(
-					\OC::$server->getL10N('lib'),
+					\OC::$server->getL10N('lib', $localeLang),
 					\OC::$server->query(Defaults::class),
 					\OC::$server->getAppManager(),
 					\OC::$server->getSession(),
diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 1bc231e4e2e65d7daa862bce25b659f83a60628e..31276b128972ce0e99974ea9635b3686869b7d82 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -53,6 +53,14 @@ interface IFactory {
 	 */
 	public function findLocale($lang = null);
 
+	/**
+	 * find the matching lang from the locale
+	 *
+	 * @param string $locale
+	 * @return null|string
+	 */
+	public function findLanguageFromLocale($locale = null);
+
 	/**
 	 * Find all available languages for an app
 	 *