diff --git a/core/lib/Drupal/Core/Field/FormatterBase.php b/core/lib/Drupal/Core/Field/FormatterBase.php index a6c8cc8..4c82458 100644 --- a/core/lib/Drupal/Core/Field/FormatterBase.php +++ b/core/lib/Drupal/Core/Field/FormatterBase.php @@ -63,7 +63,7 @@ * @param array $third_party_settings * Any third party settings. */ - public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings) { + public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, $settings_langcode = '') { parent::__construct(array(), $plugin_id, $plugin_definition); $this->fieldDefinition = $field_definition; @@ -71,6 +71,7 @@ public function __construct($plugin_id, $plugin_definition, FieldDefinitionInter $this->label = $label; $this->viewMode = $view_mode; $this->thirdPartySettings = $third_party_settings; + $this->settingsLangcode = $settings_langcode; } /** diff --git a/core/lib/Drupal/Core/Field/FormatterPluginManager.php b/core/lib/Drupal/Core/Field/FormatterPluginManager.php index e6054a9..d4ef14d 100644 --- a/core/lib/Drupal/Core/Field/FormatterPluginManager.php +++ b/core/lib/Drupal/Core/Field/FormatterPluginManager.php @@ -69,7 +69,7 @@ public function createInstance($plugin_id, array $configuration = array()) { return $plugin_class::create(\Drupal::getContainer(), $configuration, $plugin_id, $plugin_definition); } - return new $plugin_class($plugin_id, $plugin_definition, $configuration['field_definition'], $configuration['settings'], $configuration['label'], $configuration['view_mode'], $configuration['third_party_settings']); + return new $plugin_class($plugin_id, $plugin_definition, $configuration['field_definition'], $configuration['settings'], $configuration['label'], $configuration['view_mode'], $configuration['third_party_settings'], $configuration['settings_language']); } /** diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php index 0c8cfeb..f97d0a7 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php @@ -65,11 +65,10 @@ public function settingsForm(array $form, FormStateInterface $form_state) { '#default_value' => $this->getSetting('format_plural'), ); $plural_array = explode(LOCALE_PLURAL_DELIMITER, $this->getSetting('format_plural_string')); - // @todo get langcode of this formatter config to use for configuration. $elements['format_plural_values'] = array( '#after_build' => [[get_class($this), 'formatPluralValuesAfterBuild']], ); - $plurals = $this->getNumberOfPlurals(); + $plurals = $this->getNumberOfPlurals($this->settingsLangcode); for ($i = 0; $i < $plurals; $i++) { $elements['format_plural_values'][$i] = array( '#type' => 'textfield', diff --git a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php index c982167..eee2401 100644 --- a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php +++ b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php @@ -345,6 +345,9 @@ protected function buildFieldRow(FieldDefinitionInterface $field_definition, arr $display_options['third_party_settings'] = $plugin_settings[$field_name]['third_party_settings']; } + // Carry the language to the plugin. + $display_options['settings_language'] = $this->entity->get('langcode'); + // Get the corresponding plugin object. $plugin = $this->getPlugin($field_definition, $display_options);