Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
Overrides NormalizerInterface::normalize
public function normalize($field, $format = NULL, array $context = array()) {
$normalized_field_items = array();
// Get the field definition.
$entity = $field
->getParent();
$field_name = $field
->getName();
$field_definition = $entity
->getPropertyDefinition($field_name);
// If this field is not translatable, it can simply be normalized without
// separating it into different translations.
if (empty($field_definition['translatable'])) {
$normalized_field_items = $this
->normalizeFieldItems($field, $format, $context);
}
else {
foreach ($entity
->getTranslationLanguages() as $lang) {
$context['langcode'] = $lang->langcode == 'und' ? Language::LANGCODE_DEFAULT : $lang->langcode;
$translation = $entity
->getTranslation($lang->langcode);
$translated_field = $translation
->get($field_name);
$normalized_field_items = array_merge($normalized_field_items, $this
->normalizeFieldItems($translated_field, $format, $context));
}
}
// Merge deep so that links set in entity reference normalizers are merged
// into the links property.
$normalized = NestedArray::mergeDeepArray($normalized_field_items);
return $normalized;
}