← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:refactor-datetitle into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:refactor-datetitle into launchpad:master.

Commit message:
Refactor longhand versions of fmt:*datetitle

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/405037

We now have `fmt:approximatedatetitle` and `fmt:displaydatetitle`, but there were still quite a number of places that wrote out some rough equivalent of those in longhand.  Use the new helpers for this.  The HTML tag structure will change somewhat, as this means that we now use the HTML5 `<time>` element, but the visual rendering should be as before.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:refactor-datetitle into launchpad:master.
diff --git a/lib/lp/answers/templates/faq-index.pt b/lib/lp/answers/templates/faq-index.pt
index 9bc0773..f322d82 100644
--- a/lib/lp/answers/templates/faq-index.pt
+++ b/lib/lp/answers/templates/faq-index.pt
@@ -10,9 +10,8 @@
     <metal:registering fill-slot="registering">
       Created by <a tal:replace="structure context/owner/fmt:link" />
       on
-      <span
-        tal:attributes="title context/date_created/fmt:datetime"
-        tal:content="context/date_created/fmt:displaydate">2005-10-05</span>
+      <tal:created
+        replace="structure context/date_created/fmt:displaydatetitle" />
     </metal:registering>
 
     <metal:portlets fill-slot="side">
@@ -33,9 +32,8 @@
             <dd>
               <a tal:replace="structure context/last_updated_by/fmt:link" />
               on
-             <span tal:attributes="title context/date_last_updated/fmt:datetime"
-                tal:content="context/date_last_updated/fmt:displaydate"
-                >2005-10-05</span>
+              <tal:last-updated
+                replace="structure context/date_last_updated/fmt:displaydatetitle" />
             </dd>
           </dl>
         </tal:last_updated_by>
diff --git a/lib/lp/answers/templates/question-index.pt b/lib/lp/answers/templates/question-index.pt
index 13f6270..e4ba40a 100644
--- a/lib/lp/answers/templates/question-index.pt
+++ b/lib/lp/answers/templates/question-index.pt
@@ -40,10 +40,8 @@
     <metal:registering fill-slot="registering">
         Asked by
         <a tal:replace="structure context/owner/fmt:link" />
-        <span
-          tal:attributes="title context/datecreated/fmt:datetime"
-          tal:content="context/datecreated/fmt:displaydate">2005-10-05</span>
-
+        <tal:created
+          replace="structure context/datecreated/fmt:displaydatetitle" />
     </metal:registering>
 
 
diff --git a/lib/lp/app/templates/launchpad-search.pt b/lib/lp/app/templates/launchpad-search.pt
index 6ffd23f..f686209 100644
--- a/lib/lp/app/templates/launchpad-search.pt
+++ b/lib/lp/app/templates/launchpad-search.pt
@@ -55,9 +55,8 @@
                       <b tal:content="pillar/displayname" />,
                     </tal:per_pillar>
                   reported
-                  <span
-                    tal:attributes="title view/bug/datecreated/fmt:datetime"
-                    tal:content="view/bug/datecreated/fmt:displaydate">2005-10-05</span>
+                  <tal:created
+                    replace="structure view/bug/datecreated/fmt:displaydatetitle" />
                   by
                   <a
                     tal:attributes="href view/bug/owner/fmt:url"
@@ -71,9 +70,8 @@
                 </div>
                 <div class="summary">
                   posted
-                  <span
-                    tal:attributes="title view/question/datecreated/fmt:datetime"
-                    tal:content="view/question/datecreated/fmt:displaydate">2005-10-05</span>
+                  <tal:created
+                    replace="structure view/question/datecreated/fmt:displaydatetitle" />
                   by
                   <a tal:replace="structure view/question/owner/fmt:link"
                     >Foo Bar</a><tal:assignee condition="view/question/assignee">,
@@ -113,10 +111,9 @@
                       # Product and ProjectGroup still use the wrong name for
                       # date_created.
                     </tal:XXX>
-                    <span
-                      tal:define="date_created view/pillar/datecreated|view/pillar/date_created|nothing"
-                      tal:attributes="title date_created/fmt:datetime"
-                      tal:content="date_created/fmt:displaydate">2005-10-12</span>
+                    <tal:created
+                      define="date_created view/pillar/datecreated|view/pillar/date_created|nothing"
+                      replace="structure date_created/fmt:displaydatetitle" />
                   </div>
                 </div>
               </li>
@@ -137,18 +134,16 @@
                     </div>
                     <div>
                       Created
-                      <span
-                        tal:attributes="title view/person_or_team/datecreated/fmt:datetime"
-                        tal:content="view/person_or_team/datecreated/fmt:displaydate">2005-10-05</span>
+                      <tal:created
+                        replace="structure view/person_or_team/datecreated/fmt:displaydatetitle" />
                     </div>
                   </tal:team>
                   <tal:person
                     tal:condition="not: view/person_or_team/is_team">
                     <div>
                       joined
-                      <span
-                        tal:attributes="title view/person_or_team/datecreated/fmt:datetime"
-                        tal:content="view/person_or_team/datecreated/fmt:displaydate">2005-10-05</span>,
+                      <tal:created
+                        replace="structure view/person_or_team/datecreated/fmt:displaydatetitle" />,
                         with <tal:karma content="view/person_or_team/karma">1000</tal:karma> karma
                     </div>
                   </tal:person>
diff --git a/lib/lp/blueprints/templates/specification-goaldecide.pt b/lib/lp/blueprints/templates/specification-goaldecide.pt
index 6bf6277..b74f93a 100644
--- a/lib/lp/blueprints/templates/specification-goaldecide.pt
+++ b/lib/lp/blueprints/templates/specification-goaldecide.pt
@@ -17,15 +17,15 @@
           <p>
             This goal was proposed by
             <a tal:replace="structure context/goal_proposer/fmt:link">Foo Bar</a>
-            <span tal:attributes="title context/date_goal_proposed/fmt:datetime"
-                  tal:content="context/date_goal_proposed/fmt:displaydate" />.
+            <tal:goal-proposed
+              replace="structure context/date_goal_proposed/fmt:displaydatetitle" />.
             <tal:already_decided condition="context/goal_decider">
               It was previously marked
               "<span tal:replace="context/goalstatus/title">Approved</span>"
               as a goal by
               <a tal:replace="structure context/goal_decider/fmt:link">Foo Bar</a>
-              <span tal:attributes="title context/date_goal_decided/fmt:datetime"
-                    tal:content="context/date_goal_decided/fmt:displaydate" />.
+              <tal:goal-decided
+                replace="structure context/date_goal_decided/fmt:displaydatetitle" />.
             </tal:already_decided>
           </p>
         </div>
diff --git a/lib/lp/blueprints/templates/specification-index.pt b/lib/lp/blueprints/templates/specification-index.pt
index 37528bf..81b52d4 100644
--- a/lib/lp/blueprints/templates/specification-index.pt
+++ b/lib/lp/blueprints/templates/specification-index.pt
@@ -18,9 +18,8 @@
   <tal:registering metal:fill-slot="registering">
     Registered by
     <tal:registrant tal:replace="structure context/owner/fmt:link" />
-    <span
-        tal:attributes="title context/datecreated/fmt:datetime"
-        tal:content="context/datecreated/fmt:displaydate" />
+    <tal:created
+      replace="structure context/datecreated/fmt:displaydatetitle" />
   </tal:registering>
 
 <metal:heading fill-slot="heading">
diff --git a/lib/lp/blueprints/templates/specificationgoal-setgoals.pt b/lib/lp/blueprints/templates/specificationgoal-setgoals.pt
index c8c2ffc..16a8fc6 100644
--- a/lib/lp/blueprints/templates/specificationgoal-setgoals.pt
+++ b/lib/lp/blueprints/templates/specificationgoal-setgoals.pt
@@ -70,9 +70,8 @@
                 <span tal:replace="context/displayname">Edgy</span>
                 by
                 <a tal:replace="structure spec/goal_proposer/fmt:link" />
-                <span
-                  tal:attributes="title spec/date_goal_proposed/fmt:datetime"
-                  tal:content="spec/date_goal_proposed/fmt:displaydate" />.
+                <tal:goal-proposed
+                  replace="structure spec/date_goal_proposed/fmt:displaydatetitle" />.
               </div>
             </td>
           </tr>
diff --git a/lib/lp/blueprints/templates/sprint-index.pt b/lib/lp/blueprints/templates/sprint-index.pt
index 42dd559..da5dbe2 100644
--- a/lib/lp/blueprints/templates/sprint-index.pt
+++ b/lib/lp/blueprints/templates/sprint-index.pt
@@ -11,9 +11,9 @@
 
 <tal:registering metal:fill-slot="registering">
   Registered by <a tal:replace="structure context/owner/fmt:link" />
-    on <span tal:content="context/datecreated/fmt:displaydate"
-             tal:attributes="title context/datecreated/fmt:datetime"
-         >on 2005-01-01</span>
+  on
+  <tal:created
+    replace="structure context/datecreated/fmt:displaydatetitle" />
 </tal:registering>
 
 <div metal:fill-slot="main"
diff --git a/lib/lp/blueprints/templates/sprint-listing-detailed.pt b/lib/lp/blueprints/templates/sprint-listing-detailed.pt
index 65704f1..4b0c254 100644
--- a/lib/lp/blueprints/templates/sprint-listing-detailed.pt
+++ b/lib/lp/blueprints/templates/sprint-listing-detailed.pt
@@ -29,9 +29,8 @@
         <a
           tal:attributes="href context/owner/fmt:url"
           tal:content="context/owner/displayname">Foo Bar</a>
