Index: /main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_vocabularies.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_vocabularies.py	(revision 7690)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_vocabularies.py	(revision 7691)
@@ -37,28 +37,29 @@
         self.assertEqual(values, [100, 110, 120, 200, 210, 220, 300, 310, 320,
             400, 410, 420, 500, 510, 520, 600, 610, 620])
+        # Unfortunately, unittests don't know about internationalization
         self.assertEqual(studylevelsource.getTitle(studycourse, None),
-            'Error: level id None out of range')
+            'Error: level id ${value} out of range')
         self.assertEqual(studylevelsource.getTitle(studycourse, 0),
-            'Error: level id 0 out of range')
+            'Error: level id ${value} out of range')
         self.assertEqual(studylevelsource.getTitle(studycourse, 10),
-            'Error: level id 10 out of range')
+            'Error: level id ${value} out of range')
         self.assertEqual(studylevelsource.getTitle(studycourse, 100),
             '100 (Year 1)')
         self.assertEqual(studylevelsource.getTitle(studycourse, 110),
-            '100 (Year 1) on 1st probation')
+            '${title} on 1st probation')
         self.assertEqual(studylevelsource.getTitle(studycourse, 120),
-            '100 (Year 1) on 2nd probation')
+            '${title} on 2nd probation')
         self.assertEqual(studylevelsource.getTitle(studycourse, 500),
             '500 (Year 5)')
         self.assertEqual(studylevelsource.getTitle(studycourse, 600),
-            '500 (Year 5) 1st spillover')
+            '${title} 1st spillover')
         self.assertEqual(studylevelsource.getTitle(studycourse, 610),
-            '500 (Year 5) 2nd spillover')
+            '${title} 2nd spillover')
         self.assertEqual(studylevelsource.getTitle(studycourse, 620),
-            '500 (Year 5) 3rd spillover')
+            '${title} 3rd spillover')
         self.assertEqual(studylevelsource.getTitle(studycourse, 630),
-            'Error: level id 630 out of range')
+            'Error: level id ${value} out of range')
         self.assertEqual(studylevelsource.getTitle(studycourse, 700),
-            'Error: level id 700 out of range')
+            'Error: level id ${value} out of range')
         # Now we change the certificates start_level to pre-studies
         studycourse.certificate.start_level = 10
Index: /main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py	(revision 7690)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/students/vocabularies.py	(revision 7691)
@@ -26,4 +26,5 @@
 from zc.sourcefactory.contextual import BasicContextualSourceFactory
 from waeup.sirp.interfaces import SimpleSIRPVocabulary
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.students.lgas import LGAS
 from waeup.sirp.students.nats import NATS
@@ -74,5 +75,6 @@
             end_level = 600
         if value < start_level or value > end_level + 120:
-            return "Error: level id %s out of range" % value
+            return _('Error: level id ${value} out of range',
+                mapping={'value': value})
         # Special treatment for pre-studies level
         if value == 10:
@@ -84,15 +86,15 @@
         if level > end_level and repeat == 1:
             title = course_levels.by_value[level - 100].title
-            return "%s 2nd spillover" % title
+            return _('${title} 2nd spillover', mapping={'title': title})
         if level > end_level and repeat == 2:
             title = course_levels.by_value[level - 100].title
-            return "%s 3rd spillover" % title
+            return _('${title} 3rd spillover', mapping={'title': title})
         if level > end_level:
             title = course_levels.by_value[level - 100].title
-            return  "%s 1st spillover" % title
+            return  _('${title} 1st spillover', mapping={'title': title})
         if repeat == 1:
-            return "%s on 1st probation" % title
+            return _('${title} on 1st probation', mapping={'title': title})
         if repeat == 2:
-            return "%s on 2nd probation" % title
+            return _('${title} on 2nd probation', mapping={'title': title})
         return title
 
@@ -131,7 +133,7 @@
     def getTitle(self, value):
         if value == 'm':
-            return 'Male'
+            return _('Male')
         if value == 'f':
-            return 'Female'
+            return _('Female')
 
 class RegNumNotInSource(ValidationError):
