Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/batchprocessing.txt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/batchprocessing.txt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/batchprocessing.txt	(revision 7705)
@@ -113,5 +113,5 @@
 
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -127,8 +127,8 @@
 The submit button is enabled:
 
-    >>> browser.getControl('Perform import...').disabled
+    >>> browser.getControl('Perform import').disabled
     False
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 Step 4: See import results
@@ -197,5 +197,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -211,8 +211,8 @@
 The submit button is enabled:
 
-    >>> browser.getControl('Perform import...').disabled
+    >>> browser.getControl('Perform import').disabled
     False
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 Step 4: See import results
@@ -262,5 +262,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -276,8 +276,8 @@
 The submit button is enabled:
 
-    >>> browser.getControl('Perform import...').disabled
+    >>> browser.getControl('Perform import').disabled
     False
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 Step 4: See import results
@@ -328,5 +328,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -342,8 +342,8 @@
 The submit button is enabled:
 
-    >>> browser.getControl('Perform import...').disabled
+    >>> browser.getControl('Perform import').disabled
     False
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 Step 4: See import results
@@ -393,5 +393,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -407,8 +407,8 @@
 The submit button is enabled:
 
-    >>> browser.getControl('Perform import...').disabled
+    >>> browser.getControl('Perform import').disabled
     False
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 Step 4: See import results
@@ -466,5 +466,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3: Fix headerlines
@@ -473,5 +473,5 @@
 perfom the import:
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 One line could not be imported:
@@ -528,5 +528,5 @@
     >>> modeselect = browser.getControl(name='mode')
     >>> modeselect.getControl(value='create').selected = True
-    >>> browser.getControl('Proceed to step 3...').click()
+    >>> browser.getControl('Proceed to step 3').click()
 
 Step 3/4: Fix headerlines and import:
@@ -535,5 +535,5 @@
 perfom the import:
 
-    >>> browser.getControl('Perform import...').click()
+    >>> browser.getControl('Perform import').click()
 
 This time everything should work:
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7705)
@@ -751,4 +751,6 @@
     label = _(u'Upload file')
     pnav = 0
+    upload_button =_(u'Upload')
+    cancel_button =_(u'Cancel')
 
     def update(self, uploadfile=None, CANCEL=None, SUBMIT=None):
@@ -797,4 +799,5 @@
     label = _(u'Process CSV file')
     pnav = 0
+    cancel_button =_(u'Cancel')
 
     def getFiles(self):
@@ -826,4 +829,7 @@
     label = _(u'Process CSV file')
     pnav = 0
+    cancel_button =_(u'Cancel')
+    back_button =_(u'Back to step 1')
+    proceed_button =_(u'Proceed to step 3')
 
     filename = None
@@ -943,4 +949,9 @@
     label = _(u'Process CSV file')
     pnav = 0
+    cancel_button =_(u'Cancel')
+    reset_button =_(u'Reset')
+    update_button =_(u'Set headerfields')
+    back_button =_(u'Back to step 2')
+    proceed_button =_(u'Perform import')
 
     filename = None
@@ -1046,4 +1057,6 @@
     label = _(u'Process CSV file')
     pnav = 0
+    show_button =_(u'View processing log')
+    back_button =_(u'Back to data center')
 
     filename = None
@@ -1101,4 +1114,6 @@
     label = _(u'Show logfiles')
     pnav = 0
+    back_button = _(u'Back to Data Center')
+    show_button = _(u'Show')
 
     def update(self, show=None, logname=None, back=None):
@@ -1143,4 +1158,7 @@
     label = _('Edit data center settings')
     pnav = 0
+    save_button =_(u'Save')
+    reset_button =_(u'Reset')
+    cancel_button =_(u'Cancel')
 
     def update(self, newpath=None, move=False, overwrite=False,
@@ -1579,9 +1597,9 @@
     grok.name('addcourse')
     grok.require('waeup.manageUniversity')
-    label = u'Add course'
+    label = _(u'Add course')
     form_fields = grok.AutoFields(ICourseAdd)
     pnav = 1
 
-    @action('Add course')
+    @action(_('Add course'))
     def addCourse(self, **data):
         course = createObject(u'waeup.Course')
@@ -1595,5 +1613,5 @@
                 # do not use error.msg but render a more detailed message instead
                 # and show links to all certs with same code
-                message = 'A course with same code already exists: '
+                message = _('A course with same code already exists: ')
                 message += '<a href="%s">%s</a>' % (
                     self.url(entry), getattr(entry, '__name__', u'Unnamed'))
@@ -1601,5 +1619,5 @@
             self.redirect(self.url(self.context, u'@@addcourse'))
             return
-        message = u'Course %s successfully created.' % (course.code)
+        message = _(u'Course ${a} successfully created.', mapping = {'a':course.code})
         self.flash(message)
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
@@ -1616,9 +1634,9 @@
     grok.name('addcertificate')
     grok.require('waeup.manageUniversity')
-    label = u'Add certificate'
+    label = _(u'Add certificate')
     form_fields = grok.AutoFields(ICertificateAdd)
     pnav = 1
 
-    @action('Add certificate')
+    @action(_('Add certificate'))
     def addCertificate(self, **data):
         certificate = createObject(u'waeup.Certificate')
@@ -1632,5 +1650,5 @@
                 # do not use error.msg but render a more detailed message instead
                 # and show links to all certs with same code
-                message = 'A certificate with same code already exists: '
+                message = _('A certificate with same code already exists: ')
                 message += '<a href="%s">%s</a>' % (
                     self.url(entry), getattr(entry, '__name__', u'Unnamed'))
@@ -1638,10 +1656,10 @@
             self.redirect(self.url(self.context, u'@@addcertificate'))
             return
-        message = u'Certificate %s successfully created.' % (certificate.code)
+        message = _(u'Certificate ${a} successfully created.', mapping = {'a':certificate.code})
         self.flash(message)
         self.redirect(self.url(self.context, u'@@manage')+'?tab3')
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self): #, **data):
         self.redirect(self.url(self.context))