-        <span
-          tal:attributes="title context/datecreated/fmt:datetime"
-          tal:content="context/datecreated/fmt:displaydate">2005-10-05</span>
+        <tal:created
+          replace="structure context/datecreated/fmt:displaydatetitle" />
       </div>
     </div>
   </td>
diff --git a/lib/lp/blueprints/templates/sprint-settopics.pt b/lib/lp/blueprints/templates/sprint-settopics.pt
index 2b543b8..ca33895 100644
--- a/lib/lp/blueprints/templates/sprint-settopics.pt
+++ b/lib/lp/blueprints/templates/sprint-settopics.pt
@@ -80,11 +80,8 @@
                 <span tal:condition="python: speclink.registrant.id not in view.attendee_ids">
                   (not attending)
                 </span>
-                <span
-                  tal:attributes="title speclink/date_created/fmt:datetime"
-                  tal:content="speclink/date_created/fmt:displaydate">
-                  2006-01-12
-                </span>
+                <tal:created
+                  replace="structure speclink/date_created/fmt:displaydatetitle" />
               </tal:registrant>
             </div>
           </td>
diff --git a/lib/lp/blueprints/templates/sprintspecification-decide.pt b/lib/lp/blueprints/templates/sprintspecification-decide.pt
index dbe059d..cebec96 100644
--- a/lib/lp/blueprints/templates/sprintspecification-decide.pt
+++ b/lib/lp/blueprints/templates/sprintspecification-decide.pt
@@ -35,18 +35,14 @@
     <p>
       This topic was proposed by
       <a tal:replace="structure context/registrant/fmt:link">Foo Bar</a>
-      <span
-        tal:attributes="title context/date_created/fmt:datetime"
-        tal:content="context/date_created/fmt:displaydate">2006-12-13</span>.
+      <tal:created
+        replace="structure context/date_created/fmt:displaydatetitle" />.
       <tal:already_decided condition="context/decider">
         It was previously marked "<span tal:replace="context/status/title">
         Approved</span>" for the agenda by
         <a tal:replace="structure context/decider/fmt:link">Foo Bar</a>
-        <span
-          tal:attributes="title context/date_decided/fmt:datetime"
-          tal:content="context/date_decided/fmt:displaydate">
-          2006-12-13
-        </span>.
+        <tal:decided
+          replace="structure context/date_decided/fmt:displaydatetitle" />.
       </tal:already_decided>
     </p>
 
diff --git a/lib/lp/bugs/templates/bug-listing-detailed.pt b/lib/lp/bugs/templates/bug-listing-detailed.pt
index 293115d..69a8836 100644
--- a/lib/lp/bugs/templates/bug-listing-detailed.pt
+++ b/lib/lp/bugs/templates/bug-listing-detailed.pt
@@ -6,8 +6,7 @@
           <pillar tal:replace="structure pillar/fmt:link:bugs" />,
         </tal:per_pillar>
       reported
-      <span
-        tal:attributes="title context/datecreated/fmt:datetime"
-        tal:content="context/datecreated/fmt:displaydate">2005-10-05</span>
+      <tal:created
+        replace="structure context/datecreated/fmt:displaydatetitle" />
     </span>
 </li>
diff --git a/lib/lp/bugs/templates/bugcomment-macros.pt b/lib/lp/bugs/templates/bugcomment-macros.pt
index 7d5fa48..efa23d6 100644
--- a/lib/lp/bugs/templates/bugcomment-macros.pt
+++ b/lib/lp/bugs/templates/bugcomment-macros.pt
@@ -34,11 +34,7 @@
     <tal:activity_has_person>
       <tal:activity_person replace="structure activity_person/fmt:link-display-name-id" />
     </tal:activity_has_person>
-    <span
-      tal:attributes="title activity_date/fmt:datetime"
-      tal:content="activity_date/fmt:displaydate">
-      7 minutes ago
-    </span>
+    <tal:date replace="structure activity_date/fmt:displaydatetitle" />
   </div>
   <div class="boardCommentActivity">
     <metal:activity-table
diff --git a/lib/lp/bugs/templates/bugtask-edit-form.pt b/lib/lp/bugs/templates/bugtask-edit-form.pt
index 1e1a5e6..3216b2e 100644
--- a/lib/lp/bugs/templates/bugtask-edit-form.pt
+++ b/lib/lp/bugs/templates/bugtask-edit-form.pt
@@ -210,11 +210,7 @@
           <tal:has_been_pulled
               tal:condition="context/bugwatch/lastchecked">
               This information was last pulled
-              <b
-                tal:attributes="title context/bugwatch/lastchecked/fmt:datetime"
-                tal:content="context/bugwatch/lastchecked/fmt:displaydate">
-                3 minutes ago
-              </b>.
+              <b tal:content="structure context/bugwatch/lastchecked/fmt:displaydatetitle" />.
           </tal:has_been_pulled>
           <tal:has_not_been_pulled
               tal:condition="not:context/bugwatch/lastchecked">
diff --git a/lib/lp/bugs/templates/bugtask-index.pt b/lib/lp/bugs/templates/bugtask-index.pt
index 8517916..911161b 100644
--- a/lib/lp/bugs/templates/bugtask-index.pt
+++ b/lib/lp/bugs/templates/bugtask-index.pt
@@ -74,9 +74,8 @@
     <tal:registering metal:fill-slot="registering">
       Bug #<tal:id replace="context/bug/id">1</tal:id> reported by
       <tal:reporter replace="structure context/bug/owner/fmt:link" />
-      <span
-        tal:attributes="title context/bug/datecreated/fmt:datetime"
-        tal:content="context/bug/datecreated/fmt:displaydate" />
+      <tal:created
+        replace="structure context/bug/datecreated/fmt:displaydatetitle" />
     </tal:registering>
 
     <metal:heading fill-slot="heading" tal:define="context_menu context/menu:context">
diff --git a/lib/lp/buildmaster/templates/builds-list.pt b/lib/lp/buildmaster/templates/builds-list.pt
index 2f67d3e..4a12620 100644
--- a/lib/lp/buildmaster/templates/builds-list.pt
+++ b/lib/lp/buildmaster/templates/builds-list.pt
@@ -56,13 +56,9 @@
             </div>
             <div tal:condition="build/was_built">
               Build started
-              <tal:soyuz_record condition="build/duration">
-                 <span
-                   tal:attributes="
-                     title build/date_started/fmt:datetime"
-                   tal:content="
-                   build/date_started/fmt:displaydate" />
-              </tal:soyuz_record>
+              <tal:soyuz_record
+                condition="build/duration"
+                replace="structure build/date_started/fmt:displaydatetitle" />
               <tal:gina_record condition="not: build/duration">
                   <i>at an unknown time</i>
               </tal:gina_record>
@@ -79,9 +75,8 @@
               </tal:show_builder_info>
               <tal:date_built condition="build/date_finished">
                 and finished
-                <span
-                  tal:attributes="title build/date_finished/fmt:datetime"
-                  tal:content="build/date_finished/fmt:displaydate" />
+                <tal:finished
+                  replace="structure build/date_finished/fmt:displaydatetitle" />
                 taking
                 <tal:time
                   content="build/duration/fmt:approximateduration" />
@@ -100,9 +95,8 @@
                 </tal:pending>
                 <tal:building condition="bq/builder">
                   Build started
-                  <span
-                    tal:attributes="title bq/date_started/fmt:datetime"
-                    tal:content="bq/date_started/fmt:displaydate" />
+                  <tal:started
+                    replace="structure bq/date_started/fmt:displaydatetitle" />
                   on
                   <a tal:content="bq/builder/title"
                      tal:attributes="href bq/builder/fmt:url"/>
diff --git a/lib/lp/code/templates/branch-heading.pt b/lib/lp/code/templates/branch-heading.pt
index cbeb6d1..5a080af 100644
--- a/lib/lp/code/templates/branch-heading.pt
+++ b/lib/lp/code/templates/branch-heading.pt
@@ -7,17 +7,11 @@
   <div style="float:right; text-align: right">
     Created by
     <tal:registrant tal:replace="structure context/registrant/fmt:link"/>
-    <span
-       tal:attributes="title context/date_created/fmt:datetime"
-       tal:content="context/date_created/fmt:displaydate">
-      2005-10-18
-    </span>
+    <tal:created
+      replace="structure context/date_created/fmt:displaydatetitle" />
     and last modified
-    <span
-       tal:attributes="title context/date_last_modified/fmt:datetime"
-       tal:content="context/date_last_modified/fmt:displaydate">
-      2005-10-18
-    </span>
+    <tal:last-modified
+      replace="structure context/date_last_modified/fmt:displaydatetitle" />
   </div>
   <span class="sprite branch"> Branch</span>
   <tt tal:content="context/bzr_identity" />
diff --git a/lib/lp/code/templates/branch-macros.pt b/lib/lp/code/templates/branch-macros.pt
index 54c94bf..6eb8133 100644
--- a/lib/lp/code/templates/branch-macros.pt
+++ b/lib/lp/code/templates/branch-macros.pt
@@ -259,10 +259,8 @@
       </tal:unknown-person>
     </tal:revision-author>
 
-    <span
-        tal:attributes="title rev_no/revision/revision_date/fmt:datetime"
-        tal:content="rev_no/revision/revision_date/fmt:displaydate"
-        >2005-10-05 14:34:22 WST</span>
+    <tal:revision-date
+      replace="structure rev_no/revision/revision_date/fmt:displaydatetitle" />
   </dt>
   <dd class="subordinate revision-comment">
     <tal:commit-message
