summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
}
/**