@@ -1670,13 +1688,13 @@
     grok.name('manage')
     grok.require('waeup.manageUniversity')
-    label = u'Edit course'
+    label = _(u'Edit course')
     pnav = 1
 
     form_fields = grok.AutoFields(ICourse)
 
-    @action('Save', style='primary')
+    @action(_('Save'), style='primary')
     def save(self, **data):
         self.applyData(self.context, **data)
-        self.flash('Form has been saved.')
+        self.flash(_('Form has been saved.'))
         return
 
@@ -1687,5 +1705,5 @@
     #    return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1720,5 +1738,5 @@
     grok.require('waeup.manageUniversity')
     pnav = 1
-    label = 'Edit certificate'
+    label = _('Edit certificate')
 
     form_fields = grok.AutoFields(ICertificate)
@@ -1726,13 +1744,13 @@
     pnav = 1
     grok.template('certificatemanagepage')
-    taboneactions = ['Save','Cancel']
-    tabtwoactions = ['Add course referrer',
-                     'Remove selected course referrers','Cancel']
-    tabthreeactions1 = ['Remove selected local roles']
-    tabthreeactions2 = ['Add local role']
+    taboneactions = [_('Save'),_('Cancel')]
+    tabtwoactions = [_('Add course referrer'),
+                     _('Remove selected course referrers'),_('Cancel')]
+    tabthreeactions1 = [_('Remove selected local roles')]
+    tabthreeactions2 = [_('Add local role')]
 
     @property
     def label(self):
-        return 'Manage certificate'
+        return _('Manage certificate')
 
     def update(self):
@@ -1750,18 +1768,18 @@
     def save(self, **data):
         self.applyData(self.context, **data)
-        self.flash('Form has been saved.')
-        return
-
-    @jsaction('Remove selected course referrers')
+        self.flash(_('Form has been saved.'))
+        return
+
+    @jsaction(_('Remove selected course referrers'))
     def delCertificateCourses(self, **data):
         delSubobjects(self, redirect='@@manage', tab='2')
         return
 
-    @action('Add course referrer', validator=NullValidator)
+    @action(_('Add course referrer'), validator=NullValidator)
     def addCertificateCourse(self, **data):
         self.redirect(self.url(self.context, 'addcertificatecourse'))
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1782,9 +1800,9 @@
         return get_users_with_local_roles(self.context)
 
-    @action('Add local role', validator=NullValidator)
+    @action(_('Add local role'), validator=NullValidator)
     def addLocalRole(self, **data):
         return add_local_role(self, 3, **data)
 
-    @action('Remove selected local roles')
+    @action(_('Remove selected local roles'))
     def delLocalRoles(self, **data):
         return del_local_roles(self,3,**data)
@@ -1799,19 +1817,20 @@
     form_fields = grok.AutoFields(ICertificateCourseAdd)
     pnav = 1
-    label = 'Add course referrer'
-
-    @action('Add course referrer')
+    label = _('Add course referrer')
+
+    @action(_('Add course referrer'))
     def addCertcourse(self, **data):
         try:
             self.context.addCourseRef(**data)
         except KeyError:
-            self.status = self.flash('The chosen course referrer is already '
-                                  'part of this certificate.')
+            self.status = self.flash(_('The chosen course referrer is already '
+                                  'part of this certificate.'))
             return
         self.status = self.flash(
-            "Course referrer %s_%s added." % (data['course'].code,data['level']))
+            _("Course referrer ${a}_${b} added.",
+            mapping = {'a': data['course'].code, 'b': data['level']}))
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1846,8 +1865,8 @@
     grok.require('waeup.manageUniversity')
     form_fields = grok.AutoFields(ICertificateCourse)
-    label = 'Edit course referrer'
-    pnav = 1
-
-    @action('Save and return', style='primary')
+    label = _('Edit course referrer')
+    pnav = 1
+
+    @action(_('Save and return'), style='primary')
     def saveAndReturn(self, **data):
         parent = self.context.__parent__
