From 893d299e29934f5cdb2c8913109aa0a5a48527b5 Mon Sep 17 00:00:00 2001 From: Diogo Peralta Cordeiro Date: Wed, 9 Mar 2022 01:30:13 +0000 Subject: [PATCH] [UTIL][Common] Respect detect language setting Minor bug fix --- src/Entity/Actor.php | 2 +- src/Util/Common.php | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Entity/Actor.php b/src/Entity/Actor.php index 08e654aba2..67a508f729 100644 --- a/src/Entity/Actor.php +++ b/src/Entity/Actor.php @@ -547,7 +547,7 @@ class Actor extends Entity if (\defined($const)) { return $this->type === \constant($const); } else { - throw new BugFoundException("Actor cannot be a '{$type}', check your spelling"); + throw new BugFoundException("Actor cannot be a '{$type}', check your spelling."); } } else { return parent::__call($name, $arguments); diff --git a/src/Util/Common.php b/src/Util/Common.php index 1ce6d97ef2..341b2b7e42 100644 --- a/src/Util/Common.php +++ b/src/Util/Common.php @@ -328,6 +328,18 @@ abstract class Common public static function currentLanguage(): Language { - return self::actor()?->getTopLanguage() ?? Language::getByLocale(self::$request->headers->has('accept-language') ? I18n::clientPreferredLanguage(self::$request->headers->get('accept-language')) : self::config('site', 'language')); + // Prefer the Actor's language, if set. + $language = self::actor()?->getTopLanguage(); + if (!\is_null($language)) { + return $language; + } + if ( + self::config('site', 'detect_language') + && !\is_null(self::$request?->headers) + && self::$request->headers->has('accept-language') + ) { + return Language::getByLocale(I18n::clientPreferredLanguage(self::$request->headers->get('accept-language'))); + } + return Language::getByLocale(self::config('site', 'language')); } }