summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2020-11-02 12:24:38 +0100
committerGitHub <noreply@github.com>2020-11-02 12:24:38 +0100
commitff08b10a897f059adbd30b61e6f4ba1e9af7b719 (patch)
tree34a8ad1b82faa34c2cf4acf367f228f43f9ab58d /lib
parent1080515ce3317a5d9cf9432abf0f3968696d5e5c (diff)
parent6e377a9daf57b650d32ea34681d23bb5d67db01d (diff)
downloadnextcloud-server-ff08b10a897f059adbd30b61e6f4ba1e9af7b719.tar.gz
nextcloud-server-ff08b10a897f059adbd30b61e6f4ba1e9af7b719.zip
Merge pull request #23822 from nextcloud/enh/parse_localse_only_once
Only parse the locales ones
Diffstat (limited to 'lib')
-rw-r--r--lib/private/L10N/Factory.php19
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index 11f572fc3b0..b807f5cb63f 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -37,6 +37,7 @@
namespace OC\L10N;
+use Ds\Set;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IUser;
@@ -64,6 +65,11 @@ class Factory implements IFactory {
protected $availableLanguages = [];
/**
+ * @var Set
+ */
+ protected $localeCache;
+
+ /**
* @var array
*/
protected $availableLocales = [];
@@ -104,6 +110,7 @@ class Factory implements IFactory {
$this->request = $request;
$this->userSession = $userSession;
$this->serverRoot = $serverRoot;
+ $this->localeCache = new Set();
}
/**
@@ -391,12 +398,14 @@ class Factory implements IFactory {
return true;
}
- $locales = $this->findAvailableLocales();
- $userLocale = array_filter($locales, function ($value) use ($locale) {
- return $locale === $value['code'];
- });
+ if ($this->localeCache->isEmpty()) {
+ $locales = $this->findAvailableLocales();
+ foreach ($locales as $l) {
+ $this->localeCache->add($l['code']);
+ }
+ }
- return !empty($userLocale);
+ return $this->localeCache->contains($locale);
}
/**