Tor, Попробуй заменить последний elseif на else
private function lng_detect()
{
$setlng = isset($_POST['setlng']) ? substr(trim($_POST['setlng']), 0, 2) : '';
if (!empty($setlng) && array_key_exists($setlng, self::$lng_list)) $_SESSION['lng'] = $setlng;
if (isset($_SESSION['lng']) && array_key_exists($_SESSION['lng'], self::$lng_list)) self::$lng_iso = $_SESSION['lng'];
elseif (self::$user_id && isset(self::$user_set['lng']) && array_key_exists(self::$user_set['lng'], self::$lng_list)) self::$lng_iso = self::$user_set['lng']; else self::$lng_iso = 'en';
}