@@ -1861,9 +1880,9 @@
             parent.addCourseRef(**data)
             parent.delCourseRef(data['course'].code, level=old_level)
-        self.flash('Form has been saved.')
+        self.flash(_('Form has been saved.'))
         self.redirect(self.url(parent))
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatecoursepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatecoursepage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatecoursepage.pt	(revision 7705)
@@ -1,20 +1,20 @@
-<table class="form-table">
+<table i18n:domain="waeup.sirp" class="form-table">
   <thead>
   </thead>
   <tbody>
     <tr>
-      <td>Code:</td>
+      <td i18n:translate="">Code:</td>
       <td tal:content="context/__name__">CODE</td>
     </tr>  
     <tr>
-      <td>Course Code:</td>
+      <td i18n:translate="">Course Code:</td>
       <td tal:content="context/getCourseCode">THE COURSE</td>
     </tr>    
     <tr>
-      <td>Course Title:</td>
+      <td i18n:translate="">Course Title:</td>
       <td tal:content="context/course/title">THE TITLE</td>
     </tr>
     <tr>
-      <td>Provided by:</td>
+      <td i18n:translate="">Provided by:</td>
       <td> 
       <span tal:content="python: context.course.__parent__.__parent__.longtitle()">DEPARTMENT</span>
@@ -24,9 +24,9 @@
     </tr>    
     <tr>
-      <td>Level:</td>
+      <td i18n:translate="">Level:</td>
       <td tal:content="view/leveltitle">LEVEL</td>
     </tr>
     <tr>
-      <td>Is mandatory course (not elective):</td>
+      <td i18n:translate="">Is mandatory course (not elective):</td>
       <td tal:content="context/mandatory">MANDATORY</td>
     </tr>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatemanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatemanagepage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatemanagepage.pt	(revision 7705)
@@ -1,9 +1,9 @@
 <form action="." tal:attributes="action request/URL" method="POST"
-      enctype="multipart/form-data"> 
+      enctype="multipart/form-data" i18n:domain="waeup.sirp">
 
   <ul class="tabs" data-tabs="tabs">
-    <li tal:attributes="class view/tab1"><a href="#tab-1"><span>Settings</span></a></li>
-    <li tal:attributes="class view/tab2"><a href="#tab-2"><span>Course Referrers</span></a></li>
-    <li tal:attributes="class view/tab3"><a href="#tab-3"><span>Local Roles</span></a></li>
+    <li tal:attributes="class view/tab1"><a href="#tab-1" i18n:translate="">Settings</a></li>
+    <li tal:attributes="class view/tab2"><a href="#tab-2" i18n:translate="">Course Referrers</a></li>
+    <li tal:attributes="class view/tab3"><a href="#tab-3" i18n:translate="">Local Roles</a></li>
   </ul>
    
@@ -42,10 +42,12 @@
     </div>
     <div id="tab-2" tal:attributes="class view/tab2">
-      <h3>Course Referrers</h3>
+      <h3 i18n:translate="">Course Referrers</h3>
       <table class="display dataTableManage">
         <thead>
           <tr>
-            <th>&nbsp;</th><th>Level</th><th>Semester</th><th>Referrer</th><th>Course</th><th>Title</th>
-            <th>Mandatory</th>
+            <th>&nbsp;</th><th i18n:translate="">Level</th>
+            <th i18n:translate="">Semester</th><th i18n:translate="">Referrer</th>
+            <th i18n:translate="">Course</th><th i18n:translate="">Title</th>
+            <th i18n:translate="">Mandatory</th>
           </tr>
         </thead>
@@ -102,9 +104,9 @@
             <th>&nbsp;
             </th>
-            <th>User Id
+            <th i18n:translate="">User Id
             </th>
-            <th>Name
+            <th i18n:translate="">Name
             </th>
-            <th>Local Role
+            <th i18n:translate="">Local Role
             </th>
           </tr>
@@ -112,5 +114,6 @@
         <tbody>
           <tr tal:repeat="entry view/getUsersWithLocalRoles" class="gradeC"> <td>
-              <input type="checkbox" name="role_id" tal:attributes="value python: entry['user_name']+'|'+entry['local_role']" /> </td>
+              <input type="checkbox" name="role_id"
+                tal:attributes="value python: entry['user_name']+'|'+entry['local_role']" /> </td>
             <td tal:content="entry/user_name"> USERNAME </td>
             <td tal:content="entry/user_title"> USERTITLE </td>
@@ -121,5 +124,6 @@
       <div tal:condition="view/availableActions">
         <span tal:repeat="action view/actions" tal:omit-tag="">
-          <input tal:condition="python:action.label in view.tabthreeactions1" tal:replace="structure action/render"/>
+          <input tal:condition="python:action.label in view.tabthreeactions1"
+            tal:replace="structure action/render"/>
         </span>
       </div><br /><br />
@@ -127,5 +131,6 @@
         <tr> <td>
             <select id="user" name="user">
-              <option tal:repeat="user view/getUsers" tal:attributes="value user/name">
+              <option tal:repeat="user view/getUsers"
+                tal:attributes="value user/name">
               <span tal:replace="user/val/title">USERTITLE
               </span>
