diff -u b/field_collection.module b/field_collection.module --- b/field_collection.module +++ b/field_collection.module @@ -906,7 +906,9 @@ */ function field_collection_item_delete($id) { $fci = field_collection_item_load($id); - $fci->delete(); + if (!empty($fci)) { + $fci->delete(); + } } /** @@ -1046,7 +1048,8 @@ // and old values are marked as removed. We need to avoid processing them in // this case. $entity_langcode = field_collection_entity_language($host_entity_type, $host_entity); - $original_langcode = field_collection_entity_language($host_entity_type, $host_entity->original); + $original = isset($host_entity->original) ? $host_entity->original : $host_entity; + $original_langcode = field_collection_entity_language($host_entity_type, $original); $langcode = $langcode == $original_langcode ? $entity_langcode : $langcode; // Prevent workbench moderation from deleting field collections on node_save() diff -u b/includes/translation.handler.field_collection_item.inc b/includes/translation.handler.field_collection_item.inc --- b/includes/translation.handler.field_collection_item.inc +++ b/includes/translation.handler.field_collection_item.inc @@ -43,7 +43,7 @@ // language. if (($host_entity_type = $this->entity->hostEntityType()) && entity_translation_enabled($host_entity_type) && ($host_entity = $this->entity->hostEntity())) { $handler = $this->factory->getHandler($host_entity_type, $host_entity); - $langcode = $handler->getLanguage(); + $langcode = $handler->getFormLanguage(); } // If the host entity is not translatable, use the default language // fallback.