diff --git a/lib/lp/code/templates/branch-messages.pt b/lib/lp/code/templates/branch-messages.pt
index 28216db..2a03680 100644
--- a/lib/lp/code/templates/branch-messages.pt
+++ b/lib/lp/code/templates/branch-messages.pt
@@ -23,8 +23,8 @@
           <tal:failed-once tal:condition="view/mirror_failed_once">
             This branch may be out of date, as Launchpad was not able to
             access it
-            <span tal:attributes="title branch/last_mirror_attempt/fmt:datetime"
-                  tal:content="branch/last_mirror_attempt/fmt:displaydate" />.
+            <tal:last-mirror-attempt
+              replace="structure branch/last_mirror_attempt/fmt:displaydatetitle" />.
           </tal:failed-once>
 
           <tal:failed-multiple tal:condition="not:view/mirror_failed_once">
@@ -40,8 +40,8 @@
             <tal:not-mirrored-yet tal:condition="not:branch/last_mirrored">
               Launchpad has not been able to mirror this branch. The last attempt
               was
-              <span tal:attributes="title branch/last_mirror_attempt/fmt:datetime"
-                    tal:content="branch/last_mirror_attempt/fmt:displaydate" />.
+              <tal:last-mirror-attempt
+                replace="structure branch/last_mirror_attempt/fmt:displaydatetitle" />.
             </tal:not-mirrored-yet>
           </tal:failed-multiple>
         </tal:mirror-scheduled>
diff --git a/lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt b/lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt
index ed73476..3f4438a 100644
--- a/lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt
+++ b/lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt
@@ -71,12 +71,7 @@
                   tal:attributes="class string:branchstatus${branch/lifecycle_status/name}">
             Status</span>
           </td>
-          <td>
-            <span tal:attributes="title branch/date_last_modified/fmt:datetime"
-                  tal:content="branch/date_last_modified/fmt:approximatedate">
-              sometime
-              </span>
-          </td>
+          <td tal:content="structure branch/date_last_modified/fmt:approximatedatetitle" />
         </tr>
         <tr tal:condition="group/more-branch-count">
           <td colspan="4" style="padding-left: 2em">
diff --git a/lib/lp/code/templates/git-macros.pt b/lib/lp/code/templates/git-macros.pt
index cb0f302..b7a6318 100644
--- a/lib/lp/code/templates/git-macros.pt
+++ b/lib/lp/code/templates/git-macros.pt
@@ -209,8 +209,7 @@
     <tal:unknown-person condition="not: author/person">
       <strong tal:content="author/name/fmt:obfuscate-email" />
     </tal:unknown-person>
-    <span tal:attributes="title author_date/fmt:datetime"
-          tal:content="author_date/fmt:displaydate" />
+    <tal:author-date replace="structure author_date/fmt:displaydatetitle" />
   </dt>
   <dd class="subordinate commit-message"
       tal:define="commit_message python:commit_info['commit_message']">