@@ -133,5 +138,6 @@
             </select> </td> <td>
             <select id="local_role" name="local_role">
-              <option tal:repeat="localrole view/getLocalRoles" tal:attributes="value localrole/name">
+              <option tal:repeat="localrole view/getLocalRoles"
+                tal:attributes="value localrole/name">
               <span tal:replace="localrole/title">LOCALROLETITLE
               </span>
@@ -140,5 +146,6 @@
             <div tal:condition="view/availableActions">
               <span tal:repeat="action view/actions" tal:omit-tag="">
-                <input tal:condition="python:action.label in view.tabthreeactions2" tal:replace="structure action/render"/>
+                <input tal:condition="python:action.label in view.tabthreeactions2"
+                  tal:replace="structure action/render"/>
               </span>
             </div> </td>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatepage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/certificatepage.pt	(revision 7705)
@@ -18,11 +18,15 @@
 </table>
 
-<h3><span tal:content="context/__name__">Code</span> Course Referrers</h3>
+<h3>
+  <span tal:content="context/__name__">Code</span>
+  <span i18n:domain="waeup.sirp" i18n:translate="">Course Referrers</span>
+</h3>
 <br />
-<table class="display dataTable">
+<table i18n:domain="waeup.sirp" class="display dataTable">
 <thead>
   <tr>
-    <th>Level</th><th>Semester</th><th>Referrer</th><th>Course</th>
-    <th>Title</th><th>Mandatory</th>
+    <th i18n:translate="">Level</th><th i18n:translate="">Semester</th>
+    <th i18n:translate="">Referrer</th><th i18n:translate="">Course</th>
+    <th i18n:translate="">Title</th><th i18n:translate="">Mandatory</th>
   </tr>
 </thead>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/configurationmanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/configurationmanagepage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/configurationmanagepage.pt	(revision 7705)
@@ -1,11 +1,10 @@
-<form action="." tal:attributes="action request/URL" method="POST" enctype="multipart/form-data">
+<form action="." tal:attributes="action request/URL" method="POST"
+  enctype="multipart/form-data" i18n:domain="waeup.sirp">
     <ul class="tabs" data-tabs="tabs">
       <li tal:attributes="class view/tab1">
-      <a href="#tab-1">
-        <span>Site Settings
-        </span></a>
+      <a href="#tab-1" i18n:translate="">Site Settings</a>
       </li>
       <li tal:attributes="class view/tab2">
-      <a href="#tab-2">Session Configurations</a>
+      <a href="#tab-2" i18n:translate="">Session Configurations</a>
       </li>
     </ul>
@@ -51,5 +50,5 @@
             <th>&nbsp;
             </th>
-            <th>Name
+            <th i18n:translate="">Name
             </th>
           </tr>
@@ -64,5 +63,6 @@
       <div tal:condition="view/availableActions">
         <span tal:repeat="action view/actions" tal:omit-tag="">
-          <input tal:condition="python:action.label in view.tabtwoactions" tal:replace="structure action/render"/>
+          <input tal:condition="python:action.label in view.tabtwoactions"
+            tal:replace="structure action/render"/>
         </span>
       </div>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport1page.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport1page.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport1page.pt	(revision 7705)
@@ -1,19 +1,24 @@
-<h3>Step 1</h3>
-<p>
+<h3 i18n:domain="waeup.sirp" i18n:translate="">Step 1</h3>
+<p i18n:domain="waeup.sirp" i18n:translate="">
   Using batch processing you can mass-create, mass-update, or
   mass-remove datasets from the database using CSV files.
 </p>
-<p>
-  Please select a file for processing from the list below
+<p i18n:domain="waeup.sirp" i18n:translate="">
+  Please select a file for processing from the list below.
 </p>
-<form method="POST">
+<form i18n:domain="waeup.sirp" method="POST">
   <table>
     <thead>
-      <th /><th>Filename</th><th>Datasets</th><th>Size</th><th>Date</th>
+      <th />
+      <th i18n:translate="">Filename</th>
+      <th i18n:translate="">Datasets</th>
+      <th i18n:translate="">Size</th>
+      <th i18n:translate="">Date</th>
     </thead>
     <tbody>
       <tr tal:repeat="file view/getFiles">
         <td>
-          <button type="submit" name="select" class="btn primary"
+          <button i18n:translate=""
+            type="submit" name="select" class="btn primary"
             tal:attributes="value file/name">Select</button>
         </td>
@@ -25,4 +30,5 @@
     </tbody>
   </table>
-  <input type="submit" name="cancel" class="btn" value="Cancel" />
+  <input type="submit" name="cancel" class="btn"
+      tal:attributes="value view/cancel_button" />
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport2page.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport2page.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport2page.pt	(revision 7705)
@@ -1,17 +1,17 @@
-<h3>Step 2</h3>
-<form method="POST">
+<h3 i18n:domain="waeup.sirp" i18n:translate="">Step 2</h3>
+<form i18n:domain="waeup.sirp" method="POST">
   <p>
