diff --git a/themes/openomega/template.php b/themes/openomega/template.php
index 14554b2..3f95c18 100644
--- a/themes/openomega/template.php
+++ b/themes/openomega/template.php
@@ -33,16 +33,18 @@ function open_omega_system_themes_page_alter(&$theme_groups) {
 }
 
 function openomega_preprocess_region(&$vars) {
+  global $language;
+  
   switch($vars['region']) {
     // menu region
     case 'menu':
-      $footer_menu_cache = cache_get("footer_menu_data") ;
+      $footer_menu_cache = cache_get("footer_menu_data:". $language->language) ;
 		  if ($footer_menu_cache) {
 		    $footer_menu = $footer_menu_cache->data;
 		  }
 		  else {
-		    $footer_menu = menu_tree_output(menu_build_tree('main-menu', array('max_depth'=>2)));
-		    cache_set("footer_menu_data", $footer_menu);
+		    $footer_menu = menu_tree_output(_openomega_menu_build_tree('main-menu', array('max_depth'=>2)));
+		    cache_set("footer_menu_data:" .$language->language, $footer_menu);
 		  }
 		  //set the active trail
 		  $active_trail = menu_get_active_trail();
@@ -55,12 +57,12 @@ function openomega_preprocess_region(&$vars) {
     break;
     // default footer content
     case 'footer_first':
-      $footer_menu_cache = cache_get("footer_menu_data") ;
+      $footer_menu_cache = cache_get("footer_menu_data:". $language->language) ;
 		  if ($footer_menu_cache) {
 		    $footer_menu = $footer_menu_cache->data;
 		  }
 		  else {
-		    $footer_menu = menu_tree_output(menu_build_tree('main-menu', array('max_depth'=>2)));
+		    $footer_menu = menu_tree_output(_openomega_menu_build_tree('main-menu', array('max_depth'=>2)));
 		    cache_set("footer_menu_data", $footer_menu);
 		  }
 		  //set the active trail
@@ -99,4 +101,13 @@ function openomega_preprocess_views_view_unformatted(&$vars) {
   foreach($vars['attributes_array']['class'] as &$rowclasses) {
     $rowclasses .= ' clearfix';
   }
+}
+
+function _openomega_menu_build_tree($menu_name, $parameters = array()) {
+  $tree = menu_build_tree($menu_name, $parameters);
+  if (function_exists('i18n_menu_localize_tree')) {
+    $tree = i18n_menu_localize_tree($tree);
+  }
+
+  return $tree;
 }
\ No newline at end of file
diff --git a/themes/openpublic_theme/template.php b/themes/openpublic_theme/template.php
index 42a5c91..e42b851 100644
--- a/themes/openpublic_theme/template.php
+++ b/themes/openpublic_theme/template.php
@@ -21,16 +21,18 @@ function openpublic_theme_preprocess_page(&$variables) {
   // we have two cache for the utility menu one if logged in one if logged out.
   // also we change the name of the login if we are already logged in.
   global $user;
-  $menu_utility_cache = $user->uid ? cache_get("menu_utility") : cache_get("menu_utility_anon") ;
+  global $language;
+  
+  $menu_utility_cache = $user->uid ? cache_get("menu_utility:". $language->language) : cache_get("menu_utility_anon:". $language->language) ;
   if($menu_utility_cache) {
     $menu_utility = $menu_utility_cache->data;
   }
   else {
-    $menu_utility = menu_navigation_links('menu-utility');
+    $menu_utility = _openpublic_menu_navigation_links('menu-utility');
     if ($user->uid) {
       foreach($menu_utility as $key => $item) {
         if ($item['href'] == 'user') {
-        $menu_utility[$key]['title'] ='My Account';
+          $menu_utility[$key]['title'] = 'My Account';
         }
       }
     }
@@ -49,16 +51,16 @@ function openpublic_theme_preprocess_page(&$variables) {
         ),
       )
     );
-    cache_set( $user->uid ? "menu_utility" : "menu_utility_anon" , $menu_utility);
+    cache_set( $user->uid ? "menu_utility:".$language->language : "menu_utility_anon:". $language->language , $menu_utility);
   }
   $variables['menu_utility'] = $menu_utility;
 
-  $footer_utility_cache = cache_get("footer_utility") ;
+  $footer_utility_cache = cache_get("footer_utility:". $language->language) ;
   if($footer_utility_cache) {
     $footer_utility = $footer_utility_cache->data;
   }
   else {
-    $footer_utility = menu_navigation_links('menu-footer-utility');
+    $footer_utility = _openpublic_menu_navigation_links('menu-footer-utility');
     $footer_utility = theme(
       'links', 
       array(
@@ -74,18 +76,18 @@ function openpublic_theme_preprocess_page(&$variables) {
         ),
       )
     );
-    cache_set("footer_utility", $footer_utility);
+    cache_set("footer_utility:". $language->language, $footer_utility);
   }
   $variables['footer_utility'] = $footer_utility;
 
   // We are caching the footer_menu render array for performance 
-  $footer_menu_cache = cache_get("footer_menu_data") ;
+  $footer_menu_cache = cache_get("footer_menu_data:". $language->language) ;
   if ($footer_menu_cache) {
     $footer_menu = $footer_menu_cache->data;
   }
   else {
-    $footer_menu = menu_tree_output(menu_build_tree('main-menu', array('max_depth'=>2)));
-    cache_set("footer_menu_data", $footer_menu);
+    $footer_menu = menu_tree_output(_openpublic_menu_build_tree('main-menu', array('max_depth'=>2)));
+    cache_set("footer_menu_data:". $language->language, $footer_menu);
   }
   //set the active trail
   $active_trail = menu_get_active_trail();
@@ -126,4 +128,21 @@ function openpublic_theme_preprocess_page(&$variables) {
   }
 }
 
+function _openpublic_menu_navigation_links($menu_name, $level = 0) {
+  // check for i18n_menu presence
+  if (function_exists('i18n_menu_navigation_links')) {
+    return i18n_menu_navigation_links($menu_name, $level);
+  }
+  else {
+    return menu_navigation_links($menu_name, $level);
+  }
+}
+
+function _openpublic_menu_build_tree($menu_name, $parameters = array()) {
+  $tree = menu_build_tree($menu_name, $parameters);
+  if (function_exists('i18n_menu_localize_tree')) {
+    $tree = i18n_menu_localize_tree($tree);
+  }
 
+  return $tree;
+}
\ No newline at end of file
diff --git a/themes/spartan/template.php b/themes/spartan/template.php
index 2d5065d..a689762 100644
--- a/themes/spartan/template.php
+++ b/themes/spartan/template.php
@@ -33,16 +33,18 @@ function spartan_system_themes_page_alter(&$theme_groups) {
 }
 
 function spartan_preprocess_region(&$vars) {
+  global $language;
+  
   switch($vars['region']) {
     // menu region
     case 'menu':
-      $footer_menu_cache = cache_get("footer_menu_data") ;
+      $footer_menu_cache = cache_get("footer_menu_data:". $language->language) ;
 		  if ($footer_menu_cache) {
 		    $footer_menu = $footer_menu_cache->data;
 		  }
 		  else {
-		    $footer_menu = menu_tree_output(menu_build_tree('main-menu', array('max_depth'=>2)));
-		    cache_set("footer_menu_data", $footer_menu);
+		    $footer_menu = menu_tree_output(_spartan_menu_build_tree('main-menu', array('max_depth'=>2)));
+		    cache_set("footer_menu_data:". $language->language, $footer_menu);
 		  }
 		  //set the active trail
 		  $active_trail = menu_get_active_trail();
@@ -55,13 +57,13 @@ function spartan_preprocess_region(&$vars) {
     break;
     // default footer content
     case 'footer_first':
-      $footer_menu_cache = cache_get("footer_menu_data") ;
+      $footer_menu_cache = cache_get("footer_menu_data:". $language->language) ;
 		  if ($footer_menu_cache) {
 		    $footer_menu = $footer_menu_cache->data;
 		  }
 		  else {
-		    $footer_menu = menu_tree_output(menu_build_tree('main-menu', array('max_depth'=>2)));
-		    cache_set("footer_menu_data", $footer_menu);
+		    $footer_menu = menu_tree_output(_spartan_menu_build_tree('main-menu', array('max_depth'=>2)));
+		    cache_set("footer_menu_data:". $language->language, $footer_menu);
 		  }
 		  //set the active trail
 		  $active_trail = menu_get_active_trail();
@@ -99,4 +101,13 @@ function spartan_preprocess_views_view_unformatted(&$vars) {
   foreach($vars['attributes_array']['class'] as &$rowclasses) {
     //$rowclasses .= ' clearfix';
   }
+}
+
+function _spartan_menu_build_tree($menu_name, $parameters = array()) {
+  $tree = menu_build_tree($menu_name, $parameters);
+  if (function_exists('i18n_menu_localize_tree')) {
+    $tree = i18n_menu_localize_tree($tree);
+  }
+
+  return $tree;
 }
\ No newline at end of file
