Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7701)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7702)
@@ -292,5 +292,7 @@
     @property
     def frontpage(self):
-        return self.context['configuration'].frontpage_html
+        portal_language = getUtility(ISIRPUtils).PORTAL_LANGUAGE
+        lang = self.request.cookies.get('sirp.language', portal_language)
+        return self.context['configuration'].frontpage_dict.get(lang,'')
 
 class AdministrationPage(SIRPPage):
@@ -623,7 +625,5 @@
         _('Add session configuration'),
         _('Remove selected')]
-
-    form_fields = grok.AutoFields(IConfigurationContainer)
-    form_fields['frontpage_html'].for_display = True
+    form_fields = grok.AutoFields(IConfigurationContainer).omit('frontpage_dict')
 
     def update(self):
@@ -638,5 +638,5 @@
         return super(ConfigurationContainerManageFormPage, self).update()
 
-    def frontpage(self):
+    def _frontpage(self):
         view = ConfigurationContainerDisplayFormPage(
             self.context,self.request)
@@ -647,5 +647,5 @@
     def save(self, **data):
         self.applyData(self.context, **data)
-        self.context.frontpage_html = self.frontpage()
+        self.context.frontpage_dict = self._frontpage()
         self.flash(_('Settings have been saved.'))
         return
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/static/waeup-base.css
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/static/waeup-base.css	(revision 7701)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/static/waeup-base.css	(revision 7702)
@@ -104,4 +104,8 @@
 }
 
+textarea {
+  font-family: Courier, "Courier New", monospace;
+}
+
  /* IE doesn't like the footer tag*/
 .footer {
Index: main/waeup.sirp/trunk/src/waeup/sirp/frontpage.rst
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/frontpage.rst	(revision 7701)
+++ main/waeup.sirp/trunk/src/waeup/sirp/frontpage.rst	(revision 7702)
@@ -30,2 +30,34 @@
 
 Text
+
+>>de<<
+Dies ist die Standard-Startseite des Portals. Sie wurde in der Markup-Sprache
+`reStructuredText (reST) <http://docutils.sourceforge.net/docs/user/rst/quickref.html>`_
+geschrieben.
+
+Weitere reST-Beispiele zur Einführung:
+
+1. Überschrift
+==============
+
+Text
+
+1.2 Überschrift
+---------------
+
+Text
+
+2. Überschrift
+==============
+
+Text
+
+2.1 Überschrift
+---------------
+
+Text
+
+2.2 Überschrift
+---------------
+
+Text
Index: main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7701)
+++ main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7702)
@@ -18,4 +18,5 @@
 import os
 import re
+import codecs
 import zope.i18nmessageid
 from datetime import datetime
@@ -44,6 +45,7 @@
 VALIDATED = 'courses validated'
 
-default_frontpage = u'' + open(os.path.join(
-        os.path.dirname(__file__), 'frontpage.rst'), 'rb').read()
+default_frontpage = u'' + codecs.open(os.path.join(
+        os.path.dirname(__file__), 'frontpage.rst'),
+        encoding='utf-8', mode='rb').read()
 
 def SimpleSIRPVocabulary(*terms):
@@ -416,7 +418,8 @@
         )
 
-    frontpage_html = schema.Text(
-        title = u'Content in HTML format',
+    frontpage_dict = schema.Dict(
+        title = u'Content as language dictionary with values in html format',
         required = False,
+        default = {},
         )
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/widgets/restwidget.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/widgets/restwidget.py	(revision 7701)
+++ main/waeup.sirp/trunk/src/waeup/sirp/widgets/restwidget.py	(revision 7702)
@@ -18,6 +18,8 @@
 """A widget that renders restructured text. 
 """
+from zope.component import getUtility
 from zope.formlib.widget import renderElement, DisplayWidget
 from waeup.sirp.utils.helpers import ReST2HTML
+from waeup.sirp.interfaces import ISIRPUtils
 
 
@@ -27,4 +29,13 @@
 
     def __call__(self):
+        """The ReSTDisplayWidget transforms a ReST text string into
+        a dictionary.
+
+        Different languages must be separated by `<<xy>>` whereas
+        xy is the language code. Text parts without correct leading
+        language separator - usually the first part has no language
+        descriptor - are interpreted as texts in the portal's language.
+        The latter can be configured in waeup.srp.utils.utils.SIRPUtils.
+        """
         if self._renderedValueSet():
             value = self._data
@@ -33,4 +44,16 @@
         if value == self.context.missing_value:
             return ""
-        return renderElement(u'div id="rest"',
-                             contents=ReST2HTML(value))
+        parts = value.split('>>')
+        elements = {}
+        lang = getUtility(ISIRPUtils).PORTAL_LANGUAGE
+        for part in parts:
+            if part[2:4] == u'<<':
+                lang = part[0:2].lower()
+                text = part[4:]
+                elements[lang] = renderElement(u'div id="rest"',
+                    contents=ReST2HTML(text))
+            else:
+                text = part
+                elements[lang] = renderElement(u'div id="rest"',
+                    contents=ReST2HTML(text))
+        return elements