diff --git a/lib/lp/code/templates/gitref-listing.pt b/lib/lp/code/templates/gitref-listing.pt
index 9ef1e53..d9f3260 100644
--- a/lib/lp/code/templates/gitref-listing.pt
+++ b/lib/lp/code/templates/gitref-listing.pt
@@ -47,8 +47,8 @@ function hide_git_commit(id) {
           <td>
             <span class="sortkey"
                   tal:content="ref/committer_date/fmt:datetime" />
-            <span tal:attributes="title ref/committer_date/fmt:datetime"
-                  tal:content="ref/committer_date/fmt:approximatedate" />
+            <tal:committer-date
+              replace="structure ref/committer_date/fmt:approximatedatetitle" />
           </td>
           <td tal:attributes="onmouseover string:show_git_commit(${repeat/ref/index});
                               onmouseout string:hide_git_commit(${repeat/ref/index});">
diff --git a/lib/lp/code/templates/sourcepackagerecipebuild-index.pt b/lib/lp/code/templates/sourcepackagerecipebuild-index.pt
index d9b9729..7f9b011 100644
--- a/lib/lp/code/templates/sourcepackagerecipebuild-index.pt
+++ b/lib/lp/code/templates/sourcepackagerecipebuild-index.pt
@@ -11,9 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"
-          >on 2005-01-01</span>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
@@ -121,14 +120,10 @@
         </li>
       </tal:pending>
       </tal:reallypending>
-      <tal:started condition="context/date_started">
-        <li tal:condition="context/date_started">
-          Started <span
-           tal:define="start context/date_started"
-           tal:attributes="title start/fmt:datetime"
-           tal:content="start/fmt:displaydate">2008-01-01</span>
-        </li>
-      </tal:started>
+      <li tal:condition="context/date_started">
+        Started <tal:started
+          replace="structure context/date_started/fmt:displaydatetitle" />
+      </li>
       <tal:finish condition="not: context/date_finished">
         <li tal:define="eta view/eta" tal:condition="view/eta">
           Estimated finish <tal:eta
@@ -137,9 +132,8 @@
       </tal:finish>
 
       <li tal:condition="context/date_finished">
-        Finished <span
-          tal:attributes="title context/date_finished/fmt:datetime"
-          tal:content="context/date_finished/fmt:displaydate">2008-01-01</span>
+        Finished <tal:finished
+          replace="structure context/date_finished/fmt:displaydatetitle" />
         <tal:duration condition="context/duration">
           (took <span tal:replace="context/duration/fmt:exactduration"/>)
         </tal:duration>
diff --git a/lib/lp/oci/templates/ocirecipebuild-index.pt b/lib/lp/oci/templates/ocirecipebuild-index.pt
index dc896e2..a1f3caf 100644
--- a/lib/lp/oci/templates/ocirecipebuild-index.pt
+++ b/lib/lp/oci/templates/ocirecipebuild-index.pt
@@ -11,8 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"/>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
@@ -105,14 +105,10 @@
         </li>
       </tal:pending>
       </tal:reallypending>
-      <tal:started condition="context/date_started">
-        <li tal:condition="context/date_started">
-          Started <span
-           tal:define="start context/date_started"
-           tal:attributes="title start/fmt:datetime"
-           tal:content="start/fmt:displaydate"/>
-        </li>
-      </tal:started>
+      <li tal:condition="context/date_started">
+        Started <tal:started
+          replace="structure context/date_started/fmt:displaydatetitle" />
+      </li>
       <tal:finish condition="not: context/date_finished">
         <li tal:define="eta context/eta" tal:condition="context/eta">
           Estimated finish <tal:eta replace="eta/fmt:approximatedate"/>
@@ -120,9 +116,8 @@
       </tal:finish>
 
       <li tal:condition="context/date_finished">
-        Finished <span
-          tal:attributes="title context/date_finished/fmt:datetime"
-          tal:content="context/date_finished/fmt:displaydate"/>
+        Finished <tal:finished
+          replace="structure context/date_finished/fmt:displaydatetitle" />
         <tal:duration condition="context/duration">
           (took <span tal:replace="context/duration/fmt:exactduration"/>)
         </tal:duration>
diff --git a/lib/lp/registry/templates/distribution-index.pt b/lib/lp/registry/templates/distribution-index.pt
index b3955af..1c7c7bd 100644
--- a/lib/lp/registry/templates/distribution-index.pt
+++ b/lib/lp/registry/templates/distribution-index.pt
@@ -26,9 +26,8 @@
     <tal:registering metal:fill-slot="registering">
         Registered by
         <a tal:replace="structure context/registrant/fmt:link" />
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"
-          >on 2005-01-01</span>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <tal:main metal:fill-slot="main"
diff --git a/lib/lp/registry/templates/distributionmirror-index.pt b/lib/lp/registry/templates/distributionmirror-index.pt
index 27f3139..3d840d0 100644
--- a/lib/lp/registry/templates/distributionmirror-index.pt
+++ b/lib/lp/registry/templates/distributionmirror-index.pt
@@ -101,9 +101,8 @@
           </tal:not-probe>
           <tal:probe condition="probe">
               <p>This mirror was last verified
-                <span
-                   tal:attributes="title probe/date_created/fmt:datetime"
-                   tal:content="probe/date_created/fmt:displaydate" />.
+                <tal:created
+                  replace="structure probe/date_created/fmt:displaydatetitle" />.
 
                 <tal:is-owner condition="context/required:launchpad.Edit">
                   You can see the
diff --git a/lib/lp/registry/templates/distributionmirror-prober-logs.pt b/lib/lp/registry/templates/distributionmirror-prober-logs.pt
index b452764..f0c440f 100644
--- a/lib/lp/registry/templates/distributionmirror-prober-logs.pt
+++ b/lib/lp/registry/templates/distributionmirror-prober-logs.pt
@@ -30,11 +30,7 @@
       </thead>
       <tbody>
         <tr tal:repeat="record view/probe_records/currentBatch">
-          <td>
-            <span
-              tal:attributes="title record/date_created/fmt:datetime"
-              tal:content="record/date_created/fmt:approximatedate" />
-          </td>
+          <td tal:content="structure record/date_created/fmt:approximatedatetitle" />
           <td><a tal:content="record/log_file/filename"
                  tal:attributes="href record/log_file/http_url" />
           </td>
diff --git a/lib/lp/registry/templates/distroseries-index.pt b/lib/lp/registry/templates/distroseries-index.pt
index bf81282..e9bd461 100644
--- a/lib/lp/registry/templates/distroseries-index.pt
+++ b/lib/lp/registry/templates/distroseries-index.pt
@@ -33,9 +33,8 @@
     <tal:registering metal:fill-slot="registering">
         Registered by
         <a tal:replace="structure context/registrant/fmt:link" />
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"
-          >on 2005-01-01</span>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
diff --git a/lib/lp/registry/templates/distroseries-localdifferences.pt b/lib/lp/registry/templates/distroseries-localdifferences.pt
index 200b9e0..497a4da 100644
--- a/lib/lp/registry/templates/distroseries-localdifferences.pt
+++ b/lib/lp/registry/templates/distroseries-localdifferences.pt
@@ -225,8 +225,8 @@
               <td class="last-changed">
                 <tal:parent condition="not: view/show_derived_version">
                   <tal:published condition="parent_source_pub">
-                    <span tal:attributes="title parent_source_pub/datepublished/fmt:datetime"
-                          tal:content="parent_source_pub/datepublished/fmt:approximatedate">2005-09-16</span>
+                    <tal:date
+                      replace="structure parent_source_pub/datepublished/fmt:approximatedatetitle" />
                     <tal:creator define="spr parent_source_pub/sourcepackagerelease">
                       <span class="nowrap">by <a tal:replace="structure spr/creator/fmt:link" /></span>
                     </tal:creator>
@@ -247,8 +247,8 @@
                 </tal:parent>
                 <tal:derived condition="view/show_derived_version">
                   <tal:published condition="source_pub">
-                    <span tal:attributes="title source_pub/datepublished/fmt:datetime"
-                          tal:content="source_pub/datepublished/fmt:approximatedate">2005-09-16</span>
+                    <tal:date
+                      replace="structure source_pub/datepublished/fmt:approximatedatetitle" />
                     <tal:creator define="spr source_pub/sourcepackagerelease">
                       <span class="nowrap">by <a tal:replace="structure spr/creator/fmt:link" /></span>
                     </tal:creator>
diff --git a/lib/lp/registry/templates/distroseries-portlet-packaging.pt b/lib/lp/registry/templates/distroseries-portlet-packaging.pt
index e81de30..2956c37 100644
--- a/lib/lp/registry/templates/distroseries-portlet-packaging.pt
+++ b/lib/lp/registry/templates/distroseries-portlet-packaging.pt
@@ -43,8 +43,7 @@
             <span class="lesser greyed-out">linked</span>
           </tal:no_owner>
             <span class="lesser greyed-out"
-              tal:attributes="title package/datecreated/fmt:datetime"
-              tal:content="package/datecreated/fmt:approximatedate" />
+                  tal:content="structure package/datecreated/fmt:approximatedatetitle" />
         </p>
       </tal:package>
     </dd>
diff --git a/lib/lp/registry/templates/milestone-index.pt b/lib/lp/registry/templates/milestone-index.pt
index cd7bf30..5b3e41a 100644
--- a/lib/lp/registry/templates/milestone-index.pt
+++ b/lib/lp/registry/templates/milestone-index.pt
@@ -99,9 +99,9 @@
                 <tal:has_release condition="view/release">
                   <dl>
                     <dt>Released:</dt>
-                    <dd><span
-                      tal:attributes="title view/release/datereleased/fmt:datetime"
-                      tal:content="view/release/datereleased/fmt:approximatedate" />
+                    <dd>
+                      <tal:released
+                        replace="structure view/release/datereleased/fmt:approximatedatetitle" />
                       &nbsp;
                       <a tal:replace="structure release_menu/delete/fmt:icon" />
                       <a tal:replace="structure release_menu/edit/fmt:icon" />
@@ -115,9 +115,7 @@
 
                   <dl>
                     <dt>Release registered:</dt>
-                    <dd><span
-                      tal:attributes="title view/release/datecreated/fmt:datetime"
-                      tal:content="view/release/datecreated/fmt:approximatedate" /></dd>
+                    <dd tal:content="structure view/release/datecreated/fmt:approximatedatetitle" />
                   </dl>
                 </tal:has_release>
               </tal:is_not_project_milestone_tag>
diff --git a/lib/lp/registry/templates/person-index.pt b/lib/lp/registry/templates/person-index.pt
index 1261219..56dbcee 100644
--- a/lib/lp/registry/templates/person-index.pt
+++ b/lib/lp/registry/templates/person-index.pt
@@ -120,9 +120,8 @@
       <p><span tal:replace="context/displayname" /> does not use Launchpad.
         <tal:block condition="context/creation_comment">
           This page was created
-          <span
-            tal:attributes="title context/datecreated/fmt:datetime"
-            tal:content="context/datecreated/fmt:displaydate" />
+          <tal:created
+            replace="structure context/datecreated/fmt:displaydatetitle" />
           <tal:user-created
             condition="context/creation_rationale/enumvalue:USER_CREATED">
             by <a tal:attributes="href context/registrant/fmt:url">
@@ -138,9 +137,8 @@
         </tal:block>
         <tal:block condition="not: context/creation_comment">
           This page was created
-          <span
-            tal:attributes="title context/datecreated/fmt:datetime"
-            tal:content="context/datecreated/fmt:displaydate" />.
+          <tal:created
+            replace="structure context/datecreated/fmt:displaydatetitle" />.
         </tal:block>
       </p>
 
diff --git a/lib/lp/registry/templates/person-karma.pt b/lib/lp/registry/templates/person-karma.pt
index 806c229..53e6b6d 100644
--- a/lib/lp/registry/templates/person-karma.pt
+++ b/lib/lp/registry/templates/person-karma.pt
@@ -59,10 +59,9 @@
             <tr tal:repeat="karma latest_karma">
               <td>
                 <span class="sortkey"
-                tal:content="karma/datecreated/fmt:datetime">2005-10-06</span>
-                <span
-                  tal:attributes="title karma/datecreated/fmt:datetime"
-                  tal:content="karma/datecreated/fmt:approximatedate" />
+                      tal:content="karma/datecreated/fmt:datetime" />
+                <tal:created
+                  replace="structure karma/datecreated/fmt:approximatedatetitle" />
               </td>
               <td tal:content="karma/action/title">Bug Filed</td>
             </tr>
diff --git a/lib/lp/registry/templates/person-macros.pt b/lib/lp/registry/templates/person-macros.pt
index 0077431..3eb80c6 100644
--- a/lib/lp/registry/templates/person-macros.pt
+++ b/lib/lp/registry/templates/person-macros.pt
@@ -148,11 +148,7 @@
          tal:content="spr/version">
       </a>
     </td>
-    <td
-      tal:attributes="title spr/dateuploaded/fmt:datetime"
-      tal:content="spr/dateuploaded/fmt:approximatedate">
-      2005-10-24
-    </td>
+    <td tal:content="structure spr/dateuploaded/fmt:approximatedatetitle" />
     <td>
       <tal:needs_building condition="spr/needs_building">
           Not yet built
@@ -199,11 +195,7 @@
          tal:content="spr/version">
       </a>
     </td>
-    <td
-      tal:attributes="title spph/datecreated/fmt:datetime"
-      tal:content="spph/datecreated/fmt:approximatedate">
-      2005-10-24
-    </td>
+    <td tal:content="structure spph/datecreated/fmt:approximatedatetitle" />
     <td>
       <tal:needs_building condition="spph/needs_building">
           Not yet built
diff --git a/lib/lp/registry/templates/person-related-software.pt b/lib/lp/registry/templates/person-related-software.pt
index f5271c9..232d522 100644
--- a/lib/lp/registry/templates/person-related-software.pt
+++ b/lib/lp/registry/templates/person-related-software.pt
@@ -143,11 +143,7 @@
     <td tal:content="spr/version">
       1.0
     </td>
-    <td
-      tal:attributes="title spr/dateuploaded/fmt:datetime"
-      tal:content="spr/dateuploaded/fmt:approximatedate">
-      2005-10-24
-    </td>
+    <td tal:content="structure spr/dateuploaded/fmt:approximatedatetitle" />
     <td>
       <tal:block condition="spr/needs_building">
           Not yet built
diff --git a/lib/lp/registry/templates/poll-index.pt b/lib/lp/registry/templates/poll-index.pt
index 69a60f5..f067078 100644
--- a/lib/lp/registry/templates/poll-index.pt
+++ b/lib/lp/registry/templates/poll-index.pt
@@ -69,9 +69,8 @@
     <h2>Voting has closed</h2>
 
     <p>Voting closed
-      <span
-        tal:attributes="title context/datecloses/fmt:datetime"
-        tal:content="context/datecloses/fmt:displaydate" />.
+      <tal:closes
+        replace="structure context/datecloses/fmt:displaydatetitle" />.
     </p>
 
     <tal:block condition="view/userVoted">
@@ -189,9 +188,8 @@
 
     <p>
       The vote will commence
-      <span
-        tal:attributes="title context/dateopens/fmt:datetime"
-        tal:content="context/dateopens/fmt:displaydate" />.
+      <tal:opens
+        replace="structure context/dateopens/fmt:displaydatetitle" />.
     </p>
   </tal:block>
 
diff --git a/lib/lp/registry/templates/product-files.pt b/lib/lp/registry/templates/product-files.pt
index bf2f792..161aa6e 100644
--- a/lib/lp/registry/templates/product-files.pt
+++ b/lib/lp/registry/templates/product-files.pt
@@ -59,9 +59,8 @@
                   from the
                   <a tal:attributes="href series/fmt:url"
                      tal:content="series/name">name</a> series released
-                  <span
-                     tal:attributes="title release/datereleased/fmt:datetime"
-                     tal:content="release/datereleased/fmt:approximatedate" />
+                  <tal:released
+                    replace="structure release/datereleased/fmt:approximatedatetitle" />
                 </h3>
 
                 <div tal:attributes="id release/version/fmt:css-id/release-information-"
diff --git a/lib/lp/registry/templates/product-listing-detailed.pt b/lib/lp/registry/templates/product-listing-detailed.pt
index 545e0b7..9e2f3f6 100644
--- a/lib/lp/registry/templates/product-listing-detailed.pt
+++ b/lib/lp/registry/templates/product-listing-detailed.pt
@@ -13,9 +13,8 @@
     <div>
       Maintained by <a
         tal:replace="structure context/owner/fmt:link">Foo Bar</a>; Registered 
-      <span
-        tal:attributes="title context/datecreated/fmt:datetime"
-        tal:content="context/datecreated/fmt:displaydate">2005-10-12</span>
+      <tal:created
+        replace="structure context/datecreated/fmt:displaydatetitle" />
     </div>
   </div>
 </div>
diff --git a/lib/lp/registry/templates/product-listing-for-review.pt b/lib/lp/registry/templates/product-listing-for-review.pt
index 405d7f8..a2a6909 100644
--- a/lib/lp/registry/templates/product-listing-for-review.pt
+++ b/lib/lp/registry/templates/product-listing-for-review.pt
@@ -10,9 +10,8 @@
         <a tal:replace="structure context/fmt:link" />
         (<span tal:replace="context/name" />)
         registered
-        <span
-          tal:attributes="title context/datecreated/fmt:datetime"
-          tal:content="context/datecreated/fmt:displaydate">2005-10-12</span>
+        <tal:created
+          replace="structure context/datecreated/fmt:displaydatetitle" />
       </p>
 
       <dl class="horizontal">
diff --git a/lib/lp/registry/templates/productseries-milestone-table-row.pt b/lib/lp/registry/templates/productseries-milestone-table-row.pt
index e8792d0..7c3b5a1 100644
--- a/lib/lp/registry/templates/productseries-milestone-table-row.pt
+++ b/lib/lp/registry/templates/productseries-milestone-table-row.pt
@@ -43,12 +43,9 @@
       </tal:empty-date>
     </td>
     <td tal:condition="not: view/is_distroseries_milestone">
-      <span
-        tal:condition="release"
-        tal:attributes="title release/datereleased/fmt:datetime"
-        tal:content="release/datereleased/fmt:approximatedate">
-        2005-12-13
-      </span>
+      <tal:released
+        condition="release"
+        replace="structure release/datereleased/fmt:approximatedatetitle" />
       <tal:no-release condition="not: release">
         <em tal:condition="not: milestone/active">
           <img src="/@@/info"/> This is an inactive milestone
diff --git a/lib/lp/registry/templates/productseries-ubuntupkg.pt b/lib/lp/registry/templates/productseries-ubuntupkg.pt
index f40c281..0bb8275 100644
--- a/lib/lp/registry/templates/productseries-ubuntupkg.pt
+++ b/lib/lp/registry/templates/productseries-ubuntupkg.pt
@@ -46,13 +46,7 @@
 
           <tbody>
             <tr tal:repeat="packaging view/ubuntu_history">
-              <td>
-                <span
-                  tal:attributes="title packaging/datecreated/fmt:datetime"
-                  tal:content="packaging/datecreated/fmt:approximatedate">
-                  13-05-2004
-                </span>
-              </td>
+              <td tal:content="structure packaging/datecreated/fmt:approximatedatetitle" />
               <td>
                 <a tal:replace="structure packaging/distroseries/fmt:link" />
               </td>
diff --git a/lib/lp/registry/templates/signedcodeofconduct-index.pt b/lib/lp/registry/templates/signedcodeofconduct-index.pt
index 5d37c38..5573df6 100644
--- a/lib/lp/registry/templates/signedcodeofconduct-index.pt
+++ b/lib/lp/registry/templates/signedcodeofconduct-index.pt
@@ -24,9 +24,9 @@
       </p>
 
       <p><dfn>Created:</dfn>
-         <span
-           tal:attributes="title context/datecreated/fmt:datetime"
-           tal:content="context/datecreated/fmt:approximatedate">DATE</span></p>
+        <tal:created
+          replace="structure context/datecreated/fmt:approximatedatetitle" />
+      </p>
 
       <tal:block condition="context/recipient">
          <p><dfn>Recipient:</dfn>
diff --git a/lib/lp/registry/templates/sourcepackage-portlet-details.pt b/lib/lp/registry/templates/sourcepackage-portlet-details.pt
index 26a4fd5..5e3e81f 100644
--- a/lib/lp/registry/templates/sourcepackage-portlet-details.pt
+++ b/lib/lp/registry/templates/sourcepackage-portlet-details.pt
@@ -16,9 +16,7 @@
       </dl>
       <dl>
         <dt>Uploaded:</dt>
-        <dd><span
-          tal:attributes="title current/dateuploaded/fmt:datetime"
-          tal:content="current/dateuploaded/fmt:approximatedate" /></dd>
+        <dd tal:content="structure current/dateuploaded/fmt:approximatedatetitle" />
       </dl>
       <dl>
         <dt>Urgency:</dt>
diff --git a/lib/lp/registry/templates/team-listing.pt b/lib/lp/registry/templates/team-listing.pt
index fe6474b..14fb342 100644
--- a/lib/lp/registry/templates/team-listing.pt
+++ b/lib/lp/registry/templates/team-listing.pt
@@ -29,20 +29,8 @@
           <a tal:content="membership/person/displayname"
              tal:attributes="href membership/person/fmt:url" />
         </td>
-        <td>
-          <span
-            tal:attributes="title membership/datejoined/fmt:datetime"
-            tal:content="membership/datejoined/fmt:approximatedate">
-            12-12-2004
-          </span>
-        </td>
-        <td>
-          <span
-            tal:attributes="title membership/dateexpires/fmt:datetime"
-            tal:content="membership/dateexpires/fmt:approximatedate">
-            12-12-2005
-          </span>
-        </td>
+        <td tal:content="structure membership/datejoined/fmt:approximatedatetitle" />
+        <td tal:content="structure membership/dateexpires/fmt:approximatedatetitle" />
         <td tal:content="membership/status/title">Administrator</td>
       </tr>
     </tbody>
diff --git a/lib/lp/registry/templates/team-members.pt b/lib/lp/registry/templates/team-members.pt
index 318a052..7b3274f 100644
--- a/lib/lp/registry/templates/team-members.pt
+++ b/lib/lp/registry/templates/team-members.pt
@@ -52,11 +52,8 @@
               <td>
                 <span class="sortkey"
                   tal:content="membership/datejoined/fmt:datetime" />
-                <span
-                  tal:attributes="title membership/datejoined/fmt:datetime"
-                  tal:content="membership/datejoined/fmt:approximatedate">
-                  2005-06-14
-                </span>
+                <tal:joined
+                  replace="structure membership/datejoined/fmt:approximatedatetitle" />
               </td>
               <td>
                 <tal:block condition="not: membership/dateexpires">
@@ -64,11 +61,8 @@
                 </tal:block>
                 <span class="sortkey"
                   tal:content="membership/dateexpires/fmt:datetime" />
-                <span
-                  tal:attributes="title membership/dateexpires/fmt:datetime"
-                  tal:content="membership/dateexpires/fmt:approximatedate">
-                  2005-06-14
-                </span>
+                <tal:expires
+                  replace="structure membership/dateexpires/fmt:approximatedatetitle" />
               </td>
               <td tal:content="membership/status/title"></td>
               <td tal:condition="user_can_edit_memberships">
@@ -137,11 +131,8 @@
                 <td>
                   <span class="sortkey"
                     tal:content="membership/date_proposed/fmt:datetime" />
-                  <span
-                    tal:attributes="title membership/date_proposed/fmt:datetime"
-                    tal:content="membership/date_proposed/fmt:approximatedate">
-                    2005-06-14
-                  </span>
+                  <tal:proposed
+                    replace="structure membership/date_proposed/fmt:approximatedatetitle" />
                 </td>
                 <td tal:condition="membership/status/enumvalue:INVITED">
                   Pending
@@ -182,11 +173,8 @@
                 <td>
                   <span class="sortkey"
                     tal:content="membership/date_proposed/fmt:datetime" />
-                  <span
-                    tal:attributes="title membership/date_proposed/fmt:datetime"
-                    tal:content="membership/date_proposed/fmt:approximatedate">
-                    2005-06-14
-                  </span>
+                  <tal:proposed
+                    replace="structure membership/date_proposed/fmt:approximatedatetitle" />
                 </td>
               <td tal:condition="user_can_edit_memberships">
                 <a tal:attributes="href membership/fmt:url"
diff --git a/lib/lp/registry/templates/team-polls.pt b/lib/lp/registry/templates/team-polls.pt
index f0d7623..b958ec4 100644
--- a/lib/lp/registry/templates/team-polls.pt
+++ b/lib/lp/registry/templates/team-polls.pt
@@ -25,9 +25,8 @@
         <a tal:attributes="href poll/fmt:url">
           <span tal:replace="poll/title" />
         </a> - closes
-        <span
-          tal:attributes="title poll/datecloses/fmt:datetime"
-          tal:content="poll/datecloses/fmt:displaydate" />.
+        <tal:closes
+          replace="structure poll/datecloses/fmt:displaydatetitle" />.
 
         <tal:block define="user request/lp:person" condition="user">
           <tal:block condition="python: poll.personVoted(user)">
@@ -49,9 +48,8 @@
         <a tal:attributes="href poll/fmt:url">
           <span tal:replace="poll/title" />
         </a> - opens
-        <span
-          tal:attributes="title poll/dateopens/fmt:datetime"
-          tal:content="poll/dateopens/fmt:displaydate" />
+        <tal:opens
+          replace="structure poll/dateopens/fmt:displaydatetitle" />
       </li>
     </ul>
 
@@ -63,9 +61,8 @@
           <a tal:attributes="href poll/fmt:url">
             <span tal:replace="poll/title" />
           </a> - closed
-          <span
-            tal:attributes="title poll/datecloses/fmt:datetime"
-            tal:content="poll/datecloses/fmt:displaydate" />
+          <tal:closes
+            replace="structure poll/datecloses/fmt:displaydatetitle" />
         </li>
       </ul>
     </tal:block>
diff --git a/lib/lp/registry/templates/team-portlet-polls.pt b/lib/lp/registry/templates/team-portlet-polls.pt
index fa74a81..6c9182e 100644
--- a/lib/lp/registry/templates/team-portlet-polls.pt
+++ b/lib/lp/registry/templates/team-portlet-polls.pt
@@ -17,9 +17,8 @@
         <a tal:attributes="href poll/fmt:url">
           <span tal:replace="poll/title" />
         </a> - closes
-        <span
-          tal:attributes="title poll/datecloses/fmt:datetime"
-          tal:content="poll/datecloses/fmt:displaydate" />.
+        <tal:closes
+          replace="structure poll/datecloses/fmt:displaydatetitle" />.
 
         <tal:block define="user request/lp:person" condition="user">
           <tal:block condition="python: poll.personVoted(user)">
@@ -42,9 +41,8 @@
         <a tal:attributes="href poll/fmt:url">
           <span tal:replace="poll/title" />
         </a> - opens
-        <span
-          tal:attributes="title poll/dateopens/fmt:datetime"
-          tal:content="poll/dateopens/fmt:displaydate" />
+        <tal:opens
+          replace="structure poll/dateopens/fmt:displaydatetitle" />
       </li>
     </ul>
 
diff --git a/lib/lp/registry/templates/teammembership-index.pt b/lib/lp/registry/templates/teammembership-index.pt
index 795c868..147a0a3 100644
--- a/lib/lp/registry/templates/teammembership-index.pt
+++ b/lib/lp/registry/templates/teammembership-index.pt
@@ -97,13 +97,7 @@
           <table>
           <tr>
             <th>Member since:</th>
-            <td>
-              <span
-                tal:attributes="title context/datejoined/fmt:datetime"
-                tal:content="context/datejoined/fmt:approximatedate">
-                2005-09-13
-              </span>
-            </td>
+            <td tal:content="structure context/datejoined/fmt:approximatedatetitle" />
           </tr>
 
           <tr>
@@ -126,9 +120,9 @@
               <metal:radios use-macro="template/macros/expiry-radios" />
             </td>
             <td tal:condition="not: view/canChangeExpirationDate">
-              <span tal:condition="context/dateexpires"
-                    tal:attributes="title context/dateexpires/fmt:datetime"
-                    tal:content="context/dateexpires/fmt:approximatedate" />
+              <tal:expires
+                condition="context/dateexpires"
+                replace="structure context/dateexpires/fmt:approximatedatetitle" />
               <span tal:condition="not: context/dateexpires">Never</span>
             </td>
           </tr>
@@ -173,25 +167,13 @@
           <table>
           <tr>
             <th>Became member:</th>
-            <td>
-              <span
-                tal:attributes="title context/datejoined/fmt:datetime"
-                tal:content="context/datejoined/fmt:approximatedate">
-                2005-09-13
-              </span>
-            </td>
+            <td tal:content="structure context/datejoined/fmt:approximatedatetitle" />
           </tr>
 
           <tal:expired condition="view/isExpired">
             <tr>
               <th>Subscription expired:</th>
-              <td>
-                <span
-                  tal:attributes="title context/dateexpires/fmt:datetime"
-                  tal:content="context/dateexpires/fmt:approximatedate">
-                  2006-09-13
-                </span>
-              </td>
+              <td tal:content="structure context/dateexpires/fmt:approximatedatetitle" />
             </tr>
 
             <metal:error use-macro="template/macros/error" />
@@ -251,13 +233,7 @@
           <table>
             <tr>
               <th>Applied:</th>
-              <td>
-                <span
-                  tal:attributes="title context/date_created/fmt:datetime"
-                  tal:content="context/date_created/fmt:approximatedate">
-                  2005-09-13
-                </span>
-              </td>
+              <td tal:content="structure context/date_created/fmt:approximatedatetitle" />
             </tr>
 
             <metal:error use-macro="template/macros/error" />
diff --git a/lib/lp/registry/templates/teammembership-listing-simple.pt b/lib/lp/registry/templates/teammembership-listing-simple.pt
index 10bddf8..8779f85 100644
--- a/lib/lp/registry/templates/teammembership-listing-simple.pt
+++ b/lib/lp/registry/templates/teammembership-listing-simple.pt
@@ -11,9 +11,8 @@
     </div>
     <div class="registered">
       Joined
-      <span
-        tal:attributes="title context/datejoined/fmt:datetime"
-        tal:content="context/datejoined/fmt:displaydate" />
+      <tal:joined
+        replace="structure context/datejoined/fmt:displaydatetitle" />
     </div>
   </td>
 </tr>
diff --git a/lib/lp/snappy/templates/snapbuild-index.pt b/lib/lp/snappy/templates/snapbuild-index.pt
index 513a81e..c8d5daf 100644
--- a/lib/lp/snappy/templates/snapbuild-index.pt
+++ b/lib/lp/snappy/templates/snapbuild-index.pt
@@ -11,8 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"/>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
@@ -131,14 +131,10 @@
         </li>
       </tal:pending>
       </tal:reallypending>
-      <tal:started condition="context/date_started">
-        <li tal:condition="context/date_started">
-          Started <span
-           tal:define="start context/date_started"
-           tal:attributes="title start/fmt:datetime"
-           tal:content="start/fmt:displaydate"/>
-        </li>
-      </tal:started>
+      <li tal:condition="context/date_started">
+        Started <tal:started
+          replace="structure context/date_started/fmt:displaydatetitle" />
+      </li>
       <tal:finish condition="not: context/date_finished">
         <li tal:define="eta context/eta" tal:condition="context/eta">
           Estimated finish <tal:eta replace="eta/fmt:approximatedate"/>
@@ -146,9 +142,8 @@
       </tal:finish>
 
       <li tal:condition="context/date_finished">
-        Finished <span
-          tal:attributes="title context/date_finished/fmt:datetime"
-          tal:content="context/date_finished/fmt:displaydate"/>
+        Finished <tal:finished
+          replace="structure context/date_finished/fmt:displaydatetitle" />
         <tal:duration condition="context/duration">
           (took <span tal:replace="context/duration/fmt:exactduration"/>)
         </tal:duration>
diff --git a/lib/lp/soyuz/templates/build-index.pt b/lib/lp/soyuz/templates/build-index.pt
index bd3ea81..1ae197e 100644
--- a/lib/lp/soyuz/templates/build-index.pt
+++ b/lib/lp/soyuz/templates/build-index.pt
@@ -11,9 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"
-          >on 2005-01-01</span>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
@@ -171,16 +170,13 @@
       </tal:building>
       <tal:built condition="context/was_built">
         <li tal:condition="context/duration">
-          Started <span
-           tal:define="start context/date_started"
-           tal:attributes="title start/fmt:datetime"
-           tal:content="start/fmt:displaydate">2008-01-01</span>
+          Started <tal:started
+            replace="structure context/date_started/fmt:displaydatetitle" />
         </li>
       </tal:built>
       <li tal:condition="context/date_finished">
-        Finished <span
-          tal:attributes="title context/date_finished/fmt:datetime"
-          tal:content="context/date_finished/fmt:displaydate">2008-01-01</span>
+        Finished <tal:finished
+          replace="structure context/date_finished/fmt:displaydatetitle" />
         <tal:duration condition="context/duration">
           (took <span tal:replace="context/duration/fmt:exactduration"/>)
         </tal:duration>
diff --git a/lib/lp/soyuz/templates/distributionsourcepackagerelease-index.pt b/lib/lp/soyuz/templates/distributionsourcepackagerelease-index.pt
index f5b6318..36182b0 100644
--- a/lib/lp/soyuz/templates/distributionsourcepackagerelease-index.pt
+++ b/lib/lp/soyuz/templates/distributionsourcepackagerelease-index.pt
@@ -29,9 +29,8 @@
             <dd>
              <span tal:replace="structure context/creator/fmt:link"
                >Foo Bar</span>
-             <span tal:content="context/dateuploaded/fmt:displaydate"
-                   tal:attributes="title context/dateuploaded/fmt:datetime"
-               >on </span>
+             <tal:uploaded
+               replace="structure context/dateuploaded/fmt:displaydatetitle" />
             </dd>
         </dl>
         <dl tal:condition="view/sponsor">
@@ -95,12 +94,7 @@
                tal:content="publishing/distroseries/displayname">Hoary Mock</a>
           </td>
           <td tal:content="publishing/pocket/title/fmt:lower">release</td>
-          <td>
-            <span tal:content="publishing/datepublished/fmt:displaydate"
-                  tal:attributes="title
-                                  publishing/datecreated/fmt:datetime"
-              >two minutes ago</span>
-          </td>
+          <td tal:content="structure publishing/datepublished/fmt:displaydatetitle" />
           <td tal:content="publishing/component/name">main</td>
           <td tal:content="publishing/section/name">devel</td>
          </tr>
diff --git a/lib/lp/soyuz/templates/distroseries-queue.pt b/lib/lp/soyuz/templates/distroseries-queue.pt
index 748e52d..793a941 100644
--- a/lib/lp/soyuz/templates/distroseries-queue.pt
+++ b/lib/lp/soyuz/templates/distroseries-queue.pt
@@ -139,11 +139,8 @@
                 <td style="padding-top: 5px">
                   <span class="sortkey"
                     tal:content="packageupload/date_created/fmt:datetime" />
-                  <span
-                    tal:attributes="title packageupload/date_created/fmt:datetime"
-                    tal:content="packageupload/date_created/fmt:approximatedate">
-                    2006-03-15
-                  </span>
+                  <tal:created
+                    replace="structure packageupload/date_created/fmt:approximatedatetitle" />
                 </td>
              </tr>
            </tbody>
@@ -157,8 +154,8 @@
 
                <td colspan="8" style="border: 0">
                  <span tal:content="log/new_status/title"></span>
-                 <span tal:attributes="title log/date_created/fmt:datetime"
-                       tal:content="log/date_created/fmt:displaydate" />
+                 <tal:created
+                   replace="structure log/date_created/fmt:displaydatetitle" />
                  by <span tal:content="structure log/reviewer/fmt:link" />
                  <p tal:condition="log/comment" tal:content="log/comment" />
                </td>
diff --git a/lib/lp/soyuz/templates/livefsbuild-index.pt b/lib/lp/soyuz/templates/livefsbuild-index.pt
index 36b71ed..dd715d3 100644
--- a/lib/lp/soyuz/templates/livefsbuild-index.pt
+++ b/lib/lp/soyuz/templates/livefsbuild-index.pt
@@ -11,8 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"/>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">
@@ -137,14 +137,10 @@
         </li>
       </tal:pending>
       </tal:reallypending>
-      <tal:started condition="context/date_started">
-        <li tal:condition="context/date_started">
-          Started <span
-           tal:define="start context/date_started"
-           tal:attributes="title start/fmt:datetime"
-           tal:content="start/fmt:displaydate"/>
-        </li>
-      </tal:started>
+      <li tal:condition="context/date_started">
+        Started <tal:started
+          replace="structure context/date_started/fmt:displaydatetitle" />
+      </li>
       <tal:finish condition="not: context/date_finished">
         <li tal:define="eta view/eta" tal:condition="view/eta">
           Estimated finish <tal:eta replace="eta/fmt:approximatedate"/>
@@ -152,9 +148,8 @@
       </tal:finish>
 
       <li tal:condition="context/date_finished">
-        Finished <span
-          tal:attributes="title context/date_finished/fmt:datetime"
-          tal:content="context/date_finished/fmt:displaydate"/>
+        Finished <tal:finished
+          replace="structure context/date_finished/fmt:displaydatetitle" />
         <tal:duration condition="context/duration">
           (took <span tal:replace="context/duration/fmt:exactduration"/>)
         </tal:duration>
diff --git a/lib/lp/soyuz/templates/packagepublishing-details.pt b/lib/lp/soyuz/templates/packagepublishing-details.pt
index 8a0df4a..aef93d1 100644
--- a/lib/lp/soyuz/templates/packagepublishing-details.pt
+++ b/lib/lp/soyuz/templates/packagepublishing-details.pt
@@ -8,39 +8,39 @@
                                and not view.wasCopied()
                                and not view.wasDeleted()">
       Created
-      <span tal:attributes="title context/datecreated/fmt:datetime"
-            tal:content="context/datecreated/fmt:displaydate" />
+      <tal:created
+        replace="structure context/datecreated/fmt:displaydatetitle" />
       by <a tal:replace="structure context/creator/fmt:link"/>
     </li>
     <li tal:condition="view/isRemoved">
       Removed from disk
-      <span tal:attributes="title context/dateremoved/fmt:datetime"
-            tal:content="context/dateremoved/fmt:displaydate" />.
+      <tal:removed
+        replace="structure context/dateremoved/fmt:displaydatetitle" />.
     </li>
     <li tal:condition="view/isPendingRemoval">
       Removal requested
-      <span tal:attributes="title context/scheduleddeletiondate/fmt:datetime"
-         tal:content="context/scheduleddeletiondate/fmt:displaydate" />.
+      <tal:scheduled-deletion
+        replace="structure context/scheduleddeletiondate/fmt:displaydatetitle" />.
     </li>
     <li tal:condition="view/wasDeleted">
       Deleted
-      <span tal:attributes="title context/datesuperseded/fmt:datetime"
-            tal:content="context/datesuperseded/fmt:displaydate" />
+      <tal:superseded
+        replace="structure context/datesuperseded/fmt:displaydatetitle" />
       by <a tal:replace="structure context/removed_by/fmt:link"/>
       <div tal:condition="context/removal_comment"
            tal:content="structure context/removal_comment/fmt:text-to-html" />
     </li>
     <li tal:condition="view/wasSuperseded">
       Superseded
-      <span tal:attributes="title context/datesuperseded/fmt:datetime"
-            tal:content="context/datesuperseded/fmt:displaydate"/>
+      <tal:superseded
+        replace="structure context/datesuperseded/fmt:displaydatetitle" />
       by <span tal:replace="context/supersededby/title" />
     </li>
     <li tal:content="structure view/recipe_build_details" tal:condition="view/is_source" />
     <li tal:condition="context/datepublished">
       Published
-      <span tal:attributes="title context/datepublished/fmt:datetime"
-            tal:content="context/datepublished/fmt:displaydate" />
+      <tal:published
+        replace="structure context/datepublished/fmt:displaydatetitle" />
     </li>
 
     <tal:comment condition="nothing">
diff --git a/lib/lp/soyuz/templates/person-ppa-packages.pt b/lib/lp/soyuz/templates/person-ppa-packages.pt
index b48443d..69ef167 100644
--- a/lib/lp/soyuz/templates/person-ppa-packages.pt
+++ b/lib/lp/soyuz/templates/person-ppa-packages.pt
@@ -76,11 +76,7 @@
     <td tal:content="spr/version">
       1.0
     </td>
-    <td
-      tal:attributes="title spr/dateuploaded/fmt:datetime"
-      tal:content="spr/dateuploaded/fmt:approximatedate">
-      2005-10-24
-    </td>
+    <td tal:content="structure spr/dateuploaded/fmt:approximatedatetitle" />
     <td>
       <tal:block condition="spr/needs_building">
           Not yet built
diff --git a/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-archive-detailed.pt b/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-archive-detailed.pt
index 0dc7fe6..e3e447c 100644
--- a/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-archive-detailed.pt
+++ b/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-archive-detailed.pt
@@ -48,8 +48,7 @@
         no signer
       </tal:no_signer>
     </td>
-    <td tal:attributes="title context/datepublished/fmt:datetime"
-        tal:content="context/datepublished/fmt:approximatedate">2005-09-16</td>
+    <td tal:content="structure context/datepublished/fmt:approximatedatetitle" />
     <td tal:content="context/status/title">PUBLISHED</td>
     <td tal:content="context/distroseries/name/capitalize">Dapper</td>
     <td tal:content="context/section/name/capitalize">Web</td>
diff --git a/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-compact.pt b/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-compact.pt
index 67bc510..e307d8d 100644
--- a/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-compact.pt
+++ b/lib/lp/soyuz/templates/sourcepackagepublishinghistory-listing-compact.pt
@@ -22,12 +22,9 @@
            tal:attributes="title view/date_last_changed/fmt:datetime"
            tal:content="view/date_last_changed/fmt:datetime" />
        </span>
-       <span
-         tal:condition="not: context/status/enumvalue:PENDING"
-         tal:attributes="title view/date_last_changed/fmt:datetime"
-         tal:content="view/date_last_changed/fmt:displaydate">
-         2005-09-16
-       </span>
+       <tal:last-changed
+         condition="not: context/status/enumvalue:PENDING"
+         replace="structure view/date_last_changed/fmt:displaydatetitle" />
        <span tal:condition="view/wasDeleted">(Reason:
          <tal:removal-comment tal:replace="view/removal_comment/fmt:shorten/60">
            sample reason.
diff --git a/lib/lp/translations/templates/currenttranslationmessage-translate-one.pt b/lib/lp/translations/templates/currenttranslationmessage-translate-one.pt
index 9d5f9e2..3035499 100644
--- a/lib/lp/translations/templates/currenttranslationmessage-translate-one.pt
+++ b/lib/lp/translations/templates/currenttranslationmessage-translate-one.pt
@@ -325,11 +325,8 @@
           Translated by
           <a tal:content="submitter/displayname"
              tal:attributes="href submitter/fmt:url">Foo Bar</a>
-          <span
-            tal:attributes="title context/date_created/fmt:datetime"
-            tal:content="context/date_created/fmt:displaydate">
-            on 2006-08-05
-          </span>
+          <tal:created
+            replace="structure context/date_created/fmt:displaydatetitle" />
         </td>
       </tr>
       <tr class="lesser secondary translation"
@@ -341,11 +338,8 @@
           Translated and reviewed by
           <a tal:content="context/reviewer/displayname"
              tal:attributes="href context/reviewer/fmt:url">Foo Bar</a>
-          <span
-            tal:attributes="title context/date_reviewed/fmt:datetime"
-            tal:content="context/date_reviewed/fmt:displaydate">
-            on 2006-08-05
-          </span>
+          <tal:reviewed
+            replace="structure context/date_reviewed/fmt:displaydatetitle" />
         </td>
         <td tal:condition=
               "not:translation_dictionary/same_translator_and_reviewer"
@@ -354,11 +348,8 @@
           Reviewed by
           <a tal:content="context/reviewer/displayname"
              tal:attributes="href context/reviewer/fmt:url">Foo Bar</a>
-          <span
-            tal:attributes="title context/date_reviewed/fmt:datetime"
-            tal:content="context/date_reviewed/fmt:displaydate">
-            on 2006-08-05
-          </span>
+          <tal:reviewed
+            replace="structure context/date_reviewed/fmt:displaydatetitle" />
         </td>
       </tr>
     </tal:has-submitter>
diff --git a/lib/lp/translations/templates/person-translation-activity.pt b/lib/lp/translations/templates/person-translation-activity.pt
index 817fa90..a2594d0 100644
--- a/lib/lp/translations/templates/person-translation-activity.pt
+++ b/lib/lp/translations/templates/person-translation-activity.pt
@@ -19,10 +19,7 @@
 
       <table class="listing" id="activity-table">
         <tr tal:repeat="record view/batchnav/currentBatch">
-          <td tal:attributes="title record/date_last_touched/fmt:datetime"
-              tal:content="record/date_last_touched/fmt:approximatedate">
-            2009-10-28
-          </td>
+          <td tal:content="structure record/date_last_touched/fmt:approximatedatetitle" />
           <td>
             <a tal:attributes="href python:view.composeURL(record.pofile)"
                tal:content="record/pofile/title">
diff --git a/lib/lp/translations/templates/person-translations.pt b/lib/lp/translations/templates/person-translations.pt
index 0b512e8..eb16138 100644
--- a/lib/lp/translations/templates/person-translations.pt
+++ b/lib/lp/translations/templates/person-translations.pt
@@ -90,10 +90,7 @@
         </p>
         <table class="summary">
           <tr tal:repeat="activity activities">
-            <td tal:attributes="title activity/date/fmt:datetime"
-                tal:content="activity/date/fmt:approximatedate">
-              2009-08-15
-            </td>
+            <td tal:content="structure activity/date/fmt:approximatedatetitle" />
             <td>
               <a tal:content="activity/title"
                  tal:attributes="href activity/url">foo bar in package bla</a>
diff --git a/lib/lp/translations/templates/potemplate-chart.pt b/lib/lp/translations/templates/potemplate-chart.pt
index edf974d..76c318a 100644
--- a/lib/lp/translations/templates/potemplate-chart.pt
+++ b/lib/lp/translations/templates/potemplate-chart.pt
@@ -67,15 +67,9 @@
               pf/date_changed/fmt:datetime">
             time sort key
           </span>
-          <span
+          <tal:changed
             tal:condition="pf/date_changed"
-            tal:attributes="
-              title pf/date_changed/fmt:datetime"
-            tal:content="
-              pf/date_changed/fmt:approximatedate"
-            >
-            2007-02-10
-          </span>
+            tal:replace="structure pf/date_changed/fmt:approximatedatetitle" />
           <tal:block condition="not: pf/date_changed">
               &mdash;
           </tal:block>
diff --git a/lib/lp/translations/templates/potemplate-portlet-details.pt b/lib/lp/translations/templates/potemplate-portlet-details.pt
index 16c6ef4..fec0a3d 100644
--- a/lib/lp/translations/templates/potemplate-portlet-details.pt
+++ b/lib/lp/translations/templates/potemplate-portlet-details.pt
@@ -14,11 +14,8 @@
             <b>Owner:</b><br />
             <a tal:replace="structure context/owner/fmt:link" /><br />
             <b>Created:</b>
-            <span
-              tal:attributes="title context/datecreated/fmt:datetime"
-              tal:content="context/datecreated/fmt:displaydate">
-              2004-05-22
-            </span><br />
+            <tal:created
+              replace="structure context/datecreated/fmt:displaydatetitle" /><br />
             <b>Domain:</b>
             <tal:translation_domain replace="context/translation_domain">
               foobar
diff --git a/lib/lp/translations/templates/productseries-translations-languages.pt b/lib/lp/translations/templates/productseries-translations-languages.pt
index 799d652..d85aa9f 100644
--- a/lib/lp/translations/templates/productseries-translations-languages.pt
+++ b/lib/lp/translations/templates/productseries-translations-languages.pt
@@ -78,15 +78,9 @@
                 tal:content="language_stats/last_changed_date/fmt:datetime">
                 time sort key
               </span>
-              <span
-                tal:condition="language_stats/last_changed_date"
-                tal:attributes="
-                  title language_stats/last_changed_date/fmt:datetime"
-                tal:content="
-                  language_stats/last_changed_date/fmt:approximatedate"
-                >
-                2007-02-10
-              </span>
+              <tal:last-changed
+                condition="language_stats/last_changed_date"
+                replace="structure language_stats/last_changed_date/fmt:approximatedatetitle" />
               <tal:block condition="not: language_stats/last_changed_date">
                   &mdash;
               </tal:block>
diff --git a/lib/lp/translations/templates/serieslanguage-index.pt b/lib/lp/translations/templates/serieslanguage-index.pt
index 42fbdc2..1572fa3 100644
--- a/lib/lp/translations/templates/serieslanguage-index.pt
+++ b/lib/lp/translations/templates/serieslanguage-index.pt
@@ -145,15 +145,9 @@
                 entry/date_changed/fmt:datetime">
               time sort key
             </span>
-            <span
-              tal:condition="entry/date_changed"
-              tal:attributes="
-                title entry/date_changed/fmt:datetime"
-              tal:content="
-                entry/date_changed/fmt:approximatedate"
-              >
-              2007-02-10
-            </span>
+            <tal:changed
+              condition="entry/date_changed"
+              replace="structure entry/date_changed/fmt:approximatedatetitle" />
             <tal:block condition="not: entry/date_changed">
                 &mdash;
             </tal:block>
diff --git a/lib/lp/translations/templates/translationgroup-index.pt b/lib/lp/translations/templates/translationgroup-index.pt
index 99a6805..d8245fb 100644
--- a/lib/lp/translations/templates/translationgroup-index.pt
+++ b/lib/lp/translations/templates/translationgroup-index.pt
@@ -90,13 +90,7 @@
                          class="edit sprite action-icon"></a>
                   </tal:notadmin>
                 </td>
-                <td>
-                  <span
-                     tal:attributes="title translator/datecreated/fmt:datetime"
-                     tal:content="translator/datecreated/fmt:approximatedate">
-                    2007-09-17
-                  </span>
-                </td>
+                <td tal:content="structure translator/datecreated/fmt:approximatedatetitle" />
                 <td tal:condition="view/user_can_edit">
                   <a tal:attributes="
                       href translator/context/fmt:url;
diff --git a/lib/lp/translations/templates/translationgroups-index.pt b/lib/lp/translations/templates/translationgroups-index.pt
index af275ae..d96877a 100644
--- a/lib/lp/translations/templates/translationgroups-index.pt
+++ b/lib/lp/translations/templates/translationgroups-index.pt
@@ -72,11 +72,8 @@
             <td>
               <span class="sortkey"
                 tal:content="group/datecreated/fmt:datetime" />
-              <span
-                tal:attributes="title group/datecreated/fmt:datetime"
-                tal:content="group/datecreated/fmt:approximatedate">
-                2007-08-15
-              </span>
+              <tal:created
+                replace="structure group/datecreated/fmt:approximatedatetitle" />
             </td>
           </tr>
         </tbody>
diff --git a/lib/lp/translations/templates/translations-macros.pt b/lib/lp/translations/templates/translations-macros.pt
index 4e2053d..85e1b1e 100644
--- a/lib/lp/translations/templates/translations-macros.pt
+++ b/lib/lp/translations/templates/translations-macros.pt
@@ -75,11 +75,8 @@
         Suggested by
         <a tal:content="submission/person/displayname"
            tal:attributes="href submission/person/fmt:url">Foo Bar</a>
-        <span
-          tal:attributes="title submission/date_created/fmt:datetime"
-          tal:content="submission/date_created/fmt:displaydate">
-          2006-08-05
-        </span>
+        <tal:created
+          replace="structure submission/date_created/fmt:displaydatetitle" />
       </td>
       <td style="overflow: auto;"
           tal:condition="not:submission/is_local_to_pofile">
@@ -93,11 +90,8 @@
           content="submission/pofile/potemplate/displayname" /> by
         <a tal:content="submission/person/displayname"
            tal:attributes="href submission/person/fmt:url">Foo Bar</a>
-        <span
-          tal:attributes="title submission/date_created/fmt:datetime"
-          tal:content="submission/date_created/fmt:displaydate">
-          2006-08-05
-        </span>
+        <tal:created
+          replace="structure submission/date_created/fmt:displaydatetitle" />
       </td>
     </tr>
 
diff --git a/lib/lp/translations/templates/translationtemplatesbuild-index.pt b/lib/lp/translations/templates/translationtemplatesbuild-index.pt
index 42f0c3a..d90f7c3 100644
--- a/lib/lp/translations/templates/translationtemplatesbuild-index.pt
+++ b/lib/lp/translations/templates/translationtemplatesbuild-index.pt
@@ -11,9 +11,8 @@
 
     <tal:registering metal:fill-slot="registering">
         created
-        <span tal:content="context/date_created/fmt:displaydate"
-              tal:attributes="title context/date_created/fmt:datetime"
-          >on 2005-01-01</span>
+        <tal:created
+          replace="structure context/date_created/fmt:displaydatetitle" />
     </tal:registering>
 
     <div metal:fill-slot="main">