diff --git a/modules/field/field.multilingual.inc b/modules/field/field.multilingual.inc
index 4b4f01d..33dd518 100644
--- a/modules/field/field.multilingual.inc
+++ b/modules/field/field.multilingual.inc
@@ -267,8 +267,9 @@ function field_language($entity_type, $entity, $field_name = NULL, $langcode = N
   $display_languages = &drupal_static(__FUNCTION__, array());
   list($id, , $bundle) = entity_extract_ids($entity_type, $entity);
   $langcode = field_valid_language($langcode, FALSE);
-
-  if (!isset($display_languages[$entity_type][$id][$langcode])) {
+  // We need to bypass cache when $id is not set, which is the case
+  // for new entities
+  if (!isset($display_languages[$entity_type][$id][$langcode]) || empty($id)) {
     $display_language = array();
 
     // By default display language is set to LANGUAGE_NONE if the field