-    <b>File:</b>
-    <span tal:content="view/filename">Filename.csv
-    </span>
-    <input type="hidden" name="filename"  tal:attributes="value view/filename" />
+    <b i18n:translate="">File:</b>
+    <span tal:content="view/filename">Filename.csv</span>
+    <input type="hidden" name="filename" tal:attributes="value view/filename" />
   </p>
-  <p> Please select a file-processor and a processing-mode from the selections below:
+  <p i18n:translate="">
+    Please select a file-processor and a processing-mode from the selections below.
   </p>
   <div>
     <table
-           tal:define="body view/getPreviewBody;
-                        headers view/getPreviewHeader;
-                        fieldnum python: len(headers)">
+       tal:define="body view/getPreviewBody;
+                    headers view/getPreviewHeader;
+                    fieldnum python: len(headers)">
       <thead>
         <tr>
@@ -30,5 +30,5 @@
     </table>
   </div>
-  <div> <b>Processor:</b>
+  <div> <b i18n:translate="">Processor:</b>
     <select name="importer">
       <option tal:repeat="importer view/getImporters"
@@ -41,5 +41,5 @@
   <p>&nbsp;
   </p>
-  <div> <b>Mode:</b>
+  <div> <b i18n:translate="">Mode:</b>
     <input type="radio" name="mode" value="create" checked="checked"
        tal:attributes="checked python: view.mode == 'create' and 'checked' or '';
@@ -57,7 +57,8 @@
     </p>
   </div>
-  <input class="btn" type="submit" name="cancel" value="Cancel" />
-  <input class="btn danger" type="submit" name="back1" value="Back to step 1" />
-  <input class="btn primary" tal:attributes="disabled python: view.getWarnings() and 'disabled' or ''"
-    type="submit" name="proceed" value="Proceed to step 3..." />
+  <input class="btn" type="submit" name="cancel" tal:attributes="value view/cancel_button" />
+  <input class="btn danger" type="submit" name="back1" tal:attributes="value view/back_button" />
+  <input class="btn primary"
+    tal:attributes="disabled python: view.getWarnings() and 'disabled' or ''; value view/proceed_button"
+    type="submit" name="proceed" />
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport3page.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport3page.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport3page.pt	(revision 7705)
@@ -1,13 +1,14 @@
-<div class="alert-message success" tal:condition="not: view/getWarnings">
+<div i18n:domain="waeup.sirp" i18n:translate=""
+  class="alert-message success" tal:condition="not: view/getWarnings">
   Header fields OK
 </div>
 
-<h3>Step 3</h3>
-<form>
-  <p>
+<h3 i18n:domain="waeup.sirp" i18n:translate="">Step 3</h3>
+<form i18n:domain="waeup.sirp">
+  <p i18n:translate="">
     Eventually modify headerfields of import file below.
   </p>
   <p>
-    <b>File:</b>
+    <b i18n:translate="">File:</b>
     <span tal:content="view/filename">Filename.csv</span>
     <input type="hidden" name="filename"
@@ -15,5 +16,5 @@
   </p>
   <p>
-    <b>Processor:</b>
+    <b i18n:translate="">Processor:</b>
     <span tal:content="view/importer/name">Importer Name</span>
     <input type="hidden" name="importer"
@@ -21,5 +22,5 @@
   </p>
   <p>
-    <b>Processing mode: </b>
+    <b i18n:translate="">Processing mode: </b>
     <span tal:content="view/mode">mode</span>
     <input type="hidden" name="mode"
@@ -41,5 +42,5 @@
         <tr>
           <th tal:repeat="headerfield headers">
-            <i>change to:</i>
+            <i i18n:translate="">change to:</i>
           </th>
         </tr>
@@ -68,10 +69,15 @@
   </div>
 
-  <input class="btn" type="submit" name="cancel" value="Cancel" />
-  <input class="btn" type="reset" name="reset" value="Reset" />
-  <input class="btn" type="submit" name="update" value="Set headerfields" />
+  <input class="btn" type="submit" name="cancel"
+    tal:attributes="value view/cancel_button" />
+  <input class="btn" type="reset" name="reset"
+    tal:attributes="value view/reset_button" />
+  <input class="btn" type="submit" name="update"
+    tal:attributes="value view/update_button" />
   <br /><br />
-  <input class="btn danger" type="submit" name="back2" value="Back to step 2" />
-  <input class="btn primary" tal:attributes="disabled python: view.getWarnings() and 'disabled' or ''"
-   type="submit" name="proceed" value="Perform import..." />
+  <input class="btn danger" type="submit" name="back2"
+    tal:attributes="value view/back_button" />
+  <input class="btn primary"
+    tal:attributes="disabled python: view.getWarnings() and 'disabled' or ''; value view/proceed_button"
+    type="submit" name="proceed"/>
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport4page.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport4page.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterimport4page.pt	(revision 7705)
@@ -1,19 +1,21 @@
-<h3>Step 4</h3>
-<p>
+<h3 i18n:domain="waeup.sirp" i18n:translate="">Step 4</h3>
+<p i18n:domain="waeup.sirp" i18n:translate="">
   Batch processing finished.
 </p>
