Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 7708)
@@ -147,5 +147,5 @@
 
     form_fields = grok.AutoFields(
-        IApplicantsContainerAdd).omit('code').omit('title')
+        IApplicantsContainerAdd).omit('code').omit('title', 'description_dict')
     form_fields['startdate'].custom_widget = FriendlyDateWidget('le')
     form_fields['enddate'].custom_widget = FriendlyDateWidget('le')
@@ -222,8 +222,21 @@
     pnav = 3
 
-    form_fields = grok.AutoFields(IApplicantsContainer).omit('title')
+    form_fields = grok.AutoFields(IApplicantsContainer).omit(
+        'title', 'description_dict')
     form_fields['startdate'].custom_widget = FriendlyDateDisplayWidget('le')
     form_fields['enddate'].custom_widget = FriendlyDateDisplayWidget('le')
     form_fields['description'].custom_widget = ReSTDisplayWidget
+
+    @property
+    def introduction(self):
+        portal_language = getUtility(ISIRPUtils).PORTAL_LANGUAGE
+        lang = self.request.cookies.get('sirp.language', portal_language)
+        html = self.context.description_dict.get(lang,'')
+        if html =='':
+            html = self.context.description_dict.get(portal_language,'')
+        if html =='':
+            return ''
+        else:
+            return html
 
     @property
@@ -235,5 +248,6 @@
     grok.name('manage')
     grok.template('applicantscontainermanagepage')
-    form_fields = grok.AutoFields(IApplicantsContainer).omit('title')
+    form_fields = grok.AutoFields(IApplicantsContainer).omit(
+        'title', 'description_dict')
     taboneactions = ['Save','Cancel']
     tabtwoactions = ['Add applicant', 'Remove selected','Cancel']
@@ -277,7 +291,14 @@
         return get_users_with_local_roles(self.context)
 
+    def _description(self):
+        view = ApplicantsContainerPage(
+            self.context,self.request)
+        view.setUpWidgets()
+        return view.widgets['description']()
+
     @action('Save', style='primary')
     def save(self, **data):
         self.applyData(self.context, **data)
+        self.context.description_dict = self._description()
         self.flash('Form has been saved.')
         return
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainerpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainerpage.pt	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainerpage.pt	(revision 7708)
@@ -1,5 +1,6 @@
-<span tal:replace="structure view/widgets/description">Description</span>
-
-<br />
+<span tal:condition="view/introduction" tal:omit-tag="">
+  <span tal:content="structure view/introduction">INTRODUCTION</span>
+  <br />
+</span>
 
 <table class="form-table" tal:condition="layout/isAuthenticated">
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 7708)
@@ -32,4 +32,5 @@
 from waeup.sirp.interfaces import (
     ISIRPObject, year_range, validate_email, academic_sessions_vocab)
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.university.vocabularies import (
     course_levels, AppCatSource)
