languageManager = $language_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $plugin_id, $plugin_definition, $configuration['field_definition'], $configuration['settings'], $configuration['label'], $configuration['view_mode'], $configuration['third_party_settings'], $container->get('entity_type.manager'), $container->get('language_manager') ); } /** * {@inheritdoc} */ public static function defaultSettings() { $settings = parent::defaultSettings(); $settings['native_language'] = FALSE; return $settings; } /** * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { $form = parent::settingsForm($form, $form_state); $form['native_language'] = [ '#title' => $this->t('Display in native language'), '#type' => 'checkbox', '#default_value' => $this->getSetting('native_language'), ]; return $form; } /** * {@inheritdoc} */ public function settingsSummary() { $summary = parent::settingsSummary(); if ($this->getSetting('native_language')) { $summary[] = $this->t('Displayed in native language'); } return $summary; } /** * {@inheritdoc} */ protected function viewValue(FieldItemInterface $item) { // The 'languages' cache context is not necessary because the language is // either displayed in its configured form (loaded directly from config // storage by LanguageManager::getLanguages()) or in its native language // name. That only depends on formatter settings and no language condition. $languages = $this->getSetting('native_language') ? $this->languageManager->getNativeLanguages(LanguageInterface::STATE_ALL) : $this->languageManager->getLanguages(LanguageInterface::STATE_ALL); return [ '#plain_text' => $item->language && isset($languages[$item->language->getId()]) ? $languages[$item->language->getId()]->getName() : '', ]; } }