diff --git a/i18n.module b/i18n.module
index 9809a27..d0142a3 100644
--- a/i18n.module
+++ b/i18n.module
@@ -68,11 +68,11 @@ function i18n_language($language = NULL) {
     }
   }
   else {
-    if (empty($GLOBALS['language'])) {
+    if (empty($GLOBALS[LANGUAGE_TYPE_INTERFACE])) {
       // We don't have language yet, initialize the language system and retry
       drupal_bootstrap(DRUPAL_BOOTSTRAP_LANGUAGE);
     }
-    return $GLOBALS['language'];
+    return $GLOBALS[LANGUAGE_TYPE_INTERFACE];
   }
 }
 
@@ -522,4 +522,4 @@ function i18n_entity_translation_enabled($entity_type) {
     $cache[$entity_type] = module_exists('entity_translation') && entity_translation_enabled($entity_type);
   }
   return $cache[$entity_type];
-}
\ No newline at end of file
+}
diff --git a/i18n.test b/i18n.test
index 976ac69..247af33 100644
--- a/i18n.test
+++ b/i18n.test
@@ -278,7 +278,7 @@ class Drupali18nTestCase extends DrupalWebTestCase {
    */
   public function switchLanguage($newlang = NULL) {
     $newlang = $newlang ? $newlang : $this->install_locale;
-    $GLOBALS['language'] = $this->getLanguage($newlang);
+    $GLOBALS[LANGUAGE_TYPE_INTERFACE] = $this->getLanguage($newlang);
   }
 
   /**
diff --git a/i18n_menu/i18n_menu.module b/i18n_menu/i18n_menu.module
index 6527b7b..89e7e65 100644
--- a/i18n_menu/i18n_menu.module
+++ b/i18n_menu/i18n_menu.module
@@ -822,7 +822,7 @@ function i18n_menu_init() {
   $query->condition('ml.link_path', $path_candidates, 'IN');
 
   // Only look menu links with none or the current language.
-  $query->condition('ml.language', array(LANGUAGE_NONE, $GLOBALS['language']->language), 'IN');
+  $query->condition('ml.language', array(LANGUAGE_NONE, i18n_menu_language()->language), 'IN');
 
   // Sort candidates by link path and menu name.
   $candidates = array();
@@ -857,3 +857,9 @@ function i18n_menu_init() {
   }
 }
 
+/**
+ * Get language for menus, which defaults to interface language.
+ */
+function i18n_menu_language() {
+  return $GLOBALS[LANGUAGE_TYPE_INTERFACE];
+}
diff --git a/i18n_node/i18n_node.module b/i18n_node/i18n_node.module
index 793261f..1cef164 100644
--- a/i18n_node/i18n_node.module
+++ b/i18n_node/i18n_node.module
@@ -162,6 +162,13 @@ function i18n_node_get_lang($nid, $default = '') {
 }
 
 /**
+ * Get default language for node objects, that will be content language.
+ */
+function i18n_node_language() {
+  return $GLOBALS[LANGUAGE_TYPE_CONTENT];
+}
+
+/**
  * Get allowed languages for node.
  *
  * This allows node types to define its own language list implementing hook 'language_list'.
@@ -221,7 +228,7 @@ function i18n_node_node_prepare($node) {
   $options = variable_get('i18n_node_options_' . $node->type, array());
   if (i18n_node_type_enabled($node) && empty($node->nid) && !i18n_object_langcode($node) && in_array('current', $options)) {
     // Set current language for new nodes if option enabled
-    $node->language = i18n_langcode();
+    $node->language = i18n_node_language()->language;
   }
 }
 
diff --git a/i18n_select/i18n_select.module b/i18n_select/i18n_select.module
index d6fbd79..5fd2f8c 100644
--- a/i18n_select/i18n_select.module
+++ b/i18n_select/i18n_select.module
@@ -289,15 +289,15 @@ function i18n_select_check_query($query) {
 }
 
 /**
- * Get main language code for content selection
+ * Get main language for content selection
  */
 function i18n_select_language() {
-  return $GLOBALS['language_content']->language;
+  return $GLOBALS[LANGUAGE_TYPE_CONTENT];
 }
 
 /**
  * Get language codes for content selection to use in query conditions
  */
 function i18n_select_langcodes() {
-  return array(i18n_select_language(), LANGUAGE_NONE);
-}
\ No newline at end of file
+  return array(i18n_select_language()->language, LANGUAGE_NONE);
+}
diff --git a/i18n_variable/i18n_variable.module b/i18n_variable/i18n_variable.module
index 243b48c..4764f70 100644
--- a/i18n_variable/i18n_variable.module
+++ b/i18n_variable/i18n_variable.module
@@ -5,6 +5,11 @@
  */
 
 /**
+ * The type of language used for variables.
+ */
+define('I18N_VARIABLE_LANGUAGE_TYPE', 'language_variable');
+
+/**
  * Implements hook_language_init()
  */
 function i18n_variable_language_init() {
@@ -48,7 +53,7 @@ function i18n_variable_menu() {
  */
 function i18n_variable_initialize($language = NULL) {
   $language = $language ? $language : i18n_variable_language();
-  $GLOBALS['language_variable'] = $language;
+  $GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE] = $language;
   $variables = i18n_variable_load($language->language);
   variable_realm_add('language', $language->language, $variables, 10);
   variable_realm_switch('language', $language->language);
@@ -59,15 +64,15 @@ function i18n_variable_initialize($language = NULL) {
  */
 function i18n_variable_language($initialize = TRUE) {
   // If we've got a variables language, it will be that one
-  if (!isset($GLOBALS['language_variable'])) {
+  if (!isset($GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE])) {
     if (!empty($_GET['i18n_variable_language']) && arg(0) == 'admin') {
-      $GLOBALS['language_variable'] = i18n_language($_GET['i18n_variable_language']);
+      $GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE] = i18n_language($_GET['i18n_variable_language']);
     }
     else {
-      $GLOBALS['language_variable'] = i18n_language();
+      $GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE] = i18n_language();
     }
   }
-  return $GLOBALS['language_variable'];
+  return $GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE];
 }
 
 /**
