Blog

Alle actieve talen ophalen in Drupal 8

Deel deze pagina

Met Dependency Injection

De mooie manier van werken is via Dependency Injection voor Drupal 8. Deze manier is de meest uitgebreide, maar zorgt wel voor testbaarheid en beste overdraagbaarheid van je code.

class moduleController extends ControllerBase {
protected $languageManager;

public function __construct(LanguageManagerInterface $languageManager) {
$this->languageManager = $languageManager;
}

public static function create(ContainerInterface $container) {
return new static(
$container->get(‘language_manager’)
);
}

public function my_function() {
$languagelist = $this->languageManager->getLanguages();
}
}

De quick-and-dirty manier

Wil je geen Dependency Injection gebruiken, dan kan je heel eenvoudig de language-list opvragen door onderstaand regeltje code.
We roepen uit de “language_manager”-service direct de functie getLanguages() aan die ons een array met language-objecten teruggeeft.

class moduleController extends ControllerBase {
public function my_function() {
$languagelist = \Drupal::service(‘language_manager’)->getLanguages();
}
}

Beschikbare methods op het language-object

Nadien kan je de volgende methods gebruiken om de info op te halen:

  • getDirection()
  • getId()
  • getName()
  • getWeight();
  • isDefault()
  • isLocked()

Een eenvoudige array maken met als key de taalcode en als value de taal ziet er dan zo uit:

foreach($languagelist as $language) {
$languages[$language->getId()] = $language->getName();
}

Vraag uw gratis websiteanalyse aan!

Brengt uw website niet het rendement die u voor ogen had?
Blijft het aantal klanten op uw website achter?

Vraag dan nu uw gratis website analyse aan en onze expert Louis vertelt u in een 5-minuten video waar de grootste problemen zitten.