How to modify the link titles shown in /node/add page? I can modify the menu item title implementing the hook_menu_links_discovered_alter() hook, as illustrated in this screenprint:



I changed the menu item title to "Article (Only One Article can be created and edited)".

But the problem is that the same item is shown also in the /node/add page but the title of that link is not changed because it is shown by a controller. As illustrated in the above image also, the menu links are changed but the link in the /node/add page remains without changes, which is still just "Article".

How I can change that value also, i.e from "Article" to "Article (Only One Article can be created and edited)", so that it matches with the menu item title?
You should copy template_preprocess_node_add_list() into your module or theme and customize.  I would advise against trying to change the value in the node type because it's the name of the bundle type across the site.  It will show many places you don't want to update.

For example, to update the article link:

function mytheme_preprocess_node_add_list(&amp;$variables) {
  foreach ($variables['content'] as $type) {
    if ($type-&gt;id() == 'article') {
      $variables['types'][$type-&gt;id()] = array(
        'label' =&gt; $type-&gt;label() . ' (Only one article can be created and edited)',
        'type' =&gt; $type-&gt;id(),
        'add_link' =&gt; \Drupal::l($type-&gt;label() . ' (Only one article can be created and edited)', new Url('node.add', array('node_type' =&gt; $type-&gt;id()))),
        'description' =&gt; array(
          '#markup' =&gt; $type-&gt;getDescription(),
        ),
      );
    }
  }
}


Another alternative to the preprocess function is just to copy /core/modules/node/templates/node-add-list.html.twig into your theme and add your custom rules there.

UPDATE:

Due to the question's particular requirements, I'm adding another solution that works without altering the seven theme (that conflicts with my solution above).  In the solution below, we alter the output of $node_type->label() conditionally:

function mymodule_entity_type_alter(array &amp;$entity_types) {
  $entity_types['node_type']-&gt;set('label_callback', 'mymodule_node_type_label');
}

function mymodule_node_type_label(NodeType $type) {

  if (\Drupal::routeMatch()-&gt;getRouteName() == 'node.add_page' &amp;&amp; $type-&gt;id() == 'article') {
    return $type-&gt;get("name") . ' (You can only add one of these)';
  }
  return $type-&gt;get("name");
}


UPDATE:

Here's another solution that works with the seven theme.  You can alter the particular node types you like in the preprocess function in your custom module.  This will only alter their labels within this context. 

function mymodule_preprocess_node_add_list(&amp;$variables) {
  $article_type = $variables['content']['article'];
  $variables['content']['article']-&gt;set('name', $article_type-&gt;get('name') . ' (Only one article can be created and edited)');
}