From 058971c33b8dca63fd33b188328fc3e3ec9fb372 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Fri, 3 Oct 2003 14:55:27 +0000
Subject: [PATCH] - Help improvements and translation improvements from
 Michael.  Thanks!

---
 modules/admin.module                 | 10 ++--
 modules/archive.module               |  6 +--
 modules/archive/archive.module       |  6 +--
 modules/block.module                 |  1 -
 modules/block/block.module           |  1 -
 modules/blog.module                  |  9 ++--
 modules/blog/blog.module             |  9 ++--
 modules/bloggerapi.module            | 22 ++++----
 modules/book.module                  | 17 +++---
 modules/book/book.module             | 17 +++---
 modules/comment.module               | 80 +++++++++++++++++++++-------
 modules/comment/comment.module       | 80 +++++++++++++++++++++-------
 modules/drupal.module                | 13 ++---
 modules/drupal/drupal.module         | 13 ++---
 modules/forum.module                 | 13 ++---
 modules/forum/forum.module           | 13 ++---
 modules/help.module                  | 41 +++++++++-----
 modules/help/help.module             | 41 +++++++++-----
 modules/locale.module                | 18 ++++---
 modules/locale/locale.module         | 18 ++++---
 modules/node.module                  | 21 ++++----
 modules/node/node.module             | 21 ++++----
 modules/page.module                  |  5 +-
 modules/page/page.module             |  5 +-
 modules/ping.module                  |  9 ++--
 modules/ping/ping.module             |  9 ++--
 modules/poll.module                  | 32 +++++++++--
 modules/poll/poll.module             | 32 +++++++++--
 modules/profile.module               |  6 +--
 modules/profile/profile.module       |  6 +--
 modules/queue.module                 |  6 +--
 modules/search.module                |  7 +--
 modules/search/search.module         |  7 +--
 modules/statistics.module            | 43 +++++++--------
 modules/statistics/statistics.module | 43 +++++++--------
 modules/story.module                 | 20 ++++---
 modules/story/story.module           | 20 ++++---
 modules/system.module                | 13 +++--
 modules/system/system.module         | 13 +++--
 modules/taxonomy.module              | 45 +++++++++++-----
 modules/taxonomy/taxonomy.module     | 45 +++++++++++-----
 modules/throttle.module              | 32 ++++++-----
 modules/throttle/throttle.module     | 32 ++++++-----
 modules/title.module                 | 18 ++++++-
 modules/tracker.module               | 17 ++++--
 modules/tracker/tracker.module       | 17 ++++--
 46 files changed, 615 insertions(+), 337 deletions(-)

