diff --git a/includes/menu.inc b/includes/menu.inc
index d4e727a285b51bd76e0b9b32624a19a6a1cfbf52..86ac9ad54b452c5760d80342cfbfe3969b67cbbd 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -468,7 +468,6 @@ function _menu_check_access(&$item, $map) {
  */
 function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   $callback = $item['title_callback'];
-
   // If we are not doing link translation or if the title matches the
   // link title of its router item, localize it.
   if (!$link_translate || (!empty($item['title']) && ($item['title'] == $item['link_title']))) {
@@ -489,6 +488,10 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
       else {
         $item['title'] = call_user_func_array($callback, menu_unserialize($item['title_arguments'], $map));
       }
+      // Avoid calling check_plain again on l() function.
+      if ($callback == 'check_plain') {
+        $item['options']['html'] = TRUE;
+      }
     }
   }
   elseif ($link_translate) {