summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/L10N/Factory.php20
-rw-r--r--lib/private/TemplateLayout.php7
-rw-r--r--lib/public/L10N/IFactory.php8
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
@@ -245,6 +245,26 @@ class Factory implements IFactory {
}
/**
+ * 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
*
* @param string|null $app App id or null for core
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
@@ -54,6 +54,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
*
* @param string|null $app App id or null for core