diff --git a/modules/field/field.multilingual.inc b/modules/field/field.multilingual.inc
index 4b4f01d7db847ba383a1fe3b53f4f2569d3b7a4f..40bd078660c0891267b8cd84d9eeb0b49272eafd 100644
--- a/modules/field/field.multilingual.inc
+++ b/modules/field/field.multilingual.inc
@@ -267,8 +267,8 @@ 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])) {
+  
+  if (!isset($display_languages[$entity_type][$bundle][$id][$langcode])) {
     $display_language = array();
 
     // By default display language is set to LANGUAGE_NONE if the field
@@ -287,10 +287,9 @@ function field_language($entity_type, $entity, $field_name = NULL, $langcode = N
       drupal_alter('field_language', $display_language, $context);
     }
 
-    $display_languages[$entity_type][$id][$langcode] = $display_language;
+    $display_languages[$entity_type][$bundle][$id][$langcode] = $display_language;
   }
-
-  $display_language = $display_languages[$entity_type][$id][$langcode];
+  $display_language = $display_languages[$entity_type][$bundle][$id][$langcode];
 
   // Single-field mode.
   if (isset($field_name)) {
