2017-07-07 52 views
0

這是我在Drupal8上的問題。我在網站上有3種語言。將來可以安裝新的語言。 我想在主菜單中放置一個語言切換器。如何在主菜單中爲Drupal8製作語言切換器

我的第一個嘗試是添加一個菜單項與用戶界面。像「中國人」一樣。但是不可能說明這樣的語言前綴。此外,這意味着如果從Drupal添加或刪除語言,它將不會自動更新。

第二個嘗試:

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

它增加了一個新的項目到主菜單,但它不會採取語言前綴。無論如何,這不是一個動態的解決方案,因爲當添加或刪除語言時,必須重建菜單。此外,語言的順序將一勞永逸地設置...我傾向於在當前語言中使用當前語言,這取決於您現在使用哪種語言。

回答

0

您可以按照Drupal的核心語言切換器代碼:

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

首先確保使用PathMatcherInterface和LanguageManagerInterface

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

然後看到獲得語言鏈接(線88和90)的名單:

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

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

我已經看過語言切換器,但那不是我真正想要的東西河我想以動態的方式將它放到Drupal的主菜單中。問題不在於獲取鏈接。這是爲了找到一種將這些鏈接以動態的方式加入主菜單的方法。 – Arioch