diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index 9d9e6ac9b2..3ab62de4b9 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -358,6 +358,29 @@ class Factory implements IFactory { return new LanguageIterator($user, $this->config); } + /** + * Return the language to use when sending something to a user + * + * @param IUser|null $user + * @return string + * @since 20.0.0 + */ + public function getUserLanguage(IUser $user = null): string { + $language = $this->config->getSystemValue('force_language', false); + if ($language !== false) { + return $language; + } + + if ($user instanceof IUser) { + $language = $this->config->getUserValue($user->getUID(), 'core', 'lang', null); + if ($language !== null) { + return $language; + } + } + + return $this->config->getSystemValue('default_language', 'en'); + } + /** * @param string $locale * @return bool diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php index b9e6e603aa..2c6db1864d 100644 --- a/lib/public/L10N/IFactory.php +++ b/lib/public/L10N/IFactory.php @@ -126,4 +126,13 @@ interface IFactory { * @since 14.0.0 */ public function getLanguageIterator(IUser $user = null): ILanguageIterator; + + /** + * Return the language to use when sending something to a user + * + * @param IUser|null $user + * @return string + * @since 20.0.0 + */ + public function getUserLanguage(IUser $user = null): string; }