function DefaultLanguageItem::getDefaultLanguageCode

Same name and namespace in other branches
  1. 11.x core/modules/language/src/DefaultLanguageItem.php \Drupal\language\DefaultLanguageItem::getDefaultLanguageCode()

Provides default language code of a given an entity type and bundle.

Parameters

string $entity_type_id: The entity type ID of the entity whose code of language is to be loaded.

string $bundle: The entity bundle of the entity whose code of language is to be loaded.

Return value

string A string language code.

2 calls to DefaultLanguageItem::getDefaultLanguageCode()
DefaultLanguageItem::applyDefaultValue in core/modules/language/src/DefaultLanguageItem.php
Applies the default value.
DefaultLanguageItem::getDefaultLangcode in core/modules/language/src/DefaultLanguageItem.php
Provides default language code of given entity.

File

core/modules/language/src/DefaultLanguageItem.php, line 44

Class

DefaultLanguageItem
Alternative plugin implementation of the 'language' field type.

Namespace

Drupal\language

Code

protected function getDefaultLanguageCode(string $entity_type_id, string $bundle) : string {
  $language_manager = \Drupal::languageManager();
  $configuration = ContentLanguageSettings::loadByEntityTypeBundle($entity_type_id, $bundle);
  $default_value = NULL;
  $language_interface = $language_manager->getCurrentLanguage();
  switch ($configuration->getDefaultLangcode()) {
    case LanguageInterface::LANGCODE_SITE_DEFAULT:
      $default_value = $language_manager->getDefaultLanguage()
        ->getId();
      break;

    case 'current_interface':
      $default_value = $language_interface->getId();
      break;

    case 'authors_default':
      $user = \Drupal::currentUser();
      $language_code = $user->getPreferredLangcode();
      if (!empty($language_code)) {
        $default_value = $language_code;
      }
      else {
        $default_value = $language_interface->getId();
      }
      break;

  }
  if ($default_value) {
    return $default_value;
  }
  // If we still do not have a default value, just return the value stored in
  // the configuration; it has to be an actual language code.
  return $configuration->getDefaultLangcode();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.