code: public function keyTitle($class, $path)
      {
  
          // Allows manual overwrites if titles
          if ($title = $this->getManualKeyTitle($this->getClassName($class),$path)) {
              return $title;
          }
  
          try{
  
              // First check if path is a related key (account.owner.id)
              if ($this->parser->isRelatedKey($path)) {
  
                  list($join, $key) = $this->parser->toJoinAndKey($path);
                  $className = $this->pathIntrospector->classOfPath($class, $join);
  
              } else { // No related key
  
                  $className = $this->getClassName($class);
                  $key = $path;
  
              }
  
              if ($title = $this->getManualKeyTitle($className, $key)) {
                  return $title;
              }
  
              $langKey = $this->key2QualifiedLangKey($className, $key);
              $title = $this->translator->get($langKey);
  
              // If a translation was found return it
              if($title != $langKey){
                  return $title;
              }
  
          }
          catch(UnexpectedValueException $e){
              return $path;
          }
  
          // If no translation was found try to return an object title
          // (e.g. $class=User, $key=address if address is an object
          try{
              return $this->objectTitle($this->pathIntrospector->classOfPath($class, $path));
          }
          catch(UnexpectedValueException $e){
              return $path;
          }
  
          return $title;
      }
docs: {@inheritdoc}
  
  @param string|object $class The class or an object of it
  @param string $key A key name. Can be dotted like address.street.name
  @return string The readable title