@@ -194,5 +195,5 @@
 
     code = schema.TextLine(
-        title = u'Code',
+        title = _(u'Code'),
         default = u'-',
         required = True,
@@ -201,5 +202,5 @@
 
     title = schema.TextLine(
-        title = u'Title',
+        title = _(u'Title'),
         required = True,
         default = u'-',
@@ -208,5 +209,5 @@
 
     prefix = schema.Choice(
-        title = u'Application Target',
+        title = _(u'Application Target'),
         required = True,
         default = None,
@@ -216,5 +217,5 @@
 
     entry_level = schema.Choice(
-        title = u'Entry Level',
+        title = _(u'Entry Level'),
         vocabulary = course_levels,
         default = 100,
@@ -223,5 +224,5 @@
 
     year = schema.Choice(
-        title = u'Year of Entrance',
+        title = _(u'Year of Entrance'),
         required = True,
         default = None,
@@ -231,5 +232,5 @@
 
     provider = schema.Choice(
-        title = u'Applicants Container Type',
+        title = _(u'Applicants Container Type'),
         required = True,
         default = None,
@@ -247,5 +248,5 @@
 
     application_category = schema.Choice(
-        title = u'Category for the grouping of certificates',
+        title = _(u'Category for the grouping of certificates'),
         required = True,
         default = None,
@@ -254,12 +255,21 @@
 
     description = schema.Text(
-        title = u'Human readable description in reST format',
+        title = _(u'Human readable description in reST format'),
         required = False,
         default = u'''This text can been seen by anonymous users.
-Here we put information about the study courses provided, the application procedure and deadlines.'''
+Here we put mult-lingual information about the study courses provided, the application procedure and deadlines.
+>>de<<
+Dieser Text kann von anonymen Benutzern gelesen werden.
+Hier koennen mehrsprachige Informationen fuer Antragsteller hinterlegt werden.'''
+        )
+
+    description_dict = schema.Dict(
+        title = u'Content as language dictionary with values in html format',
+        required = False,
+        default = {},
         )
 
     startdate = schema.Date(
-        title = u'Application Start Date',
+        title = _(u'Application Start Date'),
         required = False,
         default = None,
@@ -267,5 +277,5 @@
 
     enddate = schema.Date(
-        title = u'Application Closing Date',
+        title = _(u'Application Closing Date'),
         required = False,
         default = None,
@@ -273,5 +283,5 @@
 
     strict_deadline = schema.Bool(
-        title = u'Forbid additions after deadline (enddate)',
+        title = _(u'Forbid additions after deadline (enddate)'),
         required = True,
         default = True,
@@ -312,5 +322,5 @@
     """
     prefix = schema.Choice(
-        title = u'Application Target',
+        title = _(u'Application Target'),
         required = True,
         default = None,
@@ -320,5 +330,5 @@
 
     year = schema.Choice(
-        title = u'Year of Entrance',
+        title = _(u'Year of Entrance'),
         required = True,
         default = None,
@@ -328,5 +338,5 @@
 
     provider = schema.Choice(
-        title = u'Applicants Container Type',
+        title = _(u'Applicants Container Type'),
         required = True,
         default = None,
@@ -356,10 +366,10 @@
 
     applicant_id = schema.TextLine(
-        title = u'Applicant Id',
+        title = _(u'Applicant Id'),
         required = False,
         readonly = False,
         )
     reg_number = TextLineChoice(
-        title = u'JAMB Registration Number',
+        title = _(u'JAMB Registration Number'),
         readonly = False,
         required = True,
@@ -373,27 +383,27 @@
     #    )
     firstname = schema.TextLine(
-        title = u'First Name',
+        title = _(u'First Name'),
         required = True,
         )
     middlename = schema.TextLine(
-        title = u'Middle Name',
+        title = _(u'Middle Name'),
         required = False,
         )
     lastname = schema.TextLine(
-        title = u'Last Name (Surname)',
+        title = _(u'Last Name (Surname)'),
         required = True,
         )
     date_of_birth = schema.Date(
-        title = u'Date of Birth',
+        title = _(u'Date of Birth'),
         required = True,
         )
     lga = schema.Choice(
         source = lgas_vocab,
-        title = u'State/LGA',
+        title = _(u'State/LGA'),
         default = 'foreigner',
         required = True,
         )
     sex = schema.Choice(
-        title = u'Sex',
+        title = _(u'Sex'),
         source = GenderSource(),
         default = u'm',
@@ -401,20 +411,20 @@
         )
     email = schema.ASCIILine(
-        title = u'Email Address',
+        title = _(u'Email Address'),
         required = True,
         constraint=validate_email,
         )
     phone = schema.TextLine(
-        title = u'Phone',
+        title = _(u'Phone'),
         description = u'',
         required = False,
         )
     course1 = schema.Choice(
-        title = u'1st Choice Course of Study',
+        title = _(u'1st Choice Course of Study'),
         source = CertificateSource(),
         required = True,
         )
     course2 = schema.Choice(
-        title = u'2nd Choice Course of Study',
+        title = _(u'2nd Choice Course of Study'),
         source = CertificateSource(),
         required = False,
@@ -425,13 +435,13 @@
     #
     screening_score = schema.Int(
-        title = u'Screening Score',
+        title = _(u'Screening Score'),
         required = False,
         )
     screening_venue = schema.TextLine(
-        title = u'Screening Venue',
+        title = _(u'Screening Venue'),
         required = False,
         )
     course_admitted = schema.Choice(
-        title = u'Admitted Course of Study',
+        title = _(u'Admitted Course of Study'),
         source = CertificateSource(),
         default = None,
@@ -439,5 +449,5 @@
         )
     notice = schema.Text(
-        title = u'Notice',
+        title = _(u'Notice'),
         required = False,
         )
@@ -461,10 +471,10 @@
 
     student_id = schema.TextLine(
-        title = u'Student Id',
+        title = _(u'Student Id'),
         required = False,
         readonly = False,
         )
     locked = schema.Bool(
-        title = u'Form locked',
+        title = _(u'Form locked'),
         default = False,
         )
@@ -491,25 +501,25 @@
 
     course1 = schema.Choice(
-        title = u'1st Choice Course of Study',
+        title = _(u'1st Choice Course of Study'),
         source = AppCatCertificateSource(),
         required = True,
         )
     course2 = schema.Choice(
-        title = u'2nd Choice Course of Study',
+        title = _(u'2nd Choice Course of Study'),
         source = AppCatCertificateSource(),
         required = False,
         )
     screening_score = schema.Int(
-        title = u'Screening Score',
+        title = _(u'Screening Score'),
         required = False,
         readonly = True,
         )
     screening_venue = schema.TextLine(
-        title = u'Screening Venue',
+        title = _(u'Screening Venue'),
         required = False,
         readonly = True,
         )
     course_admitted = schema.Choice(
-        title = u'Admitted Course of Study',
+        title = _(u'Admitted Course of Study'),
         source = CertificateSource(),
         default = None,
@@ -518,5 +528,5 @@
         )
     notice = schema.Text(
-        title = u'Notice',
+        title = _(u'Notice'),
         required = False,
         readonly = True,
@@ -545,5 +555,5 @@
     """
     p_year = schema.Choice(
-        title = u'Payment Session',
+        title = _(u'Payment Session'),
         source = academic_sessions_vocab,
         required = False,
