Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/browser.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/browser.py	(revision 12361)
@@ -41,4 +41,5 @@
     FriendlyDatetimeDisplayWidget)
 from waeup.ikoba.browser.breadcrumbs import Breadcrumb
+from waeup.ikoba.utils.helpers import html2dict
 from waeup.ikoba.browser.pages import (
     delSubobjects, add_local_role, del_local_roles, msave,
@@ -189,5 +190,10 @@
             if not new:
                del data['options']
-        return msave(self, **data)
+        msave(self, **data)
+        # Save multilingual dict
+        tc = getattr(self.context, 'terms_and_conditions', None)
+        portal_language = getUtility(IIkobaUtils).PORTAL_LANGUAGE
+        self.context.tc_dict = html2dict(tc, portal_language)
+        return 
 
     @action(_('Cancel'), validator=NullValidator)
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py	(revision 12361)
@@ -90,2 +90,10 @@
         show_year = True,
         )
+
+    tc_dict = Attribute('Terms and Conditions as language dictionary with values in html format')
+
+    terms_and_conditions = schema.Text(
+        title = _(u'Terms and Conditions'),
+        required = False,
+        description = _(u'Multilingual content in HTML format'),
+        )
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/product.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/product.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/product.py	(revision 12361)
@@ -45,4 +45,8 @@
         'waeup.local.ProductManager',
         ]
+
+    def __init__(self, *args, **kw):
+        super(Product, self).__init__(*args, **kw)
+        self.tc_dict = {}
 
     @property
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_browser.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_browser.py	(revision 12361)
@@ -193,6 +193,15 @@
         self.assertEqual(self.browser.url, self.manage_product_path)
         self.browser.getControl(name="form.title").value = 'New license'
+        self.browser.getControl(name="form.terms_and_conditions").value = """
+<h1>Hello World</h1>
+>>de<<
+<h1>Hallo Welt</h1>
+"""
         self.browser.getControl("Save").click()
         self.assertEqual(self.app['products']['LIC'].title, 'New license')
+        # tc_dict has been saved
+        self.assertEqual(self.app['products']['LIC'].tc_dict,
+            {'de': u'<div id="html">\n<h1>Hallo Welt</h1>\n</div id="html">',
+             'en': u'<div id="html">\n<h1>Hello World</h1>\n</div id="html">'})
         # Managers can asign local roles
         self.browser.getControl(name="user").value = ['john']
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py	(revision 12361)
@@ -63,6 +63,6 @@
         self.assertTrue(
             'contract_category,contract_title,options,'
-            'product_id,title,valid_from,valid_to,users_with_local_roles\r\n'
-            'license,,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",LIC,Unnamed'
+            'product_id,terms_and_conditions,title,valid_from,valid_to,users_with_local_roles\r\n'
+            'license,,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",LIC,,Unnamed'
             ',2015-12-04#,,"[{\'user_name\': u\'john\', \'local_role\': '
             'u\'johnsrole\'}]"\r\n'
@@ -78,6 +78,6 @@
         self.assertTrue(
             'contract_category,contract_title,options,'
-            'product_id,title,valid_from,valid_to,users_with_local_roles\r\n'
-            'license,,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",LIC,Unnamed'
+            'product_id,terms_and_conditions,title,valid_from,valid_to,users_with_local_roles\r\n'
+            'license,,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",LIC,,Unnamed'
             ',2015-12-04#,,"[{\'user_name\': u\'john\', \'local_role\': '
             'u\'johnsrole\'}]"\r\n'
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/utils/helpers.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/utils/helpers.py	(revision 12360)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/utils/helpers.py	(revision 12361)
@@ -823,5 +823,5 @@
     for part in parts:
         if part[2:4] == u'<<':
-            lang = part[0:2].lower()
+            lang = str(part[0:2].lower())
             text = part[4:]
             elements[lang] = renderElement(u'div id="html"',
