web-dev-qa-db-fra.com

Comment obtenir le préfixe de langue dans Drupal 8

Je construis interne dans mon module personnalisé que je porte sur Drupal 8: https://www.drupal.org/project/taxonomy_facets

J'ai besoin d'obtenir un préfixe de langue actuel afin de pouvoir l'ajouter au lien. I Drupal 7 c'était aussi simple que:

global $language;
$prefix = $language->prefix;
$mylink = $prefix . '/example/something';

Comment faire cela dans Drupal 8?

EDIT: Mon problème est précisément que j'ai un préfixe de langue défini sur NONE pour la langue par défaut à Home >> Administration >> Configuration >> Regional and language >> Languages >> Detection and selection. (admin/config/régional/langue/détection/url)

Pour la langue par défaut, je veux que le code renvoie le vrai préfixe, i. e. NONE, pas en (le code de la langue par défaut, l'anglais).

4
Darko Kantic

Dans Drupal 8, vous utilisez la classe languageManager pour obtenir le code de langue:

$languagecode = \Drupal::languageManager()->getCurrentLanguage()->getId();

EDIT: Si vous souhaitez retourner NONE si la langue actuelle est la langue par défaut, vous devez probablement faire une fonction d'assistance:

$languagecode = \Drupal::languageManager()->getCurrentLanguage()->getId();
$default_languagecode = \Drupal::languageManager()->getDefaultLanguage()->getId();
if ($languagecode == $default_languagecode) {
  return "NONE";
}
else {
  return $languagecode;
}

fonction d'aide pour le ge à partir des paramètres

function getLanguagePrefix() {
    if($prefixes = \Drupal::config('language.negotiation')->get('url.prefixes')) {
      $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
      return "/". $prefixes[$language];
    }
    return null;
  }
6
Patrick Kenny