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')); } }