2017-07-07 2 views
0

Voici mon problème sur Drupal8. J'ai 3 langues dans un site Web. Dans le futur, de nouvelles langues peuvent être installées. Je voulais mettre un sélecteur de langue dans le menu principal. Mon premier essai a été d'ajouter un élément de menu avec l'interface utilisateur. Comme "chinois". Mais il est impossible d'énoncer le préfixe de la langue en faisant comme ça. Cela signifie également qu'il ne sera pas mis à jour automatiquement si une langue est ajoutée ou supprimée de Drupal.Comment faire un sélecteur de langue dans le menu principal pour Drupal8

Deuxième essai:

$item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([ 
    'link' => ['uri' => 'internal:/zh-hans/'], 
    'title' => 'Chinese', 
    'menu_name' => 'main', 
]); 
$item->save(); 

Il ajoute un nouvel élément au menu principal, mais il ne prendra pas le préfixe de la langue. Quoi qu'il en soit, ce n'est pas une solution dynamique, car vous devez reconstruire le menu lorsque la langue sera ajoutée ou supprimée. De plus, l'ordre des langues sera défini une fois pour toutes ... Je préfère avoir la langue actuelle au sommet, cela dépend de la langue dans laquelle vous vous trouvez en ce moment.

Répondre

0

Vous pouvez suivre le code de commutation de langage de base de Drupal:

core/modules/language/src/Plugin/Block/LanguageBlock.php 

d'abord, assurez-vous d'utiliser PathMatcherInterface et LanguageManagerInterface

use Drupal\Core\Path\PathMatcherInterface; 
use Drupal\Core\Language\LanguageManagerInterface; 

Puis voir obtenir la liste des liens linguistiques (lignes 88 et 90):

$route_name = $this->pathMatcher->isFrontPage() ? '<front>' : '<current>'; 

$links = $this->languageManager->getLanguageSwitchLinks($type, Url::fromRoute($route_name)); 
+0

J'ai déjà regardé dans le sélecteur de langue, mais ce n'est pas vraiment ce que je cherche r. Je veux mettre la chose dans le menu principal de Drupal de manière dynamique. Le problème n'est pas vraiment d'obtenir les liens. C'est de trouver un moyen d'inclure ces liens dans le menu principal de manière dynamique. – Arioch