From df143cb72a9681d977a7fa85553a95ce1ee2314f Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Mon, 10 Sep 2018 10:19:49 +0200
Subject: Use user locale as default in the template
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/private/L10N/Factory.php   | 20 ++++++++++++++++++++
 lib/private/TemplateLayout.php |  7 +++++--
 lib/public/L10N/IFactory.php   |  8 ++++++++
 3 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index cc2de174509..1a7fff43229 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 0bd57c4139b..a710ee856e3 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 1bc231e4e2e..31276b12897 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
 	 *
-- 
cgit v1.2.3


From 081dcc55ca4d87466f03dd180a86911c00df966d Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Mon, 10 Sep 2018 10:45:18 +0200
Subject: Fix public l10n
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/public/L10N/IFactory.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 31276b12897..4f42e498ed1 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -56,10 +56,11 @@ interface IFactory {
 	/**
 	 * find the matching lang from the locale
 	 *
+	 * @param string $app
 	 * @param string $locale
 	 * @return null|string
 	 */
-	public function findLanguageFromLocale($locale = null);
+	public function findLanguageFromLocale($app = 'core', $locale = null);
 
 	/**
 	 * Find all available languages for an app
-- 
cgit v1.2.3


From 01f2fef1f56020ff561eb938b1f511cb94590f08 Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Mon, 10 Sep 2018 10:48:53 +0200
Subject: Since requirement
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/public/L10N/IFactory.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 4f42e498ed1..49dab869476 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -59,6 +59,7 @@ interface IFactory {
 	 * @param string $app
 	 * @param string $locale
 	 * @return null|string
+	 * @since 15.0.0
 	 */
 	public function findLanguageFromLocale($app = 'core', $locale = null);
 
-- 
cgit v1.2.3


From 7d158c62ce13bfe126aa96bf157fc890c2813fac Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Mon, 10 Sep 2018 11:17:03 +0200
Subject: Typehint
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/private/L10N/Factory.php | 3 +--
 lib/public/L10N/IFactory.php | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index 1a7fff43229..1c56949c40d 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -251,7 +251,7 @@ class Factory implements IFactory {
 	 * @param string $locale
 	 * @return null|string
 	 */
-	public function findLanguageFromLocale($app = 'core', $locale = null) {
+	public function findLanguageFromLocale(string $app = 'core', string $locale = null) {
 		if ($this->languageExists($app, $locale)) {
 			return $locale;
 		}
@@ -261,7 +261,6 @@ class Factory implements IFactory {
 		if ($this->languageExists($app, $locale)) {
 			return $locale;
 		}
-
 	}
 
 	/**
diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 49dab869476..810e916ef6b 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -61,7 +61,7 @@ interface IFactory {
 	 * @return null|string
 	 * @since 15.0.0
 	 */
-	public function findLanguageFromLocale($app = 'core', $locale = null);
+	public function findLanguageFromLocale(string $app = 'core', string $locale = null);
 
 	/**
 	 * Find all available languages for an app
-- 
cgit v1.2.3


From 92fbb6d79560fa41235981252bae4b3af89531f8 Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Thu, 13 Sep 2018 11:30:57 +0200
Subject: Fallback to $lang if no $locale match
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/private/TemplateLayout.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index a710ee856e3..316e122e2c9 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -162,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', $localeLang),
+					\OC::$server->getL10N('lib', $localeLang ?: $lang),
 					\OC::$server->query(Defaults::class),
 					\OC::$server->getAppManager(),
 					\OC::$server->getSession(),
-- 
cgit v1.2.3


From 1e9ab0a3672dbc1255b2531f5656377cf5b23976 Mon Sep 17 00:00:00 2001
From: "John Molakvoæ (skjnldsv)" <skjnldsv@protonmail.com>
Date: Wed, 19 Sep 2018 16:02:09 +0200
Subject: Fix since tag
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
---
 lib/public/L10N/IFactory.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 810e916ef6b..a11977f8c03 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -59,7 +59,7 @@ interface IFactory {
 	 * @param string $app
 	 * @param string $locale
 	 * @return null|string
-	 * @since 15.0.0
+	 * @since 14.0.1
 	 */
 	public function findLanguageFromLocale(string $app = 'core', string $locale = null);
 
-- 
cgit v1.2.3