diff --git a/modules/admin.module b/modules/admin.module
index 779547f3fe34..1eddba355ec0 100644
--- a/modules/admin.module
+++ b/modules/admin.module
@@ -14,16 +14,16 @@ function admin_help($section) {
 
   switch ($section) {
     case "admin/system/modules":
-      $output .= "Handles the administration pages.";
+      $output .= t("Handles the administration pages.");
       break;
     case "admin":
-      $output .= "Welcome to the administration section. Below are the most recent system events.  To get started please choose an item in the left column. If there is an arrow it will expand into a submenu. To jump up a level use the link,bread crumbs, above this block of text. To return to the home page click on the site name, and to go to Drupal's home page click on Druplicon, the drop on to the right.";
+      $output .= t("Welcome to the administration section. Below are the most recent system events.  To get started please choose an item in the left column. If there is an arrow it will expand into a submenu. To jump up a level use the link,bread crumbs, above this block of text. To return to the home page click on the site name, and to go to Drupal's home page click on Druplicon, the drop on to the right.");
       break;
-    case "admin":
-      $output = "This is a complete overview of the site administration page.";
+    case "admin/overview":
+      $output = t("This is a complete overview of the site administration page.");
       break;
   }
-  return t($output);
+  return $output;
 }
 
 function admin_system($field){
diff --git a/modules/archive.module b/modules/archive.module
index c12272c04dd0..e9ce7e0fe7ed 100644
--- a/modules/archive.module
+++ b/modules/archive.module
@@ -6,14 +6,14 @@ function archive_help($section) {
 
   switch ($section) {
     case 'admin/system/modules':
-      $output = "Displays a calendar to navigate old content.";
+      $output = t("Displays a calendar to navigate old content.");
       break;
     case 'admin/system/modules/archive':
-      $output = "Choose the starting \"day of the week\" for the displayed calendar block.";
+      $output = t("Choose the starting \"day of the week\" for the displayed calendar block.");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 function archive_system($field){
   $output = "";
diff --git a/modules/archive/archive.module b/modules/archive/archive.module
index c12272c04dd0..e9ce7e0fe7ed 100644
--- a/modules/archive/archive.module
+++ b/modules/archive/archive.module
@@ -6,14 +6,14 @@ function archive_help($section) {
 
   switch ($section) {
     case 'admin/system/modules':
-      $output = "Displays a calendar to navigate old content.";
+      $output = t("Displays a calendar to navigate old content.");
       break;
     case 'admin/system/modules/archive':
-      $output = "Choose the starting \"day of the week\" for the displayed calendar block.";
+      $output = t("Choose the starting \"day of the week\" for the displayed calendar block.");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 function archive_system($field){
   $output = "";
diff --git a/modules/block.module b/modules/block.module
index e74a80ac831f..eb14f84dc2d2 100644
--- a/modules/block.module
+++ b/modules/block.module
@@ -41,7 +41,6 @@ function block_help($section = "admin/system/block/help") {
       break;
     case 'admin/system/block':
       $output = t("Blocks are the boxes in the left- and right- side bars of the web site, depending on the choosen theme.  They are created by <b>active</b> Drupal modules.  In order to view a block it must be enabled. You can assign the block's placement by giving it a region and a weight. The region specifies which side of the page the block is on, and the weight sorts blocks within a region. Lighter (smaller weight value) blocks \"float up\" towards the top of the page. The path setting lets you define which pages you want a block to be shown on. The custom checkbox lets your users hide the block using their account setting. You can also create your own blocks, where you specify the content of the block rather than its being generated by a module (you can even use PHP in these). You can create one of these by clicking the %createblock link in the menu to the left. Edit and delete links will become active below for these customized blocks.", array("%createblock" => l(t("new block"), "admin/system/block/add")));
-;
       break;
     case 'admin/system/block/add':
       $output = t("Here you can create a custom content block. Once you have created this block you must make it active, and give it a place on the page using %overview. The title is used when displaying the block. The description is used in the \"block\" column on the %overview page. If you are going to place PHP code in the block, and you have <b>create php content</b> permission (see the %permission page) you <b>must</b> change the type to PHP to make your code active.", array("%overview" => l(t("blocks"), "admin/system/block"), "%permission" => l(t("permissions"), "admin/user/permission")));
diff --git a/modules/block/block.module b/modules/block/block.module
index e74a80ac831f..eb14f84dc2d2 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -41,7 +41,6 @@ function block_help($section = "admin/system/block/help") {
       break;
     case 'admin/system/block':
       $output = t("Blocks are the boxes in the left- and right- side bars of the web site, depending on the choosen theme.  They are created by <b>active</b> Drupal modules.  In order to view a block it must be enabled. You can assign the block's placement by giving it a region and a weight. The region specifies which side of the page the block is on, and the weight sorts blocks within a region. Lighter (smaller weight value) blocks \"float up\" towards the top of the page. The path setting lets you define which pages you want a block to be shown on. The custom checkbox lets your users hide the block using their account setting. You can also create your own blocks, where you specify the content of the block rather than its being generated by a module (you can even use PHP in these). You can create one of these by clicking the %createblock link in the menu to the left. Edit and delete links will become active below for these customized blocks.", array("%createblock" => l(t("new block"), "admin/system/block/add")));
-;
       break;
     case 'admin/system/block/add':
       $output = t("Here you can create a custom content block. Once you have created this block you must make it active, and give it a place on the page using %overview. The title is used when displaying the block. The description is used in the \"block\" column on the %overview page. If you are going to place PHP code in the block, and you have <b>create php content</b> permission (see the %permission page) you <b>must</b> change the type to PHP to make your code active.", array("%overview" => l(t("blocks"), "admin/system/block"), "%permission" => l(t("permissions"), "admin/user/permission")));
diff --git a/modules/blog.module b/modules/blog.module
index d1af39448faa..b75f3654c0a0 100644
--- a/modules/blog.module
+++ b/modules/blog.module
@@ -81,19 +81,20 @@ function blog_help($section) {
     case 'admin/blog/help':
     case 'admin/help':
       $output .= "<p>Drupal's blog module allows registered users to maintain an online weblog (commonly known as a blog), often referred to as an online journal or diary.  These can be filled with daily thoughts, poetry, boneless blabber, spiritual theories, intimate details, valuable experiences, cynical rants, semi-coherent comments, writing experiments, artistic babblings, critics on current facts, fresh insights, diverse dreams, chronicles and mumbling madness available for public consumption.</p>";
-      $output .= strtr("<p>Blogs are made up of individual entries (nodes) that are timestamped and are typically viewed by day as you would a diary.  Blogs often contain links to things you've seen and/or agree/disagree with.  A typical example of a long term blog can be seen at %scripting-com.</p>", array("%scripting-com" => "<a href=\"http://www.scripting.com/\">". t("http://www.scripting.com/") ."</a>" ));
+      $output .= "<p>Blogs are made up of individual entries (nodes) that are timestamped and are typically viewed by day as you would a diary.  Blogs often contain links to things you've seen and/or agree/disagree with.  A typical example of a long term blog can be seen at %scripting-com.</p>";
       $output .= "<p>The blog module adds a \"user blogs\" navigation link to the site, which takes any visitor to a page that displays the most recent blog entries from all the users on the site. Personal user menus gain a \"create a blog entry\" link (which takes you to a submission form) and a \"view personal blog\" link (which displays your blog entries as other people will see them).  On the bottom of each of your own blog entries, there is an \"edit this blog entry\" link that lets you edit or delete that entry.</p>";
       $output .= "<p>If a user has the ability to post blogs, then the import module (news aggregator) will display a blog-it link <b>(b)</b> next to each news item in its lists.  Click on this and you will be taken to the blog submission form, with the title, a link to the item, and a link to the source into the body text already in the text box, ready for you to add your explanation.  This actively encourages people to add blog entries about things they see and hear elsewhere in the Drupal site and from your syndicated partner sites.</p>";
+      $output = t($output,array("%scripting-com" => "<a href=\"http://www.scripting.com/\">http://www.scripting.com/</a>" ));
       break;
     case 'admin/system/modules':
-      $output .= "Enables keeping a blog or easily and regularly updated web page.";
+      $output .= t("Enables keeping a blog or easily and regularly updated web page.");
       break;
     case 'admin/system/modules/blog':
-      $output .= "A weBLOG is a running journal of a users ideas. Enter the minimum word count for a single entry, and the text displayed on the entry submission form";
+      $output .= t("A weBLOG is a running journal of a users ideas. Enter the minimum word count for a single entry, and the text displayed on the entry submission form");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function blog_feed_user($uid = 0) {
diff --git a/modules/blog/blog.module b/modules/blog/blog.module
index d1af39448faa..b75f3654c0a0 100644
--- a/modules/blog/blog.module
+++ b/modules/blog/blog.module
@@ -81,19 +81,20 @@ function blog_help($section) {
     case 'admin/blog/help':
     case 'admin/help':
       $output .= "<p>Drupal's blog module allows registered users to maintain an online weblog (commonly known as a blog), often referred to as an online journal or diary.  These can be filled with daily thoughts, poetry, boneless blabber, spiritual theories, intimate details, valuable experiences, cynical rants, semi-coherent comments, writing experiments, artistic babblings, critics on current facts, fresh insights, diverse dreams, chronicles and mumbling madness available for public consumption.</p>";
-      $output .= strtr("<p>Blogs are made up of individual entries (nodes) that are timestamped and are typically viewed by day as you would a diary.  Blogs often contain links to things you've seen and/or agree/disagree with.  A typical example of a long term blog can be seen at %scripting-com.</p>", array("%scripting-com" => "<a href=\"http://www.scripting.com/\">". t("http://www.scripting.com/") ."</a>" ));
+      $output .= "<p>Blogs are made up of individual entries (nodes) that are timestamped and are typically viewed by day as you would a diary.  Blogs often contain links to things you've seen and/or agree/disagree with.  A typical example of a long term blog can be seen at %scripting-com.</p>";
       $output .= "<p>The blog module adds a \"user blogs\" navigation link to the site, which takes any visitor to a page that displays the most recent blog entries from all the users on the site. Personal user menus gain a \"create a blog entry\" link (which takes you to a submission form) and a \"view personal blog\" link (which displays your blog entries as other people will see them).  On the bottom of each of your own blog entries, there is an \"edit this blog entry\" link that lets you edit or delete that entry.</p>";
       $output .= "<p>If a user has the ability to post blogs, then the import module (news aggregator) will display a blog-it link <b>(b)</b> next to each news item in its lists.  Click on this and you will be taken to the blog submission form, with the title, a link to the item, and a link to the source into the body text already in the text box, ready for you to add your explanation.  This actively encourages people to add blog entries about things they see and hear elsewhere in the Drupal site and from your syndicated partner sites.</p>";
+      $output = t($output,array("%scripting-com" => "<a href=\"http://www.scripting.com/\">http://www.scripting.com/</a>" ));
       break;
     case 'admin/system/modules':
-      $output .= "Enables keeping a blog or easily and regularly updated web page.";
+      $output .= t("Enables keeping a blog or easily and regularly updated web page.");
       break;
     case 'admin/system/modules/blog':
-      $output .= "A weBLOG is a running journal of a users ideas. Enter the minimum word count for a single entry, and the text displayed on the entry submission form";
+      $output .= t("A weBLOG is a running journal of a users ideas. Enter the minimum word count for a single entry, and the text displayed on the entry submission form");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function blog_feed_user($uid = 0) {
diff --git a/modules/bloggerapi.module b/modules/bloggerapi.module
index 7c185e7f7486..ff4c21fec79c 100644
--- a/modules/bloggerapi.module
+++ b/modules/bloggerapi.module
@@ -348,31 +348,31 @@ function bloggerapi_help($section) {
     case 'admin/bloggerapi/help':
     case 'admin/help':
       $output  = "<h3>Introduction</h3>";
-      $output .= strtr("<p>%blogger-com, the well-known public weblog service, provides an application programing interface (API) to allow remote procedure calls (RPC) to the Blogger service.  Drupal supports this %blogger-api, which means that many remote clients (e.g. %client-radio, %client-blogbuddy, %client-w_bloggar, and %client-textrouter) may post to Drupal. These clients provide a bevy of interesting capabilities like offline composing, spellcheck, and WYSIWYG editing; many folks prefer to blog with a client application over typical web forms. By supporting the Blogger API, Drupal grows grander than a web site engine, it's a <i>content accepting machine</i>&trade;.</p>", array("%blogger-com" => "<a href=\"http://www.blogger.com/\">". t("Blogger") ."</a>", "%blogger-api" => "<a href=\"http://www.blogger.com/developers/api/1_docs/\">". t("Blogger API") ."</a>", "%client-radio" => "<a href=\"http://radio.userland.com/\">". t("Radio") ."</a>", "%client-blogbuddy" => "<a href=\"http://blogbuddy.sourceforge.net/\">". t("BlogBuddy") ."</a>", "%client-w_bloggar" => "<a href=\"http://www.wbloggar.com/\">". t("w.bloggar") ."</a>", "%client-textrouter" => "<a href=\"http://projects.kittle.info/tr/\">". t("TextRouter") ."</a>" ));
-      $output .= strtr("<p>The %blogger-api uses the %xml-rpc protocol for communicating with the outside world. %xml-rpc, originally developed by Dave Winer of %userland-software, is a simple XML-based RPC specification ideally suited to the web. Drupal also uses %xml-rpc for several other tasks (e.g. notifiying %weblogs-com of blog updates and making/accepting %dist-auth requests)</p>",array("%blogger-api" => "<a href=\"http://www.blogger.com/developers/api/1_docs/\">". t("Blogger API") ."</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">". t("XML-RPC") ."</a>", "%userland-software" => "<a href=\"http://www.userland.com/\">". t("UserLand Software") ."</a>", "%weblogs-com" => "<a href=\"http://www.weblogs.com/\">". t("weblogs.com") ."</a>", "%dist-auth" => l(t("distributed authentication"), "user/help") )) ;
+      $output .= "<p>%blogger-com, the well-known public weblog service, provides an application programing interface (API) to allow remote procedure calls (RPC) to the Blogger service.  Drupal supports this %blogger-api, which means that many remote clients (e.g. %client-radio, %client-blogbuddy, %client-w_bloggar, and %client-textrouter) may post to Drupal. These clients provide a bevy of interesting capabilities like offline composing, spellcheck, and WYSIWYG editing; many folks prefer to blog with a client application over typical web forms. By supporting the Blogger API, Drupal grows grander than a web site engine, it's a <i>content accepting machine</i>&trade;.</p>";
+      $output .= "<p>The %blogger_api uses the %xml-rpc protocol for communicating with the outside world. %xml-rpc, originally developed by Dave Winer of %userland-software, is a simple XML-based RPC specification ideally suited to the web. Drupal also uses %xml-rpc for several other tasks (e.g. notifiying %weblogs-com of blog updates and making/accepting %dist-auth requests)</p>";
       $output .= "<h3>Blogger API implementation</h3>";
-      $output .= strtr("<p>A word of warning on the Blogger API: it is <b>unofficial</b>.  It exists because Blogger is one of the most popular and the first service to implement an XML-RPC interface.   It may not be the best implementation of a distributed weblog API.  For a promising candidate, see the %echo-proj.</p>", array("%echo-proj" => "<a href=\"http://www.intertwingly.net/wiki/pie/RoadMap\">". t("Echo project") ."</a>" ));
+      $output .= "<p>A word of warning on the Blogger API: it is <b>unofficial</b>.  It exists because Blogger is one of the most popular and the first service to implement an XML-RPC interface.   It may not be the best implementation of a distributed weblog API.  For a promising candidate, see the %echo-proj.</p>";
       $output .= "<p>Drupal's support for the Blogger API is quite complete. Each method with an asterisk below has been implemented in Drupal.</p>";
-      $output .= strtr("<p>%bloggerapi-newpost<br />%bloggerapi-editpost<br />%bloggerapi-getuserblogs<br />%bloggerapi-getuserinfo<br />%bloggerapi-gettemplate<br />%bloggerapi-settemplate</p>", array("%bloggerapi-newpost" => "%blogger-api/xmlrpc_newPost.html\">". t("blogger.newPost()*") ."</a>", "%bloggerapi-editpost" => "%blogger-api/xmlrpc_editPost.html\">". t("blogger.editPost()*") ."</a>", "%bloggerapi-getuserblogs" => "%blogger-api/xmlrpc_getUserBlogs.html\">". t("blogger.getUsersBlogs()*") ."</a>", "%bloggerapi-getuserinfo" => "%blogger-api/xmlrpc_getUserInfo.html\">". t("blogger.getUserInfo()*") ."</a>", "%bloggerapi-gettemplate" => "%blogger-api/xmlrpc_getTemplate.html\">". t("blogger.getTemplate()*") ."</a>", "%bloggerapi-settemplate" => "blogger-api/xmlrpc_setTemplate.html\">". t("blogger.setTemplate()*") ."</a>" ));
-      $output = strtr($output, array("%blogger-api" => "<a href=\"http://www.blogger.com/developers/api/1_docs"));
+      $output .= "<p>%bloggerapi-newpost<br />%bloggerapi-editpost<br />%bloggerapi-getuserblogs<br />%bloggerapi-getuserinfo<br />%bloggerapi-gettemplate<br />%bloggerapi-settemplate</p>";
       $output .= "<p>Drupal also supports the following methods. These methods were added after the those listed above and are not documented on the Blogger API web site. Each method is linked to its corresponding blogger-dev mailing list post:</p>";
-      $output .= strtr("<p>%mess-296<br />%mess-225<br />%mess-147</p>", array("%mess-296" => "%blogger-dev/296\">". t("blogger.getPost()*") ."</a>", "%mess-225" => "%blogger-dev/225\">". t("blogger.getRecentPosts()*") ."</a>", "%mess-147" => "%blogger-dev/147\">". t("blogger.deletePost()*") ."</a>" ));
-      $output = strtr($output, array("%blogger-dev" => "<a href=\"http://groups.yahoo.com/group/bloggerDev/message"));
+      $output .= "<p>%mess-296<br />%mess-225<br />%mess-147</p>";
       $output .= "<h3>Installation and usage</h3>";
-      $output .= strtr("<p>To install the Blogger API module, enable the module on the %mod-config.  Also make sure you have your permissions set correctly for accessing the Blogger API, the relevant settings can be found under the %user-management section in the administration pages.  Check the checkbox behind the line \"access Blogger API\" for the roles that are allowed to use the Blogger API.</p>", array("%mod-config" => l(t("modules configuration page"), "admin/systems/modules"), "%user-management" => l(t("user management"), "admin/user/permission") ));
+      $output .= "<p>To install the Blogger API module, enable the module on the %mod-config.  Also make sure you have your permissions set correctly for accessing the Blogger API, the relevant settings can be found under the %user-management section in the administration pages.  Check the checkbox behind the line \"access Blogger API\" for the roles that are allowed to use the Blogger API.</p>";
       $output .= "<p>Once the API is enabled you can download one of the above mentioned Blogger API clients and get blogging.</p>";
       $output .= "<h3>Setup of the client</h3>";
-      $output .= strtr("<p>The Drupal page you need to call in order to connect using the Blogger API is <i>http://server/xmlrpc.php</i> where <i>server</i> is the URL of the site you want to post to.  As an example when posting to drupal.org, the account settings for %client-wbloggar would be: host: www.drupal.org (default = plant.blogger.com) and page: xmlrpc.php (default = /api/RPC2).</p>", array("%client-wbloggar" => "<a href=\"http://www.wbloggar.com/\">". t("w.bloggar") ."</a>" ));
+      $output .= "<p>The Drupal page you need to call in order to connect using the Blogger API is <i>http://server/xmlrpc.php</i> where <i>server</i> is the URL of the site you want to post to.  As an example when posting to drupal.org, the account settings for %client-w_bloggar would be: host: www.drupal.org (default = plant.blogger.com) and page: xmlrpc.php (default = /api/RPC2).</p>";
       $output .= "<p>You can't use remote authentication when posting using a Blogger API enabled client, even when you could use that to authenticate on the site itself.  You will have to use the site's local username, enter a password for that account, and then use that combination to post using the Blogger API client.</p>";
       $output .= "<h3>Notes and limitations</h3>";
       $output .= "<ul><li>The Blogger API contains an AppKey that is discarded in the Drupal Implementation.</li><li>The Blogger API does not allow for a title element. Our work around for this is either to use &lt;title&gt;&lt;/title&gt; tags in the body of your post or let the module create a title by inspecting the first few lines of the post body.</li><li>The publish parameter is always set to <i>1</i>.</li><li>When using the <i>getUserInfo</i> call, Drupal attempts to generate a first and last name from the Drupal username; no distinction is made internally</li><li><i>GetUsersBlogs</i> only returns one blog because unlike Blogger, Drupal only allows one blog per user.</li></ul>";
+      $output = t($output, array("%blogger-com" => "<a href=\"http://www.blogger.com/\">Blogger</a>", "%blogger_api" => "%blogger-api\">Blogger API</a>", "%client-radio" => "<a href=\"http://radio.userland.com/\">Radio</a>", "%client-blogbuddy" => "<a href=\"http://blogbuddy.sourceforge.net/\">BlogBuddy</a>", "%client-w_bloggar" => "<a href=\"http://www.wbloggar.com/\">w.bloggar</a>", "%client-textrouter" => "<a href=\"http://projects.kittle.info/tr/\">TextRouter</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">XML-RPC</a>", "%userland-software" => "<a href=\"http://www.userland.com/\">UserLand Software</a>", "%weblogs-com" => "<a href=\"http://www.weblogs.com/\">weblogs.com</a>", "%dist-auth" => l(t("distributed authentication"), "user/help"), "%echo-proj" => "<a href=\"http://www.intertwingly.net/wiki/pie/RoadMap\">". t("Echo project") ."</a>", "%bloggerapi-newpost" => "%blogger-api/xmlrpc_newPost.html\">blogger.newPost()*</a>", "%bloggerapi-editpost" => "%blogger-api/xmlrpc_editPost.html\">blogger.editPost()*</a>", "%bloggerapi-getuserblogs" => "%blogger-api/xmlrpc_getUserBlogs.html\">blogger.getUsersBlogs()*</a>", "%bloggerapi-getuserinfo" => "%blogger-api/xmlrpc_getUserInfo.html\">blogger.getUserInfo()*</a>", "%bloggerapi-gettemplate" => "%blogger-api/xmlrpc_getTemplate.html\">blogger.getTemplate()*</a>", "%bloggerapi-settemplate" => "%blogger-api/xmlrpc_setTemplate.html\">blogger.setTemplate()*</a>", "%mess-296" => "%blogger-dev/296\">blogger.getPost()*</a>", "%mess-225" => "%blogger-dev/225\">blogger.getRecentPosts()*</a>", "%mess-147" => "%blogger-dev/147\">blogger.deletePost()*</a>","%mod-config" => l(t("modules configuration page"), "admin/systems/modules"), "%user-management" => l(t("user management"), "admin/user/permission") ));
+      $output = strtr($output, array("%blogger-api" => "<a href=\"http://www.blogger.com/developers/api/1_docs","%blogger-dev" => "<a href=\"http://groups.yahoo.com/group/bloggerDev/message"));
       break;
     case 'admin/system/modules':
-      $output .= "Enables users to post using tools or applications that support the Blogger API.";
+      $output .= t("Enables users to post using tools or applications that support the Blogger API.");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 ?>
diff --git a/modules/book.module b/modules/book.module
index 7cf8b99b3aa3..808fc39f1ecd 100644
--- a/modules/book.module
+++ b/modules/book.module
@@ -852,26 +852,27 @@ function book_help($section = "admin/node/book/help") {
       $output .= "<p>The book organises content into a nested hierarchical structure. It is particularly good for manuals, Frequently Asked Questions (FAQs) and the like, allowing you to have chapters, sections, etc.</p>";
       $output .= "<p>A book is simply a collection of nodes that have been linked together. These nodes are usually of type <i>book page</i>, but you can insert nodes of any type into a book outline. Every node in the book has a <i>parent</i> node which  \"contains\" it. This is how book.module establishes its hierarchy. At any given level in the hierarchy, a book can contain many nodes. All these sibling nodes are sorted according to the <i>weight</i> that you give them.</p>";
       $output .= "<p>A book page is a special node type that allows you to embed PHP within the body of the page. This capability is only offerred to administrators, since malicious users could abuse this power. In addiiton, book pages contain a <i>log message</i> field which helps your users understand the motivation behind an edit of a book page. Each edited version of a book page is stored as a new revision of a node. This capability makes it easy to revert to an old version of a page, should that be desirable.</p>";
-      $output .= strtr("<p>Like other node types, book submissions and edits may be subject to moderation, depending on your configuration.  Similarly, books use %permissions to determine who may read and write to them. Only administrators are allowed to create new books, which are really just nodes whose parent is <i>&lt;root&gt;</i>. To include an existing node in your book, click on the \"administer\"-link in that node.  At the bottom of this administration page, click on the <i>edit book outline</i> button. This enables you to place the node wherever you'd like within the book hierarchy. To add a new node into your book, use the %create link.</p>", array("%permissions" => l(t("permissions"), "admin/user/permission"), "%create" => l(t("create book page"), "node/add/book") ));
-      $output .= strtr("<p>Administrators may review the hierarchy of their books by clicking on the %collaborative-book link in the adminstration pages. There, nodes may be edited, reorganized, removed from book, and deleted. This behavior may change in the future. When a parent node is deleted, it may leave behind child nodes.  These nodes are now <i>orphans</i>. Administrators should periodically %orphans-book and reaffiliate those pages as desired. Finally, administrators may also %export-book to a single, flat HTML page which is suitable for printing.</p>", array( "%collaborative-book" => l(t("collaborative book"), "admin/node/book"), "%orphans-book" => l(t("review their books for orphans"), "admin/node/book/orphan"), "%export-book" => l(t("export their books"), "book/print") ));
+      $output .= "<p>Like other node types, book submissions and edits may be subject to moderation, depending on your configuration.  Similarly, books use %permissions to determine who may read and write to them. Only administrators are allowed to create new books, which are really just nodes whose parent is <i>&lt;root&gt;</i>. To include an existing node in your book, click on the \"administer\"-link in that node.  At the bottom of this administration page, click on the <i>edit book outline</i> button. This enables you to place the node wherever you'd like within the book hierarchy. To add a new node into your book, use the %create link.</p>";
+      $output .= "<p>Administrators may review the hierarchy of their books by clicking on the %collaborative-book link in the adminstration pages. There, nodes may be edited, reorganized, removed from book, and deleted. This behavior may change in the future. When a parent node is deleted, it may leave behind child nodes.  These nodes are now <i>orphans</i>. Administrators should periodically %orphans-book and reaffiliate those pages as desired. Finally, administrators may also %export-book to a single, flat HTML page which is suitable for printing.</p>";
       $output .= "<h3>Maintaining a FAQ using a collaborative book</h3>";
       $output .= "<p>Collaborative books let you easily set up a Frequently Asked Questions (FAQ) section on your web site. The main benefit is that you don't have to write all the questions/answers by yourself - let the community do it for you!</p>";
-      $output .= strtr("<p>In order to set up the FAQ, you have to create a new book which will hold all your content. To do so, click on the %create link. Give it a thoughtful title, and body. A title like \"Estonia Travel - FAQ\" is nice. You may always edit these fields later. You will probably want to designate <i>&lt;root&gt;</i> as the parent of this page. Leave the <i>log message</i> and <i>type</i> fields blank for now. After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.</p>", array("%create" => l(t("create book page"), "node/add/book") ));
+      $output .= "<p>In order to set up the FAQ, you have to create a new book which will hold all your content. To do so, click on the %create link. Give it a thoughtful title, and body. A title like \"Estonia Travel - FAQ\" is nice. You may always edit these fields later. You will probably want to designate <i>&lt;root&gt;</i> as the parent of this page. Leave the <i>log message</i> and <i>type</i> fields blank for now. After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.</p>";
       $output .= "<p>Whenever you come across a post which you want to include in your FAQ, click on the <i>administer</i> link. Then click on the <i>edit book outline</i> button at the bottom of the page. Then place the relevant post wherever is most appropriate in your book by selecting a <i>parent</i>. Books are quite flexible. They can have sections like <i>Flying to Estonia</i>, <i>Eating in Estonia</i> and so on. As you get more experienced with the book module, you can reorganize posts in your book so that it stays organized.</p>";
-      $output .= strtr("<p>Notes:</p><ul><li>Any comments attached to those relevant posts which you designate as book pages will also be transported into your book. This is a great feature, since much wisdom is shared via comments. Remember that all future comments and edits will automatically be reflected in your book.</li><li>You may wish to edit the title of posts when adding them to your FAQ. This is done on the same page as the <i>Edit book outline</i> button. Clear titles improve navigability enormously.</li><li>Book pages may come from any content type (blog, story, page, etc.). If you are creating a post solely for inclusion in your book, then use the %create link.</li><li>If you don't see the <i>administer</i> link, then you probably have insufficient %permission.</li><li>If you want to get really fancy, note that books are one of the few content types which allow raw PHP in their <i>body</i>. So you've got lots of geeky possibilities there.</li></ul>", array("%create" => l(t("create book page"), "node/add/book"), "%permission" => l(t("permissions"), "admin/user/permission") ));
+      $output .= "<p>Notes:</p><ul><li>Any comments attached to those relevant posts which you designate as book pages will also be transported into your book. This is a great feature, since much wisdom is shared via comments. Remember that all future comments and edits will automatically be reflected in your book.</li><li>You may wish to edit the title of posts when adding them to your FAQ. This is done on the same page as the <i>Edit book outline</i> button. Clear titles improve navigability enormously.</li><li>Book pages may come from any content type (blog, story, page, etc.). If you are creating a post solely for inclusion in your book, then use the %create link.</li><li>If you don't see the <i>administer</i> link, then you probably have insufficient %permission.</li><li>If you want to get really fancy, note that books are one of the few content types which allow raw PHP in their <i>body</i>. So you've got lots of geeky possibilities there.</li></ul>";
+      $output = t($output, array("%permissions" => l(t("permissions"), "admin/user/permission"), "%create" => l(t("create book page"), "node/add/book"), "%collaborative-book" => l(t("collaborative book"), "admin/node/book"), "%orphans-book" => l(t("review their books for orphans"), "admin/node/book/orphan"), "%export-book" => l(t("export their books"), "book/print"), "%create" => l(t("create book page"), "node/add/book") ));
       break;
     case 'admin/system/modules':
-      $output = "Allows users to collaboratively author a book.";
+      $output = t("Allows users to collaboratively author a book.");
       break;
     case 'admin/node/book':
-      $output = "The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.";
+      $output = t("The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.");
       break;
     case 'admin/node/book/orphan':
-      $output = "Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book.  Such pages are refered to as 'orphan pages'.  On this page, administrators can review their books for orphans and reattach those pages as desired.";
+      $output = t("Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book.  Such pages are refered to as 'orphan pages'.  On this page, administrators can review their books for orphans and reattach those pages as desired.");
       break;
 
   }
 
-  return t($output);
+  return $output;
 }
 ?>
diff --git a/modules/book/book.module b/modules/book/book.module
index 7cf8b99b3aa3..808fc39f1ecd 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -852,26 +852,27 @@ function book_help($section = "admin/node/book/help") {
       $output .= "<p>The book organises content into a nested hierarchical structure. It is particularly good for manuals, Frequently Asked Questions (FAQs) and the like, allowing you to have chapters, sections, etc.</p>";
       $output .= "<p>A book is simply a collection of nodes that have been linked together. These nodes are usually of type <i>book page</i>, but you can insert nodes of any type into a book outline. Every node in the book has a <i>parent</i> node which  \"contains\" it. This is how book.module establishes its hierarchy. At any given level in the hierarchy, a book can contain many nodes. All these sibling nodes are sorted according to the <i>weight</i> that you give them.</p>";
       $output .= "<p>A book page is a special node type that allows you to embed PHP within the body of the page. This capability is only offerred to administrators, since malicious users could abuse this power. In addiiton, book pages contain a <i>log message</i> field which helps your users understand the motivation behind an edit of a book page. Each edited version of a book page is stored as a new revision of a node. This capability makes it easy to revert to an old version of a page, should that be desirable.</p>";
-      $output .= strtr("<p>Like other node types, book submissions and edits may be subject to moderation, depending on your configuration.  Similarly, books use %permissions to determine who may read and write to them. Only administrators are allowed to create new books, which are really just nodes whose parent is <i>&lt;root&gt;</i>. To include an existing node in your book, click on the \"administer\"-link in that node.  At the bottom of this administration page, click on the <i>edit book outline</i> button. This enables you to place the node wherever you'd like within the book hierarchy. To add a new node into your book, use the %create link.</p>", array("%permissions" => l(t("permissions"), "admin/user/permission"), "%create" => l(t("create book page"), "node/add/book") ));
-      $output .= strtr("<p>Administrators may review the hierarchy of their books by clicking on the %collaborative-book link in the adminstration pages. There, nodes may be edited, reorganized, removed from book, and deleted. This behavior may change in the future. When a parent node is deleted, it may leave behind child nodes.  These nodes are now <i>orphans</i>. Administrators should periodically %orphans-book and reaffiliate those pages as desired. Finally, administrators may also %export-book to a single, flat HTML page which is suitable for printing.</p>", array( "%collaborative-book" => l(t("collaborative book"), "admin/node/book"), "%orphans-book" => l(t("review their books for orphans"), "admin/node/book/orphan"), "%export-book" => l(t("export their books"), "book/print") ));
+      $output .= "<p>Like other node types, book submissions and edits may be subject to moderation, depending on your configuration.  Similarly, books use %permissions to determine who may read and write to them. Only administrators are allowed to create new books, which are really just nodes whose parent is <i>&lt;root&gt;</i>. To include an existing node in your book, click on the \"administer\"-link in that node.  At the bottom of this administration page, click on the <i>edit book outline</i> button. This enables you to place the node wherever you'd like within the book hierarchy. To add a new node into your book, use the %create link.</p>";
+      $output .= "<p>Administrators may review the hierarchy of their books by clicking on the %collaborative-book link in the adminstration pages. There, nodes may be edited, reorganized, removed from book, and deleted. This behavior may change in the future. When a parent node is deleted, it may leave behind child nodes.  These nodes are now <i>orphans</i>. Administrators should periodically %orphans-book and reaffiliate those pages as desired. Finally, administrators may also %export-book to a single, flat HTML page which is suitable for printing.</p>";
       $output .= "<h3>Maintaining a FAQ using a collaborative book</h3>";
       $output .= "<p>Collaborative books let you easily set up a Frequently Asked Questions (FAQ) section on your web site. The main benefit is that you don't have to write all the questions/answers by yourself - let the community do it for you!</p>";
-      $output .= strtr("<p>In order to set up the FAQ, you have to create a new book which will hold all your content. To do so, click on the %create link. Give it a thoughtful title, and body. A title like \"Estonia Travel - FAQ\" is nice. You may always edit these fields later. You will probably want to designate <i>&lt;root&gt;</i> as the parent of this page. Leave the <i>log message</i> and <i>type</i> fields blank for now. After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.</p>", array("%create" => l(t("create book page"), "node/add/book") ));
+      $output .= "<p>In order to set up the FAQ, you have to create a new book which will hold all your content. To do so, click on the %create link. Give it a thoughtful title, and body. A title like \"Estonia Travel - FAQ\" is nice. You may always edit these fields later. You will probably want to designate <i>&lt;root&gt;</i> as the parent of this page. Leave the <i>log message</i> and <i>type</i> fields blank for now. After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.</p>";
       $output .= "<p>Whenever you come across a post which you want to include in your FAQ, click on the <i>administer</i> link. Then click on the <i>edit book outline</i> button at the bottom of the page. Then place the relevant post wherever is most appropriate in your book by selecting a <i>parent</i>. Books are quite flexible. They can have sections like <i>Flying to Estonia</i>, <i>Eating in Estonia</i> and so on. As you get more experienced with the book module, you can reorganize posts in your book so that it stays organized.</p>";
-      $output .= strtr("<p>Notes:</p><ul><li>Any comments attached to those relevant posts which you designate as book pages will also be transported into your book. This is a great feature, since much wisdom is shared via comments. Remember that all future comments and edits will automatically be reflected in your book.</li><li>You may wish to edit the title of posts when adding them to your FAQ. This is done on the same page as the <i>Edit book outline</i> button. Clear titles improve navigability enormously.</li><li>Book pages may come from any content type (blog, story, page, etc.). If you are creating a post solely for inclusion in your book, then use the %create link.</li><li>If you don't see the <i>administer</i> link, then you probably have insufficient %permission.</li><li>If you want to get really fancy, note that books are one of the few content types which allow raw PHP in their <i>body</i>. So you've got lots of geeky possibilities there.</li></ul>", array("%create" => l(t("create book page"), "node/add/book"), "%permission" => l(t("permissions"), "admin/user/permission") ));
+      $output .= "<p>Notes:</p><ul><li>Any comments attached to those relevant posts which you designate as book pages will also be transported into your book. This is a great feature, since much wisdom is shared via comments. Remember that all future comments and edits will automatically be reflected in your book.</li><li>You may wish to edit the title of posts when adding them to your FAQ. This is done on the same page as the <i>Edit book outline</i> button. Clear titles improve navigability enormously.</li><li>Book pages may come from any content type (blog, story, page, etc.). If you are creating a post solely for inclusion in your book, then use the %create link.</li><li>If you don't see the <i>administer</i> link, then you probably have insufficient %permission.</li><li>If you want to get really fancy, note that books are one of the few content types which allow raw PHP in their <i>body</i>. So you've got lots of geeky possibilities there.</li></ul>";
+      $output = t($output, array("%permissions" => l(t("permissions"), "admin/user/permission"), "%create" => l(t("create book page"), "node/add/book"), "%collaborative-book" => l(t("collaborative book"), "admin/node/book"), "%orphans-book" => l(t("review their books for orphans"), "admin/node/book/orphan"), "%export-book" => l(t("export their books"), "book/print"), "%create" => l(t("create book page"), "node/add/book") ));
       break;
     case 'admin/system/modules':
-      $output = "Allows users to collaboratively author a book.";
+      $output = t("Allows users to collaboratively author a book.");
       break;
     case 'admin/node/book':
-      $output = "The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.";
+      $output = t("The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.");
       break;
     case 'admin/node/book/orphan':
-      $output = "Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book.  Such pages are refered to as 'orphan pages'.  On this page, administrators can review their books for orphans and reattach those pages as desired.";
+      $output = t("Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book.  Such pages are refered to as 'orphan pages'.  On this page, administrators can review their books for orphans and reattach those pages as desired.");
       break;
 
   }
 
-  return t($output);
+  return $output;
 }
 ?>
diff --git a/modules/comment.module b/modules/comment.module
index caaca8f09647..b8429670dc87 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -19,12 +19,12 @@ function comment_help($section = "admin/comment/help") {
       $output .= "<li><b>Expanded</b> -- Displays the title and text for each post.</li>";
       $output .= "<li><b>Collapsed</b> -- Displays only the title for each post.</li>";
       $output .= "</ul>";
-      $output .= strtr("<p>When a user chooses <i>save settings</i>, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in %comment-config.</p>",array("%comment-config" => l(t("site configuration &raquo; modules &raquo; comment"), "admin/system/modules/comment") ));
+      $output .= "<p>When a user chooses <i>save settings</i>, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in %comment-config.</p>";
       $output .= "<p>NOTE: When comment moderation is enabled, users will have another control panel option to control thresholds (see below).</p>";
 
       $output .= "<h3>Additional comment configurations</h3>";
-      $output .= strtr("<p>Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with content. To prevent a single user from spamming the web site with too many comments, administrators can set a comment throttle in %site-config under <i>Submission settings</i>.</p>", array("%site-config" => l(t("site configuration"), "admin/system") ));
-      $output .= strtr("<p>Administrators can control access to various comment module functions through %user-permissions. Know that in a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator.</p>", array("%user-permissions" => l(t("user management &raquo; user permissions"), "admin/user/permission") ));
+      $output .= "<p>Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with content. To prevent a single user from spamming the web site with too many comments, administrators can set a comment throttle in %site-config under <i>Submission settings</i>.</p>";
+      $output .= "<p>Administrators can control access to various comment module functions through %user-permissions. Know that in a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator.</p>";
       $output .= "<p>The following permissions can be enabled for anonymous users, authenticated users, or any other user roles that the administrator chooses to define:</p>";
       $output .= "<ul>";
       $output .= "<li><b>Access comments</b> -- Allows users to view comments.</li>";
@@ -38,17 +38,17 @@ function comment_help($section = "admin/comment/help") {
       $output .= "<p>Drupal provides specific features to inform site members when new comments have been posted:</p>";
       $output .= "<ul>";
       $output .= "<li>On the home page, Drupal displays the total number of comments attached to each node, and tracks comments read by individual site members. Members which have logged in will see a notice accompanying nodes which contain comments that they have not read.</li>";
-      $output .= strtr("<li>The <i>tracker</i> module, disabled by default, displays all the site's recent posts. When logged in, members will find a %tracker in their user information block with a link to the %tracker-recent page. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red <i>new</i> label beside the text of unread comments.</li>",array("%tracker" => l(t("view recent posts"), "tracker"), "%tracker-recent" => l(t("Recent activity"), "tracker") ));
-      $output .= strtr("<li>Some administrators may want to %download-notify, install and configure the notify module. Users can then request that Drupal send them an email when new comments are posted (the notify module requires that cron.php be configured properly).</li>", array("%download-notify" => "<a href=\"http://drupal.org/node/view/68\">". t("download") ."</a>" ));
+      $output .= "<li>The <i>tracker</i> module, disabled by default, displays all the site's recent posts. When logged in, members will find a %tracker in their user information block with a link to the %tracker-recent page. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red <i>new</i> label beside the text of unread comments.</li>";
+      $output .= "<li>Some administrators may want to %download-notify, install and configure the notify module. Users can then request that Drupal send them an email when new comments are posted (the notify module requires that cron.php be configured properly).</li>";
       $output .= "</ul>";
 
       $output .= "<h3>Comment moderation</h3>";
       $output .= "<p>On sites with active commenting from users, the administrator can turn over comment moderation to the community. </p>";
       $output .= "<p>With comment moderation, each comment is automatically assigned an initial rating. As users read comments, they can apply a vote which affects the comment rating. At the same time, users have an additional option in the control panel which allows them to set a threshold for the comments they wish to view. Those comments with ratings lower than the set threshold will not be shown.</p>";
-      $output .= strtr("<p>To enable moderation, the administrator must grant %permission permissions. Then, a number of options in %comment-moderation must be configured.</p>", array("%permission" => l(t("moderate comments"), "admin/user/permissions"), "%comment-moderation" => l(t("comment management &raquo; comment moderation"), "admin/comment/moderation") ));
+      $output .= "<p>To enable moderation, the administrator must grant %permission permissions. Then, a number of options in %comment-moderation must be configured.</p>";
 
       $output .= "<h4>Moderation votes</h4>";
-      $output .= strtr("<p>The first step is to create moderation labels which allow users to rate a comment.  Go to %comment-votes. In the <i>vote</i> field, enter the textual labels which users will see when casting their votes. Some examples are</p>", array("%comment-votes" => l(t("comment management &raquo; comment moderation &raquo; votes"), "admin/comment/moderation/votes") ));
+      $output .= "<p>The first step is to create moderation labels which allow users to rate a comment.  Go to %comment-votes. In the <i>vote</i> field, enter the textual labels which users will see when casting their votes. Some examples are</p>";
       $output .= "<ul>";
       $output .= "<li>Excellent +3</li>";
       $output .= "<li>Insightful +2</li>";
@@ -62,24 +62,64 @@ function comment_help($section = "admin/comment/help") {
 
       $output .= "<h4>Moderator vote/values matrix</h4>";
 
-      $output .= strtr("<p>Next go to %comment-matrix.  Enter the values for the vote labels for each permission role in the vote matrix. The values entered here will be used to create the rating for each comment.</p>", array("%comment-matrix" => l(t("comment management &raquo; comment moderation &raquo; matrix"), "admin/comment/moderation/,atrix") ));
+      $output .= "<p>Next go to %comment-matrix.  Enter the values for the vote labels for each permission role in the vote matrix. The values entered here will be used to create the rating for each comment.</p>";
       $output .= "<p>NOTE: Comment ratings are calculated by averaging user votes with the initial rating.</p>";
-      $output .= "<h4>Creating comment thresholds</h4>
-<p>In <i>comment management &raquo; comment moderation &raquo; thresholds</i>, you'll have to create some comment thresholds to make the comment rating system useful. When comment moderation is enabled and the thresholds are created, users will find another comment control panel option for selecting thresholds. They'll use the thresholds you enter here to filter out comments with low ratings. Consequently, you'll probably want to create more than one threshold to give users some flexibility in filtering comments.</p>
-<p>When creating the thresholds, note that the <i>Minimum score</i> is asking you for the lowest rating that a comment can have in order to be displayed.</p>
-<p>To see a common example of how thresholds work, you might visit <a href=\"http://slashdot.org/\">Slashdot</a> and view one of their comment boards associated with a story. You can reset the thresholds in their comment control panel.</p>
-
-<h4>Initial comment scores</h4>
-<p>Finally, you may want to enter some <i>initial comment scores</i>. In <i>comment management &raquo; initial comment scores </i>you can assign a beginning rating for all comments posted by a particular permission role. If you do not assign any initial scores, Drupal will assign a rating of <b>0</b> as the default.</p>";
-    break;
+      $output .= "<h4>Creating comment thresholds</h4>";
+      $output .= "<p>In %comment-thresholds, you'll have to create some comment thresholds to make the comment rating system useful. When comment moderation is enabled and the thresholds are created, users will find another comment control panel option for selecting their thresholds. They'll use the thresholds you enter here to filter out comments with low ratings. Consequently, you'll probably want to create more than one threshold to give users some flexibility in filtering comments.</p>";
+      $output .= "<p>When creating the thresholds, note that the <i>Minimum score</i> is asking you for the lowest rating that a comment can have in order to be displayed.</p>";
+      $output .= "<p>To see a common example of how thresholds work, you might visit %slashdot and view one of their comment boards associated with a story. You can reset the thresholds in their comment control panel.</p>";
+
+      $output .= "<h4>Initial comment scores</h4>";
+      $output .= "<p>Finally, you may want to enter some <i>initial comment scores</i>. In %comment-inital you can assign a beginning rating for all comments posted by a particular permission role. If you do not assign any initial scores, Drupal will assign a rating of <b>0</b> as the default.</p>";
+      $output = t($output, array("%comment-config" => l(t("site configuration &raquo; modules &raquo; comment"), "admin/system/modules/comment"), "%site-config" => l(t("site configuration"), "admin/system"), "%user-permissions" => l(t("user management &raquo; user permissions"), "admin/user/permission"), "%tracker" => l(t("view recent posts"), "tracker"), "%tracker-recent" => l(t("Recent activity"), "tracker"), "%download-notify" => "<a href=\"http://drupal.org/node/view/68\">". t("download") ."</a>", "%permission" => l(t("moderate comments"), "admin/user/permissions"), "%comment-moderation" => l(t("comment management &raquo; comment moderation"), "admin/comment/moderation"), "%comment-votes" => l(t("comment management &raquo; comment moderation &raquo; votes"), "admin/comment/moderation/votes"), "%comment-matrix" => l(t("comment management &raquo; comment moderation &raquo; matrix"), "admin/comment/moderation/matrix"), "%comment-thresholds" => l(t("comment management &raquo; comment moderation %raquo; thresholds"), "admin/comment/moderation/thresholds"), "%slashdot" => "\<a href=\"http://slashdot.org/\">Slashdot<a>", "%comment-inital" => l(t("comment management &raquo; initial comment scores"), "admin/comments/moderation/roles") ));
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables user to comment on content (nodes).");
+      break;
+    case 'admin/system/modules/comment':
+      $output = t("Comments can be attached to any node. Below are the settings for comments. The display comes in two types, a \"flat list\" where everything is flush to the left side, and comments come in cronological order, and a \"threaded list\" where comments to other comments are placed immediately below and slightly indented forming an outline. They also come in two styles: \"expanded\", where you see both the title and the contents, and \"collapsed\" where you only see the title. To set the default threshold you first have to set up thresholds in the %threshold area. Preview comment forces a user to look at their comment by clicking on a \"Preview\" button before they can actually add the comment. If \"New comment form\" is enabled then at the bottom of every comment page there will be a form too add a new comment.", array("%threshold" => l(t("comment management &raquo; comment moderation &raquo; thresholds"), "admin/comment/moderation/filters")));
+      break;
+    case 'admin/comment':
+      $output = t("Comments let users give feedback to content authors.  Here you may review/approve/deny recent comments, and configure moderation if desired.");
+      break;
+    case 'admin/comment/comments':
+      $output = t("Click on %nup to see your latest comments, or %queue\ to approve new comments.", array("%nup" => l(t("new or updated comments"), "admin/comment/0"), "%queue" => l(t("comment approval queue"), "admin/comment/1")));
+      break;
+    case 'admin/comment/comments/0':
+      $output = t("Below is a list of the latest comments posted your site. Click on a subject to see the comment, the author's name to edit the author's user information , \"edit comment\" to edit the comment, and \"delete comment\" to remove the comment.");
+      break;
+    case 'admin/comment/comments/1':
+      $output = t("Below is a list of the comments posted to your site that need approval. To approve a comment click on <b>\"edit comment\"</b> and then change it's <b>moderation status</b> to Approved.<br />Click on a subject to see the comment, the author's name to edit the author's user information, \"edit comment\" to edit the comment, and \"delete comment\" to remove the comment.");
+      break;
+    case 'admin/comments/moderation':
+      $output = t("If you have a get a lot of comments, you can enable comment moderation. Once moderation is enabled users can vote on a comment based on dropdown menus. %votes sets up the names in the dropdown menu, and the order in which they appear, using weights. %matrix sets up the value of each user's vote, and %threshold sets up the levels at which a comment will be displayed.", array("%votes" => l(t("Votes"), "admin/comment/moderation/votes"), "%matrix" => l(t("Matrix"),"admin/comment/moderation/matrix"), "%threshold" => l(t("threshold"),"admin/comment/moderation/threshold")));
+      break;
+    case 'admin/comment/moderation/votes':
+      $output = t("Here is where you setup the names of each type of vote. Weight lets you set the order of the drop down menu. Click <b>edit</b> to edit a current vote weight.<br />Notes: <ul><li>you can have more than one type with the same name. The system does not protect you from this.</li><li>To <b>delete</b> a name/weight combiniation go to the <b>edit</b> area.</li></ul>");
+      break;
+    case 'admin/comment/moderation/matrix':
+      $output = t("Here is where you assign a value to each item in the dropdown menu. This value is added to the vote total, which is then divided by the number of users who have voted and rounded off to the nearest integer.<br />Notes:<ul><li>In order to use comment moderation, every text box on this page should be populated.</li><li>You must assign the <b>moderate comments</b> permission to at least one role in order to use this page.</li><li>Every box not filled in will have a value of zero, which will have the effect of <b>lowering</b> a comments over all score.</li></ul>");
+      break;
+    case 'admin/comment/moderation/filters':
+      $output = t("<i>Optional</i> Here you can setup the name and minimum \"cut off\" score to help your users hide comments that they don't want too see. These thresholds appear in the Comment Control Panel. Click \"edit\" to edit the values of an already exsisting threashold. To <b>delete</b> a threshold click on \"edit\".");
+      break;
+    case 'admin/comment/moderation/roles':
+      $output = t("Here you can setup the <b>initial</b> vote value of a comment posted by each user role. This value is used before any other users vote on the comment.<br />Note: Blank entries are valued at zero");
+      break;
+    case ' admin/comment/search':
+      $output = t("Enter a simple pattern ( '*' maybe used as a wildcard match) to search for a comment.  For example, one may search for 'br' and Drupal might return 'bread brakers', 'our daily bread' and 'brenda'.");
+      break;
   }
-  return t($output);
+  return $output;
 }
 
 function comment_system($field) {
-  $system["description"] = t("Enables user to comment on content (nodes).");
-  $system["admin_help"] = t("Comments can be attached to any node. Below are the settings for comments. The display comes in two types, a \"flat list\" where everything is flush to the left side, and comments come in cronological order, and a \"threaded list\" where comments to other comments are placed immediately below the orignal, and slightly indented forming an outline of comments. They also come in two styles: \"expanded\", where you get to see both the title and the contents, and \"collapsed\" where you only see the titles. To set the default threshold you first have to set up thresholds in the <a href=\"%threshold\">comment management &gt;&gt; comment moderation &gt;&gt; thresholds</a> area. Preview comment forces a user to click on a \"Preview\" button so they can see what their comment will look like before they can actually add the comment to the system. If \"New comment form\" is enabled then at the bottom of every comment page there will be a form too add a new comment.", array("%threshold" => url("admin/comment/moderation/filters")));
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = comment_help("admin/system/modules"); }
+  else if ($field == "admin_help") { $output = comment_help("admin/system/modules/comment"); };
+
+  return $output;
 }
 
 function comment_settings() {
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index caaca8f09647..b8429670dc87 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -19,12 +19,12 @@ function comment_help($section = "admin/comment/help") {
       $output .= "<li><b>Expanded</b> -- Displays the title and text for each post.</li>";
       $output .= "<li><b>Collapsed</b> -- Displays only the title for each post.</li>";
       $output .= "</ul>";
-      $output .= strtr("<p>When a user chooses <i>save settings</i>, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in %comment-config.</p>",array("%comment-config" => l(t("site configuration &raquo; modules &raquo; comment"), "admin/system/modules/comment") ));
+      $output .= "<p>When a user chooses <i>save settings</i>, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in %comment-config.</p>";
       $output .= "<p>NOTE: When comment moderation is enabled, users will have another control panel option to control thresholds (see below).</p>";
 
       $output .= "<h3>Additional comment configurations</h3>";
-      $output .= strtr("<p>Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with content. To prevent a single user from spamming the web site with too many comments, administrators can set a comment throttle in %site-config under <i>Submission settings</i>.</p>", array("%site-config" => l(t("site configuration"), "admin/system") ));
-      $output .= strtr("<p>Administrators can control access to various comment module functions through %user-permissions. Know that in a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator.</p>", array("%user-permissions" => l(t("user management &raquo; user permissions"), "admin/user/permission") ));
+      $output .= "<p>Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with content. To prevent a single user from spamming the web site with too many comments, administrators can set a comment throttle in %site-config under <i>Submission settings</i>.</p>";
+      $output .= "<p>Administrators can control access to various comment module functions through %user-permissions. Know that in a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator.</p>";
       $output .= "<p>The following permissions can be enabled for anonymous users, authenticated users, or any other user roles that the administrator chooses to define:</p>";
       $output .= "<ul>";
       $output .= "<li><b>Access comments</b> -- Allows users to view comments.</li>";
@@ -38,17 +38,17 @@ function comment_help($section = "admin/comment/help") {
       $output .= "<p>Drupal provides specific features to inform site members when new comments have been posted:</p>";
       $output .= "<ul>";
       $output .= "<li>On the home page, Drupal displays the total number of comments attached to each node, and tracks comments read by individual site members. Members which have logged in will see a notice accompanying nodes which contain comments that they have not read.</li>";
-      $output .= strtr("<li>The <i>tracker</i> module, disabled by default, displays all the site's recent posts. When logged in, members will find a %tracker in their user information block with a link to the %tracker-recent page. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red <i>new</i> label beside the text of unread comments.</li>",array("%tracker" => l(t("view recent posts"), "tracker"), "%tracker-recent" => l(t("Recent activity"), "tracker") ));
-      $output .= strtr("<li>Some administrators may want to %download-notify, install and configure the notify module. Users can then request that Drupal send them an email when new comments are posted (the notify module requires that cron.php be configured properly).</li>", array("%download-notify" => "<a href=\"http://drupal.org/node/view/68\">". t("download") ."</a>" ));
+      $output .= "<li>The <i>tracker</i> module, disabled by default, displays all the site's recent posts. When logged in, members will find a %tracker in their user information block with a link to the %tracker-recent page. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red <i>new</i> label beside the text of unread comments.</li>";
+      $output .= "<li>Some administrators may want to %download-notify, install and configure the notify module. Users can then request that Drupal send them an email when new comments are posted (the notify module requires that cron.php be configured properly).</li>";
       $output .= "</ul>";
 
       $output .= "<h3>Comment moderation</h3>";
       $output .= "<p>On sites with active commenting from users, the administrator can turn over comment moderation to the community. </p>";
       $output .= "<p>With comment moderation, each comment is automatically assigned an initial rating. As users read comments, they can apply a vote which affects the comment rating. At the same time, users have an additional option in the control panel which allows them to set a threshold for the comments they wish to view. Those comments with ratings lower than the set threshold will not be shown.</p>";
-      $output .= strtr("<p>To enable moderation, the administrator must grant %permission permissions. Then, a number of options in %comment-moderation must be configured.</p>", array("%permission" => l(t("moderate comments"), "admin/user/permissions"), "%comment-moderation" => l(t("comment management &raquo; comment moderation"), "admin/comment/moderation") ));
+      $output .= "<p>To enable moderation, the administrator must grant %permission permissions. Then, a number of options in %comment-moderation must be configured.</p>";
 
       $output .= "<h4>Moderation votes</h4>";
-      $output .= strtr("<p>The first step is to create moderation labels which allow users to rate a comment.  Go to %comment-votes. In the <i>vote</i> field, enter the textual labels which users will see when casting their votes. Some examples are</p>", array("%comment-votes" => l(t("comment management &raquo; comment moderation &raquo; votes"), "admin/comment/moderation/votes") ));
+      $output .= "<p>The first step is to create moderation labels which allow users to rate a comment.  Go to %comment-votes. In the <i>vote</i> field, enter the textual labels which users will see when casting their votes. Some examples are</p>";
       $output .= "<ul>";
       $output .= "<li>Excellent +3</li>";
       $output .= "<li>Insightful +2</li>";
@@ -62,24 +62,64 @@ function comment_help($section = "admin/comment/help") {
 
       $output .= "<h4>Moderator vote/values matrix</h4>";
 
-      $output .= strtr("<p>Next go to %comment-matrix.  Enter the values for the vote labels for each permission role in the vote matrix. The values entered here will be used to create the rating for each comment.</p>", array("%comment-matrix" => l(t("comment management &raquo; comment moderation &raquo; matrix"), "admin/comment/moderation/,atrix") ));
+      $output .= "<p>Next go to %comment-matrix.  Enter the values for the vote labels for each permission role in the vote matrix. The values entered here will be used to create the rating for each comment.</p>";
       $output .= "<p>NOTE: Comment ratings are calculated by averaging user votes with the initial rating.</p>";
-      $output .= "<h4>Creating comment thresholds</h4>
-<p>In <i>comment management &raquo; comment moderation &raquo; thresholds</i>, you'll have to create some comment thresholds to make the comment rating system useful. When comment moderation is enabled and the thresholds are created, users will find another comment control panel option for selecting thresholds. They'll use the thresholds you enter here to filter out comments with low ratings. Consequently, you'll probably want to create more than one threshold to give users some flexibility in filtering comments.</p>
-<p>When creating the thresholds, note that the <i>Minimum score</i> is asking you for the lowest rating that a comment can have in order to be displayed.</p>
-<p>To see a common example of how thresholds work, you might visit <a href=\"http://slashdot.org/\">Slashdot</a> and view one of their comment boards associated with a story. You can reset the thresholds in their comment control panel.</p>
-
-<h4>Initial comment scores</h4>
-<p>Finally, you may want to enter some <i>initial comment scores</i>. In <i>comment management &raquo; initial comment scores </i>you can assign a beginning rating for all comments posted by a particular permission role. If you do not assign any initial scores, Drupal will assign a rating of <b>0</b> as the default.</p>";
-    break;
+      $output .= "<h4>Creating comment thresholds</h4>";
+      $output .= "<p>In %comment-thresholds, you'll have to create some comment thresholds to make the comment rating system useful. When comment moderation is enabled and the thresholds are created, users will find another comment control panel option for selecting their thresholds. They'll use the thresholds you enter here to filter out comments with low ratings. Consequently, you'll probably want to create more than one threshold to give users some flexibility in filtering comments.</p>";
+      $output .= "<p>When creating the thresholds, note that the <i>Minimum score</i> is asking you for the lowest rating that a comment can have in order to be displayed.</p>";
+      $output .= "<p>To see a common example of how thresholds work, you might visit %slashdot and view one of their comment boards associated with a story. You can reset the thresholds in their comment control panel.</p>";
+
+      $output .= "<h4>Initial comment scores</h4>";
+      $output .= "<p>Finally, you may want to enter some <i>initial comment scores</i>. In %comment-inital you can assign a beginning rating for all comments posted by a particular permission role. If you do not assign any initial scores, Drupal will assign a rating of <b>0</b> as the default.</p>";
+      $output = t($output, array("%comment-config" => l(t("site configuration &raquo; modules &raquo; comment"), "admin/system/modules/comment"), "%site-config" => l(t("site configuration"), "admin/system"), "%user-permissions" => l(t("user management &raquo; user permissions"), "admin/user/permission"), "%tracker" => l(t("view recent posts"), "tracker"), "%tracker-recent" => l(t("Recent activity"), "tracker"), "%download-notify" => "<a href=\"http://drupal.org/node/view/68\">". t("download") ."</a>", "%permission" => l(t("moderate comments"), "admin/user/permissions"), "%comment-moderation" => l(t("comment management &raquo; comment moderation"), "admin/comment/moderation"), "%comment-votes" => l(t("comment management &raquo; comment moderation &raquo; votes"), "admin/comment/moderation/votes"), "%comment-matrix" => l(t("comment management &raquo; comment moderation &raquo; matrix"), "admin/comment/moderation/matrix"), "%comment-thresholds" => l(t("comment management &raquo; comment moderation %raquo; thresholds"), "admin/comment/moderation/thresholds"), "%slashdot" => "\<a href=\"http://slashdot.org/\">Slashdot<a>", "%comment-inital" => l(t("comment management &raquo; initial comment scores"), "admin/comments/moderation/roles") ));
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables user to comment on content (nodes).");
+      break;
+    case 'admin/system/modules/comment':
+      $output = t("Comments can be attached to any node. Below are the settings for comments. The display comes in two types, a \"flat list\" where everything is flush to the left side, and comments come in cronological order, and a \"threaded list\" where comments to other comments are placed immediately below and slightly indented forming an outline. They also come in two styles: \"expanded\", where you see both the title and the contents, and \"collapsed\" where you only see the title. To set the default threshold you first have to set up thresholds in the %threshold area. Preview comment forces a user to look at their comment by clicking on a \"Preview\" button before they can actually add the comment. If \"New comment form\" is enabled then at the bottom of every comment page there will be a form too add a new comment.", array("%threshold" => l(t("comment management &raquo; comment moderation &raquo; thresholds"), "admin/comment/moderation/filters")));
+      break;
+    case 'admin/comment':
+      $output = t("Comments let users give feedback to content authors.  Here you may review/approve/deny recent comments, and configure moderation if desired.");
+      break;
+    case 'admin/comment/comments':
+      $output = t("Click on %nup to see your latest comments, or %queue\ to approve new comments.", array("%nup" => l(t("new or updated comments"), "admin/comment/0"), "%queue" => l(t("comment approval queue"), "admin/comment/1")));
+      break;
+    case 'admin/comment/comments/0':
+      $output = t("Below is a list of the latest comments posted your site. Click on a subject to see the comment, the author's name to edit the author's user information , \"edit comment\" to edit the comment, and \"delete comment\" to remove the comment.");
+      break;
+    case 'admin/comment/comments/1':
+      $output = t("Below is a list of the comments posted to your site that need approval. To approve a comment click on <b>\"edit comment\"</b> and then change it's <b>moderation status</b> to Approved.<br />Click on a subject to see the comment, the author's name to edit the author's user information, \"edit comment\" to edit the comment, and \"delete comment\" to remove the comment.");
+      break;
+    case 'admin/comments/moderation':
+      $output = t("If you have a get a lot of comments, you can enable comment moderation. Once moderation is enabled users can vote on a comment based on dropdown menus. %votes sets up the names in the dropdown menu, and the order in which they appear, using weights. %matrix sets up the value of each user's vote, and %threshold sets up the levels at which a comment will be displayed.", array("%votes" => l(t("Votes"), "admin/comment/moderation/votes"), "%matrix" => l(t("Matrix"),"admin/comment/moderation/matrix"), "%threshold" => l(t("threshold"),"admin/comment/moderation/threshold")));
+      break;
+    case 'admin/comment/moderation/votes':
+      $output = t("Here is where you setup the names of each type of vote. Weight lets you set the order of the drop down menu. Click <b>edit</b> to edit a current vote weight.<br />Notes: <ul><li>you can have more than one type with the same name. The system does not protect you from this.</li><li>To <b>delete</b> a name/weight combiniation go to the <b>edit</b> area.</li></ul>");
+      break;
+    case 'admin/comment/moderation/matrix':
+      $output = t("Here is where you assign a value to each item in the dropdown menu. This value is added to the vote total, which is then divided by the number of users who have voted and rounded off to the nearest integer.<br />Notes:<ul><li>In order to use comment moderation, every text box on this page should be populated.</li><li>You must assign the <b>moderate comments</b> permission to at least one role in order to use this page.</li><li>Every box not filled in will have a value of zero, which will have the effect of <b>lowering</b> a comments over all score.</li></ul>");
+      break;
+    case 'admin/comment/moderation/filters':
+      $output = t("<i>Optional</i> Here you can setup the name and minimum \"cut off\" score to help your users hide comments that they don't want too see. These thresholds appear in the Comment Control Panel. Click \"edit\" to edit the values of an already exsisting threashold. To <b>delete</b> a threshold click on \"edit\".");
+      break;
+    case 'admin/comment/moderation/roles':
+      $output = t("Here you can setup the <b>initial</b> vote value of a comment posted by each user role. This value is used before any other users vote on the comment.<br />Note: Blank entries are valued at zero");
+      break;
+    case ' admin/comment/search':
+      $output = t("Enter a simple pattern ( '*' maybe used as a wildcard match) to search for a comment.  For example, one may search for 'br' and Drupal might return 'bread brakers', 'our daily bread' and 'brenda'.");
+      break;
   }
-  return t($output);
+  return $output;
 }
 
 function comment_system($field) {
-  $system["description"] = t("Enables user to comment on content (nodes).");
-  $system["admin_help"] = t("Comments can be attached to any node. Below are the settings for comments. The display comes in two types, a \"flat list\" where everything is flush to the left side, and comments come in cronological order, and a \"threaded list\" where comments to other comments are placed immediately below the orignal, and slightly indented forming an outline of comments. They also come in two styles: \"expanded\", where you get to see both the title and the contents, and \"collapsed\" where you only see the titles. To set the default threshold you first have to set up thresholds in the <a href=\"%threshold\">comment management &gt;&gt; comment moderation &gt;&gt; thresholds</a> area. Preview comment forces a user to click on a \"Preview\" button so they can see what their comment will look like before they can actually add the comment to the system. If \"New comment form\" is enabled then at the bottom of every comment page there will be a form too add a new comment.", array("%threshold" => url("admin/comment/moderation/filters")));
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = comment_help("admin/system/modules"); }
+  else if ($field == "admin_help") { $output = comment_help("admin/system/modules/comment"); };
+
+  return $output;
 }
 
 function comment_settings() {
diff --git a/modules/drupal.module b/modules/drupal.module
index 6d3d12a79074..926b1a6948e0 100644
--- a/modules/drupal.module
+++ b/modules/drupal.module
@@ -8,20 +8,21 @@ function drupal_help($section = "admin/drupal/help") {
     case 'admin/help':
     case 'admin/drupal/help':
       $output .= "<p>The \"Drupal\" module features a capability whereby other drupal sites  may <i>call home</i> to report their existence.  In turn, this enables a pod of Drupal sites to find, cooperate and advertise each other.</p>";
-      $output .= strtr("<p>Currently, the main application of this feature is the %drupal-sites.  By default, fresh Drupal installations can use %Drupal as their <i>directory server</i> and report their existence.  This reporting occurs via scheduled %xml-rpc pings.</p>", array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%Drupal" => "<a href=\"http://www.drupal.org\">". t("drupal.org") ."</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">". t("XLM-RPC") ."</a>" ));
-      $output .= strtr("<p>Drupal administrators should simply enable this feature to get listed on the %drupal-sites; just set your site's name, e-mail address, slogan and mission statement.  Then make sure that the field called <i>Drupal XML-RPC server</i> on the %drupal-settings page is set to http://www.drupal.org/xmlrpc.php, and enable this feature using the dropdown directly below.</p>", array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%drupal-settings" => l(t("Administration &raquo; site configuration &raquo; modules &raquo; drupal"), "admin/system/modules/drupal") ));
-      $output .= strtr("<p>The listing of your site will occur shortly after your site's next %cron. Note that cron.php should be called using the domain name which you want to have listed at %Drupal.  For example, don't kick off cron by requesting http://127.0.0.1/cron.php.  Instead, use a publicly accessible domain name such as http://www.mydomain.org/cron.php.</p>", array("%cron" => l(t("cron run"), "admin/system/help#cron"), "%Drupal" => "<a href=\"http://www.drupal.org/\">". t("drupal.org") ."</a>" ));
+      $output .= "<p>Currently, the main application of this feature is the %drupal-sites.  By default, fresh Drupal installations can use %Drupal as their <i>directory server</i> and report their existence.  This reporting occurs via scheduled %xml-rpc pings.</p>";
+      $output .= "<p>Drupal administrators should simply enable this feature to get listed on the %drupal-sites; just set your site's name, e-mail address, slogan and mission statement.  Then make sure that the field called <i>Drupal XML-RPC server</i> on the %drupal-settings page is set to http://www.drupal.org/xmlrpc.php, and enable this feature using the dropdown directly below.</p>";
+      $output .= "<p>The listing of your site will occur shortly after your site's next %cron. Note that cron.php should be called using the domain name which you want to have listed at %Drupal.  For example, don't kick off cron by requesting http://127.0.0.1/cron.php.  Instead, use a publicly accessible domain name such as http://www.mydomain.org/cron.php.</p>";
       $output .= "<p>Also note that your installation need not use drupal.org as its directory server.  For example, this feature is perfectly capable of aggregating pings from all of your departmental drupal installations sites within an enterprise.</p>";
+      $output .= t($output,  array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%Drupal" => "<a href=\"http://www.drupal.org\">drupal.org</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">XLM-RPC</a>", "%drupal-settings" => l(t("Administration &raquo; site configuration &raquo; modules &raquo; drupal"), "admin/system/modules/drupal"), "%cron" => l(t("cron run"), "admin/system/help#cron") ));
       break;
     case 'admin/system/modules':
-      $output = "Lets users log in using a Drupal ID and can notify drupal.org about your site.";
+      $output = t("Lets users log in using a Drupal ID and can notify drupal.org about your site.");
       break;
     case 'admin/system/modules/drupal':
-      $output = strtr("Using this your Drupal site can \"call home\" and add itself to the Drupal directory. If you want it to add itself to a different directory server you can change the %Drupal-setting setting -- but the directory server has to be able to handle Drupal XML. To get a full site listing go to the %general and set:<ul><li>The site name,</li><li>The site E-Mail address,</li><li>The site slogan, and</li><li>The site mission statement.</li></ul>", array("%Drupal-setting" => l(t("Drupal XML-RPC server"), "admin/system/modules/drupal"), "%general" => l(t("site configuration"), "admin/system") ));
+      $output = t("Using this your Drupal site can \"call home\" and add itself to the Drupal directory. If you want it to add itself to a different directory server you can change the %Drupal-setting setting -- but the directory server has to be able to handle Drupal XML. To get a full site listing go to the %general and set:<ul><li>The site name,</li><li>The site E-Mail address,</li><li>The site slogan, and</li><li>The site mission statement.</li></ul>", array("%Drupal-setting" => l(t("Drupal XML-RPC server"), "admin/system/modules/drupal"), "%general" => l(t("site configuration"), "admin/system") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function drupal_system($field) {
diff --git a/modules/drupal/drupal.module b/modules/drupal/drupal.module
index 6d3d12a79074..926b1a6948e0 100644
--- a/modules/drupal/drupal.module
+++ b/modules/drupal/drupal.module
@@ -8,20 +8,21 @@ function drupal_help($section = "admin/drupal/help") {
     case 'admin/help':
     case 'admin/drupal/help':
       $output .= "<p>The \"Drupal\" module features a capability whereby other drupal sites  may <i>call home</i> to report their existence.  In turn, this enables a pod of Drupal sites to find, cooperate and advertise each other.</p>";
-      $output .= strtr("<p>Currently, the main application of this feature is the %drupal-sites.  By default, fresh Drupal installations can use %Drupal as their <i>directory server</i> and report their existence.  This reporting occurs via scheduled %xml-rpc pings.</p>", array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%Drupal" => "<a href=\"http://www.drupal.org\">". t("drupal.org") ."</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">". t("XLM-RPC") ."</a>" ));
-      $output .= strtr("<p>Drupal administrators should simply enable this feature to get listed on the %drupal-sites; just set your site's name, e-mail address, slogan and mission statement.  Then make sure that the field called <i>Drupal XML-RPC server</i> on the %drupal-settings page is set to http://www.drupal.org/xmlrpc.php, and enable this feature using the dropdown directly below.</p>", array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%drupal-settings" => l(t("Administration &raquo; site configuration &raquo; modules &raquo; drupal"), "admin/system/modules/drupal") ));
-      $output .= strtr("<p>The listing of your site will occur shortly after your site's next %cron. Note that cron.php should be called using the domain name which you want to have listed at %Drupal.  For example, don't kick off cron by requesting http://127.0.0.1/cron.php.  Instead, use a publicly accessible domain name such as http://www.mydomain.org/cron.php.</p>", array("%cron" => l(t("cron run"), "admin/system/help#cron"), "%Drupal" => "<a href=\"http://www.drupal.org/\">". t("drupal.org") ."</a>" ));
+      $output .= "<p>Currently, the main application of this feature is the %drupal-sites.  By default, fresh Drupal installations can use %Drupal as their <i>directory server</i> and report their existence.  This reporting occurs via scheduled %xml-rpc pings.</p>";
+      $output .= "<p>Drupal administrators should simply enable this feature to get listed on the %drupal-sites; just set your site's name, e-mail address, slogan and mission statement.  Then make sure that the field called <i>Drupal XML-RPC server</i> on the %drupal-settings page is set to http://www.drupal.org/xmlrpc.php, and enable this feature using the dropdown directly below.</p>";
+      $output .= "<p>The listing of your site will occur shortly after your site's next %cron. Note that cron.php should be called using the domain name which you want to have listed at %Drupal.  For example, don't kick off cron by requesting http://127.0.0.1/cron.php.  Instead, use a publicly accessible domain name such as http://www.mydomain.org/cron.php.</p>";
       $output .= "<p>Also note that your installation need not use drupal.org as its directory server.  For example, this feature is perfectly capable of aggregating pings from all of your departmental drupal installations sites within an enterprise.</p>";
+      $output .= t($output,  array("%drupal-sites" => "<a href=\"http://www.drupal.org/node/view/3\">". t("Drupal sites page") ."</a>", "%Drupal" => "<a href=\"http://www.drupal.org\">drupal.org</a>", "%xml-rpc" => "<a href=\"http://www.xmlrpc.com/\">XLM-RPC</a>", "%drupal-settings" => l(t("Administration &raquo; site configuration &raquo; modules &raquo; drupal"), "admin/system/modules/drupal"), "%cron" => l(t("cron run"), "admin/system/help#cron") ));
       break;
     case 'admin/system/modules':
-      $output = "Lets users log in using a Drupal ID and can notify drupal.org about your site.";
+      $output = t("Lets users log in using a Drupal ID and can notify drupal.org about your site.");
       break;
     case 'admin/system/modules/drupal':
-      $output = strtr("Using this your Drupal site can \"call home\" and add itself to the Drupal directory. If you want it to add itself to a different directory server you can change the %Drupal-setting setting -- but the directory server has to be able to handle Drupal XML. To get a full site listing go to the %general and set:<ul><li>The site name,</li><li>The site E-Mail address,</li><li>The site slogan, and</li><li>The site mission statement.</li></ul>", array("%Drupal-setting" => l(t("Drupal XML-RPC server"), "admin/system/modules/drupal"), "%general" => l(t("site configuration"), "admin/system") ));
+      $output = t("Using this your Drupal site can \"call home\" and add itself to the Drupal directory. If you want it to add itself to a different directory server you can change the %Drupal-setting setting -- but the directory server has to be able to handle Drupal XML. To get a full site listing go to the %general and set:<ul><li>The site name,</li><li>The site E-Mail address,</li><li>The site slogan, and</li><li>The site mission statement.</li></ul>", array("%Drupal-setting" => l(t("Drupal XML-RPC server"), "admin/system/modules/drupal"), "%general" => l(t("site configuration"), "admin/system") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function drupal_system($field) {
diff --git a/modules/forum.module b/modules/forum.module
index dfa2a2ccd78e..99dbec746010 100644
--- a/modules/forum.module
+++ b/modules/forum.module
@@ -646,21 +646,22 @@ function forum_help($section = "admin/forum/help") {
     case 'admin/help':
     case 'admin/forum/help':
       $output .= "<h3>Creating a forum</h3>";
-      $output .= strtr("<p>The forum module uses taxonomy to organize itself. To create a forum you first have to create a %taxonomy. When doing this, choose a sensible name for it (such as \"fora\") and make sure under \"Types\" that \"forum\" is selected. Once you have done this, %taxo-terms to it. Each term will become a forum. If you fill in the description field, users will be given additonal information about the forum on the main forum page. For example: \"troubleshooting\" - \"Please ask your questions here.\"</p>", array("%taxonomy" => l(t("taxonomy vocabulary"), "admin/taxonomy/add/vocabulary"), "%taxo-terms" => l(t("add some terms"), "admin/taxonomy" ) ));
-      $output .= strtr("<p>When you are happy with your vocabulary, go to ". l("site configuration &raquo; modules &raquo; forum","admin/system/modules/forum") ." and set <b>Forum vocabulary</b> to the one you have just created. There will now be fora active on the site. For users to access them they must have the \"access content\" %permission and to create a topic they must have the \"create forum topics\" %permission. These permissions can be set in the %permission pages.</p>", array("%forums" => l(t("site configutation &raquo; modules &raquo; forum"), "admin/system/modules/forum"), "%permission" => l(t("permission"), "admin/user/permission") ));
+      $output .= "<p>The forum module uses taxonomy to organize itself. To create a forum you first have to create a %taxonomy. When doing this, choose a sensible name for it (such as \"fora\") and make sure under \"Types\" that \"forum\" is selected. Once you have done this, %taxo-terms to it. Each term will become a forum. If you fill in the description field, users will be given additonal information about the forum on the main forum page. For example: \"troubleshooting\" - \"Please ask your questions here.\"</p>";
+      $output .= "<p>When you are happy with your vocabulary, go to ". l("site configuration &raquo; modules &raquo; forum","admin/system/modules/forum") ." and set <b>Forum vocabulary</b> to the one you have just created. There will now be fora active on the site. For users to access them they must have the \"access content\" %permission and to create a topic they must have the \"create forum topics\" %permission. These permissions can be set in the %permission pages.</p>";
       $output .= "<h4>Icons</h4>";
-      $output .= strtr("<p>To disable icons, set the icon path as blank in %forums-icon.</p>", array("%forums-icon" => l(t("site configuration &raquo; modules &raquo; forums"), "admin/system/module/forum") ));
+      $output .= "<p>To disable icons, set the icon path as blank in %forums.</p>";
       $output .= "<p>All files in the icon directory are assumed to be images. You may use images of whatever size you wish, but it is recommended to use 15x15 or 16x16.</p>";
+      $output = t($output, array("%taxonomy" => l(t("taxonomy vocabulary"), "admin/taxonomy/add/vocabulary"), "%taxo-terms" => l(t("add some terms"), "admin/taxonomy"), "%forums" => l(t("site configutation &raquo; modules &raquo; forum"), "admin/system/modules/forum"), "%permission" => l(t("permission"), "admin/user/permission") ));
       break;
     case 'admin/system/modules':
-      $output = "Enable threaded discussions about general topics.";
+      $output = t("Enable threaded discussions about general topics.");
       break;
     case 'admin/system/modules/forum':
-      $output = strtr("Forums are threaded discussions based on the taxonomy system so you must first %taxonomy-create of type \"forum\" to place the forum tree in. Then %taxonomy-add to this taxonomy. Each term becomes the name of a forum. If you define a term as a \"Container\" (See below) the term is not a forum itself, but rather holds forms. This lets you group your forums.", array("%taxonomy-create" => l(t("create a taxonomy"), "admin/taxonomy/add/vocabulary"), "%taxonomy" => l(t("add terms"), "admin/taxonomy") ));
+      $output = t("Forums are threaded discussions based on the taxonomy system so you must first %taxonomy-create of type \"forum\" to place the forum tree in. Then %taxonomy-add to this taxonomy. Each term becomes the name of a forum. If you define a term as a \"Container\" (See below) the term is not a forum itself, but rather holds forms. This lets you group your forums.", array("%taxonomy-create" => l(t("create a taxonomy"), "admin/taxonomy/add/vocabulary"), "%taxonomy" => l(t("add terms"), "admin/taxonomy") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 ?>
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index dfa2a2ccd78e..99dbec746010 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -646,21 +646,22 @@ function forum_help($section = "admin/forum/help") {
     case 'admin/help':
     case 'admin/forum/help':
       $output .= "<h3>Creating a forum</h3>";
-      $output .= strtr("<p>The forum module uses taxonomy to organize itself. To create a forum you first have to create a %taxonomy. When doing this, choose a sensible name for it (such as \"fora\") and make sure under \"Types\" that \"forum\" is selected. Once you have done this, %taxo-terms to it. Each term will become a forum. If you fill in the description field, users will be given additonal information about the forum on the main forum page. For example: \"troubleshooting\" - \"Please ask your questions here.\"</p>", array("%taxonomy" => l(t("taxonomy vocabulary"), "admin/taxonomy/add/vocabulary"), "%taxo-terms" => l(t("add some terms"), "admin/taxonomy" ) ));
-      $output .= strtr("<p>When you are happy with your vocabulary, go to ". l("site configuration &raquo; modules &raquo; forum","admin/system/modules/forum") ." and set <b>Forum vocabulary</b> to the one you have just created. There will now be fora active on the site. For users to access them they must have the \"access content\" %permission and to create a topic they must have the \"create forum topics\" %permission. These permissions can be set in the %permission pages.</p>", array("%forums" => l(t("site configutation &raquo; modules &raquo; forum"), "admin/system/modules/forum"), "%permission" => l(t("permission"), "admin/user/permission") ));
+      $output .= "<p>The forum module uses taxonomy to organize itself. To create a forum you first have to create a %taxonomy. When doing this, choose a sensible name for it (such as \"fora\") and make sure under \"Types\" that \"forum\" is selected. Once you have done this, %taxo-terms to it. Each term will become a forum. If you fill in the description field, users will be given additonal information about the forum on the main forum page. For example: \"troubleshooting\" - \"Please ask your questions here.\"</p>";
+      $output .= "<p>When you are happy with your vocabulary, go to ". l("site configuration &raquo; modules &raquo; forum","admin/system/modules/forum") ." and set <b>Forum vocabulary</b> to the one you have just created. There will now be fora active on the site. For users to access them they must have the \"access content\" %permission and to create a topic they must have the \"create forum topics\" %permission. These permissions can be set in the %permission pages.</p>";
       $output .= "<h4>Icons</h4>";
-      $output .= strtr("<p>To disable icons, set the icon path as blank in %forums-icon.</p>", array("%forums-icon" => l(t("site configuration &raquo; modules &raquo; forums"), "admin/system/module/forum") ));
+      $output .= "<p>To disable icons, set the icon path as blank in %forums.</p>";
       $output .= "<p>All files in the icon directory are assumed to be images. You may use images of whatever size you wish, but it is recommended to use 15x15 or 16x16.</p>";
+      $output = t($output, array("%taxonomy" => l(t("taxonomy vocabulary"), "admin/taxonomy/add/vocabulary"), "%taxo-terms" => l(t("add some terms"), "admin/taxonomy"), "%forums" => l(t("site configutation &raquo; modules &raquo; forum"), "admin/system/modules/forum"), "%permission" => l(t("permission"), "admin/user/permission") ));
       break;
     case 'admin/system/modules':
-      $output = "Enable threaded discussions about general topics.";
+      $output = t("Enable threaded discussions about general topics.");
       break;
     case 'admin/system/modules/forum':
-      $output = strtr("Forums are threaded discussions based on the taxonomy system so you must first %taxonomy-create of type \"forum\" to place the forum tree in. Then %taxonomy-add to this taxonomy. Each term becomes the name of a forum. If you define a term as a \"Container\" (See below) the term is not a forum itself, but rather holds forms. This lets you group your forums.", array("%taxonomy-create" => l(t("create a taxonomy"), "admin/taxonomy/add/vocabulary"), "%taxonomy" => l(t("add terms"), "admin/taxonomy") ));
+      $output = t("Forums are threaded discussions based on the taxonomy system so you must first %taxonomy-create of type \"forum\" to place the forum tree in. Then %taxonomy-add to this taxonomy. Each term becomes the name of a forum. If you define a term as a \"Container\" (See below) the term is not a forum itself, but rather holds forms. This lets you group your forums.", array("%taxonomy-create" => l(t("create a taxonomy"), "admin/taxonomy/add/vocabulary"), "%taxonomy" => l(t("add terms"), "admin/taxonomy") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 ?>
diff --git a/modules/help.module b/modules/help.module
index abd8f242d03f..9a4bd5d3fc60 100644
--- a/modules/help.module
+++ b/modules/help.module
@@ -2,8 +2,11 @@
 // $Id$
 
 function help_system($field){
-  $system["description"] = t("Manages displaying online help.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = admin_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function help_link($type) {
@@ -26,29 +29,39 @@ function help_glossary() {
   $output .= "<dt>Public</dt><dd>See published.</dd>";
   $output .= "<dt>Published</dt><dd>A node that is viewable by everyone. (See unpublished.)</dd>";
   $output .= "<dt>Role</dt><dd>A classification users are placed into for the purpose of setting users' permissions.</dd>";
-  $output .= strtr("<dt>Taxonomy</dt><dd>A division of a collection of things into ordered, classified groups. (See %taxonomy.)</dd>", array("%taxonomy" => l(t("taxonomy help"), "admin/taxonomy/help")));
+  $output .= "<dt>Taxonomy</dt><dd>A division of a collection of things into ordered, classified groups. (See %taxonomy.)</dd>";
   $output .= "<dt>Unpublished</dt><dd>A node that is only viewable by administrators and moderators.</dd>";
   $output .= "<dt>User</dt><dd>A person who has an account at your Drupal site, and is logged in with that account.</dd>";
   $output .= "<dt>Visitor</dt><dd>A person who does not have an account at your Drupal site or a person who has an account at your Drupal site but is <u>not</u> logged in with that account. Also termed \"anonymous user\".</dd>";
   $output .= "</dl>";
+  $output = t($output, array("%taxonomy" => l(t("taxonomy help"), "admin/taxonomy/help")));
 
-  return t($output);
+  return $output;
 }
 
-function help_admin() {
+function help_admin($section = "admin/help") {
   $output = "";
 
-  foreach (module_list() as $name) {
-    if (module_hook($name, "help")) {
-      $temp = module_invoke($name, "help", "admin/".$name."/help");
-      if (!empty($temp)) {
-        $links[] = l($name, "admin/help#$name");
-        $output .= "<h2><a id=\"$name\">". ucfirst($name) ." module</a></h2>";
-        $output .= $temp;
+  switch ($section) {
+
+    case 'admin/help':
+      foreach (module_list() as $name) {
+        if (module_hook($name, "help")) {
+          $temp = module_invoke($name, "help", "admin/".$name."/help");
+          if (!empty($temp)) {
+            $links[] = l($name, "admin/help#$name");
+            $output .= "<h2><a id=\"$name\">". ucfirst($name) ." module</a></h2>";
+            $output .= $temp;
+          }
+        }
       }
-    }
+      $output = "<small>". implode(" &middot; ", $links) ."</small><hr />". $output;
+      break;
+
+    case 'admin/system/modules':
+      $out = t("Manages displaying online help.");
+      break;
   }
-  $output = "<small>". implode(" &middot; ", $links) ."</small><hr />". $output;
   return $output;
 }
 
diff --git a/modules/help/help.module b/modules/help/help.module
index abd8f242d03f..9a4bd5d3fc60 100644
--- a/modules/help/help.module
+++ b/modules/help/help.module
@@ -2,8 +2,11 @@
 // $Id$
 
 function help_system($field){
-  $system["description"] = t("Manages displaying online help.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = admin_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function help_link($type) {
@@ -26,29 +29,39 @@ function help_glossary() {
   $output .= "<dt>Public</dt><dd>See published.</dd>";
   $output .= "<dt>Published</dt><dd>A node that is viewable by everyone. (See unpublished.)</dd>";
   $output .= "<dt>Role</dt><dd>A classification users are placed into for the purpose of setting users' permissions.</dd>";
-  $output .= strtr("<dt>Taxonomy</dt><dd>A division of a collection of things into ordered, classified groups. (See %taxonomy.)</dd>", array("%taxonomy" => l(t("taxonomy help"), "admin/taxonomy/help")));
+  $output .= "<dt>Taxonomy</dt><dd>A division of a collection of things into ordered, classified groups. (See %taxonomy.)</dd>";
   $output .= "<dt>Unpublished</dt><dd>A node that is only viewable by administrators and moderators.</dd>";
   $output .= "<dt>User</dt><dd>A person who has an account at your Drupal site, and is logged in with that account.</dd>";
   $output .= "<dt>Visitor</dt><dd>A person who does not have an account at your Drupal site or a person who has an account at your Drupal site but is <u>not</u> logged in with that account. Also termed \"anonymous user\".</dd>";
   $output .= "</dl>";
+  $output = t($output, array("%taxonomy" => l(t("taxonomy help"), "admin/taxonomy/help")));
 
-  return t($output);
+  return $output;
 }
 
-function help_admin() {
+function help_admin($section = "admin/help") {
   $output = "";
 
-  foreach (module_list() as $name) {
-    if (module_hook($name, "help")) {
-      $temp = module_invoke($name, "help", "admin/".$name."/help");
-      if (!empty($temp)) {
-        $links[] = l($name, "admin/help#$name");
-        $output .= "<h2><a id=\"$name\">". ucfirst($name) ." module</a></h2>";
-        $output .= $temp;
+  switch ($section) {
+
+    case 'admin/help':
+      foreach (module_list() as $name) {
+        if (module_hook($name, "help")) {
+          $temp = module_invoke($name, "help", "admin/".$name."/help");
+          if (!empty($temp)) {
+            $links[] = l($name, "admin/help#$name");
+            $output .= "<h2><a id=\"$name\">". ucfirst($name) ." module</a></h2>";
+            $output .= $temp;
+          }
+        }
       }
-    }
+      $output = "<small>". implode(" &middot; ", $links) ."</small><hr />". $output;
+      break;
+
+    case 'admin/system/modules':
+      $out = t("Manages displaying online help.");
+      break;
   }
-  $output = "<small>". implode(" &middot; ", $links) ."</small><hr />". $output;
   return $output;
 }
 
diff --git a/modules/locale.module b/modules/locale.module
index f6e8851e2216..d25363dfb47e 100644
--- a/modules/locale.module
+++ b/modules/locale.module
@@ -10,7 +10,7 @@ function locale_help($section = "admin/locale/help") {
       $output .= "<p>Most programs are written and documented in English, and use English to interact with users.  This is also true for a great deal of web sites.  However, most people are less comfortable with English than with their native language, and would prefer to use their mother tongue as much as possible.  Many people love see their web site showing a lot less English, and far more of their own language.</p>";
       $output .= "<p>Therefore Drupal provides a framework to setup a multi-lingual web site, or to overwrite the default English texts.  We explored the various alternatives to support internationalization (I18N) and decided to design the framework in such a way that the impact of internationalization on drupal's sources is minimized, modular and doesn't require a HTML or PHP wizard to maintain translations.  Maintaining translations had to be simple so it became as easy as filling out forms on the administration page.</p>";
       $output .= "<h3>How to translate texts</h3>";
-      $output .= strtr("<p>The actual translation starts at the %overview page of the locale section in the administration pages. In the menu on the left under \"localization\" you will see a list of the languages you have configured. Click on the name of the language to start translating. Looking at a page full of all the strings in the site can be a bit overwhelming, so Drupal allows you to limit the strings you are working on. If you want to limit based on translated strings click \"translated strings\", if you want to limit the string based on the untranslated strings click \"untranslated strings\". Both will take you to the same page. Once there enter the string pattern to limit on, choose the language to search for, and the status, weather translated, untranslated or both, finally where you want to look, modules, specific modules, or pages.</p>", array("%overview" => l(t("overview"), "admin/locale") ));
+      $output .= "<p>The actual translation starts at the %overview page of the locale section in the administration pages. In the menu on the left under \"localization\" you will see a list of the languages you have configured. Click on the name of the language to start translating. Looking at a page full of all the strings in the site can be a bit overwhelming, so Drupal allows you to limit the strings you are working on. If you want to limit based on translated strings click \"translated strings\", if you want to limit the string based on the untranslated strings click \"untranslated strings\". Both will take you to the same page. Once there enter the string pattern to limit on, choose the language to search for, and the status, weather translated, untranslated or both, finally where you want to look, modules, specific modules, or pages.</p>";
       $output .= "<p>At the locale page, users with the proper access rights will see the various texts that need translation on the left column of the table.</p>";
       $output .= "<p>Below the text you can see an example URI where this text shows up one your site.  Chances are most of these texts will be used and displayed on more than one page, though only one example URI is presented.</p>";
       $output .= "<p>The second column displays the supported languages as defined in the configuration file.  See below for more information on how to support new languages.  If the symbol for a language is seen like <strike>this</strike>, it means that this entry still needs to be translated into that language.  If not, it has been translated already.</p>";
@@ -33,25 +33,26 @@ function locale_help($section = "admin/locale/help") {
     mysql> ALTER TABLE {locales} ADD nl TEXT DEFAULT '' NOT NULL;
     mysql> ALTER TABLE {locales} ADD fr TEXT DEFAULT '' NOT NULL;
   </pre>";
+      $output = t($output,  array("%overview" => l(t("overview"), "admin/locale") ));
       break;
     case 'admin/system/modules':
-      $output = "Enables the translation of the user interface to languages other than English.";
+      $output = t("Enables the translation of the user interface to languages other than English.");
       break;
     case 'admin/locale':
-      $output = "The locale module handles translations into new languages.  It also enables you to add jargon, slang or other special language as fits the web site.  For each language you want to support, a line needs to be added to your configuration file.";
+      $output = t("The locale module handles translations into new languages.  It also enables you to add jargon, slang or other special language as fits the web site.  For each language you want to support, a line needs to be added to your configuration file.");
       break;
     case 'admin/locale/search':
-      $output = "Search the localization database. ('*' can be used as a wildcard)";
+      $output = t("Search the localization database. ('*' can be used as a wildcard)");
       break;
     case 'admin/locale/translated':
-      $output = "Start by searching the translated strings.";
+      $output = t("Start by searching the translated strings.");
       break;
     case 'admin/locale/untranslated':
-      $output = "Start by searching the untranslated strings.";
+      $output = t("Start by searching the untranslated strings.");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function locale_system($field){
@@ -338,8 +339,11 @@ function locale($string) {
   global $locale;
   static $locale_t;
 
+  return ($string); // Need to patch this for a while.
+
   if (!isset($locale_t)) {
     $cache = cache_get("locale:$locale");
+
     if ($cache == 0) {
       locale_refresh_cache();
       $cache = cache_get("locale:$locale");
diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index f6e8851e2216..d25363dfb47e 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -10,7 +10,7 @@ function locale_help($section = "admin/locale/help") {
       $output .= "<p>Most programs are written and documented in English, and use English to interact with users.  This is also true for a great deal of web sites.  However, most people are less comfortable with English than with their native language, and would prefer to use their mother tongue as much as possible.  Many people love see their web site showing a lot less English, and far more of their own language.</p>";
       $output .= "<p>Therefore Drupal provides a framework to setup a multi-lingual web site, or to overwrite the default English texts.  We explored the various alternatives to support internationalization (I18N) and decided to design the framework in such a way that the impact of internationalization on drupal's sources is minimized, modular and doesn't require a HTML or PHP wizard to maintain translations.  Maintaining translations had to be simple so it became as easy as filling out forms on the administration page.</p>";
       $output .= "<h3>How to translate texts</h3>";
-      $output .= strtr("<p>The actual translation starts at the %overview page of the locale section in the administration pages. In the menu on the left under \"localization\" you will see a list of the languages you have configured. Click on the name of the language to start translating. Looking at a page full of all the strings in the site can be a bit overwhelming, so Drupal allows you to limit the strings you are working on. If you want to limit based on translated strings click \"translated strings\", if you want to limit the string based on the untranslated strings click \"untranslated strings\". Both will take you to the same page. Once there enter the string pattern to limit on, choose the language to search for, and the status, weather translated, untranslated or both, finally where you want to look, modules, specific modules, or pages.</p>", array("%overview" => l(t("overview"), "admin/locale") ));
+      $output .= "<p>The actual translation starts at the %overview page of the locale section in the administration pages. In the menu on the left under \"localization\" you will see a list of the languages you have configured. Click on the name of the language to start translating. Looking at a page full of all the strings in the site can be a bit overwhelming, so Drupal allows you to limit the strings you are working on. If you want to limit based on translated strings click \"translated strings\", if you want to limit the string based on the untranslated strings click \"untranslated strings\". Both will take you to the same page. Once there enter the string pattern to limit on, choose the language to search for, and the status, weather translated, untranslated or both, finally where you want to look, modules, specific modules, or pages.</p>";
       $output .= "<p>At the locale page, users with the proper access rights will see the various texts that need translation on the left column of the table.</p>";
       $output .= "<p>Below the text you can see an example URI where this text shows up one your site.  Chances are most of these texts will be used and displayed on more than one page, though only one example URI is presented.</p>";
       $output .= "<p>The second column displays the supported languages as defined in the configuration file.  See below for more information on how to support new languages.  If the symbol for a language is seen like <strike>this</strike>, it means that this entry still needs to be translated into that language.  If not, it has been translated already.</p>";
@@ -33,25 +33,26 @@ function locale_help($section = "admin/locale/help") {
     mysql> ALTER TABLE {locales} ADD nl TEXT DEFAULT '' NOT NULL;
     mysql> ALTER TABLE {locales} ADD fr TEXT DEFAULT '' NOT NULL;
   </pre>";
+      $output = t($output,  array("%overview" => l(t("overview"), "admin/locale") ));
       break;
     case 'admin/system/modules':
-      $output = "Enables the translation of the user interface to languages other than English.";
+      $output = t("Enables the translation of the user interface to languages other than English.");
       break;
     case 'admin/locale':
-      $output = "The locale module handles translations into new languages.  It also enables you to add jargon, slang or other special language as fits the web site.  For each language you want to support, a line needs to be added to your configuration file.";
+      $output = t("The locale module handles translations into new languages.  It also enables you to add jargon, slang or other special language as fits the web site.  For each language you want to support, a line needs to be added to your configuration file.");
       break;
     case 'admin/locale/search':
-      $output = "Search the localization database. ('*' can be used as a wildcard)";
+      $output = t("Search the localization database. ('*' can be used as a wildcard)");
       break;
     case 'admin/locale/translated':
-      $output = "Start by searching the translated strings.";
+      $output = t("Start by searching the translated strings.");
       break;
     case 'admin/locale/untranslated':
-      $output = "Start by searching the untranslated strings.";
+      $output = t("Start by searching the untranslated strings.");
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function locale_system($field){
@@ -338,8 +339,11 @@ function locale($string) {
   global $locale;
   static $locale_t;
 
+  return ($string); // Need to patch this for a while.
+
   if (!isset($locale_t)) {
     $cache = cache_get("locale:$locale");
+
     if ($cache == 0) {
       locale_refresh_cache();
       $cache = cache_get("locale:$locale");
diff --git a/modules/node.module b/modules/node.module
index f98a328722fb..5b495e1452ef 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -13,24 +13,26 @@ function node_help($section = "admin/node/help") {
       $output .= "<p>The core of the Drupal system is the node. All of the contents of the system are placed in nodes, or extensions of nodes.";
       $output .= "A base node contains:<dl>";
       $output .= "<dt>A Title</dt><dd>Up to 128 characters of text that titles the node.</dd>";
-      $output .= strtr("<dt>A Teaser</dt><dd>A small block of text that is meant to get you interested in the rest of node. Drupal will automatically pull a small amount of the body of the node to make the teaser (To configure how long the teaser will be %teaser). The teaser can be changed if you don't like what Drupal grabs.</dd>", array("%teaser" => l(t("click here"), "admin/system/modules/node") ));
+      $output .= "<dt>A Teaser</dt><dd>A small block of text that is meant to get you interested in the rest of node. Drupal will automatically pull a small amount of the body of the node to make the teaser (To configure how long the teaser will be %teaser). The teaser can be changed if you don't like what Drupal grabs.</dd>";
       $output .= "<dt>The Body</dt><dd>The main text that comprises your content.</dd>";
       $output .= "<dt>A Type</dt><dd>What kind of node is this? Blog, book, forum, comment, unextended, etc.</dd>";
       $output .= "<dt>An Author</dt><dd>The author's name. It will either be \"anonymous\" or a valid user. You <i>cannot</i> set it to an arbitrary value.</dd>";
       $output .= "<dt>Authored on</dt><dd>The date the node was written.</dd>";
       $output .= "<dt>Changed</dt><dd>The last time this node was changed.</dd>";
-      $output .= strtr("<dt>Static on front page</dt><dd>The front page is configured to show the teasers from only a few of the total nodes you have on your site (To configure how many teasers %teaser), but if you think a node is important enough that you want it to stay on the front page enable this.</dd>",array("%teaser" => l(t("click here"),"admin/system/modules/node") ));
+      $output .= "<dt>Static on front page</dt><dd>The front page is configured to show the teasers from only a few of the total nodes you have on your site (To configure how many teasers %teaser), but if you think a node is important enough that you want it to stay on the front page enable this.</dd>";
       $output .= "<dt>Allow user comments</dt><dd>A node can have comments. These comments can be written by other users (Read-write), or only by admins (Read-only).</dd>";
       $output .= "<dt>Attributes</dt><dd>A way to sort nodes.</dd>";
       $output .= "<dt>Revisions</dt><dd>Drupal has a revision system so that you can \"roll back\" to an older version of a node if the new version is not what you want.</dd>";
       $output .= "<dt>Promote to front page</dt><dd>To get people to look at the new stuff on your site you can choose to move it to the front page.</dd>";
       $output .= "<dt>In moderation queue</dt><dd>Drupal has a moderation system. If it is active, a node is in one of three states: approved and published, approved and unpublished, and awaiting approval. If you are moderating a node it should be in the moderation queue.</dd>";
-      $output .= strtr("<dt>Votes</dt><dd>If you are moderating a node this counts how many votes the node has gotten. Once a node gets a certain number of vote if will either be Approved, or Dropped (To setup the number of votes needed and the promote and dump scores %queue.)</a>.</dd>",array("%queue" => l(t("click here"), "admin/system/modules/queue") ));
+      $output .= "<dt>Votes</dt><dd>If you are moderating a node this counts how many votes the node has gotten. Once a node gets a certain number of vote if will either be Approved, or Dropped (To setup the number of votes needed and the promote and dump scores %queue.)</a>.</dd>";
       $output .= "<dt>Score</dt><dd>The score of the node is gotten by the votes it is given.</dd>";
       $output .= "<dt>Users</dt><dd>The list of users who have voted on a moderated node.</dd>";
       $output .= "<dt>Published</dt><dd>When using Drupal's moderation system a node remains unpublished -- unavaliable to non-moderators -- until it is marked Published.</dd></dl>";
       $output .= "<p>Now that you know what is in a node, here are some of the types of nodes available.</p>";
 
+      $output = t($output, array("%teaser" => l(t("click here"), "admin/system/modules/node"), "%queue" => l(t("click here"), "admin/system/modules/queue") ));
+
       if ($mod == "admin") {
         foreach (module_list() as $name) {
           if (module_hook($name, "node") && $name != "node") {
@@ -42,23 +44,24 @@ function node_help($section = "admin/node/help") {
       break;
 
     case 'admin/system/modules':
-      $output = "The core that allows content to be submitted to the site.";
+      $output = t("The core that allows content to be submitted to the site.");
       break;
     case 'admin/system/modules/node':
-      $output = "Settings for the core of Drupal. Almost everything is a node so these settings will affect most of the site.";
+      $output = t("Settings for the core of Drupal. Almost everything is a node so these settings will affect most of the site.");
       break;
     case 'admin/node':
-      $output = strtr("Below is a list of all of the nodes in your site. Other forms of content are listed elsewhere (e.g. %comment).<br />Clicking a title views that node, while clicking an author's name edits their user information.<br />Other node-related tasks are available from the menu on the left.",array("%comments" => l(t("comments"), "admin/comment") ));
+      $output = t("Below is a list of all of the nodes in your site. Other forms of content are listed elsewhere (e.g. %comment).<br />Clicking a title views that node, while clicking an author's name edits their user information.<br />Other node-related tasks are available from the menu on the left.",array("%comments" => l(t("comments"), "admin/comment") ));
       break;
     case 'admin/node/search':
-      $output = "Enter a simple pattern to search for a post. This can include the wildcard character *.<br />For example, a search for \"br*\" might return \"bread bakers\", \"our daily bread\" and \"brenda\".";
+      $output = t("Enter a simple pattern to search for a post. This can include the wildcard character *.<br />For example, a search for \"br*\" might return \"bread bakers\", \"our daily bread\" and \"brenda\".");
       break;
     case 'admin/node/settings':
-      $output = "This pages lets you set the defaults used during creation of nodes for all the different node types.<br /><b>comment:</b> Read/write setting for comments.<br /><b>publish:</b> Is this node publicly viewable, has it been published?<br /><b>promote:</b> Is this node to be promoted to the front page?<br /><b>moderate:</b> Does this node need approval before it can be viewed?<br /><b>static:</b> Is this node always visible on the front page?<br /><b>revision:</b> Will this node go into the revision system allowing multiple versions to be saved?";
+      $output = t("This pages lets you set the defaults used during creation of nodes for all the different node types.<br /><b>comment:</b> Read/write setting for comments.<br /><b>publish:</b> Is this node publicly viewable, has it been published?<br /><b>promote:</b> Is this node to be promoted to the front page?<br /><b>moderate:</b> Does this node need approval before it can be viewed?<br /><b>static:</b> Is this node always visible on the front page?<br /><b>revision:</b> Will this node go into the revision system allowing multiple versions to be saved?");
       break;
 
   }
-  return t($output);
+
+  return $output;
 }
 
 function node_system($field){
diff --git a/modules/node/node.module b/modules/node/node.module
index f98a328722fb..5b495e1452ef 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -13,24 +13,26 @@ function node_help($section = "admin/node/help") {
       $output .= "<p>The core of the Drupal system is the node. All of the contents of the system are placed in nodes, or extensions of nodes.";
       $output .= "A base node contains:<dl>";
       $output .= "<dt>A Title</dt><dd>Up to 128 characters of text that titles the node.</dd>";
-      $output .= strtr("<dt>A Teaser</dt><dd>A small block of text that is meant to get you interested in the rest of node. Drupal will automatically pull a small amount of the body of the node to make the teaser (To configure how long the teaser will be %teaser). The teaser can be changed if you don't like what Drupal grabs.</dd>", array("%teaser" => l(t("click here"), "admin/system/modules/node") ));
+      $output .= "<dt>A Teaser</dt><dd>A small block of text that is meant to get you interested in the rest of node. Drupal will automatically pull a small amount of the body of the node to make the teaser (To configure how long the teaser will be %teaser). The teaser can be changed if you don't like what Drupal grabs.</dd>";
       $output .= "<dt>The Body</dt><dd>The main text that comprises your content.</dd>";
       $output .= "<dt>A Type</dt><dd>What kind of node is this? Blog, book, forum, comment, unextended, etc.</dd>";
       $output .= "<dt>An Author</dt><dd>The author's name. It will either be \"anonymous\" or a valid user. You <i>cannot</i> set it to an arbitrary value.</dd>";
       $output .= "<dt>Authored on</dt><dd>The date the node was written.</dd>";
       $output .= "<dt>Changed</dt><dd>The last time this node was changed.</dd>";
-      $output .= strtr("<dt>Static on front page</dt><dd>The front page is configured to show the teasers from only a few of the total nodes you have on your site (To configure how many teasers %teaser), but if you think a node is important enough that you want it to stay on the front page enable this.</dd>",array("%teaser" => l(t("click here"),"admin/system/modules/node") ));
+      $output .= "<dt>Static on front page</dt><dd>The front page is configured to show the teasers from only a few of the total nodes you have on your site (To configure how many teasers %teaser), but if you think a node is important enough that you want it to stay on the front page enable this.</dd>";
       $output .= "<dt>Allow user comments</dt><dd>A node can have comments. These comments can be written by other users (Read-write), or only by admins (Read-only).</dd>";
       $output .= "<dt>Attributes</dt><dd>A way to sort nodes.</dd>";
       $output .= "<dt>Revisions</dt><dd>Drupal has a revision system so that you can \"roll back\" to an older version of a node if the new version is not what you want.</dd>";
       $output .= "<dt>Promote to front page</dt><dd>To get people to look at the new stuff on your site you can choose to move it to the front page.</dd>";
       $output .= "<dt>In moderation queue</dt><dd>Drupal has a moderation system. If it is active, a node is in one of three states: approved and published, approved and unpublished, and awaiting approval. If you are moderating a node it should be in the moderation queue.</dd>";
-      $output .= strtr("<dt>Votes</dt><dd>If you are moderating a node this counts how many votes the node has gotten. Once a node gets a certain number of vote if will either be Approved, or Dropped (To setup the number of votes needed and the promote and dump scores %queue.)</a>.</dd>",array("%queue" => l(t("click here"), "admin/system/modules/queue") ));
+      $output .= "<dt>Votes</dt><dd>If you are moderating a node this counts how many votes the node has gotten. Once a node gets a certain number of vote if will either be Approved, or Dropped (To setup the number of votes needed and the promote and dump scores %queue.)</a>.</dd>";
       $output .= "<dt>Score</dt><dd>The score of the node is gotten by the votes it is given.</dd>";
       $output .= "<dt>Users</dt><dd>The list of users who have voted on a moderated node.</dd>";
       $output .= "<dt>Published</dt><dd>When using Drupal's moderation system a node remains unpublished -- unavaliable to non-moderators -- until it is marked Published.</dd></dl>";
       $output .= "<p>Now that you know what is in a node, here are some of the types of nodes available.</p>";
 
+      $output = t($output, array("%teaser" => l(t("click here"), "admin/system/modules/node"), "%queue" => l(t("click here"), "admin/system/modules/queue") ));
+
       if ($mod == "admin") {
         foreach (module_list() as $name) {
           if (module_hook($name, "node") && $name != "node") {
@@ -42,23 +44,24 @@ function node_help($section = "admin/node/help") {
       break;
 
     case 'admin/system/modules':
-      $output = "The core that allows content to be submitted to the site.";
+      $output = t("The core that allows content to be submitted to the site.");
       break;
     case 'admin/system/modules/node':
-      $output = "Settings for the core of Drupal. Almost everything is a node so these settings will affect most of the site.";
+      $output = t("Settings for the core of Drupal. Almost everything is a node so these settings will affect most of the site.");
       break;
     case 'admin/node':
-      $output = strtr("Below is a list of all of the nodes in your site. Other forms of content are listed elsewhere (e.g. %comment).<br />Clicking a title views that node, while clicking an author's name edits their user information.<br />Other node-related tasks are available from the menu on the left.",array("%comments" => l(t("comments"), "admin/comment") ));
+      $output = t("Below is a list of all of the nodes in your site. Other forms of content are listed elsewhere (e.g. %comment).<br />Clicking a title views that node, while clicking an author's name edits their user information.<br />Other node-related tasks are available from the menu on the left.",array("%comments" => l(t("comments"), "admin/comment") ));
       break;
     case 'admin/node/search':
-      $output = "Enter a simple pattern to search for a post. This can include the wildcard character *.<br />For example, a search for \"br*\" might return \"bread bakers\", \"our daily bread\" and \"brenda\".";
+      $output = t("Enter a simple pattern to search for a post. This can include the wildcard character *.<br />For example, a search for \"br*\" might return \"bread bakers\", \"our daily bread\" and \"brenda\".");
       break;
     case 'admin/node/settings':
-      $output = "This pages lets you set the defaults used during creation of nodes for all the different node types.<br /><b>comment:</b> Read/write setting for comments.<br /><b>publish:</b> Is this node publicly viewable, has it been published?<br /><b>promote:</b> Is this node to be promoted to the front page?<br /><b>moderate:</b> Does this node need approval before it can be viewed?<br /><b>static:</b> Is this node always visible on the front page?<br /><b>revision:</b> Will this node go into the revision system allowing multiple versions to be saved?";
+      $output = t("This pages lets you set the defaults used during creation of nodes for all the different node types.<br /><b>comment:</b> Read/write setting for comments.<br /><b>publish:</b> Is this node publicly viewable, has it been published?<br /><b>promote:</b> Is this node to be promoted to the front page?<br /><b>moderate:</b> Does this node need approval before it can be viewed?<br /><b>static:</b> Is this node always visible on the front page?<br /><b>revision:</b> Will this node go into the revision system allowing multiple versions to be saved?");
       break;
 
   }
-  return t($output);
+
+  return $output;
 }
 
 function node_system($field){
diff --git a/modules/page.module b/modules/page.module
index 204d7b8f1a60..5826402aca1b 100644
--- a/modules/page.module
+++ b/modules/page.module
@@ -9,14 +9,15 @@ function page_help($section = "admin/page/help") {
     case 'admin/page/help':
       $output .= "<p>The page module is used to create a <i>static page</i>.  Unlike a story, a static page is a persistent web page on your site which usually shortcuts the typical lifecycle of user generated content (i.e. submit -&gt; moderate -&gt; post -&gt; comment).  A static page is usually linked from the main navigation bar, using whatever text the author wishes.  To create a static page without this navigation link, simply skip the link text field.</p>";
       $output .= "<p>Site pages, unlike many other forms of Drupal content, may be made of PHP code in addition to HTML and text. All Drupal objects and functions are available to a site administrator.</p>";
+      $output = t($output);
       break;
     case 'admin/system/modules':
-      $output = "Enables the creation of a static pages that can be added to the navigation system.";
+      $output = t("Enables the creation of a static pages that can be added to the navigation system.");
       break;
 
   }
 
-  return t($output);
+  return $output;
 }
 
 function page_system($field) {
diff --git a/modules/page/page.module b/modules/page/page.module
index 204d7b8f1a60..5826402aca1b 100644
--- a/modules/page/page.module
+++ b/modules/page/page.module
@@ -9,14 +9,15 @@ function page_help($section = "admin/page/help") {
     case 'admin/page/help':
       $output .= "<p>The page module is used to create a <i>static page</i>.  Unlike a story, a static page is a persistent web page on your site which usually shortcuts the typical lifecycle of user generated content (i.e. submit -&gt; moderate -&gt; post -&gt; comment).  A static page is usually linked from the main navigation bar, using whatever text the author wishes.  To create a static page without this navigation link, simply skip the link text field.</p>";
       $output .= "<p>Site pages, unlike many other forms of Drupal content, may be made of PHP code in addition to HTML and text. All Drupal objects and functions are available to a site administrator.</p>";
+      $output = t($output);
       break;
     case 'admin/system/modules':
-      $output = "Enables the creation of a static pages that can be added to the navigation system.";
+      $output = t("Enables the creation of a static pages that can be added to the navigation system.");
       break;
 
   }
 
-  return t($output);
+  return $output;
 }
 
 function page_system($field) {
diff --git a/modules/ping.module b/modules/ping.module
index cbbe95198a18..5befbc36b067 100644
--- a/modules/ping.module
+++ b/modules/ping.module
@@ -8,16 +8,17 @@ function ping_help($section = "admin/ping/help") {
     case 'admin/help':
     case 'admin/ping/help':
       $output .= "<p>Drupal can pings sites automatically to notify them that your site has changed. It can ping the following sites:</p>";
-      $output .= strtr("<p>%weblogs, a web site that tracks and displays links to changed weblogs and news-oriented web sites. To get your Drupal site listed, weblogs.com must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs system. The ping module automatically notifies weblogs.com when your site is updated.  To do so, Drupal implements the %weblogs-XML.</p>", array("%weblogs" => "<a href=\"http://www.weblogs.com/\">". t("Weblogs.com") ."</a>", "%weblogs-XML" => "<a href=\"http://www.xmlrpc.com/weblogsCom/\">". t("XML-RPC interface of weblogs.com") ."</a>"));
-      $output .= strtr("<p>%weblogs-RSS, a web site that tracks and displays links to recently changed RSS feeds in XML format. To get your Drupal site listed, %weblogs-RSS must be informed about updates to your RSS feed.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs-RSS-changes system. The ping module automatically notifies %weblogs-RSS when your site is updated.</p>", array("%weblogs-RSS" => "<a href=\"http://www.xmlrpc.com/weblogsComForRSS\">". t("Weblogs.Com for RSS") ."</a>", "%weblogs-RSS-changes" => "<a href=\"http://www.weblogs.com/rssUpdates/changes.xml\">". t("the weblogs.com for RSS") ."</a>"));
-      $output .= strtr("<p>%blo-gs, a directory of recently updated weblogs and tools for tracking interesting weblogs, in the spirit of services like %weblogs, %blogtracker and %blogrolling. To get your Drupal site listed, %blo-gs must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %blo-gs system. The ping module automatically notifies blo.gs when your site is updated.  To do so, Drupal implements the %blo-gs-XML.</p>", array("%blo-gs" => "<a href=\"http://blo.gs/\">". t("blo.gs") ."</a>", "%weblogs" => "<a href=\"http://www.weblogs.com/\">". t("weblogs.com") ."</a>", "%blogtracker" => "<a href=\"http://www.dansanderson.com/blogtracker\">". t("blogtracker") ."</a>", "%blogrolling" => "<a href=\"http://www.blogrolling.com\">". t("blogtolling.com") ."</a>", "%blo-gs-XML" => "<a href=\"http://blo.gs/ping.php\">". t("XML-RPC interface of blo.gs") ."</a>" ));
+      $output .= "<p>%weblogs, a web site that tracks and displays links to changed weblogs and news-oriented web sites. To get your Drupal site listed, weblogs.com must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs system. The ping module automatically notifies weblogs.com when your site is updated.  To do so, Drupal implements the %weblogs-XML.</p>";
+      $output .= "<p>%weblogs-RSS, a web site that tracks and displays links to recently changed RSS feeds in XML format. To get your Drupal site listed, %weblogs-RSS must be informed about updates to your RSS feed.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs-RSS-changes system. The ping module automatically notifies %weblogs-RSS when your site is updated.</p>";
+      $output .= "<p>%blo-gs, a directory of recently updated weblogs and tools for tracking interesting weblogs, in the spirit of services like %weblogs, %blogtracker and %blogrolling. To get your Drupal site listed, %blo-gs must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %blo-gs system. The ping module automatically notifies blo.gs when your site is updated.  To do so, Drupal implements the %blo-gs-XML.</p>";
       // for optional modules that ping other sites
       // $output .= module_invoke_all("ping_help");
       $output .= "<p>The ping feature requires crontab.</p>";
+      $output = t($output,  array("%weblogs" => "<a href=\"http://www.weblogs.com/\">Weblogs.com</a>", "%weblogs-XML" => "<a href=\"http://www.xmlrpc.com/weblogsCom/\">". t("XML-RPC interface of weblogs.com") ."</a>", "%weblogs-RSS" => "<a href=\"http://www.xmlrpc.com/weblogsComForRSS\">". t("Weblogs.Com for RSS") ."</a>", "%weblogs-RSS-changes" => "<a href=\"http://www.weblogs.com/rssUpdates/changes.xml\">". t("the weblogs.com for RSS") ."</a>", "%blo-gs" => "<a href=\"http://blo.gs/\">blo.gs</a>", "%blogtracker" => "<a href=\"http://www.dansanderson.com/blogtracker\">blogtracker</a>", "%blogrolling" => "<a href=\"http://www.blogrolling.com\">blogtolling.com</a>", "%blo-gs-XML" => "<a href=\"http://blo.gs/ping.php\">". t("XML-RPC interface of blo.gs") ."</a>" ));
       break;
 
     case 'admin/system/modules':
-      $output = "Alerts other site(s) that your site has been updated.";
+      $output = t("Alerts other site(s) that your site has been updated.");
       break;
   }
 
diff --git a/modules/ping/ping.module b/modules/ping/ping.module
index cbbe95198a18..5befbc36b067 100644
--- a/modules/ping/ping.module
+++ b/modules/ping/ping.module
@@ -8,16 +8,17 @@ function ping_help($section = "admin/ping/help") {
     case 'admin/help':
     case 'admin/ping/help':
       $output .= "<p>Drupal can pings sites automatically to notify them that your site has changed. It can ping the following sites:</p>";
-      $output .= strtr("<p>%weblogs, a web site that tracks and displays links to changed weblogs and news-oriented web sites. To get your Drupal site listed, weblogs.com must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs system. The ping module automatically notifies weblogs.com when your site is updated.  To do so, Drupal implements the %weblogs-XML.</p>", array("%weblogs" => "<a href=\"http://www.weblogs.com/\">". t("Weblogs.com") ."</a>", "%weblogs-XML" => "<a href=\"http://www.xmlrpc.com/weblogsCom/\">". t("XML-RPC interface of weblogs.com") ."</a>"));
-      $output .= strtr("<p>%weblogs-RSS, a web site that tracks and displays links to recently changed RSS feeds in XML format. To get your Drupal site listed, %weblogs-RSS must be informed about updates to your RSS feed.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs-RSS-changes system. The ping module automatically notifies %weblogs-RSS when your site is updated.</p>", array("%weblogs-RSS" => "<a href=\"http://www.xmlrpc.com/weblogsComForRSS\">". t("Weblogs.Com for RSS") ."</a>", "%weblogs-RSS-changes" => "<a href=\"http://www.weblogs.com/rssUpdates/changes.xml\">". t("the weblogs.com for RSS") ."</a>"));
-      $output .= strtr("<p>%blo-gs, a directory of recently updated weblogs and tools for tracking interesting weblogs, in the spirit of services like %weblogs, %blogtracker and %blogrolling. To get your Drupal site listed, %blo-gs must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %blo-gs system. The ping module automatically notifies blo.gs when your site is updated.  To do so, Drupal implements the %blo-gs-XML.</p>", array("%blo-gs" => "<a href=\"http://blo.gs/\">". t("blo.gs") ."</a>", "%weblogs" => "<a href=\"http://www.weblogs.com/\">". t("weblogs.com") ."</a>", "%blogtracker" => "<a href=\"http://www.dansanderson.com/blogtracker\">". t("blogtracker") ."</a>", "%blogrolling" => "<a href=\"http://www.blogrolling.com\">". t("blogtolling.com") ."</a>", "%blo-gs-XML" => "<a href=\"http://blo.gs/ping.php\">". t("XML-RPC interface of blo.gs") ."</a>" ));
+      $output .= "<p>%weblogs, a web site that tracks and displays links to changed weblogs and news-oriented web sites. To get your Drupal site listed, weblogs.com must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs system. The ping module automatically notifies weblogs.com when your site is updated.  To do so, Drupal implements the %weblogs-XML.</p>";
+      $output .= "<p>%weblogs-RSS, a web site that tracks and displays links to recently changed RSS feeds in XML format. To get your Drupal site listed, %weblogs-RSS must be informed about updates to your RSS feed.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %weblogs-RSS-changes system. The ping module automatically notifies %weblogs-RSS when your site is updated.</p>";
+      $output .= "<p>%blo-gs, a directory of recently updated weblogs and tools for tracking interesting weblogs, in the spirit of services like %weblogs, %blogtracker and %blogrolling. To get your Drupal site listed, %blo-gs must be informed about your site's updates.  This is the job of the ping module and when installed, the administrator doesn't have to do anything to participate in the %blo-gs system. The ping module automatically notifies blo.gs when your site is updated.  To do so, Drupal implements the %blo-gs-XML.</p>";
       // for optional modules that ping other sites
       // $output .= module_invoke_all("ping_help");
       $output .= "<p>The ping feature requires crontab.</p>";
+      $output = t($output,  array("%weblogs" => "<a href=\"http://www.weblogs.com/\">Weblogs.com</a>", "%weblogs-XML" => "<a href=\"http://www.xmlrpc.com/weblogsCom/\">". t("XML-RPC interface of weblogs.com") ."</a>", "%weblogs-RSS" => "<a href=\"http://www.xmlrpc.com/weblogsComForRSS\">". t("Weblogs.Com for RSS") ."</a>", "%weblogs-RSS-changes" => "<a href=\"http://www.weblogs.com/rssUpdates/changes.xml\">". t("the weblogs.com for RSS") ."</a>", "%blo-gs" => "<a href=\"http://blo.gs/\">blo.gs</a>", "%blogtracker" => "<a href=\"http://www.dansanderson.com/blogtracker\">blogtracker</a>", "%blogrolling" => "<a href=\"http://www.blogrolling.com\">blogtolling.com</a>", "%blo-gs-XML" => "<a href=\"http://blo.gs/ping.php\">". t("XML-RPC interface of blo.gs") ."</a>" ));
       break;
 
     case 'admin/system/modules':
-      $output = "Alerts other site(s) that your site has been updated.";
+      $output = t("Alerts other site(s) that your site has been updated.");
       break;
   }
 
diff --git a/modules/poll.module b/modules/poll.module
index 74ca02e8930b..139f83cce8f9 100644
--- a/modules/poll.module
+++ b/modules/poll.module
@@ -137,9 +137,28 @@ function poll_form(&$node, &$help, &$error) {
   return $output;
 }
 
-function poll_help() {
-  $output .= "<p>Users with the correct ". l("permissions","admin/user/permission") ." can create and/or vote on polls.</p><ul><li> To create a poll a user needs the \"create polls\" permission.</li><li>To vote on a poll question a user must have the \"vote on polls\" permission.</li><li>To view the results one needs the \"access content\" permission.</li><li>To administer polls you need the \"administer nodes\" permission.</li></ul><p>Creating a poll is much like creating any other node. Click \"create poll\" in your user box. The title of the poll should be the question, then enter the answers and the \"base\" vote counts. You can also choose the time period over which the vote will run.</p><p>The ". l("Poll", "poll") ." item in the navigation links will take you to a page where you can see all the current polls, vote on them (if you haven't already) and view the results.</p>";
-  return t($output);
+function poll_help($section = "admin/poll/help") {
+  $output = "";
+
+  switch ($section) {
+
+    case 'admin/poll/help':
+      $output .= "<p>Users with the correct %permissions can create and/or vote on polls.</p>";
+      $output .= "<ul>";
+      $output .= "<li> To create a poll a user needs the \"create polls\" permission.</li>";
+      $output .= "<li>To vote on a poll question a user must have the \"vote on polls\" permission.</li>";
+      $output .= "<li>To view the results one needs the \"access content\" permission.</li>";
+      $output .= "<li>To administer polls you need the \"administer nodes\" permission.</li>";
+      $output .= "</ul>";
+      $output .= "<p>Creating a poll is much like creating any other node. Click \"create poll\" in your user box. The title of the poll should be the question, then enter the answers and the \"base\" vote counts. You can also choose the time period over which the vote will run.</p><p>The %poll item in the navigation links will take you to a page where you can see all the current polls, vote on them (if you haven't already) and view the results.</p>";
+      $output = t($output, array("%permissions" => l(t("permissions"), "admin/user/permission"), "%poll" => l(t("Poll"), "poll") ));
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables your site to capture votes on different topics in the form of multiple choice questions.");
+      break;
+  }
+
+  return $output;
 }
 
 function poll_insert($node) {
@@ -244,8 +263,11 @@ function poll_perm() {
 }
 
 function poll_system($field){
-  $system["description"] = t("Enables your site to capture votes on different topics in the form of multiple choice questions.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") { $output = poll_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function poll_teaser($node) {
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index 74ca02e8930b..139f83cce8f9 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -137,9 +137,28 @@ function poll_form(&$node, &$help, &$error) {
   return $output;
 }
 
-function poll_help() {
-  $output .= "<p>Users with the correct ". l("permissions","admin/user/permission") ." can create and/or vote on polls.</p><ul><li> To create a poll a user needs the \"create polls\" permission.</li><li>To vote on a poll question a user must have the \"vote on polls\" permission.</li><li>To view the results one needs the \"access content\" permission.</li><li>To administer polls you need the \"administer nodes\" permission.</li></ul><p>Creating a poll is much like creating any other node. Click \"create poll\" in your user box. The title of the poll should be the question, then enter the answers and the \"base\" vote counts. You can also choose the time period over which the vote will run.</p><p>The ". l("Poll", "poll") ." item in the navigation links will take you to a page where you can see all the current polls, vote on them (if you haven't already) and view the results.</p>";
-  return t($output);
+function poll_help($section = "admin/poll/help") {
+  $output = "";
+
+  switch ($section) {
+
+    case 'admin/poll/help':
+      $output .= "<p>Users with the correct %permissions can create and/or vote on polls.</p>";
+      $output .= "<ul>";
+      $output .= "<li> To create a poll a user needs the \"create polls\" permission.</li>";
+      $output .= "<li>To vote on a poll question a user must have the \"vote on polls\" permission.</li>";
+      $output .= "<li>To view the results one needs the \"access content\" permission.</li>";
+      $output .= "<li>To administer polls you need the \"administer nodes\" permission.</li>";
+      $output .= "</ul>";
+      $output .= "<p>Creating a poll is much like creating any other node. Click \"create poll\" in your user box. The title of the poll should be the question, then enter the answers and the \"base\" vote counts. You can also choose the time period over which the vote will run.</p><p>The %poll item in the navigation links will take you to a page where you can see all the current polls, vote on them (if you haven't already) and view the results.</p>";
+      $output = t($output, array("%permissions" => l(t("permissions"), "admin/user/permission"), "%poll" => l(t("Poll"), "poll") ));
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables your site to capture votes on different topics in the form of multiple choice questions.");
+      break;
+  }
+
+  return $output;
 }
 
 function poll_insert($node) {
@@ -244,8 +263,11 @@ function poll_perm() {
 }
 
 function poll_system($field){
-  $system["description"] = t("Enables your site to capture votes on different topics in the form of multiple choice questions.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") { $output = poll_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function poll_teaser($node) {
diff --git a/modules/profile.module b/modules/profile.module
index fbea78419c98..f3a07f3e5902 100644
--- a/modules/profile.module
+++ b/modules/profile.module
@@ -41,13 +41,13 @@ function profile_help($section) {
 
   switch ($section) {
     case 'admin/system/modules':
-      $output = "Support for configurable user profiles.";
+      $output = t("Support for configurable user profiles.");
       break;
     case 'admin/system/modules/profile':
-      $output = strtr("When a user creates an account you can ask them to give you some extra information about themselves, as well as letting them use a small picture, called an avatar.<br />Notes:<ul><li>In order for a user to enter information you <b>must</b> check \"enable\".</li><li>In order for other people too see the entered information you must make it \"public\".</li><li>If an item is \"public\", but not enabled, the user can never give it a value and it will never be seen.  Public does <b>not</b> imply \"enable\".</li><li>If an item is enabled, but not shown in the registration form the user will have to %edit to place information in the field.</ul>", array("%edit" => l(t("edit their account"), "user/edit") ));
+      $output = t("When a user creates an account you can ask for some extra information, as well as letting the user have a small picture, called an avatar.<br />Notes:<ul><li>In order for a user to enter information you <b>must</b> check \"enable\".</li><li>In order for other people too see the entered information you must make it \"public\".</li><li>If an item is \"public\", but not enabled, the user can never give it a value and it will never be seen.  Public does <b>not</b> imply \"enable\".</li><li>If an item is enabled, but not shown in the registration form the user will have to %edit to place information in the field.</ul>", array("%edit" => l(t("edit their account"), "user/edit") ));
       break;
   }
-  return t($output);
+  return $output;
 }
 
 function profile_system($field) {
diff --git a/modules/profile/profile.module b/modules/profile/profile.module
index fbea78419c98..f3a07f3e5902 100644
--- a/modules/profile/profile.module
+++ b/modules/profile/profile.module
@@ -41,13 +41,13 @@ function profile_help($section) {
 
   switch ($section) {
     case 'admin/system/modules':
-      $output = "Support for configurable user profiles.";
+      $output = t("Support for configurable user profiles.");
       break;
     case 'admin/system/modules/profile':
-      $output = strtr("When a user creates an account you can ask them to give you some extra information about themselves, as well as letting them use a small picture, called an avatar.<br />Notes:<ul><li>In order for a user to enter information you <b>must</b> check \"enable\".</li><li>In order for other people too see the entered information you must make it \"public\".</li><li>If an item is \"public\", but not enabled, the user can never give it a value and it will never be seen.  Public does <b>not</b> imply \"enable\".</li><li>If an item is enabled, but not shown in the registration form the user will have to %edit to place information in the field.</ul>", array("%edit" => l(t("edit their account"), "user/edit") ));
+      $output = t("When a user creates an account you can ask for some extra information, as well as letting the user have a small picture, called an avatar.<br />Notes:<ul><li>In order for a user to enter information you <b>must</b> check \"enable\".</li><li>In order for other people too see the entered information you must make it \"public\".</li><li>If an item is \"public\", but not enabled, the user can never give it a value and it will never be seen.  Public does <b>not</b> imply \"enable\".</li><li>If an item is enabled, but not shown in the registration form the user will have to %edit to place information in the field.</ul>", array("%edit" => l(t("edit their account"), "user/edit") ));
       break;
   }
-  return t($output);
+  return $output;
 }
 
 function profile_system($field) {
diff --git a/modules/queue.module b/modules/queue.module
index 50745ac16814..ab8ba3b90064 100644
--- a/modules/queue.module
+++ b/modules/queue.module
@@ -15,13 +15,13 @@ function queue_help($section) {
 
   switch ($section) {
     case 'admin/system/modules':
-      $output = "Enables content to be moderated by the community.";
+      $output = t("Enables content to be moderated by the community.");
       break;
     case 'admin/system/modules/queue':
-      $output = "The queue provides a way for your users to vote on submitted content. This is called <b>moderation</b>. Users can moderate a post up (give it a point), or down (subtract a point). The settings below give you control over how many points are required for the status of a post to be automatically changed. See individual items for details.";
+      $output = t("The queue provides a way for your users to vote on submitted content. This is called <b>moderation</b>. Users can moderate a post up (give it a point), or down (subtract a point). The settings below give you control over how many points are required for the status of a post to be automatically changed. See individual items for details.");
       break;
   }
-  return t($output);
+  return $output;
 }
 
 function queue_settings() {
diff --git a/modules/search.module b/modules/search.module
index 3c98d4cc53c8..a3f1707f3931 100644
--- a/modules/search.module
+++ b/modules/search.module
@@ -10,13 +10,14 @@ function search_help($section = "admin/search/help") {
       $output = "<b>Search guidelines</b>";
       $output .= "<p>The search page allows you to search the web site's content.  You can specify multiple words, and they will all be searched for.  You can also use wildcards, so 'walk*' will match 'walk', 'walking', 'walker', 'walkable' and so on.  Furthermore, searches are not case sensitive so searching for 'walk', 'Walk' or 'WALK' will yield exactly the same results.</p>";
       $output .= "<b>Words excluded from the search</b>";
-      $output .= strtr("<p>Words that frequently occur, typically called 'noise words', are ignored.  Example words are 'a', 'at', 'and', 'are', 'as', 'how', 'where', etc.  Words shorter than %number letters are also ignored.</p>", array("%number" => variable_get("minimum_word_size", 2)));
+      $output .= "<p>Words that frequently occur, typically called 'noise words', are ignored.  Example words are 'a', 'at', 'and', 'are', 'as', 'how', 'where', etc.  Words shorter than %number letters are also ignored.</p>";
+      $output = t($output, array("%number" => variable_get("minimum_word_size", 2) ));
       break;
     case 'admin/system/modules':
-      $output = "Enables site wide keyword searching.";
+      $output = t("Enables site wide keyword searching.");
       break;
     case 'admin/system/modules/search':
-      $output = "The search engine works by keeping an index of \"interesting\" words. To make sure we only get \"interesting\" words you need to set the following.";
+      $output = t("The search engine works by keeping an index of \"interesting\" words. To make sure we only get \"interesting\" words you need to set the following.");
       break;
   }
   return $output;
diff --git a/modules/search/search.module b/modules/search/search.module
index 3c98d4cc53c8..a3f1707f3931 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -10,13 +10,14 @@ function search_help($section = "admin/search/help") {
       $output = "<b>Search guidelines</b>";
       $output .= "<p>The search page allows you to search the web site's content.  You can specify multiple words, and they will all be searched for.  You can also use wildcards, so 'walk*' will match 'walk', 'walking', 'walker', 'walkable' and so on.  Furthermore, searches are not case sensitive so searching for 'walk', 'Walk' or 'WALK' will yield exactly the same results.</p>";
       $output .= "<b>Words excluded from the search</b>";
-      $output .= strtr("<p>Words that frequently occur, typically called 'noise words', are ignored.  Example words are 'a', 'at', 'and', 'are', 'as', 'how', 'where', etc.  Words shorter than %number letters are also ignored.</p>", array("%number" => variable_get("minimum_word_size", 2)));
+      $output .= "<p>Words that frequently occur, typically called 'noise words', are ignored.  Example words are 'a', 'at', 'and', 'are', 'as', 'how', 'where', etc.  Words shorter than %number letters are also ignored.</p>";
+      $output = t($output, array("%number" => variable_get("minimum_word_size", 2) ));
       break;
     case 'admin/system/modules':
-      $output = "Enables site wide keyword searching.";
+      $output = t("Enables site wide keyword searching.");
       break;
     case 'admin/system/modules/search':
-      $output = "The search engine works by keeping an index of \"interesting\" words. To make sure we only get \"interesting\" words you need to set the following.";
+      $output = t("The search engine works by keeping an index of \"interesting\" words. To make sure we only get \"interesting\" words you need to set the following.");
       break;
   }
   return $output;
diff --git a/modules/statistics.module b/modules/statistics.module
index c847f60a1df8..6ce491f9c639 100644
--- a/modules/statistics.module
+++ b/modules/statistics.module
@@ -145,24 +145,24 @@ function statistics_help($section = "admin/statistics/help") {
     case 'admin/help':
     case 'admin/statistics/help':
       $output .= "<h3>Introduction</h3>";
-      $output .= "<p>The statistics.module keeps track of numerous statistics for your site but be warned, statistical collection does cause a little overhead, thus everything comes disabled by default.<p>";
+      $output .= "<p>The statistics.module keeps track of numerous statistics for your site but be warned, statistical collection does cause a little overhead, thus everything comes <b>disabled</b> by default.<p>";
       $output .= "<p>The module counts how many times, and from where -- using HTTP referrer -- each of your nodes is viewed. Once we have that count the module can do the following with it:";
       $output .= "<ul>";
       $output .= "<li>The count can be displayed in the node's link section next to \"# comments\".</li>";
       $output .= "<li>A configurable block can be added which can display the day's top stories, the all time top stories, and the last stories read. Each section in the block has a title, which you can change, as well as being able to change how many node titles will be displayed</li>";
       $output .= "<li>A configurable user page can be added, which can display the day's top stories, the all time top stories, and the last stories read.  Each section in the page has a title, which you can change, as well as being able to change the number of stories to be displayed.</li>";
       $output .= "<li>A configurable block can be added that displays the count of how many users, as well as a list of their names, and guests are currently accessing your site.</li>";
-      $output .= strtr("<li>An auto-throttle, congestion controling mechanism can be used on your site if you have enabled the %throttle.</li>",array("%throttle" => l(t("throttle.module"), "admin/system/modules") ));
+      $output .= "<li>An auto-throttle, congestion controling mechanism can be used on your site if you have enabled the %throttle.</li>";
       $output .= "</ul>";
       $output .= "<p>Notes on using the statistics:</p>";
       $output .= "<ul>";
       $output .= "<li>If you enable the node view counters, this adds 1 database query for each node that is viewed (2 queries if it's the first time the node has ever been viewed).</li>";
       $output .= "<li>If you enable the access log, this adds 1 database query for each page that Drupal displays.  Logged information includes:  HTTP referrer (if any), node being accessed (if any), user ID (if any), the IP address of the user, and the time the page was viewed.</li>";
       $output .= "</ul>";
-      $output .= strtr("<p>As with any new module, the <i>statistics.module</i> needs to be %modules before you can use it.  Also refer to the %permissions, as this module supports four separate permissions.</p>", array("%modules" => l(t("enabled"), "admin/system/modules"), "%permissions" => l(t("permissions section"), "admin/user/permission") ));
-      $output .= strtr("<h3>%referers</h3><p>This admin page shows you site-wide referrer statistics.  You can see '<i>all</i>' statistics, '<i>external</i>' statistics or '<i>internal</i>' statistics.  Default is 'external'.</p>",array("%referers" => l(t("referrers log"), "admin.statistics/referrers") ));
-      $output .= strtr("<h3>%access</h3><p>This admin page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your Drupal site is the most popular.  Also on this page are links to the referrer statistics for each listed node.</p>",array("%access" => l(t("access log"), "admin.statistics/log") ));
-      $output .= strtr("<h3>Configuring the statistics module</h3><p>There are some configuration options added to the main %configuration section:</p>", array("%configuration" => l(t("site configuration"), "admin/system/modules/statistics") ));
+      $output .= "<p>As with any new module, the <i>statistics.module</i> needs to be %modules before you can use it.  Also refer to the %permissions, as this module supports four separate permissions.</p>";
+      $output .= "<h3>%referers</h3><p>This admin page shows you site-wide referrer statistics.  You can see '<i>all</i>' statistics, '<i>external</i>' statistics or '<i>internal</i>' statistics.  Default is 'external'.</p>";
+      $output .= "<h3>%access</h3><p>This admin page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your Drupal site is the most popular.  Also on this page are links to the referrer statistics for each listed node.</p>";
+      $output .= "<h3>Configuring the statistics module</h3><p>There are some configuration options added to the main %configuration section:</p>";
       $output .= "<ul>";
       $output .= "<li><i>enable access log</i> -- allows you to turn the access log on and off.  This log is used to store things like referrers and who's online.  Enabling the log adds one database call per page displayed by Drupal.</li>";
       $output .= "<li><i>discard access logs older than</i> -- allows you to configure how long an access log entry is saved, after which time it is deleted from the database table. To use this you need to run \"cron.php\"</li>";
@@ -172,14 +172,14 @@ function statistics_help($section = "admin/statistics/help") {
       $output .= "<h3>Top nodes block</h3>";
       $output .= "<p>This module creates a block that can display the day's top viewed nodes, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.  If you disable all sections of this block, it will not appear.</p>";
       $output .= "<p>The administrative \"top nodes block\" screen also allows you to assign a name to the block.</p>";
-      $output .= strtr("<p>Don't forget to enable the block %here.</p>",array("%here" => l(t("here"), "admin/system/block") ));
+      $output .= "<p>Don't forget to enable the block %here-block.</p>";
 
       $output .= "<h3>Top nodes page</h3>";
       $output .= "<p>This module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.</p>";
       $output .= "<p>The administrative \"top nodes page\" screen also allows you to assign a name for the automatically generated link to the user page.  If no name is set, the link will not be displayed.</p>";
       $output .= "<h3>Who's online block</h3><p>This module creates a block that can display how many user's and guests are currently online.  You are able to configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.</p>";
-      $output .= strtr("<p>Don't forget to enable the block %here.</p>",array("%here" => l(t("here"), "admin/system/block") ));
-      $output .= strtr("<h3>Permissions</h3><p>This module has four permissions that need to be configured in %permissions.</p>",array("%permissions" => l(t("user permissions"), "admin/user/permission") ));
+      $output .= "<p>Don't forget to enable the block %here-block.</p>";
+      $output .= "<h3>Permissions</h3><p>This module has four permissions that need to be configured in %permissions.</p>";
       $output .= "<ul>";
       $output .= "<li><i>access statistics</i> - enable for user roles that get to see individual node counts.  (This does not define access to the block)</li>";
       $output .= "<li><i>access userlist</i> - enable for user roles that get to see the list of user's that are currently online within the \"Who's online\" block.</li>";
@@ -212,43 +212,44 @@ function statistics_help($section = "admin/statistics/help") {
        else {
          // throttle limit not reached, execute normally
        }</pre></p>";
-      $output .= strtr("<p>Note:  Even though the configuration for the throttle is handled by the 'throttle.module', the throttle logic itself is part of the 'statistics.module'.  The configuration has been separated in order to make things easier for the average site that will not be utilizing the throttling mechanism.  More information about how the throttle works can be found on the throttle.module help page.  (Find the throttle help page %here if you have enabled the throttle.module).</p>",array ("%here" => l(t("here"), "admin/help#throttle") ));
+      $output .= "<p>Note: Even though the configuration for the throttle is handled by the 'throttle.module', the throttle logic itself is part of the 'statistics.module'.  The configuration has been separated in order to make things easier for the average site that will not be utilizing the throttling mechanism.  More information about how the throttle works can be found on the throttle.module help page.  (Find the throttle help page %here-help if you have enabled the throttle.module).</p>";
+      $output = t($output, array("%throttle" => l(t("throttle.module"), "admin/system/modules"), "%modules" => l(t("enabled"), "admin/system/modules"), "%permissions" => l(t("permissions section"), "admin/user/permission"), "%referers" => l(t("referrers log"), "admin.statistics/referrers"), "%access" => l(t("access log"), "admin.statistics/log"), "%configuration" => l(t("site configuration"), "admin/system/modules/statistics"), "%here-block" => l(t("here"), "admin/system/block"), "%here-help" => l(t("here"), "admin/help#throttle") ));
       break;
     case 'admin/system/modules':
-      $output = "Logs access statistics for your site.";
+      $output = t("Logs access statistics for your site.");
       break;
     case 'admin/system/modules/statistics':
-      $output = strtr("Settings for the statistical information that Drupal will keep about the site. See %statistics for the actual information.", array("%statistics" => l(t("site statistics"),"admin/statistics") ));
+      $output = t("Settings for the statistical information that Drupal will keep about the site. See %statistics for the actual information.", array("%statistics" => l(t("site statistics"),"admin/statistics") ));
       break;
     case 'admin/statistics':
-      $output = "This page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your site is the most popular.";
+      $output = t("This page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your site is the most popular.");
       break;
     case 'admin/statistics/referrers':
-      $output = "This page shows you site-wide referrer statistics.  You can see 'all referrers', 'external referrers' or 'internal referrers'. Referrers are web sites, both your site, and other peoples, that point to your web site.";
+      $output = t("This page shows you site-wide referrer statistics.  You can see 'all referrers', 'external referrers' or 'internal referrers'. Referrers are web sites, both your site, and other peoples, that point to your web site.");
       break;
     case 'admin/statistics/referrers/internal':
-      $output = "This page shows you only 'internal referrers'. Links pointing to your web site, from within your web site.";
+      $output = t("This page shows you only 'internal referrers'. Links pointing to your web site, from within your web site.");
       break;
     case 'admin/statistics/referrers/external':
-      $output = "This page shows you only 'external referrers'. Links pointing to your web site from outside your web site.";
+      $output = t("This page shows you only 'external referrers'. Links pointing to your web site from outside your web site.");
       break;
     case 'admin/statistics/log':
     case 'admin/statistics/log/node':
     case 'admin/statistics/log/user':
     case 'admin/statistics/log/host':
-      $output = "This pages shows you who is accessing your web site.  You can see the hostnames, referrers.  In particular, it is easy to inspect a user's navigation history/trail by clicking on <i>track user</i>.";
+      $output = t("This pages shows you who is accessing your web site.  You can see the hostnames, referrers.  In particular, it is easy to inspect a user's navigation history/trail by clicking on <i>track user</i>.");
       break;
     case 'admin/statistics/top nodes page':
-      $output = "The statistics module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.";
+      $output = t("The statistics module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.");
       break;
     case 'admin/system/block/top nodes block':
-      $output = "The statistics module exports a block that can display the top viewed nodes of the day, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu. If you disable all sections of this block, it will not appear.";
+      $output = t("The statistics module exports a block that can display the top viewed nodes of the day, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu. If you disable all sections of this block, it will not appear.");
       break;
     case 'admin/system/block/whos online block':
-      $output = "The statistics module exports a block that can display how many user's and guests are currently online.  You can configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.";
+      $output = t("The statistics module exports a block that can display how many user's and guests are currently online.  You can configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.");
       break;
   }
-  return t($output);
+  return $output;
 }
 
 
diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module
index c847f60a1df8..6ce491f9c639 100644
--- a/modules/statistics/statistics.module
+++ b/modules/statistics/statistics.module
@@ -145,24 +145,24 @@ function statistics_help($section = "admin/statistics/help") {
     case 'admin/help':
     case 'admin/statistics/help':
       $output .= "<h3>Introduction</h3>";
-      $output .= "<p>The statistics.module keeps track of numerous statistics for your site but be warned, statistical collection does cause a little overhead, thus everything comes disabled by default.<p>";
+      $output .= "<p>The statistics.module keeps track of numerous statistics for your site but be warned, statistical collection does cause a little overhead, thus everything comes <b>disabled</b> by default.<p>";
       $output .= "<p>The module counts how many times, and from where -- using HTTP referrer -- each of your nodes is viewed. Once we have that count the module can do the following with it:";
       $output .= "<ul>";
       $output .= "<li>The count can be displayed in the node's link section next to \"# comments\".</li>";
       $output .= "<li>A configurable block can be added which can display the day's top stories, the all time top stories, and the last stories read. Each section in the block has a title, which you can change, as well as being able to change how many node titles will be displayed</li>";
       $output .= "<li>A configurable user page can be added, which can display the day's top stories, the all time top stories, and the last stories read.  Each section in the page has a title, which you can change, as well as being able to change the number of stories to be displayed.</li>";
       $output .= "<li>A configurable block can be added that displays the count of how many users, as well as a list of their names, and guests are currently accessing your site.</li>";
-      $output .= strtr("<li>An auto-throttle, congestion controling mechanism can be used on your site if you have enabled the %throttle.</li>",array("%throttle" => l(t("throttle.module"), "admin/system/modules") ));
+      $output .= "<li>An auto-throttle, congestion controling mechanism can be used on your site if you have enabled the %throttle.</li>";
       $output .= "</ul>";
       $output .= "<p>Notes on using the statistics:</p>";
       $output .= "<ul>";
       $output .= "<li>If you enable the node view counters, this adds 1 database query for each node that is viewed (2 queries if it's the first time the node has ever been viewed).</li>";
       $output .= "<li>If you enable the access log, this adds 1 database query for each page that Drupal displays.  Logged information includes:  HTTP referrer (if any), node being accessed (if any), user ID (if any), the IP address of the user, and the time the page was viewed.</li>";
       $output .= "</ul>";
-      $output .= strtr("<p>As with any new module, the <i>statistics.module</i> needs to be %modules before you can use it.  Also refer to the %permissions, as this module supports four separate permissions.</p>", array("%modules" => l(t("enabled"), "admin/system/modules"), "%permissions" => l(t("permissions section"), "admin/user/permission") ));
-      $output .= strtr("<h3>%referers</h3><p>This admin page shows you site-wide referrer statistics.  You can see '<i>all</i>' statistics, '<i>external</i>' statistics or '<i>internal</i>' statistics.  Default is 'external'.</p>",array("%referers" => l(t("referrers log"), "admin.statistics/referrers") ));
-      $output .= strtr("<h3>%access</h3><p>This admin page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your Drupal site is the most popular.  Also on this page are links to the referrer statistics for each listed node.</p>",array("%access" => l(t("access log"), "admin.statistics/log") ));
-      $output .= strtr("<h3>Configuring the statistics module</h3><p>There are some configuration options added to the main %configuration section:</p>", array("%configuration" => l(t("site configuration"), "admin/system/modules/statistics") ));
+      $output .= "<p>As with any new module, the <i>statistics.module</i> needs to be %modules before you can use it.  Also refer to the %permissions, as this module supports four separate permissions.</p>";
+      $output .= "<h3>%referers</h3><p>This admin page shows you site-wide referrer statistics.  You can see '<i>all</i>' statistics, '<i>external</i>' statistics or '<i>internal</i>' statistics.  Default is 'external'.</p>";
+      $output .= "<h3>%access</h3><p>This admin page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your Drupal site is the most popular.  Also on this page are links to the referrer statistics for each listed node.</p>";
+      $output .= "<h3>Configuring the statistics module</h3><p>There are some configuration options added to the main %configuration section:</p>";
       $output .= "<ul>";
       $output .= "<li><i>enable access log</i> -- allows you to turn the access log on and off.  This log is used to store things like referrers and who's online.  Enabling the log adds one database call per page displayed by Drupal.</li>";
       $output .= "<li><i>discard access logs older than</i> -- allows you to configure how long an access log entry is saved, after which time it is deleted from the database table. To use this you need to run \"cron.php\"</li>";
@@ -172,14 +172,14 @@ function statistics_help($section = "admin/statistics/help") {
       $output .= "<h3>Top nodes block</h3>";
       $output .= "<p>This module creates a block that can display the day's top viewed nodes, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.  If you disable all sections of this block, it will not appear.</p>";
       $output .= "<p>The administrative \"top nodes block\" screen also allows you to assign a name to the block.</p>";
-      $output .= strtr("<p>Don't forget to enable the block %here.</p>",array("%here" => l(t("here"), "admin/system/block") ));
+      $output .= "<p>Don't forget to enable the block %here-block.</p>";
 
       $output .= "<h3>Top nodes page</h3>";
       $output .= "<p>This module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.</p>";
       $output .= "<p>The administrative \"top nodes page\" screen also allows you to assign a name for the automatically generated link to the user page.  If no name is set, the link will not be displayed.</p>";
       $output .= "<h3>Who's online block</h3><p>This module creates a block that can display how many user's and guests are currently online.  You are able to configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.</p>";
-      $output .= strtr("<p>Don't forget to enable the block %here.</p>",array("%here" => l(t("here"), "admin/system/block") ));
-      $output .= strtr("<h3>Permissions</h3><p>This module has four permissions that need to be configured in %permissions.</p>",array("%permissions" => l(t("user permissions"), "admin/user/permission") ));
+      $output .= "<p>Don't forget to enable the block %here-block.</p>";
+      $output .= "<h3>Permissions</h3><p>This module has four permissions that need to be configured in %permissions.</p>";
       $output .= "<ul>";
       $output .= "<li><i>access statistics</i> - enable for user roles that get to see individual node counts.  (This does not define access to the block)</li>";
       $output .= "<li><i>access userlist</i> - enable for user roles that get to see the list of user's that are currently online within the \"Who's online\" block.</li>";
@@ -212,43 +212,44 @@ function statistics_help($section = "admin/statistics/help") {
        else {
          // throttle limit not reached, execute normally
        }</pre></p>";
-      $output .= strtr("<p>Note:  Even though the configuration for the throttle is handled by the 'throttle.module', the throttle logic itself is part of the 'statistics.module'.  The configuration has been separated in order to make things easier for the average site that will not be utilizing the throttling mechanism.  More information about how the throttle works can be found on the throttle.module help page.  (Find the throttle help page %here if you have enabled the throttle.module).</p>",array ("%here" => l(t("here"), "admin/help#throttle") ));
+      $output .= "<p>Note: Even though the configuration for the throttle is handled by the 'throttle.module', the throttle logic itself is part of the 'statistics.module'.  The configuration has been separated in order to make things easier for the average site that will not be utilizing the throttling mechanism.  More information about how the throttle works can be found on the throttle.module help page.  (Find the throttle help page %here-help if you have enabled the throttle.module).</p>";
+      $output = t($output, array("%throttle" => l(t("throttle.module"), "admin/system/modules"), "%modules" => l(t("enabled"), "admin/system/modules"), "%permissions" => l(t("permissions section"), "admin/user/permission"), "%referers" => l(t("referrers log"), "admin.statistics/referrers"), "%access" => l(t("access log"), "admin.statistics/log"), "%configuration" => l(t("site configuration"), "admin/system/modules/statistics"), "%here-block" => l(t("here"), "admin/system/block"), "%here-help" => l(t("here"), "admin/help#throttle") ));
       break;
     case 'admin/system/modules':
-      $output = "Logs access statistics for your site.";
+      $output = t("Logs access statistics for your site.");
       break;
     case 'admin/system/modules/statistics':
-      $output = strtr("Settings for the statistical information that Drupal will keep about the site. See %statistics for the actual information.", array("%statistics" => l(t("site statistics"),"admin/statistics") ));
+      $output = t("Settings for the statistical information that Drupal will keep about the site. See %statistics for the actual information.", array("%statistics" => l(t("site statistics"),"admin/statistics") ));
       break;
     case 'admin/statistics':
-      $output = "This page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your site is the most popular.";
+      $output = t("This page gives you an at-a-glance look at your top nodes.  It is useful for understanding what content on your site is the most popular.");
       break;
     case 'admin/statistics/referrers':
-      $output = "This page shows you site-wide referrer statistics.  You can see 'all referrers', 'external referrers' or 'internal referrers'. Referrers are web sites, both your site, and other peoples, that point to your web site.";
+      $output = t("This page shows you site-wide referrer statistics.  You can see 'all referrers', 'external referrers' or 'internal referrers'. Referrers are web sites, both your site, and other peoples, that point to your web site.");
       break;
     case 'admin/statistics/referrers/internal':
-      $output = "This page shows you only 'internal referrers'. Links pointing to your web site, from within your web site.";
+      $output = t("This page shows you only 'internal referrers'. Links pointing to your web site, from within your web site.");
       break;
     case 'admin/statistics/referrers/external':
-      $output = "This page shows you only 'external referrers'. Links pointing to your web site from outside your web site.";
+      $output = t("This page shows you only 'external referrers'. Links pointing to your web site from outside your web site.");
       break;
     case 'admin/statistics/log':
     case 'admin/statistics/log/node':
     case 'admin/statistics/log/user':
     case 'admin/statistics/log/host':
-      $output = "This pages shows you who is accessing your web site.  You can see the hostnames, referrers.  In particular, it is easy to inspect a user's navigation history/trail by clicking on <i>track user</i>.";
+      $output = t("This pages shows you who is accessing your web site.  You can see the hostnames, referrers.  In particular, it is easy to inspect a user's navigation history/trail by clicking on <i>track user</i>.");
       break;
     case 'admin/statistics/top nodes page':
-      $output = "The statistics module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.";
+      $output = t("The statistics module creates a user page that can display summaries of the day's top viewed nodes, the all time top nodes and the last nodes viewed.  Each of these summaries can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu.");
       break;
     case 'admin/system/block/top nodes block':
-      $output = "The statistics module exports a block that can display the top viewed nodes of the day, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu. If you disable all sections of this block, it will not appear.";
+      $output = t("The statistics module exports a block that can display the top viewed nodes of the day, the all time top viewed nodes and the last nodes viewed.  Each of these links can be enabled or disabled individually, and the number of nodes displayed for each can be configured with a drop down menu. If you disable all sections of this block, it will not appear.");
       break;
     case 'admin/system/block/whos online block':
-      $output = "The statistics module exports a block that can display how many user's and guests are currently online.  You can configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.";
+      $output = t("The statistics module exports a block that can display how many user's and guests are currently online.  You can configure the name of the block, the name of a sub-block for displaying names of user's currently online, how recently a user must have been active to be considered online, the maximum characters to display from a user's name and the maximum number of user names to display.");
       break;
   }
-  return t($output);
+  return $output;
 }
 
 
diff --git a/modules/story.module b/modules/story.module
index 51a84fea5586..0b58aff6308c 100644
--- a/modules/story.module
+++ b/modules/story.module
@@ -2,26 +2,32 @@
 // $Id$
 
 function story_help($section = "admin/story/help") {
+  $output = "";
+
   switch ($section) {
     case "admin/system/modules":
-      $output = "Enables users to submit stories, articles or similar content.";
+      $output = t("Enables users to submit stories, articles or similar content.");
       break;
     case "admin/system/modules/story":
-      $output = "Stories are like newspaper articles. They tend to follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>. Below you may fix a minimum word count for stories and also write some submission or content guidelines for users wanting to post a story.";
+      $output = t("Stories are like newspaper articles. They tend to follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>. Below you may fix a minimum word count for stories and also write some submission or content guidelines for users wanting to post a story.");
       break;
     case "admin/story/help":
       $output = "<p>The story module lets your users submit articles for consideration by the rest of the community, who can vote on them if moderation is enabled.  Stories usually follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>.  Administrators are able to shortcut this flow as desired.</p>";
-      $output .= "In ". l("site configuration &gt;&gt; modules &gt;&gt; story", "admin/system/modules/story") ." you can set up an introductory text for story authors, and a floor on the number of words which may be included in a story. This is designed to help discourage the submission of trivially short stories.";
+      $output .= "In %story-config you can set up an introductory text for story authors, and a floor on the number of words which may be included in a story. This is designed to help discourage the submission of trivially short stories.";
+      $output = t($output, array("%story-config" => l(t("site configuration &raquo; modules &raquo; story"), "admin/system/modules/story") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function story_system($field){
-  $system["description"] = story_help("admin/system/modules");
-  $system["admin_help"] = story_help("admin/system/modules/story");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") { $output = story_help("admin/system/modules"); }
+  else if ($field == "admin_help") { $output = story_help("admin/system/modules/story"); };
+
+  return $output;
 }
 
 function story_settings() {
diff --git a/modules/story/story.module b/modules/story/story.module
index 51a84fea5586..0b58aff6308c 100644
--- a/modules/story/story.module
+++ b/modules/story/story.module
@@ -2,26 +2,32 @@
 // $Id$
 
 function story_help($section = "admin/story/help") {
+  $output = "";
+
   switch ($section) {
     case "admin/system/modules":
-      $output = "Enables users to submit stories, articles or similar content.";
+      $output = t("Enables users to submit stories, articles or similar content.");
       break;
     case "admin/system/modules/story":
-      $output = "Stories are like newspaper articles. They tend to follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>. Below you may fix a minimum word count for stories and also write some submission or content guidelines for users wanting to post a story.";
+      $output = t("Stories are like newspaper articles. They tend to follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>. Below you may fix a minimum word count for stories and also write some submission or content guidelines for users wanting to post a story.");
       break;
     case "admin/story/help":
       $output = "<p>The story module lets your users submit articles for consideration by the rest of the community, who can vote on them if moderation is enabled.  Stories usually follow a publishing flow of <b>submit -&gt; moderate -&gt; post to the main page -&gt; comments</b>.  Administrators are able to shortcut this flow as desired.</p>";
-      $output .= "In ". l("site configuration &gt;&gt; modules &gt;&gt; story", "admin/system/modules/story") ." you can set up an introductory text for story authors, and a floor on the number of words which may be included in a story. This is designed to help discourage the submission of trivially short stories.";
+      $output .= "In %story-config you can set up an introductory text for story authors, and a floor on the number of words which may be included in a story. This is designed to help discourage the submission of trivially short stories.";
+      $output = t($output, array("%story-config" => l(t("site configuration &raquo; modules &raquo; story"), "admin/system/modules/story") ));
       break;
   }
 
-  return t($output);
+  return $output;
 }
 
 function story_system($field){
-  $system["description"] = story_help("admin/system/modules");
-  $system["admin_help"] = story_help("admin/system/modules/story");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") { $output = story_help("admin/system/modules"); }
+  else if ($field == "admin_help") { $output = story_help("admin/system/modules/story"); };
+
+  return $output;
 }
 
 function story_settings() {
diff --git a/modules/system.module b/modules/system.module
index 04a12e976c1a..180b239bc3a4 100644
--- a/modules/system.module
+++ b/modules/system.module
@@ -2,27 +2,30 @@
 // $Id$
 
 function system_help($section = "admin/system/help") {
+  $output = "";
+
   switch ($section) {
     case "admin/system":
-      $output = "General configuration options for your site. Set up the name of the site, e-mail address used in mail-outs, clean URL options, caching, etc.";
+      $output = t("General configuration options for your site. Set up the name of the site, e-mail address used in mail-outs, clean URL options, caching, etc.");
       break;
     case "admin/system/themes":
-      $output = "Select which themes are available to your users and specify the default theme.";
+      $output = t("Select which themes are available to your users and specify the default theme.");
       break;
     case "admin/system/modules":
-      $output = "Modules are plugins for Drupal that extend its core functionality.  Here you can select which modules are enabled. On the left hand side click on the name of the module for their individual configurations.  Once a module is enabled, you will need to grant permissions to users in user management.";
+      $output = t("Modules are plugins for Drupal that extend its core functionality.  Here you can select which modules are enabled. On the left hand side click on the name of the module for their individual configurations.  Once a module is enabled, you will need to grant permissions to users in user management.");
       break;
     case "admin/system/filters":
-      $output = "Filters fit between the raw text in a node and the HTML output. They allow you to replace text selectively. Uses include automatic conversion of emoticons into graphics and filtering HTML content from users' submissions.";
+      $output = t("Filters fit between the raw text in a node and the HTML output. They allow you to replace text selectively. Uses include automatic conversion of emoticons into graphics and filtering HTML content from users' submissions.");
       break;
     case "admin/system/help":
       $output .= "<p>Drupal comes with system-wide defaults but the setting-module provides control over many Drupal preferences, behaviours including visual and operational settings.</p>";
       $output .= "<h3><a id=\"cron\">Cron</a></h3>". system_help_cron();
       $output .= "<h3><a id=\"cache\">Cache</a></h3>". system_help_cache();
+      $output = t($output);
       break;
   }
 
-  return t("$output");
+  return $output;
 }
 
 function system_system($field) {
diff --git a/modules/system/system.module b/modules/system/system.module
index 04a12e976c1a..180b239bc3a4 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2,27 +2,30 @@
 // $Id$
 
 function system_help($section = "admin/system/help") {
+  $output = "";
+
   switch ($section) {
     case "admin/system":
-      $output = "General configuration options for your site. Set up the name of the site, e-mail address used in mail-outs, clean URL options, caching, etc.";
+      $output = t("General configuration options for your site. Set up the name of the site, e-mail address used in mail-outs, clean URL options, caching, etc.");
       break;
     case "admin/system/themes":
-      $output = "Select which themes are available to your users and specify the default theme.";
+      $output = t("Select which themes are available to your users and specify the default theme.");
       break;
     case "admin/system/modules":
-      $output = "Modules are plugins for Drupal that extend its core functionality.  Here you can select which modules are enabled. On the left hand side click on the name of the module for their individual configurations.  Once a module is enabled, you will need to grant permissions to users in user management.";
+      $output = t("Modules are plugins for Drupal that extend its core functionality.  Here you can select which modules are enabled. On the left hand side click on the name of the module for their individual configurations.  Once a module is enabled, you will need to grant permissions to users in user management.");
       break;
     case "admin/system/filters":
-      $output = "Filters fit between the raw text in a node and the HTML output. They allow you to replace text selectively. Uses include automatic conversion of emoticons into graphics and filtering HTML content from users' submissions.";
+      $output = t("Filters fit between the raw text in a node and the HTML output. They allow you to replace text selectively. Uses include automatic conversion of emoticons into graphics and filtering HTML content from users' submissions.");
       break;
     case "admin/system/help":
       $output .= "<p>Drupal comes with system-wide defaults but the setting-module provides control over many Drupal preferences, behaviours including visual and operational settings.</p>";
       $output .= "<h3><a id=\"cron\">Cron</a></h3>". system_help_cron();
       $output .= "<h3><a id=\"cache\">Cache</a></h3>". system_help_cache();
+      $output = t($output);
       break;
   }
 
-  return t("$output");
+  return $output;
 }
 
 function system_system($field) {
diff --git a/modules/taxonomy.module b/modules/taxonomy.module
index 2627dc9dd546..0d90266efa27 100644
--- a/modules/taxonomy.module
+++ b/modules/taxonomy.module
@@ -2,8 +2,11 @@
 // $Id$
 
 function taxonomy_system($field){
-  $system["description"] = taxonomy_help("admin/system/modules");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = taxonomy_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function taxonomy_feed($taxonomy) {
@@ -801,30 +804,48 @@ function taxonomy_admin() {
 }
 
 function taxonomy_help($section = "admin/taxonomy/help") {
+  $output = "";
 
   switch ($section) {
     case "admin/system/modules":
-      $output = "Enables the organization of content into categories.";
+      $output = t("Enables the organization of content into categories.");
       break;
     case "admin/taxonomy":
-      $output = "The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms) and taxonomies (controlled vocabularies where relationships are indicated hierarchically). To delete a term choose \"edit term\". To delete a vocabulary, and all its terms, choose \"edit vocabulary\".";
+      $output = t("The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms) and taxonomies (controlled vocabularies where relationships are indicated hierarchically). To delete a term choose \"edit term\". To delete a vocabulary, and all its terms, choose \"edit vocabulary\".");
       break;
     case "admin/taxonomy/add/vocabulary":
-      $output ="When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo).  Drupal allows you to describe each node type (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.";
+      $output = t("When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo).  Drupal allows you to describe each node type (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.");
       break;
     case "admin/taxonomy/help":
-      $output .= "<h3>Background</h3><p>Taxonomy is the study of classification. Drupal's taxonomy module allows you to define categories which are used to classify content. The module supports hierarchical classification and association between terms, allowing for truly flexible information retrieval and classification. For more details about <a href=\"http://www.eleganthack.com/archives/002165.html#002165\">classification types</a> and insight into the development of the <i>taxonomy.module</i>, see this <a href=\"http://www.drupal.org/node/view/55\">drupal.org discussion</a>.</p>";
+      $output .= "<h3>Background</h3><p>Taxonomy is the study of classification. Drupal's taxonomy module allows you to define categories which are used to classify content. The module supports hierarchical classification and association between terms, allowing for truly flexible information retrieval and classification. For more details about %classification-types and insight into the development of the <i>taxonomy.module</i>, see this %drupal-dis.</p>";
       $output .= "<h3>An example taxonomy: food</h3><ul><li>Dairy<ul><li>Milk</li></ul></li><li>Drink<ul><li>Alchohol<ul><li>Beer</li><li>Wine</li></ul></li><li>Pop</li><li>Milk</li></ul></li><li>Meat<ul><li>Beef</li><li>Chicken</li><li>Lamb</li></ul></li><li>Spices<ul><li>Sugar</li></ul></li></ul>";
       $output .= "<p><b>Notes</b></p><ul><li>The term <i>Milk</i> appears within both <i>Dairy</i> and <i>Drink</i>.  This is an example of <i>multiple parents</i> for a term.</li><li>In Drupal the order of siblings (e.g. <i>Beef</i>, <i>Chicken</i>, <i>Lamb</i>) in a taxonomy may be controlled with the <i>weight</i> parameter.</li></ul>";
-      $output .= "<h3>Vocabularies</h3><p>When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each node of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to <a href=\"http://www.slashdot.com/\">Slashdot's</a> sections.  For more complex implementations, you might create a hierarchical list of categories such as <i>Food</i> taxonomy shown above.</p>";
+      $output .= "<h3>Vocabularies</h3><p>When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each node of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to %slashdot's sections.  For more complex implementations, you might create a hierarchical list of categories such as <i>Food</i> taxonomy shown above.</p>";
       $output .= "<h4>Setting up a vocabulary</h4><p>When setting up a controlled vocabulary, if you select the <i>hierarchy</i> option, you will be defining a taxonomy or a thesaurus. If you select the <i>related terms</i> option, you are allowing the definition of related terms, think <i>see also</i>, as in a thesaurus. Selecting <i>multiple select</i> will allow you to describe a node using more than one term. That node will then appear in each term's page, thus increasing the chance that a user will find it.</p>";
-      $output .= "<p>When setting up a controlled vocabulary you are asked for: <ul><li><b>Vocabulary name</b> (Required) -- The name for this vocabulary. Example: <i>Dairy</i>.</li><li><b>Description</b> (Optional) -- Description of the vocabulary, this can be used by modules and feeds.</li><li><b>Types</b> (Required) -- The list of node types you want to associate this vocabulary with. Some available types are: blog, book, forum, page, story.</li><li><a id=\"relatedterms\"></a><b>Related terms</b> -- Allows relationships between terms within this vocabulary. Think of these as <i>see also</i>-references.</li><li><a id=\"hierarchy\"></a><b>Hierarchy</b> -- Allows a tree-like taxonomy, as in our <i>Foods</i> example above</li><li><b>Multiple select</b> -- Allows nodes to be described using more than one term. Nodes may then appear on multiple taxonomy pages.</li><li><b>Required</b> -- Each node has to have a term in this vacabulary associated with it.</li><li><b>Weight</b> -- The over all weight for this vocaulary in listings with multiple vacabularies.</ul></p>";
+      $output .= "<p>When setting up a controlled vocabulary you are asked for: <ul>";
+      $output .= "<li><b>Vocabulary name</b> (Required) -- The name for this vocabulary. Example: <i>Dairy</i>.</li>";
+      $output .= "<li><b>Description</b> (Optional) -- Description of the vocabulary, this can be used by modules and feeds.</li>";
+      $output .= "<li><b>Types</b> (Required) -- The list of node types you want to associate this vocabulary with. Some available types are: blog, book, forum, page, story.</li>";
+      $output .= "<li><a id=\"relatedterms\"></a><b>Related terms</b> -- Allows relationships between terms within this vocabulary. Think of these as <i>see also</i>-references.</li>";
+      $output .= "<li><a id=\"hierarchy\"></a><b>Hierarchy</b> -- Allows a tree-like taxonomy, as in our <i>Foods</i> example above</li>";
+      $output .= "<li><b>Multiple select</b> -- Allows nodes to be described using more than one term. Nodes may then appear on multiple taxonomy pages.</li>";
+      $output .= "<li><b>Required</b> -- Each node has to have a term in this vacabulary associated with it.</li>";
+      $output .= "<li><b>Weight</b> -- The over all weight for this vocaulary in listings with multiple vacabularies.</li>";
+      $output .= "</ul></p>";
       $output .= "<h4>Adding terms to a vocabulary</h4><p>Once done defining the vocabulary, you have to add terms to it to make it useful. The options you see when adding a term to a vocabulary will depend on what you selected for <i>related terms</i>, <i>hierarchy </i>and <i>multiple select</i>. These options are:</p>";
-      $output .= "<p><ul><li><b>Term name</b> (Required) -- The name for this term. Example: <i>Milk</i></li><li><b>Description</b> (Optional) -- Description of the term that may be used by modules and feeds.  This is synonymous with a 'scope note'.</li><li><b><a id=\"parent\"></a>Parent</b> (Required) -- Select the term under which this term is a subset -- the branch of the hierarchy that this term belongs under. This is also known as the \"Broader term\" indicator used in thesauri.</li><li><b><a id=\"synonyms\"></a>Synonyms</b> (Optional) -- Enter synonyms for this term, one synonym per line. Synonyms can be used for variant spellings, acronyms, and other terms that have the same meaning as the added term, but which are not explicitly listed in this thesaurus (i.e. <i>unauthorized terms</i>)</li><li><b>Weight</b> (Optional) -- The weight is used to sort the terms of this vocabulary.</li></ul></p>";
-      $output .= "<h3><a id=\"taxonomyURL\"></a>Displaying nodes organized by term(s)</h3><p>In order to view the nodes associated with a term or a collection of terms, you should browse to a properly formed Taxonomy URL. For example, ". l("taxonomy/page/or/1,2","taxonomy/pages/or/1,2") .".  Taxonomy URLs always contain one or more term IDs (tid) at the end of the URL (a.k.a the <i>querystring</i>). You may learn the term ID for a given term by hovering over that term in the ". l("taxonomy overview", "admin/taxonomy") ." page and noting the number at the end or the URL.  To build a Taxonomy URL start with \"taxonomy/page\". Now add the querystring parameter, either <i>or</i>, which chooses nodes tagged with <b>any</b> of the given term IDs, or <i>and</i>, which chooses nodes tagged with <b>all</b> of the given Term IDs. Thus <i>or</i> is less specific than <i>and</i>. Finally add a comma seperated list of term IDs.</p>";
-      $output .= "<h3>RSS feeds</h3><p>Every term, or collection of terms, provides an <a href=\"http://backend.userland.com/stories/rss\">RSS</a> feed to which interested users may subscribe. The URL format for a sample RSS feed is ". l("node/feed/or/1,2","node/feed/or/1,2") .". Built like a Taxonomy URL, ". l("see above", "admin/taxonomy/help#taxonomyURL") ." it starts with \"node/feed\", then has the querystring parameter, and finally the Term IDs.</p>";
+      $output .= "<p><ul>";
+      $output .= "<li><b>Term name</b> (Required) -- The name for this term. Example: <i>Milk</i></li>";
+      $output .= "<li><b>Description</b> (Optional) -- Description of the term that may be used by modules and feeds.  This is synonymous with a 'scope note'.</li>";
+      $output .= "<li><b><a id=\"parent\"></a>Parent</b> (Required) -- Select the term under which this term is a subset -- the branch of the hierarchy that this term belongs under. This is also known as the \"Broader term\" indicator used in thesauri.</li>";
+      $output .= "<li><b><a id=\"synonyms\"></a>Synonyms</b> (Optional) -- Enter synonyms for this term, one synonym per line. Synonyms can be used for variant spellings, acronyms, and other terms that have the same meaning as the added term, but which are not explicitly listed in this thesaurus (i.e. <i>unauthorized terms</i>)</li>";
+      $output .= "<li><b>Weight</b> (Optional) -- The weight is used to sort the terms of this vocabulary.</li>";
+      $output .= "</ul></p>";
+      $output .= "<h3><a id=\"taxonomyURL\"></a>Displaying nodes organized by term(s)</h3><p>In order to view the nodes associated with a term or a collection of terms, you should browse to a properly formed Taxonomy URL. For example, %taxo-example.  Taxonomy URLs always contain one or more term IDs (tid) at the end of the URL (a.k.a the <i>querystring</i>). You may learn the term ID for a given term by hovering over that term in the %taxo-overview page and noting the number at the end or the URL.  To build a Taxonomy URL start with \"taxonomy/page\". Now add the querystring parameter, either <i>or</i>, which chooses nodes tagged with <b>any</b> of the given term IDs, or <i>and</i>, which chooses nodes tagged with <b>all</b> of the given Term IDs. Thus <i>or</i> is less specific than <i>and</i>. Finally add a comma seperated list of term IDs.</p>";
+      $output .= "<h3>RSS feeds</h3><p>Every term, or collection of terms, provides an %userland-rss feed to which interested users may subscribe. The URL format for a sample RSS feed is %sample-rss. Built like a Taxonomy URL, %taxo-help it starts with \"node/feed\", then has the querystring parameter, and finally the Term IDs.</p>";
+      $output = t($output, array("%classification-types" => "<a href=\"http://www.eleganthack.com/archives/002165.html#002165\">classification types</a>", "%drupal-dis" => "<a href=\"http://www.drupal.org/node/view/55\">drupal.org discussion</a>", "%slashdot" => "<a href=\"http://www.slashdot.com/\">Slashdot</a>", "%taxo-example" => l("taxonomy/page/or/1,2", "taxonomy/page/or/1,2"), "taxo-overview" => l(t("taxonomy overview"), "admin/taxonomy"), "%userland-rss" => "<a href=\"http://backend.userland.com/stories/rss\">RSS</a>", "sample-rss" => l("node/feed/or/1,2", "node/feed/or/1,2"), "taxo-help" => l(t("see above"), "admin/taxonomy/help#yaxonomyURL") ));
       break;
   }
-  return t($output);
+
+  return $output;
 }
 ?>
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 2627dc9dd546..0d90266efa27 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -2,8 +2,11 @@
 // $Id$
 
 function taxonomy_system($field){
-  $system["description"] = taxonomy_help("admin/system/modules");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = taxonomy_help("admin/system/modules"); };
+
+  return $output;
 }
 
 function taxonomy_feed($taxonomy) {
@@ -801,30 +804,48 @@ function taxonomy_admin() {
 }
 
 function taxonomy_help($section = "admin/taxonomy/help") {
+  $output = "";
 
   switch ($section) {
     case "admin/system/modules":
-      $output = "Enables the organization of content into categories.";
+      $output = t("Enables the organization of content into categories.");
       break;
     case "admin/taxonomy":
-      $output = "The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms) and taxonomies (controlled vocabularies where relationships are indicated hierarchically). To delete a term choose \"edit term\". To delete a vocabulary, and all its terms, choose \"edit vocabulary\".";
+      $output = t("The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms) and taxonomies (controlled vocabularies where relationships are indicated hierarchically). To delete a term choose \"edit term\". To delete a vocabulary, and all its terms, choose \"edit vocabulary\".");
       break;
     case "admin/taxonomy/add/vocabulary":
-      $output ="When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo).  Drupal allows you to describe each node type (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.";
+      $output = t("When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo).  Drupal allows you to describe each node type (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.");
       break;
     case "admin/taxonomy/help":
-      $output .= "<h3>Background</h3><p>Taxonomy is the study of classification. Drupal's taxonomy module allows you to define categories which are used to classify content. The module supports hierarchical classification and association between terms, allowing for truly flexible information retrieval and classification. For more details about <a href=\"http://www.eleganthack.com/archives/002165.html#002165\">classification types</a> and insight into the development of the <i>taxonomy.module</i>, see this <a href=\"http://www.drupal.org/node/view/55\">drupal.org discussion</a>.</p>";
+      $output .= "<h3>Background</h3><p>Taxonomy is the study of classification. Drupal's taxonomy module allows you to define categories which are used to classify content. The module supports hierarchical classification and association between terms, allowing for truly flexible information retrieval and classification. For more details about %classification-types and insight into the development of the <i>taxonomy.module</i>, see this %drupal-dis.</p>";
       $output .= "<h3>An example taxonomy: food</h3><ul><li>Dairy<ul><li>Milk</li></ul></li><li>Drink<ul><li>Alchohol<ul><li>Beer</li><li>Wine</li></ul></li><li>Pop</li><li>Milk</li></ul></li><li>Meat<ul><li>Beef</li><li>Chicken</li><li>Lamb</li></ul></li><li>Spices<ul><li>Sugar</li></ul></li></ul>";
       $output .= "<p><b>Notes</b></p><ul><li>The term <i>Milk</i> appears within both <i>Dairy</i> and <i>Drink</i>.  This is an example of <i>multiple parents</i> for a term.</li><li>In Drupal the order of siblings (e.g. <i>Beef</i>, <i>Chicken</i>, <i>Lamb</i>) in a taxonomy may be controlled with the <i>weight</i> parameter.</li></ul>";
-      $output .= "<h3>Vocabularies</h3><p>When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each node of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to <a href=\"http://www.slashdot.com/\">Slashdot's</a> sections.  For more complex implementations, you might create a hierarchical list of categories such as <i>Food</i> taxonomy shown above.</p>";
+      $output .= "<h3>Vocabularies</h3><p>When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each node of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to %slashdot's sections.  For more complex implementations, you might create a hierarchical list of categories such as <i>Food</i> taxonomy shown above.</p>";
       $output .= "<h4>Setting up a vocabulary</h4><p>When setting up a controlled vocabulary, if you select the <i>hierarchy</i> option, you will be defining a taxonomy or a thesaurus. If you select the <i>related terms</i> option, you are allowing the definition of related terms, think <i>see also</i>, as in a thesaurus. Selecting <i>multiple select</i> will allow you to describe a node using more than one term. That node will then appear in each term's page, thus increasing the chance that a user will find it.</p>";
-      $output .= "<p>When setting up a controlled vocabulary you are asked for: <ul><li><b>Vocabulary name</b> (Required) -- The name for this vocabulary. Example: <i>Dairy</i>.</li><li><b>Description</b> (Optional) -- Description of the vocabulary, this can be used by modules and feeds.</li><li><b>Types</b> (Required) -- The list of node types you want to associate this vocabulary with. Some available types are: blog, book, forum, page, story.</li><li><a id=\"relatedterms\"></a><b>Related terms</b> -- Allows relationships between terms within this vocabulary. Think of these as <i>see also</i>-references.</li><li><a id=\"hierarchy\"></a><b>Hierarchy</b> -- Allows a tree-like taxonomy, as in our <i>Foods</i> example above</li><li><b>Multiple select</b> -- Allows nodes to be described using more than one term. Nodes may then appear on multiple taxonomy pages.</li><li><b>Required</b> -- Each node has to have a term in this vacabulary associated with it.</li><li><b>Weight</b> -- The over all weight for this vocaulary in listings with multiple vacabularies.</ul></p>";
+      $output .= "<p>When setting up a controlled vocabulary you are asked for: <ul>";
+      $output .= "<li><b>Vocabulary name</b> (Required) -- The name for this vocabulary. Example: <i>Dairy</i>.</li>";
+      $output .= "<li><b>Description</b> (Optional) -- Description of the vocabulary, this can be used by modules and feeds.</li>";
+      $output .= "<li><b>Types</b> (Required) -- The list of node types you want to associate this vocabulary with. Some available types are: blog, book, forum, page, story.</li>";
+      $output .= "<li><a id=\"relatedterms\"></a><b>Related terms</b> -- Allows relationships between terms within this vocabulary. Think of these as <i>see also</i>-references.</li>";
+      $output .= "<li><a id=\"hierarchy\"></a><b>Hierarchy</b> -- Allows a tree-like taxonomy, as in our <i>Foods</i> example above</li>";
+      $output .= "<li><b>Multiple select</b> -- Allows nodes to be described using more than one term. Nodes may then appear on multiple taxonomy pages.</li>";
+      $output .= "<li><b>Required</b> -- Each node has to have a term in this vacabulary associated with it.</li>";
+      $output .= "<li><b>Weight</b> -- The over all weight for this vocaulary in listings with multiple vacabularies.</li>";
+      $output .= "</ul></p>";
       $output .= "<h4>Adding terms to a vocabulary</h4><p>Once done defining the vocabulary, you have to add terms to it to make it useful. The options you see when adding a term to a vocabulary will depend on what you selected for <i>related terms</i>, <i>hierarchy </i>and <i>multiple select</i>. These options are:</p>";
-      $output .= "<p><ul><li><b>Term name</b> (Required) -- The name for this term. Example: <i>Milk</i></li><li><b>Description</b> (Optional) -- Description of the term that may be used by modules and feeds.  This is synonymous with a 'scope note'.</li><li><b><a id=\"parent\"></a>Parent</b> (Required) -- Select the term under which this term is a subset -- the branch of the hierarchy that this term belongs under. This is also known as the \"Broader term\" indicator used in thesauri.</li><li><b><a id=\"synonyms\"></a>Synonyms</b> (Optional) -- Enter synonyms for this term, one synonym per line. Synonyms can be used for variant spellings, acronyms, and other terms that have the same meaning as the added term, but which are not explicitly listed in this thesaurus (i.e. <i>unauthorized terms</i>)</li><li><b>Weight</b> (Optional) -- The weight is used to sort the terms of this vocabulary.</li></ul></p>";
-      $output .= "<h3><a id=\"taxonomyURL\"></a>Displaying nodes organized by term(s)</h3><p>In order to view the nodes associated with a term or a collection of terms, you should browse to a properly formed Taxonomy URL. For example, ". l("taxonomy/page/or/1,2","taxonomy/pages/or/1,2") .".  Taxonomy URLs always contain one or more term IDs (tid) at the end of the URL (a.k.a the <i>querystring</i>). You may learn the term ID for a given term by hovering over that term in the ". l("taxonomy overview", "admin/taxonomy") ." page and noting the number at the end or the URL.  To build a Taxonomy URL start with \"taxonomy/page\". Now add the querystring parameter, either <i>or</i>, which chooses nodes tagged with <b>any</b> of the given term IDs, or <i>and</i>, which chooses nodes tagged with <b>all</b> of the given Term IDs. Thus <i>or</i> is less specific than <i>and</i>. Finally add a comma seperated list of term IDs.</p>";
-      $output .= "<h3>RSS feeds</h3><p>Every term, or collection of terms, provides an <a href=\"http://backend.userland.com/stories/rss\">RSS</a> feed to which interested users may subscribe. The URL format for a sample RSS feed is ". l("node/feed/or/1,2","node/feed/or/1,2") .". Built like a Taxonomy URL, ". l("see above", "admin/taxonomy/help#taxonomyURL") ." it starts with \"node/feed\", then has the querystring parameter, and finally the Term IDs.</p>";
+      $output .= "<p><ul>";
+      $output .= "<li><b>Term name</b> (Required) -- The name for this term. Example: <i>Milk</i></li>";
+      $output .= "<li><b>Description</b> (Optional) -- Description of the term that may be used by modules and feeds.  This is synonymous with a 'scope note'.</li>";
+      $output .= "<li><b><a id=\"parent\"></a>Parent</b> (Required) -- Select the term under which this term is a subset -- the branch of the hierarchy that this term belongs under. This is also known as the \"Broader term\" indicator used in thesauri.</li>";
+      $output .= "<li><b><a id=\"synonyms\"></a>Synonyms</b> (Optional) -- Enter synonyms for this term, one synonym per line. Synonyms can be used for variant spellings, acronyms, and other terms that have the same meaning as the added term, but which are not explicitly listed in this thesaurus (i.e. <i>unauthorized terms</i>)</li>";
+      $output .= "<li><b>Weight</b> (Optional) -- The weight is used to sort the terms of this vocabulary.</li>";
+      $output .= "</ul></p>";
+      $output .= "<h3><a id=\"taxonomyURL\"></a>Displaying nodes organized by term(s)</h3><p>In order to view the nodes associated with a term or a collection of terms, you should browse to a properly formed Taxonomy URL. For example, %taxo-example.  Taxonomy URLs always contain one or more term IDs (tid) at the end of the URL (a.k.a the <i>querystring</i>). You may learn the term ID for a given term by hovering over that term in the %taxo-overview page and noting the number at the end or the URL.  To build a Taxonomy URL start with \"taxonomy/page\". Now add the querystring parameter, either <i>or</i>, which chooses nodes tagged with <b>any</b> of the given term IDs, or <i>and</i>, which chooses nodes tagged with <b>all</b> of the given Term IDs. Thus <i>or</i> is less specific than <i>and</i>. Finally add a comma seperated list of term IDs.</p>";
+      $output .= "<h3>RSS feeds</h3><p>Every term, or collection of terms, provides an %userland-rss feed to which interested users may subscribe. The URL format for a sample RSS feed is %sample-rss. Built like a Taxonomy URL, %taxo-help it starts with \"node/feed\", then has the querystring parameter, and finally the Term IDs.</p>";
+      $output = t($output, array("%classification-types" => "<a href=\"http://www.eleganthack.com/archives/002165.html#002165\">classification types</a>", "%drupal-dis" => "<a href=\"http://www.drupal.org/node/view/55\">drupal.org discussion</a>", "%slashdot" => "<a href=\"http://www.slashdot.com/\">Slashdot</a>", "%taxo-example" => l("taxonomy/page/or/1,2", "taxonomy/page/or/1,2"), "taxo-overview" => l(t("taxonomy overview"), "admin/taxonomy"), "%userland-rss" => "<a href=\"http://backend.userland.com/stories/rss\">RSS</a>", "sample-rss" => l("node/feed/or/1,2", "node/feed/or/1,2"), "taxo-help" => l(t("see above"), "admin/taxonomy/help#yaxonomyURL") ));
       break;
   }
-  return t($output);
+
+  return $output;
 }
 ?>
diff --git a/modules/throttle.module b/modules/throttle.module
index 23ab018b40d2..ff19470fa372 100644
--- a/modules/throttle.module
+++ b/modules/throttle.module
@@ -2,9 +2,12 @@
 // $Id$
 
 function throttle_system($field) {
-  $system["description"] = throttle_help("admin/system/modules");
-  $system["admin_help"] = throttle_help("admin/system/modules/throttle");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = throttle_help("admin/system/modules"); }
+  else if ($field == "admin_help") {$output = throttle_help("admin/system/modules/throttle"); };
+
+  return $output;
 }
 
 
@@ -20,17 +23,17 @@ function throttle_help($section = "admin/throttle/help") {
 
   switch ($section) {
     case "admin/system/modules":
-      $output = "Allows configuration of congestion control auto-throttle mechanism.";
+      $output = t("Allows configuration of congestion control auto-throttle mechanism.");
       break;
     case "admin/system/modules/throttle":
-      return t("If your site gets popular, or comes under a \"Denial of Service\" (DOS) attack, your hardware might become overwhelmed. These settings allow you to \"slow down\" the access to your site. To use throttle you need to have the <a href=\"%access\">access log</a> enabled. For Drupal to preform throttling it needs to do an extra database query. This extra query happens on page displays. <b>Auto-throttle probability limiter</b> tells Drupal to do this extra DB query once every \"x\" page displays, where \"x\" is the percentage. So if it is set to 10%, the default, then for every 100 web pages it displays, it will preform the extra query ten time. ", array("%access" => url("admin/system/modules/statistics")));
+      return t("If your site gets popular, or comes under a \"Denial of Service\" (DOS) attack, your hardware might become overwhelmed. These settings allow you to \"slow down\" the access to your site. To use throttle you need to have the %access enabled. For Drupal to preform throttling it needs to do an extra database query. This extra query happens on page displays. <b>Auto-throttle probability limiter</b> tells Drupal to do this extra DB query once every \"x\" page displays, where \"x\" is the percentage. So if it is set to 10%, the default, then for every 100 web pages it displays, it will preform the extra query ten time. ", array("%access" => l(t("access log"), "admin/system/modules/statistics") ));
     case "admin/throttle/help":
-      $output .= "<h3>Introduction</h3><p>This Drupal module allows you to enable and configure the auto-throttle congestion control mechanism offered by the ". l("statistics.module","admin/statistics") .".  The auto-throttle mechanism allows your site to automatically adapt to different server levels.</p>";
-      $output .= "<p>This module also adds a block that displays the current status of the throttle.  You must have ". l("\"access throttle block\"","admin/user/permission") ." privileges to view the block.  As a general rule of thumb, only site administrators should be granted access to this block.</p>";
+      $output .= "<h3>Introduction</h3><p>This Drupal module allows you to enable and configure the auto-throttle congestion control mechanism offered by the %stats-mod.  The auto-throttle mechanism allows your site to automatically adapt to different server levels.</p>";
+      $output .= "<p>This module also adds a block that displays the current status of the throttle.  You must have \"%throttle-block\" privileges to view the block.  As a general rule of thumb, only site administrators should be granted access to this block.</p>";
       $output .= "<p>The auto-throttle mechanism performs an extra database query in order to determine what the current throttle level should be.  Fortunately the throttle can be tuned so these database queries only occur on a fraction of all pages geenrated by your site, reducing the overhead to an insignificant amount.  Additionally, when the top-most throttle level is reached, all throttle queries are suspended for a configurable period of time.  More detail follows.</p>";
-      $output .= "<p>As with any module, the <i>throttle.module</i> needs to be ". l("enabled","admin/system/modules") ." before you can use it.  Also refer to the permissions section below if you wish to access the throttle statistics block.</p>";
-      $output .= "<h3>Configuring the throttle module</h3><p>The ". l("configuration section", "admin/system/modules/throttle") ." for the throttle allows you to turn it on and off, as well as to fine-tune how sensitive it is.</p>";
-      $output .= "<h4>enable auto-throttle:</h4><blockquote>This first option on the throttle module configuration screen allows you to enable or disable the auto-throttling mechanism.  Note that the access-log must also be enabled via the ". l("statistics.module", "admin/system/modules/statistics") ." for the auto-throttling mechanism to have any affect.</blockquote>";
+      $output .= "<p>As with any module, the <i>throttle.module</i> needs to be %modules-enable before you can use it.  Also refer to the permissions section below if you wish to access the throttle statistics block.</p>";
+      $output .= "<h3>Configuring the throttle module</h3><p>The %throttle-config for the throttle allows you to turn it on and off, as well as to fine-tune how sensitive it is.</p>";
+      $output .= "<h4>enable auto-throttle:</h4><blockquote>This first option on the throttle module configuration screen allows you to enable or disable the auto-throttling mechanism.  Note that the access-log must also be enabled via the %stats-config for the auto-throttling mechanism to have any affect.</blockquote>";
       $output .= "<h4>auto-throttle multiplier:</h4><blockquote><p>This second option allows you to tune the auto-throttle mechanism.  The auto-throttle mechanism supports six throttle levels, from 0 (off) to 5 (maximum).  The current throttle level is based upon how many pages have been accessed on your site in the past 60 seconds - the more pages being displayed, the higher the throttle level.  This multiplier defines how many hits are required to switch from one throttle level to the next.</p>";
       $output .= "<p>For example, with a throttle multiplier of 20:  Once 20 pages have been accessed on your site within a period of 60 seconds, the throttle level will be incremented to a level of 1.  Once 40 pages have been accessed on your site within a period of 60 seconds, the throttle level will be incremented to a level of 2.  And so on, until 100 pages are accessed on your site within a period of 60 seconds, at which time the throttle level will be set to a maximum level of 5.</p>";
       $output .= "<p>Upon reaching a throttle level of 5, access logs and the auto-throttle checking mechanism is automatically disabled.  It is only renabled by cron after a period of time defined by \"auto-throttle cron test\", explained below.</p></blockquote>";
@@ -38,9 +41,9 @@ function throttle_help($section = "admin/throttle/help") {
       $output .= "<p>As a rule of thumb, the higher your multiplier, the lower your probability limiter should be.  For example, if you have a multiplier of 100, then you logically don't need to check the throttle level more than once out of every 100 page views, so the probability limiter should be set to 1\%.  As database queries are \"expensive\", it's recommended that you keep the probability limiter to the smallest percentage possible, while still high enough to react quickly to a change in server load.</p></blockquote>";
       $output .= "<h4>auto-throttle cron test:</h4><blockquote><p>The auto-throttle dynamically adjusts its level upward, but not downward.  That is to say, if you have a multiplier of 20 and you get 45 hits in one minute, your throttle level will be adjusted to a level of 2.  If a few minutes later you only get 35 hits in one minute, the throttle level will <b>NOT</b> be adjusted down to a level of 1.  This prevents the throttle from bouncing back and forth between two levels.</p>";
       $output .= "<p>In order for the throttle level to be dropped, \"cron.php\" must be called regularly.  This option then defines how often the level will be dropped by one to test the server load.  If the server load is no longer as high as it was, the level will stay where it is, until the cron test period passes again and cron drops the throttle level again.  This process repeats until the throttle is returned to a throttle level of 0.</p></blockquote>";
-      $output .= "<h3>Throttle block</h3><p>This block displays some statistics regarding the current throttle and its configuration.  It is recommended that only site administrators receive the ". l("\"access throttle block\"","admin/user/permission") ." permission bit required to view this block.  It does not display information that would interest a normal site end-user.</p>";
-      $output .= "<p>Don't forget to enable the block ". l("here", "admin/block") .".</p>";
-      $output .= "<h3>Permissions</h3><p>This module has one permission that needs to be configured in ". l("user permissions", "admin/user/permission") .".</p>";
+      $output .= "<h3>Throttle block</h3><p>This block displays some statistics regarding the current throttle and its configuration.  It is recommended that only site administrators receive the \"%throttle-access\" permission bit required to view this block.  It does not display information that would interest a normal site end-user.</p>";
+      $output .= "<p>Don't forget to enable the block %throttle-block-enable.</p>";
+      $output .= "<h3>Permissions</h3><p>This module has one permission that needs to be configured in %permissions.</p>";
       $output .= "<ul><li><i>access throttle block</i> - enable for user roles that get to view the throttle block.</li></ul>";
       $output .= "<h3>For programmers: throttle_status()</h3><p>The function <code>throttle_status()</code> will return a number from 0 to 5.  0 means that there is no throttle enabled at this time.  Each number above that is a progressively more throttled system...  To disable a feature when a site first begins to get busy, disable it at a throttle of 2 or 3.  To hold on to the bitter end, wait until 4 or 5.</p>";
       $output .= "<p>To implement the throttle, you should do something like this:";
@@ -55,10 +58,11 @@ function throttle_help($section = "admin/throttle/help") {
         else {
           // throttle limit not reached, execute normally
        }</pre></p>";
+    $output = t($output, array("%stats-mod" => l(t("statistics-module"), "admin/statistics"), "%throttle-block" => l(t("access throttle block"), "admin/user/permission"), "%modules-enable" => l(t("enabled"), "admin/ststem/modules"),"throttle-config" => l(t("configuration section"), "admin/system/modules/throttle"), "%stats-config" => l(t("statistcs.module"), "admin/system/modules/statistics"), "%throttle-access" => l(t("access throttle block"), "admin/user/permission"),"%throttle-block-enable" => l(t("here"), "admin/block"), "%permissions" => l(t("user permissions"), "admin/user/permission") ));
     break;
   }
 
-  return t($output);
+  return $output;
 }
 
 
diff --git a/modules/throttle/throttle.module b/modules/throttle/throttle.module
index 23ab018b40d2..ff19470fa372 100644
--- a/modules/throttle/throttle.module
+++ b/modules/throttle/throttle.module
@@ -2,9 +2,12 @@
 // $Id$
 
 function throttle_system($field) {
-  $system["description"] = throttle_help("admin/system/modules");
-  $system["admin_help"] = throttle_help("admin/system/modules/throttle");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = throttle_help("admin/system/modules"); }
+  else if ($field == "admin_help") {$output = throttle_help("admin/system/modules/throttle"); };
+
+  return $output;
 }
 
 
@@ -20,17 +23,17 @@ function throttle_help($section = "admin/throttle/help") {
 
   switch ($section) {
     case "admin/system/modules":
-      $output = "Allows configuration of congestion control auto-throttle mechanism.";
+      $output = t("Allows configuration of congestion control auto-throttle mechanism.");
       break;
     case "admin/system/modules/throttle":
-      return t("If your site gets popular, or comes under a \"Denial of Service\" (DOS) attack, your hardware might become overwhelmed. These settings allow you to \"slow down\" the access to your site. To use throttle you need to have the <a href=\"%access\">access log</a> enabled. For Drupal to preform throttling it needs to do an extra database query. This extra query happens on page displays. <b>Auto-throttle probability limiter</b> tells Drupal to do this extra DB query once every \"x\" page displays, where \"x\" is the percentage. So if it is set to 10%, the default, then for every 100 web pages it displays, it will preform the extra query ten time. ", array("%access" => url("admin/system/modules/statistics")));
+      return t("If your site gets popular, or comes under a \"Denial of Service\" (DOS) attack, your hardware might become overwhelmed. These settings allow you to \"slow down\" the access to your site. To use throttle you need to have the %access enabled. For Drupal to preform throttling it needs to do an extra database query. This extra query happens on page displays. <b>Auto-throttle probability limiter</b> tells Drupal to do this extra DB query once every \"x\" page displays, where \"x\" is the percentage. So if it is set to 10%, the default, then for every 100 web pages it displays, it will preform the extra query ten time. ", array("%access" => l(t("access log"), "admin/system/modules/statistics") ));
     case "admin/throttle/help":
-      $output .= "<h3>Introduction</h3><p>This Drupal module allows you to enable and configure the auto-throttle congestion control mechanism offered by the ". l("statistics.module","admin/statistics") .".  The auto-throttle mechanism allows your site to automatically adapt to different server levels.</p>";
-      $output .= "<p>This module also adds a block that displays the current status of the throttle.  You must have ". l("\"access throttle block\"","admin/user/permission") ." privileges to view the block.  As a general rule of thumb, only site administrators should be granted access to this block.</p>";
+      $output .= "<h3>Introduction</h3><p>This Drupal module allows you to enable and configure the auto-throttle congestion control mechanism offered by the %stats-mod.  The auto-throttle mechanism allows your site to automatically adapt to different server levels.</p>";
+      $output .= "<p>This module also adds a block that displays the current status of the throttle.  You must have \"%throttle-block\" privileges to view the block.  As a general rule of thumb, only site administrators should be granted access to this block.</p>";
       $output .= "<p>The auto-throttle mechanism performs an extra database query in order to determine what the current throttle level should be.  Fortunately the throttle can be tuned so these database queries only occur on a fraction of all pages geenrated by your site, reducing the overhead to an insignificant amount.  Additionally, when the top-most throttle level is reached, all throttle queries are suspended for a configurable period of time.  More detail follows.</p>";
-      $output .= "<p>As with any module, the <i>throttle.module</i> needs to be ". l("enabled","admin/system/modules") ." before you can use it.  Also refer to the permissions section below if you wish to access the throttle statistics block.</p>";
-      $output .= "<h3>Configuring the throttle module</h3><p>The ". l("configuration section", "admin/system/modules/throttle") ." for the throttle allows you to turn it on and off, as well as to fine-tune how sensitive it is.</p>";
-      $output .= "<h4>enable auto-throttle:</h4><blockquote>This first option on the throttle module configuration screen allows you to enable or disable the auto-throttling mechanism.  Note that the access-log must also be enabled via the ". l("statistics.module", "admin/system/modules/statistics") ." for the auto-throttling mechanism to have any affect.</blockquote>";
+      $output .= "<p>As with any module, the <i>throttle.module</i> needs to be %modules-enable before you can use it.  Also refer to the permissions section below if you wish to access the throttle statistics block.</p>";
+      $output .= "<h3>Configuring the throttle module</h3><p>The %throttle-config for the throttle allows you to turn it on and off, as well as to fine-tune how sensitive it is.</p>";
+      $output .= "<h4>enable auto-throttle:</h4><blockquote>This first option on the throttle module configuration screen allows you to enable or disable the auto-throttling mechanism.  Note that the access-log must also be enabled via the %stats-config for the auto-throttling mechanism to have any affect.</blockquote>";
       $output .= "<h4>auto-throttle multiplier:</h4><blockquote><p>This second option allows you to tune the auto-throttle mechanism.  The auto-throttle mechanism supports six throttle levels, from 0 (off) to 5 (maximum).  The current throttle level is based upon how many pages have been accessed on your site in the past 60 seconds - the more pages being displayed, the higher the throttle level.  This multiplier defines how many hits are required to switch from one throttle level to the next.</p>";
       $output .= "<p>For example, with a throttle multiplier of 20:  Once 20 pages have been accessed on your site within a period of 60 seconds, the throttle level will be incremented to a level of 1.  Once 40 pages have been accessed on your site within a period of 60 seconds, the throttle level will be incremented to a level of 2.  And so on, until 100 pages are accessed on your site within a period of 60 seconds, at which time the throttle level will be set to a maximum level of 5.</p>";
       $output .= "<p>Upon reaching a throttle level of 5, access logs and the auto-throttle checking mechanism is automatically disabled.  It is only renabled by cron after a period of time defined by \"auto-throttle cron test\", explained below.</p></blockquote>";
@@ -38,9 +41,9 @@ function throttle_help($section = "admin/throttle/help") {
       $output .= "<p>As a rule of thumb, the higher your multiplier, the lower your probability limiter should be.  For example, if you have a multiplier of 100, then you logically don't need to check the throttle level more than once out of every 100 page views, so the probability limiter should be set to 1\%.  As database queries are \"expensive\", it's recommended that you keep the probability limiter to the smallest percentage possible, while still high enough to react quickly to a change in server load.</p></blockquote>";
       $output .= "<h4>auto-throttle cron test:</h4><blockquote><p>The auto-throttle dynamically adjusts its level upward, but not downward.  That is to say, if you have a multiplier of 20 and you get 45 hits in one minute, your throttle level will be adjusted to a level of 2.  If a few minutes later you only get 35 hits in one minute, the throttle level will <b>NOT</b> be adjusted down to a level of 1.  This prevents the throttle from bouncing back and forth between two levels.</p>";
       $output .= "<p>In order for the throttle level to be dropped, \"cron.php\" must be called regularly.  This option then defines how often the level will be dropped by one to test the server load.  If the server load is no longer as high as it was, the level will stay where it is, until the cron test period passes again and cron drops the throttle level again.  This process repeats until the throttle is returned to a throttle level of 0.</p></blockquote>";
-      $output .= "<h3>Throttle block</h3><p>This block displays some statistics regarding the current throttle and its configuration.  It is recommended that only site administrators receive the ". l("\"access throttle block\"","admin/user/permission") ." permission bit required to view this block.  It does not display information that would interest a normal site end-user.</p>";
-      $output .= "<p>Don't forget to enable the block ". l("here", "admin/block") .".</p>";
-      $output .= "<h3>Permissions</h3><p>This module has one permission that needs to be configured in ". l("user permissions", "admin/user/permission") .".</p>";
+      $output .= "<h3>Throttle block</h3><p>This block displays some statistics regarding the current throttle and its configuration.  It is recommended that only site administrators receive the \"%throttle-access\" permission bit required to view this block.  It does not display information that would interest a normal site end-user.</p>";
+      $output .= "<p>Don't forget to enable the block %throttle-block-enable.</p>";
+      $output .= "<h3>Permissions</h3><p>This module has one permission that needs to be configured in %permissions.</p>";
       $output .= "<ul><li><i>access throttle block</i> - enable for user roles that get to view the throttle block.</li></ul>";
       $output .= "<h3>For programmers: throttle_status()</h3><p>The function <code>throttle_status()</code> will return a number from 0 to 5.  0 means that there is no throttle enabled at this time.  Each number above that is a progressively more throttled system...  To disable a feature when a site first begins to get busy, disable it at a throttle of 2 or 3.  To hold on to the bitter end, wait until 4 or 5.</p>";
       $output .= "<p>To implement the throttle, you should do something like this:";
@@ -55,10 +58,11 @@ function throttle_help($section = "admin/throttle/help") {
         else {
           // throttle limit not reached, execute normally
        }</pre></p>";
+    $output = t($output, array("%stats-mod" => l(t("statistics-module"), "admin/statistics"), "%throttle-block" => l(t("access throttle block"), "admin/user/permission"), "%modules-enable" => l(t("enabled"), "admin/ststem/modules"),"throttle-config" => l(t("configuration section"), "admin/system/modules/throttle"), "%stats-config" => l(t("statistcs.module"), "admin/system/modules/statistics"), "%throttle-access" => l(t("access throttle block"), "admin/user/permission"),"%throttle-block-enable" => l(t("here"), "admin/block"), "%permissions" => l(t("user permissions"), "admin/user/permission") ));
     break;
   }
 
-  return t($output);
+  return $output;
 }
 
 
diff --git a/modules/title.module b/modules/title.module
index 311200ff0946..5e6c2e6bdf48 100644
--- a/modules/title.module
+++ b/modules/title.module
@@ -2,8 +2,22 @@
 // $Id$
 
 function title_system($field){
-  $system["description"] = t("Enables users to link to stories, articles or similar content by title.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = title_help("admin/system/modules"); };
+  return $output;
+}
+
+function title_help($section) {
+  $output = "";
+
+  switch ($section) {
+    case 'admin/system/modules':
+      $output = t("Enables users to link to stories, articles or similar content by title.");
+      break;
+  }
+
+  return $output;
 }
 
 function title_page() {
diff --git a/modules/tracker.module b/modules/tracker.module
index 9286bb5863c4..1fdd6c093ce7 100644
--- a/modules/tracker.module
+++ b/modules/tracker.module
@@ -2,16 +2,25 @@
 // $Id$
 
 function tracker_help($section = "admin/tracker/help") {
+  $output = "";
 
   switch ($section) {
-    case "admin/tracker/help":
-     return t("<p>The tracker module is a handy module for displaying the most recent posts.  By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>");
+    case 'admin/tracker/help':
+      $output =  t("<p>The tracker module is a handy module for displaying the most recent posts.  By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>");
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables tracking of recent posts for users.");
+      break;
   }
+
+  return $output;
 }
 
 function tracker_system($field) {
-  $system["description"] = t("Enables tracking of recent posts for users.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = tracker_help("admin/system/modules"); };
+  return $output;
 }
 
 function tracker_link($type) {
diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module
index 9286bb5863c4..1fdd6c093ce7 100644
--- a/modules/tracker/tracker.module
+++ b/modules/tracker/tracker.module
@@ -2,16 +2,25 @@
 // $Id$
 
 function tracker_help($section = "admin/tracker/help") {
+  $output = "";
 
   switch ($section) {
-    case "admin/tracker/help":
-     return t("<p>The tracker module is a handy module for displaying the most recent posts.  By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>");
+    case 'admin/tracker/help':
+      $output =  t("<p>The tracker module is a handy module for displaying the most recent posts.  By following the <i>view recent posts</i> link in the user block, a user may quickly review all recent postings.</p>");
+      break;
+    case 'admin/system/modules':
+      $output = t("Enables tracking of recent posts for users.");
+      break;
   }
+
+  return $output;
 }
 
 function tracker_system($field) {
-  $system["description"] = t("Enables tracking of recent posts for users.");
-  return $system[$field];
+  $output = "";
+
+  if ($field == "description") {$output = tracker_help("admin/system/modules"); };
+  return $output;
 }
 
 function tracker_link($type) {
-- 
GitLab