Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py	(revision 7700)
@@ -25,4 +25,5 @@
 from waeup.sirp.interfaces import (
     IConfigurationContainer, ISessionConfiguration)
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.browser import interfaces
 from waeup.sirp.browser.interfaces import (IBreadcrumb,
@@ -87,5 +88,5 @@
     """
     grok.context(interfaces.IUniversity)
-    title = u'Home'
+    title = _(u'Home')
     parent = None
 
@@ -101,5 +102,5 @@
     grok.context(interfaces.IUniversity)
     grok.name('manage')
-    title = u'Portal Settings'
+    title = _(u'Portal Settings')
 
     @property
@@ -113,5 +114,5 @@
     """
     grok.context(interfaces.IFacultiesContainer)
-    title = u'Academics'
+    title = _(u'Academics')
 
 class AdministrationBreadcrumb(Breadcrumb):
@@ -120,5 +121,5 @@
     grok.context(interfaces.IUniversity)
     grok.name('administration')
-    title = u'Administration'
+    title = _(u'Administration')
     viewname = 'administration'
 
@@ -127,5 +128,5 @@
     """
     grok.context(IConfigurationContainer)
-    title = u'Portal Configuration'
+    title = _(u'Portal Configuration')
     parent_viewname = 'administration'
 
@@ -145,5 +146,5 @@
     """
     grok.context(interfaces.IUsersContainer)
-    title = u'Portal Users'
+    title = _(u'Portal Users')
     parent_viewname = 'administration'
 
@@ -152,5 +153,5 @@
     """ 
     grok.context(interfaces.IDataCenter)
-    title = u'Data Center'
+    title = _(u'Data Center')
     parent_viewname = 'administration'
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/browser.txt	(revision 7700)
@@ -344,5 +344,5 @@
   >>> print browser.contents
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
-  ...Successfully removed:...
+  ...Local role successfully removed...
   ...
 
@@ -494,5 +494,5 @@
   >>> print browser.contents
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
-  ...Successfully removed:...
+  ...Local role successfully removed...
   ...
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7700)
@@ -24,4 +24,5 @@
 from grokcore.formlib.formlib import Action
 from cgi import escape
+from zope.i18n import translate
 from zope.i18nmessageid import Message
 from hurry.resource import mode
@@ -70,5 +71,5 @@
         label = self.label
         if isinstance(label, Message):
-            label = zope.i18n.translate(self.label, context=self.form.request)
+            label = translate(self.label, context=self.form.request)
         return ('<input type="submit" id="%s" name="%s" value="%s"'
                 ' class="btn %s"/>' %
@@ -92,5 +93,5 @@
         label = self.label
         if isinstance(label, Message):
-            label = zope.i18n.translate(self.label, context=self.form.request)
+            label = translate(self.label, context=self.form.request)
         return ('<input type="submit" id="%s" name="%s" value="%s"'
                 ' class="btn" onclick="return confirmPost(%s)" />' %
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7700)
@@ -44,4 +44,5 @@
     IDepartment, IDepartmentAdd, ICourse, ICourseAdd, ICertificate,
     ICertificateAdd, ICertificateCourse, ICertificateCourseAdd)
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.browser.resources import warning, datepicker, tabs, datatable
 from waeup.sirp.interfaces import(
@@ -80,5 +81,5 @@
     child_ids = view.request.form.get('role_id', None)
     if child_ids is None:
-        view.flash('No local role selected.')
+        view.flash(_('No local role selected.'))
         view.redirect(view.url(view.context, '@@manage')+'?tab%s' % tab)
         return
@@ -99,5 +100,7 @@
                     child_id, sys.exc_info()[0], sys.exc_info()[1]))
     if len(deleted):
-        view.flash('Successfully removed: %s' % ', '.join(deleted))
+        view.flash(
+            _('Local role successfully removed: ${a}',
+            mapping = {'a':', '.join(deleted)}))
     view.redirect(view.url(view.context, u'@@manage')+'?tab%s' % tab)
     return
@@ -108,5 +111,5 @@
         child_id = form['val_id']
     else:
-        view.flash('No item selected.')
+        view.flash(_('No item selected.'))
         if tab:
             view.redirect(view.url(view.context, redirect)+'?tab%s' % tab)
@@ -129,5 +132,6 @@
                     id, sys.exc_info()[0], sys.exc_info()[1]))
     if len(deleted):
-        view.flash('Successfully removed: %s' % ', '.join(deleted))
+        view.flash(_('Successfully removed: ${a}',
+            mapping = {'a': ', '.join(deleted)}))
     if tab:
         view.redirect(view.url(view.context, redirect)+'?tab%s' % tab)
@@ -146,5 +150,5 @@
     grok.context(ISIRPObject)
     grok.require('waeup.Public')
-    label = u'Login'
+    label = _(u'Login')
     camefrom = None
 
@@ -153,5 +157,5 @@
         if SUBMIT is not None:
             if self.request.principal.id != 'zope.anybody':
-                self.flash('You logged in.')
+                self.flash(_('You logged in.'))
                 if self.request.principal.user_type == 'student':
                     rel_link = '/students/%s' % self.request.principal.id
@@ -171,5 +175,5 @@
                 self.redirect(self.camefrom)
                 return
-            self.flash('You entered wrong credentials.')
+            self.flash(_('You entered wrong credentials.'))
 
 
@@ -185,5 +189,5 @@
             auth = getUtility(IAuthentication)
             ILogout(auth).logout(self.request)
-            self.flash("You have been logged out. Thanks for using WAeUP SIRP!")
+            self.flash(_("You have been logged out. Thanks for using WAeUP SIRP!"))
         self.redirect(self.application_url())
 
@@ -221,5 +225,5 @@
 
     def label(self):
-        return u'Contact %s' % self.config.name_admin
+        return _(u'Contact ${a}', mapping = {'a': self.config.name_admin})
 
     @property
@@ -227,5 +231,5 @@
         return get_user_account(self.request)
 
-    @action('Send message now', style='primary')
+    @action(_('Send message now'), style='primary')
     def send(self, *args, **data):
         fullname = self.request.principal.title
@@ -246,5 +250,5 @@
         # TODO: Catch exceptions.
         if success:
-            self.flash('Your message has been sent.')
+            self.flash(_('Your message has been sent.'))
         return
 
@@ -256,5 +260,5 @@
                           'fullname', 'email_from', 'body')
 
-    @action('Send now', style='primary')
+    @action(_('Send now'), style='primary')
     def send(self, *args, **data):
         sirp_utils = getUtility(ISIRPUtils)
@@ -265,7 +269,7 @@
                 data['body'],self.config.email_subject)
         if success:
-            self.flash('Your message has been sent.')
+            self.flash(_('Your message has been sent.'))
         else:
-            self.flash('A smtp server error occurred.')
+            self.flash(_('A smtp server error occurred.'))
         return
 
@@ -296,5 +300,5 @@
     grok.context(IUniversity)
     grok.require('waeup.manageUniversity')
-    label = u'Administration'
+    label = _(u'Administration')
     pnav = 0
 
@@ -373,5 +377,5 @@
     grok.context(IUsersContainer)
     grok.name('index')
-    label = 'Portal Users'
+    label = _('Portal Users')
 
     def update(self, userid=None, adduser=None, manage=None, delete=None):
@@ -380,5 +384,6 @@
         if delete is not None and userid is not None:
             self.context.delUser(userid)
-            self.flash('User account %s successfully deleted.' % userid)
+            self.flash(_('User account ${a} successfully deleted.',
+                mapping = {'a':  userid}))
 
     def getLocalRoles(self, account):
@@ -410,7 +415,7 @@
     grok.template('usereditformpage')
     form_fields = grok.AutoFields(IUserAccount)
-    label = 'Add user'
-
-    @action('Add user', style='primary')
+    label = _('Add user')
+
+    @action(_('Add user'), style='primary')
     def addUser(self, **data):
         name = data['name']
@@ -434,5 +439,6 @@
                                  phone=phone, description=description,
                                  roles=roles)
-            self.flash('User account %s successfully added.' % name)
+            self.flash(_('User account ${a} successfully added.',
+                mapping = {'a': name}))
         except KeyError:
             self.status = self.flash('The userid chosen already exists '
@@ -452,5 +458,5 @@
 
     def label(self):
-        return "Edit user %s" % self.context.__name__
+        return _("Edit user ${a}", mapping = {'a':self.context.__name__})
 
     def setUpWidgets(self, ignore_request=False):
@@ -459,5 +465,5 @@
         self.widgets['description'].height = 3
 
-    @action('Save', style='primary')
+    @action(_('Save'), style='primary')
     def save(self, **data):
         form = self.request.form
@@ -483,8 +489,8 @@
             self.context.__parent__.logger.info(
                 'User account %s edited: %s' % (self.context.name,fields_string))
-        self.flash('User settings have been saved.')
-        return
-
-    @action('Cancel', validator=NullValidator)
+        self.flash(_('User settings have been saved.'))
+        return
+
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context.__parent__))
@@ -500,7 +506,7 @@
 
     def label(self):
-        return u'Send message to %s' % self.context.title
-
-    @action('Send message now', style='primary')
+        return _(u'Send message to ${a}', mapping = {'a':self.context.title})
+
+    @action(_('Send message now'), style='primary')
     def send(self, *args, **data):
         try:
@@ -519,5 +525,5 @@
         # TODO: Catch exceptions.
         if success:
-            self.flash('Your message has been sent.')
+            self.flash(_('Your message has been sent.'))
         return
 
@@ -529,5 +535,5 @@
     form_fields = grok.AutoFields(IUserAccount).omit(
         'name', 'description', 'roles')
-    label = u"My Preferences"
+    label = _(u"My Preferences")
 
     def setUpWidgets(self, ignore_request=False):
@@ -542,5 +548,5 @@
     grok.context(IUserAccount)
     grok.template('myrolespage')
-    label = u"My Roles"
+    label = _(u"My Roles")
 
     @property
@@ -573,5 +579,5 @@
     grok.template('searchpage')
     grok.require('waeup.manageUniversity')
-    label = u"Search Academic Section"
+    label = _(u"Search Academic Section")
     pnav = 1
 
@@ -599,5 +605,5 @@
     grok.context(IConfigurationContainer)
     pnav = 0
-    label = u'View portal configuration'
+    label = _(u'View portal configuration')
     form_fields = grok.AutoFields(IConfigurationContainer)
     form_fields['frontpage'].custom_widget = ReSTDisplayWidget
@@ -612,9 +618,9 @@
     grok.template('configurationmanagepage')
     pnav = 0
-    label = u'Edit portal configuration'
-    taboneactions = ['Save', 'Update plugins']
+    label = _(u'Edit portal configuration')
+    taboneactions = [_('Save'), _('Update plugins')]
     tabtwoactions = [
-        'Add session configuration',
-        'Remove selected']
+        _('Add session configuration'),
+        _('Remove selected')]
 
     form_fields = grok.AutoFields(IConfigurationContainer)
@@ -642,8 +648,8 @@
         self.applyData(self.context, **data)
         self.context.frontpage_html = self.frontpage()
-        self.flash('Settings have been saved.')
-        return
-
-    @action('Add session configuration', validator=NullValidator, style='primary')
+        self.flash(_('Settings have been saved.'))
+        return
+
+    @action(_('Add session configuration'), validator=NullValidator, style='primary')
     def addSubunit(self, **data):
         self.redirect(self.url(self.context, '@@add'))
@@ -656,16 +662,16 @@
             url = self.url(val)
             session_string = val.getSessionString()
-            title = 'Session %s Configuration' % session_string
+            title = _('Session ${a} Configuration', mapping = {'a':session_string})
             yield(dict(url=url, name=key, title=title))
 
-    @jsaction('Remove selected')
+    @jsaction(_('Remove selected'))
     def delSessonConfigurations(self, **data):
         delSubobjects(self, redirect='@@index', tab='2')
         return
 
-    @action('Update plugins', validator=NullValidator)
+    @action(_('Update plugins'), validator=NullValidator)
     def updatePlugins(self, **data):
         grok.getSite().updatePlugins()
-        self.flash('Plugins were updated. See log file for details.')
+        self.flash(_('Plugins were updated. See log file for details.'))
         return
 
@@ -676,9 +682,9 @@
     grok.name('add')
     grok.require('waeup.managePortalConfiguration')
-    label = 'Add session configuration'
+    label = _('Add session configuration')
     form_fields = grok.AutoFields(ISessionConfigurationAdd)
     pnav = 0
 
-    @action('Add Session Configuration', style='primary')
+    @action(_('Add Session Configuration'), style='primary')
     def addSessionConfiguration(self, **data):
         sessionconfiguration = createObject(u'waeup.SessionConfiguration')
@@ -687,10 +693,10 @@
             self.context.addSessionConfiguration(sessionconfiguration)
         except KeyError:
-            self.flash('The session chosen already exists ')
+            self.flash(_('The session chosen already exists.'))
             return
         self.redirect(self.url(self.context, '@@index')+'?tab2')
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self):
         self.redirect(self.url(self.context, '@@index')+'?tab2')
@@ -709,14 +715,15 @@
     def label(self):
         session_string = self.context.getSessionString()
-        return 'Edit academic session %s configuration' % session_string
-
-    @action('Save', style='primary')
+        return _('Edit academic session ${a} configuration',
+            mapping = {'a':session_string})
+
+    @action(_('Save'), style='primary')
     def save(self, **data):
         self.applyData(self.context, **data)
-        self.flash('Settings have been saved.')
+        self.flash(_('Settings have been saved.'))
         self.redirect(self.url(self.context.__parent__, '@@index')+'?tab2')
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self):
         self.redirect(self.url(self.context.__parent__, '@@index')+'?tab2')
@@ -731,5 +738,5 @@
     grok.name('index')
     grok.require('waeup.manageUniversity')
-    label = u'Data Center'
+    label = _(u'Data Center')
     pnav = 0
 
@@ -738,5 +745,5 @@
     grok.name('upload')
     grok.require('waeup.manageUniversity')
-    label = u'Upload file'
+    label = _(u'Upload file')
     pnav = 0
 
@@ -784,5 +791,5 @@
     grok.template('datacenterimport1page')
     grok.require('waeup.manageUniversity')
-    label = u'Process CSV file'
+    label = _(u'Process CSV file')
     pnav = 0
 
@@ -797,5 +804,5 @@
     def update(self, filename=None, select=None, cancel=None):
         if cancel is not None:
-            self.flash('Import aborted.')
+            self.flash(_('Import aborted.'))
             self.redirect(self.url(self.context))
             return
@@ -813,5 +820,5 @@
     grok.template('datacenterimport2page')
     grok.require('waeup.manageUniversity')
-    label = u'Process CSV file'
+    label = _(u'Process CSV file')
     pnav = 0
 
@@ -874,5 +881,5 @@
             if len(headerfields) > len(headerfields_clean):
                 result.append(
-                    "Double headers: each column name may only appear once. ")
+                    _("Double headers: each column name may only appear once. "))
         except:
             fatal = '%s' % sys.exc_info()[1]
@@ -882,5 +889,5 @@
             for line in result:
                 warnings += line + '<br />'
-            warnings += 'Replace imported file!'
+            warnings += _('Replace imported file!')
             return warnings
         return False
@@ -895,5 +902,5 @@
             return
         if cancel is not None:
-            self.flash('Import aborted.')
+            self.flash(_('Import aborted.'))
             self.redirect(self.url(self.context))
             return
@@ -907,5 +914,5 @@
         if self.importer and 'update' in self.importer:
             if self.mode != 'update':
-                self.flash('Update mode only!')
+                self.flash(_('Update mode only!'))
                 self.mode_locked = True
                 self.mode = 'update'
@@ -930,5 +937,5 @@
     grok.template('datacenterimport3page')
     grok.require('waeup.manageUniversity')
-    label = u'Process CSV file'
+    label = _(u'Process CSV file')
     pnav = 0
 
@@ -988,5 +995,5 @@
             for line in result:
                 warnings += line + '<br />'
-            warnings += 'Edit headers or replace imported file!'
+            warnings += _('Edit headers or replace imported file!')
             return warnings
         return False
@@ -1009,5 +1016,5 @@
             return
         if cancel is not None:
-            self.flash('Import aborted.')
+            self.flash(_('Import aborted.'))
             self.redirect(self.url(self.context))
             return
@@ -1033,5 +1040,5 @@
     grok.template('datacenterimport4page')
     grok.require('waeup.manageUniversity')
-    label = u'Process CSV file'
+    label = _(u'Process CSV file')
     pnav = 0
 
@@ -1078,7 +1085,8 @@
 
         if self.warn_num:
-            self.flash('Processing of %d rows failed.' % self.warn_num)
-        self.flash('Successfully processed %s rows.' % (
-                linenum - (self.warn_num)))
+            self.flash(_('Processing of ${a} rows failed.',
+                mapping = {'a':self.warn_num}))
+        self.flash(_('Successfully processed ${a} rows.',
+            mapping = {'a':linenum - self.warn_num}))
 
 class DatacenterLogsOverview(SIRPPage):
@@ -1087,5 +1095,5 @@
     grok.template('datacenterlogspage')
     grok.require('waeup.manageUniversity')
-    label = u'Show logfiles'
+    label = _(u'Show logfiles')
     pnav = 0
 
@@ -1107,5 +1115,5 @@
     grok.template('datacenterlogsshowfilepage')
     grok.require('waeup.manageUniversity')
-    title = u'Data Center'
+    title = _(u'Data Center')
     pnav = 0
 
@@ -1129,5 +1137,5 @@
     grok.template('datacentermanagepage')
     grok.require('waeup.manageUniversity')
-    label = 'Edit data center settings'
+    label = _('Edit data center settings')
     pnav = 0
 
@@ -1146,11 +1154,11 @@
             not_copied = self.context.setStoragePath(newpath, move=move)
             for name in not_copied:
-                self.flash('File already existed (not copied): %s' % name)
+                self.flash(_('File already existed (not copied):') + ' %s' % name)
         except:
-            self.flash('Given storage path cannot be used.')
-            self.flash('Error: %s' %sys.exc_info()[1])
+            self.flash(_('Given storage path cannot be used.'))
+            self.flash(_('Error:') + '%s' %sys.exc_info()[1])
             return
         if newpath:
-            self.flash('New storage path succefully set.')
+            self.flash(_('New storage path succefully set.'))
             self.redirect(self.url(self.context))
         return
@@ -1212,5 +1220,5 @@
     grok.require('waeup.viewAcademics')
     grok.name('index')
-    label = 'Academic Section'
+    label = _('Academic Section')
     pnav = 1
     grok.template('facultypage')
@@ -1224,10 +1232,10 @@
     grok.template('facultiescontainermanagepage')
     pnav = 1
-    taboneactions = ['Add faculty', 'Remove selected','Cancel']
-    subunits = 'Faculties'
+    taboneactions = [_('Add faculty'), _('Remove selected'),_('Cancel')]
+    subunits = _('Faculties')
 
     @property
     def label(self):
-        return 'Manage academic section'
+        return _('Manage academic section')
 
     def update(self):
@@ -1235,15 +1243,15 @@
         return super(FacultiesContainerManageFormPage, self).update()
 
-    @jsaction('Remove selected')
+    @jsaction(_('Remove selected'))
     def delFaculties(self, **data):
         delSubobjects(self, redirect='@@manage', tab='1')
         return
 
-    @action('Add faculty', validator=NullValidator)
+    @action(_('Add faculty'), validator=NullValidator)
     def addFaculty(self, **data):
         self.redirect(self.url(self.context, '@@add'))
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1257,9 +1265,9 @@
     grok.require('waeup.manageUniversity')
     grok.name('add')
-    label = 'Add faculty'
+    label = _('Add faculty')
     form_fields = grok.AutoFields(IFacultyAdd)
     pnav = 1
 
-    @action('Add faculty', style='primary')
+    @action(_('Add faculty'), style='primary')
     def addFaculty(self, **data):
         faculty = createObject(u'waeup.Faculty')
@@ -1268,9 +1276,9 @@
             self.context.addFaculty(faculty)
         except KeyError:
-            self.flash('The faculty code chosen already exists.')
+            self.flash(_('The faculty code chosen already exists.'))
             return
         self.redirect(self.url(self.context, u'@@manage')+'?tab1')
 
-    @action('Cancel')
+    @action(_('Cancel'))
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1289,5 +1297,5 @@
     @property
     def label(self):
-        return 'Departments'
+        return _('Departments')
 
 class FacultyManageFormPage(SIRPEditFormPage):
@@ -1299,9 +1307,9 @@
     grok.template('facultymanagepage')
     pnav = 1
-    subunits = 'Departments'
-    taboneactions = ['Save','Cancel']
-    tabtwoactions = ['Add department', 'Remove selected','Cancel']
-    tabthreeactions1 = ['Remove selected local roles']
-    tabthreeactions2 = ['Add local role']
+    subunits = _('Departments')
+    taboneactions = [_('Save'),_('Cancel')]
+    tabtwoactions = [_('Add department'), _('Remove selected'),_('Cancel')]
+    tabthreeactions1 = [_('Remove selected local roles')]
+    tabthreeactions2 = [_('Add local role')]
 
     form_fields = grok.AutoFields(IFaculty)
@@ -1309,5 +1317,5 @@
     @property
     def label(self):
-        return 'Manage faculty'
+        return _('Manage faculty')
 
     def update(self):
@@ -1336,5 +1344,5 @@
         return get_users_with_local_roles(self.context)
 
-    @jsaction('Remove selected')
+    @jsaction(_('Remove selected'))
     def delDepartments(self, **data):
         delSubobjects(self, redirect='@@manage', tab='2')
@@ -1344,22 +1352,22 @@
     def save(self, **data):
         self.applyData(self.context, **data)
-        self.flash('Form has been saved.')
-        return
-
-    @action('Cancel', validator=NullValidator)
+        self.flash(_('Form has been saved.'))
+        return
+
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
         return
 
-    @action('Add department', validator=NullValidator)
+    @action(_('Add department'), validator=NullValidator)
     def addSubunit(self, **data):
         self.redirect(self.url(self.context, '@@add'))
         return
 
-    @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)
@@ -1371,9 +1379,9 @@
     grok.name('add')
     grok.require('waeup.manageUniversity')
-    label = 'Add department'
+    label = _('Add department')
     form_fields = grok.AutoFields(IDepartmentAdd)
     pnav = 1
 
-    @action('Add department', style='primary')
+    @action(_('Add department'), style='primary')
     def addDepartment(self, **data):
         department = createObject(u'waeup.Department')
@@ -1382,12 +1390,11 @@
             self.context.addDepartment(department)
         except KeyError:
-            self.flash('The code chosen already exists '
-                                  'in this faculty.')
+            self.flash(_('The code chosen already exists in this faculty.'))
             return
         self.status = self.flash(
-            "Department %s added." % data['code'])
+            _("Department ${a} added.", mapping = {'a':data['code']}))
         self.redirect(self.url(self.context, u'@@manage')+'?tab2')
 
-    @action('Cancel')
+    @action(_('Cancel'))
     def cancel(self, **data):
         self.redirect(self.url(self.context))
@@ -1403,5 +1410,5 @@
     grok.name('index')
     pnav = 1
-    label = 'Courses and Certificates'
+    label = _('Courses and Certificates')
 
     def update(self):
@@ -1433,5 +1440,5 @@
     grok.template('showstudentspage')
     pnav = 1
-    label = 'Students'
+    label = _('Students')
 
     @property
@@ -1452,5 +1459,5 @@
     grok.name('showcertstudents')
     pnav = 1
-    label = 'Students'
+    label = _('Students')
 
     @property
@@ -1468,10 +1475,10 @@
     pnav = 1
     grok.template('departmentmanagepage')
-    taboneactions = ['Save','Cancel']
-    tabtwoactions = ['Add course', 'Remove selected courses','Cancel']
-    tabthreeactions = ['Add certificate', 'Remove selected certificates',
-                       'Cancel']
-    tabfouractions1 = ['Remove selected local roles']
-    tabfouractions2 = ['Add local role']
+    taboneactions = [_('Save'),_('Cancel')]
+    tabtwoactions = [_('Add course'), _('Remove selected courses'),_('Cancel')]
+    tabthreeactions = [_('Add certificate'), _('Remove selected certificates'),
+                       _('Cancel')]
+    tabfouractions1 = [_('Remove selected local roles')]
+    tabfouractions2 = [_('Add local role')]
 
     form_fields = grok.AutoFields(IDepartment)
@@ -1479,5 +1486,5 @@
     @property
     def label(self):
-        return 'Manage department'
+        return _('Manage department')
 
     def getCourses(self):
@@ -1521,5 +1528,5 @@
         return get_users_with_local_roles(self.context)
 
-    @action('Save', style='primary')
+    @action(_('Save'), style='primary')
     def save(self, **data):
         self.applyData(self.context, **data)
@@ -1527,5 +1534,5 @@
         return
 
-    @jsaction('Remove selected courses')
+    @jsaction(_('Remove selected courses'))
     def delCourses(self, **data):
         delSubobjects(
@@ -1533,5 +1540,5 @@
         return
 
-    @jsaction('Remove selected certificates')
+    @jsaction(_('Remove selected certificates'))
     def delCertificates(self, **data):
         delSubobjects(
@@ -1539,24 +1546,24 @@
         return
 
-    @action('Add course', validator=NullValidator)
+    @action(_('Add course'), validator=NullValidator)
     def addCourse(self, **data):
         self.redirect(self.url(self.context, 'addcourse'))
         return
 
-    @action('Add certificate', validator=NullValidator)
+    @action(_('Add certificate'), validator=NullValidator)
     def addCertificate(self, **data):
         self.redirect(self.url(self.context, 'addcertificate'))
         return
 
-    @action('Cancel', validator=NullValidator)
+    @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
         return
 
-    @action('Add local role', validator=NullValidator)
+    @action(_('Add local role'), validator=NullValidator)
     def addLocalRole(self, **data):
         return add_local_role(self, 4, **data)
 
-    @action('Remove selected local roles')
+    @action(_('Remove selected local roles'))
     def delLocalRoles(self, **data):
         return del_local_roles(self,4,**data)
