Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.967
diff -u -p -r1.967 node.module
--- modules/node/node.module	26 May 2008 17:12:55 -0000	1.967
+++ modules/node/node.module	26 Jun 2008 14:45:06 -0000
@@ -441,6 +441,13 @@ function node_teaser($body, $format = NU
  */
 function node_get_types($op = 'types', $node = NULL, $reset = FALSE) {
   static $_node_types, $_node_names;
+  global $language;
+  
+  if (!$reset && !isset($_node_types)) {
+    if ($node_types_cache = cache_get('node_types_'.$language->language, 'cache')) { 
+      list($_node_types, $_node_names) = $node_types_cache->data;
+    }
+  }
 
   if ($reset || !isset($_node_types)) {
     list($_node_types, $_node_names) = _node_types_build();
@@ -570,7 +577,8 @@ function node_type_update_nodes($old_typ
 function _node_types_build() {
   $_node_types = array();
   $_node_names = array();
-
+  global $language;
+  
   $info_array = module_invoke_all('node_info');
   foreach ($info_array as $type => $info) {
     $info['type'] = $type;
@@ -598,7 +606,9 @@ function _node_types_build() {
   }
 
   asort($_node_names);
-
+  
+  cache_set('node_types_'.$language->language, array($_node_types, $_node_names), 'cache');
+  
   return array($_node_types, $_node_names);
 }
 