-<p>
-  <b>File:</b> <span tal:content="view/filename">Filename.csv</span>
+<p i18n:domain="waeup.sirp">
+  <b i18n:translate="">File:</b> <span tal:content="view/filename">Filename.csv</span>
 </p>
-<p>
-  <b>Processor:</b>
+<p i18n:domain="waeup.sirp">
+  <b i18n:translate="">Processor:</b>
   <span tal:content="view/importer/name">Importer Name</span>
 </p>
-<p>
-  <b>Processing mode: </b>
+<p i18n:domain="waeup.sirp">
+  <b i18n:translate="">Processing mode: </b>
   <span tal:content="view/mode">mode</span>
 </p>
-<form method="POST">
-  <input class="btn primary" type="submit" name="finish" value="Back to data center" />
-  <input class="btn" type="submit" name="showlog" value="View processing log" />
+<form method="POST" i18n:domain="waeup.sirp">
+  <input class="btn primary" type="submit" name="finish"
+    tal:attributes="value view/back_button" />
+  <input class="btn" type="submit" name="showlog"
+    tal:attributes="value view/show_button" />
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterlogspage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterlogspage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterlogspage.pt	(revision 7705)
@@ -1,4 +1,5 @@
-<div tal:define="files view/files">
-  <p tal:condition="not: files">Currently no log files are available.
+<div i18n:domain="waeup.sirp" tal:define="files view/files">
+  <p i18n:translate="" tal:condition="not: files">
+  Currently no log files are available.
   </p>
   <table tal:condition="files" class="condensed-table">
@@ -7,17 +8,19 @@
         <th>
         </th>
-        <th>File
+        <th i18n:translate="">File
         </th>
-        <th>Date
+        <th i18n:translate="">Date
         </th>
-        <th>Size
+        <th i18n:translate="">Size
         </th>
       </tr>
     </thead>
     <tbody>
-      <tr tal:repeat="file files" tal:attributes="class python: repeat['file'].odd() and 'odd' or 'even'">
+      <tr tal:repeat="file files"
+          tal:attributes="class python: repeat['file'].odd() and 'odd' or 'even'">
         <td class="text-center">
           <form method="POST">
-            <input type="submit" class="btn primary" name="show" value="Show" />
+            <input i18n:translate="" type="submit" class="btn primary" name="show"
+                tal:attributes="value view/show_button" />
             <input type="hidden" name="logname" tal:attributes="value file/name" />
           </form></td>
@@ -29,5 +32,6 @@
   </table>
   <form method="POST">
-    <input type="submit" class="btn" name="back" value="Back to Data Center" />
+    <input i18n:translate="" type="submit" class="btn" name="back"
+        tal:attributes="value view/back_button"/>
   </form>
 </div>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacentermanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacentermanagepage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacentermanagepage.pt	(revision 7705)
@@ -1,17 +1,24 @@
-<form method="POST">
+<form  i18n:domain="waeup.sirp" method="POST">
   <div>
-    Storage path:
+    <span  i18n:translate="">Storage path:</span>
     <input type="text" name="newpath"
      tal:attributes="value context/storage" />
     <br /><br />
-    Copy existing data to new storage? &nbsp;&nbsp;
+    <span  i18n:translate="">
+    Copy existing data to new storage?
+    </span>&nbsp;&nbsp;
     <input type="checkbox" name="move" checked="checked" />
     <br /><br />
-    Overwrite contents in new location? &nbsp;&nbsp;
+    <span  i18n:translate="">
+    Overwrite contents in new location?
+    </span>&nbsp;&nbsp;
     <input type="checkbox" name="overwrite" checked="no" />
     <br /><br />
-    <input class="btn primary" type="submit" name="save" value="Save" />
-    <input class="btn" type="reset" name="reset" value="Reset" />
-    <input class="btn" type="submit" name="cancel" value="Cancel" />
+    <input class="btn primary" type="submit" name="save"
+        tal:attributes="value view/save_button" />
+    <input class="btn" type="reset" name="reset"
+        tal:attributes="value view/reset_button" />
+    <input class="btn" type="submit" name="cancel"
+        tal:attributes="value view/cancel_button" />
   </div>
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterpage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenterpage.pt	(revision 7705)
@@ -1,22 +1,23 @@
-<p>
+<p  i18n:domain="waeup.sirp" i18n:translate="">
 The data center helps you to manage portal data. You can upload CSV
 files here, which will be available for import afterwards.
 </p>
 
-<p>
-  <b>Storage path:</b> <span tal:content="context/storage">/foo/bar</span>
+<p i18n:domain="waeup.sirp">
+  <b i18n:translate="">Storage path:</b>
+  <span tal:content="context/storage">/foo/bar</span>
 </p>
 
-<table>
+<table i18n:domain="waeup.sirp">
   <thead>
     <tr>
