diff --git a/includes/common.inc b/includes/common.inc
index a65139f713..fd8305c74f 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -7947,7 +7947,7 @@ function entity_get_info($entity_type = NULL) {
 
   // hook_entity_info() includes translated strings, so each language is cached
   // separately.
-  $langcode = $language->language;
+  $langcode = !empty($language->language) ? $language->language : language_default()->language;
 
   if (empty($entity_info)) {
     if ($cache = cache_get("entity_info:$langcode")) {
diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc
index dea2fd4fb9..4886d04d6d 100644
--- a/modules/field/field.info.inc
+++ b/modules/field/field.info.inc
@@ -144,7 +144,7 @@ function _field_info_collate_types($reset = FALSE) {
 
   // The _info() hooks invoked below include translated strings, so each
   // language is cached separately.
-  $langcode = $language->language;
+  $langcode = !empty($language->language) ? $language->language : language_default()->language;
 
   if ($reset) {
     $info = NULL;
diff --git a/modules/node/node.module b/modules/node/node.module
index cf41ce7145..f60c005d9c 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -704,7 +704,8 @@ function node_type_update_nodes($old_type, $type) {
  *   type object by $type->disabled being set to TRUE.
  */
 function _node_types_build($rebuild = FALSE) {
-  $cid = 'node_types:' . $GLOBALS['language']->language;
+  $langcode = !empty($GLOBALS['language']->language) ? $GLOBALS['language']->language : language_default()->language;
+  $cid = 'node_types:' . $langcode;
 
   if (!$rebuild) {
     $_node_types = &drupal_static(__FUNCTION__);
