diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2020-11-02 12:24:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-02 12:24:38 +0100 |
commit | ff08b10a897f059adbd30b61e6f4ba1e9af7b719 (patch) | |
tree | 34a8ad1b82faa34c2cf4acf367f228f43f9ab58d /lib | |
parent | 1080515ce3317a5d9cf9432abf0f3968696d5e5c (diff) | |
parent | 6e377a9daf57b650d32ea34681d23bb5d67db01d (diff) | |
download | nextcloud-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.php | 19 |
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); } /** |