-      <th>File</th>
-      <th>Size</th>
-      <th>Uploaded</th>
+      <th i18n:translate="">File</th>
+      <th i18n:translate="">Size</th>
+      <th i18n:translate="">Uploaded</th>
     </tr>
   </thead>
   <tbody>
     <tr tal:repeat="file context/getFiles">
-      <td tal:content="file/name">thefilename</td>
+      <td tal:content="file/name">FILENAME</td>
       <td tal:content="file/size">12 k</td>
       <td tal:content="file/uploaddate">Mar 12, 2008</td>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenteruploadpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenteruploadpage.pt	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/datacenteruploadpage.pt	(revision 7705)
@@ -3,6 +3,8 @@
   <br /><br />
   <div>
-    <input class="btn primary" type="submit" name="SUBMIT" value="Upload" />
-    <input class="btn" type="submit" name="CANCEL" value="Cancel" />
+    <input class="btn primary" type="submit" name="SUBMIT"
+        tal:attributes="value view/upload_button" />
+    <input class="btn" type="submit" name="CANCEL"
+        tal:attributes="value view/cancel_button"/>
   </div>
 </form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7704)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7705)
@@ -18,4 +18,5 @@
 import grok
 from urllib import urlencode
+from zope.i18n import translate
 from zope.component import getMultiAdapter, queryAdapter, getUtility
 from zope.interface import Interface
@@ -85,5 +86,5 @@
     icon = 'actionicon_modify.png' # File must exist in static/
     target = '@@manage' # link to this viewname.
-    text = 'Edit' # Text to display on the button
+    text = _('Edit') # Text to display on the button
 
     # We set the template file explicitly (instead of using
@@ -154,5 +155,5 @@
     icon = 'actionicon_modify.png'
     target = '@@manage'
-    text = 'Edit'
+    text = _('Edit')
 
 class AddActionButton(ActionButton):
@@ -164,5 +165,5 @@
     icon = 'actionicon_add.png'
     target = 'add'
-    text = 'Add'
+    text = _('Add')
     
 class RemoveActionButton(ActionButton):
@@ -174,5 +175,5 @@
     icon = 'actionicon_delete.png'
     target = 'remove'
-    text = 'Remove'    
+    text = _('Remove')
 
 class SearchActionButton(ActionButton):
@@ -184,5 +185,5 @@
     icon = 'actionicon_search.png'
     target = 'search'
-    text = 'Search'
+    text = _('Search')
 
 
@@ -309,5 +310,5 @@
     grok.order(2)
     grok.require('waeup.Anonymous')
-    text = 'Login'
+    text = _('Login')
     link = 'login'
 
@@ -347,10 +348,11 @@
 
     link = 'configuration'
-    text = u'Portal Configuration'
+    text = _(u'Portal Configuration')
     
     def render(self):
         url = self.view.url(grok.getSite(), self.link)
+        text = translate(self.text, context=self.request)
         return u'<li><a href="%s">%s</a></li>' % (
-                url, self.text)
+                url, text)
 
 class ManageUsersLink(ManageLink):
@@ -361,5 +363,5 @@
 
     link = u'users'
-    text = u'Portal Users'
+    text = _(u'Portal Users')
 
 class ContactActionButton(ManageActionButton):
@@ -369,5 +371,5 @@
     grok.require('waeup.manageUsers')
     icon = 'actionicon_mail.png'
-    text = 'Send email'
+    text = _('Send email')
     target = 'contactuser'
 
@@ -379,5 +381,5 @@
 
     link = u'datacenter'
-    text = u'Data Center'
+    text = _(u'Data Center')
 
 class MyPreferences(LeftSidebarLink):
@@ -386,5 +388,5 @@
     grok.order(7)
     grok.require('waeup.Public')
-    title = u'My Preferences'
+    title = _(u'My Preferences')
     icon = ''
 
@@ -401,5 +403,5 @@
     grok.order(8)
     grok.require('waeup.Public')
-    title = u'My Roles'
+    title = _(u'My Roles')
     icon = ''
 
@@ -420,5 +422,5 @@
     grok.context(IDataCenter)
     grok.view(DatacenterPage)
-    text = 'Edit settings'
+    text = _('Edit settings')
 
 class ManageFacultiesContainerActionButton(ManageActionButton):
@@ -427,5 +429,5 @@
     grok.context(IFacultiesContainer)
     grok.view(FacultiesContainerPage)
-    text = 'Manage academic section'
+    text = _('Manage academic section')
 
 class SearchFacultiesContainerActionButton(ManageActionButton):
@@ -434,5 +436,5 @@
     grok.context(IFacultiesContainer)
     grok.view(FacultiesContainerPage)
-    text = 'Search academic section'
+    text = _('Search academic section')
     icon = 'actionicon_search.png'
     target = '@@search'
@@ -443,5 +445,5 @@
     grok.context(IFaculty)
     grok.view(FacultyPage)
-    text = 'Manage faculty'
+    text = _('Manage faculty')
 
 class ManageDepartmentActionButton(ManageActionButton):
@@ -450,5 +452,5 @@
     grok.context(IDepartment)
     grok.view(DepartmentPage)
-    text = 'Manage department'
+    text = _('Manage department')
 
 class ShowDepartmentStudentsActionButton(ManageActionButton):
@@ -459,5 +461,5 @@
     grok.require('waeup.showStudents')
     icon = 'actionicon_student.png'
-    text = 'Show students'
+    text = _('Show students')
     target = 'showdepstudents'
 
@@ -467,5 +469,5 @@
     grok.context(ICourse)
     grok.view(CoursePage)
-    text = 'Edit course'
+    text = _('Edit course')
     
 class ManageCertificateActionButton(ManageActionButton):
@@ -474,5 +476,5 @@
     grok.context(ICertificate)
     grok.view(CertificatePage)
-    text = 'Manage certificate'
+    text = _('Manage certificate')
 
 class ShowCertificateStudentsActionButton(ManageActionButton):
@@ -483,5 +485,5 @@
     grok.require('waeup.showStudents')
     icon = 'actionicon_student.png'
-    text = 'Show students'
+    text = _('Show students')
     target = 'showcertstudents'
 
@@ -491,5 +493,5 @@
     grok.context(ICertificateCourse)
     grok.view(CertificateCoursePage)
-    text = 'Edit course referrer'
+    text = _('Edit course referrer')
 
 #
@@ -501,52 +503,5 @@
     grok.context(IUsersContainer)
     grok.view(UsersContainerPage)
-    text = 'Add user'
-
-#class AddFacultyActionButton(AddActionButton):
-#    grok.context(IFacultiesContainer)
-#    grok.view(FacultiesContainerPage)
-#    text = 'Add faculty'
-    
-#class AddDepartmentActionButton(AddActionButton):
-#    grok.context(IFaculty)
-#    grok.view(FacultyPage)
-#    text = 'Add department'
-
-#class AddCertificateActionButton(AddActionButton):
-#    grok.context(IDepartment)
-#    grok.view(DepartmentPage)
-#    grok.order(3)
-#    text = 'Add certificate'
-#    target = 'addcertificate'
-    
-#class AddCourseActionButton(AddActionButton):
-#    grok.context(IDepartment)
-#    grok.view(DepartmentPage)
-#    grok.order(4)
-#    text = 'Add course'
-#    target = 'addcourse'
-
-#class AddCertificateCourseActionButton(AddActionButton):
-#    grok.context(ICertificate)
-#    grok.view(CertificatePage)
-#    grok.order(4)
-#    text = 'Add course referrer'
-#    target = 'addcertificatecourse'
-
-#
-# Remove actions...
-#
-
-
-#class RemoveFacultyActionButton(RemoveActionButton):
-#    grok.context(IFacultiesContainer)
-#    grok.view(FacultiesContainerPage)
-#    text = 'Remove faculty'
-   
-#class RemoveDepartmentActionButton(RemoveActionButton):
-#    grok.context(IFaculty)
-#    grok.view(FacultyPage)
-#    text = 'Remove department'
-    
+    text = _('Add user')
 
 #
@@ -561,5 +516,5 @@
     icon = 'actionicon_manage.png' # File must exist in static/
     target = '@@show' # link to this viewname.
-    text = 'Show batch logs' # Text to display on the button
+    text = _('Show batch logs') # Text to display on the button
 
 class BrowseDatacenterLogs(BrowseActionButton):
@@ -569,5 +524,5 @@
     icon = 'documentinfo_templet.png'
     target = '@@logs'
-    text = 'Show batch logs'
+    text = _('Show batch logs')
 
 #
@@ -581,5 +536,5 @@
     icon = 'actionbox_templet.png'
     target = '@@import1'
-    text = 'Batch processing'
+    text = _('Batch processing')
 
 class UploadCSVButton(ActionButton):
@@ -590,5 +545,5 @@
     icon = 'go-up-16x16.png'
     target = '@@upload'
-    text = 'Upload CSV file'
+    text = _('Upload CSV file')
 
 #
@@ -699,5 +654,5 @@
     grok.require('waeup.managePortalConfiguration')
 
-    link_title = 'Portal Configuration'
+    link_title = _('Portal Configuration')
     def link_target(self):
         return self.view.url(self.view.context, 'configuration')
@@ -709,5 +664,5 @@
     grok.require('waeup.manageUsers')
 
-    link_title = 'Portal Users'
+    link_title = _('Portal Users')
     target_viewname = 'users'
     
@@ -718,5 +673,5 @@
     grok.require('waeup.manageDataCenter')
 
-    link_title = 'Data Center'
+    link_title = _('Data Center')
     target_viewname = 'datacenter'
 
@@ -794,3 +749,5 @@
 
     def render(self):
-        return u'<div class="text-right"><form method="POST"><input class="text-right" type="submit" value="remove" /></form></div>'
+        return u'<div class="text-right"><form method="POST">' + \
+            '<input class="text-right" type="submit" value="remove" />' + \
+            '</form></div>'
