Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser.py	(revision 7718)
@@ -20,4 +20,6 @@
 import grok
 import sys
+from zope.i18n import translate
+from zope.component import getUtility
 from waeup.sirp.browser import (
     SIRPEditFormPage, SIRPAddFormPage, SIRPDisplayFormPage,
@@ -30,11 +32,10 @@
     ManageActionButton, PrimaryNavTab)
 from waeup.sirp.browser.layout import jsaction, action
-from waeup.sirp.interfaces import ISIRPObject
+from waeup.sirp.interfaces import ISIRPObject, ISIRPUtils
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.hostels.vocabularies import NOT_OCCUPIED
 from waeup.sirp.hostels.hostel import Hostel
 from waeup.sirp.hostels.interfaces import (
     IHostelsContainer, IHostel, IBed, IBedAllocateStudent)
-
-from waeup.sirp.interfaces import MessageFactory as _
 
 def write_log_message(view, message):
@@ -51,5 +52,5 @@
     fields_string = ' + '.join(changed_fields)
     view.context._p_changed = True
-    view.flash('Form has been saved.')
+    view.flash(_('Form has been saved.'))
     if fields_string:
         write_log_message(view, 'saved: % s' % fields_string)
@@ -75,5 +76,5 @@
     """
     grok.context(IHostelsContainer)
-    title = u'Hostels'
+    title = _(u'Hostels')
 
 class HostelBreadcrumb(Breadcrumb):
@@ -92,5 +93,6 @@
     def title(self):
         co = self.context.getBedCoordinates()
-        return 'Block %s, Room %s, Bed %s' % (co[1], co[2], co[3])
+        return _('Block ${a}, Room ${b}, Bed ${c}',
+            mapping = {'a':co[1], 'b':co[2], 'c':co[3]})
 
 class HostelsContainerPage(SIRPDisplayFormPage):
@@ -101,5 +103,5 @@
     grok.require('waeup.viewHostels')
     grok.template('containerpage')
-    label = 'Accommodation Section'
+    label = _('Accommodation Section')
     pnav = 5
 
@@ -109,5 +111,5 @@
     grok.view(HostelsContainerPage)
     grok.require('waeup.manageHostels')
-    text = 'Manage accommodation section'
+    text = _('Manage accommodation section')
 
 class HostelsContainerManagePage(SIRPDisplayFormPage):
@@ -119,5 +121,5 @@
     grok.template('containermanagepage')
     pnav = 5
-    label = 'Manage accommodation section'
+    label = _('Manage accommodation section')
 
     def update(self):
@@ -127,5 +129,5 @@
     # It's quite dangerous to remove entire hostels with its content (beds).
     # Thus, this remove method should be combined with an archiving function.
-    @jsaction('Remove selected')
+    @jsaction(_('Remove selected'))
     def delHostels(self, **data):
         form = self.request.form
@@ -141,5 +143,5 @@
         return
 
-    @action('Add hostel', validator=NullValidator)
+    @action(_('Add hostel'), validator=NullValidator)
     def addSubunit(self, **data):
         self.redirect(self.url(self.context, 'addhostel'))
@@ -153,9 +155,9 @@
     grok.name('addhostel')
     #grok.template('hosteladdpage')
-    form_fields = grok.AutoFields(IHostel)
-    label = 'Add hostel'
-    pnav = 5
-
-    @action('Create hostel')
+    form_fields = grok.AutoFields(IHostel).omit('beds_reserved')
+    label = _('Add hostel')
+    pnav = 5
+
+    @action(_('Create hostel'))
     def addHostel(self, **data):
         hostel = Hostel()
@@ -166,7 +168,7 @@
             self.context.addHostel(hostel)
         except KeyError:
-            self.flash('The hostel already exists.')
+            self.flash(_('The hostel already exists.'))
             return
-        self.flash('Hostel created.')
+        self.flash(_('Hostel created.'))
         write_log_message(self, 'added: % s' % data['hostel_name'])
         self.redirect(self.url(self.context[hostel.hostel_id], 'index'))
@@ -191,5 +193,5 @@
     grok.view(HostelDisplayFormPage)
     grok.require('waeup.manageHostels')
-    text = 'Manage'
+    text = _('Manage')
     target = 'manage'
 
@@ -201,11 +203,12 @@
     grok.require('waeup.manageHostels')
     form_fields = grok.AutoFields(IHostel).omit('hostel_id')
+    form_fields['beds_reserved'].for_display = True
     grok.template('hostelmanagepage')
-    label = 'Manage hostel'
-    pnav = 5
-    taboneactions = ['Save']
-    tabtwoactions = ['Update all beds',
-        'Switch reservation of selected beds',
-        'Release selected beds']
+    label = _('Manage hostel')
+    pnav = 5
+    taboneactions = [_('Save')]
+    tabtwoactions = [_('Update all beds'),
+        _('Switch reservation of selected beds'),
+        _('Release selected beds')]
     not_occupied = NOT_OCCUPIED
 
@@ -226,20 +229,24 @@
         return
 
-    @action('Save')
+    @action(_('Save'))
     def save(self, **data):
         msave(self, **data)
         return
 
-    @action('Update all beds')
+    @action(_('Update all beds'))
     def updateBeds(self, **data):
         removed, added, modified, modified_beds = self.context.updateBeds()
         message = '%d empty beds removed, %d beds added, %d occupied beds modified (%s)' % (
             removed, added, modified, modified_beds)
-        self.flash(message)
+        flash_message = _(
+            '${a} empty beds removed, ${b} beds added, '
+            + '${c} occupied beds modified (${d})',
+            mapping = {'a':removed, 'b':added, 'c':modified, 'd':modified_beds})
+        self.flash(flash_message)
         write_log_message(self, message)
         self.redirect(self.url(self.context, '@@manage')+'?tab2')
         return
 
-    @action('Switch reservation of selected beds')
+    @action(_('Switch reservation of selected beds'))
     def switchReservations(self, **data):
         form = self.request.form
@@ -247,27 +254,30 @@
             child_id = form['val_id']
         else:
-            self.flash('No item selected.')
+            self.flash(_('No item selected.'))
             self.redirect(self.url(self.context, '@@manage')+'?tab2')
             return
         if not isinstance(child_id, list):
             child_id = [child_id]
-        switched = []
+        switched = [] # for log file
+        switched_translated = [] # for flash message
+        portal_language = getUtility(ISIRPUtils).PORTAL_LANGUAGE
+        preferred_language = self.request.cookies.get(
+            'sirp.language', portal_language)
         for bed_id in child_id:
-            try:
-                message = self.context[bed_id].switchReservation()
-                switched.append('%s (%s)' % (bed_id,message))
-            except:
-                self.flash('Could not switch %s: %s: %s' % (
-                        id, sys.exc_info()[0], sys.exc_info()[1]))
-                self.redirect(self.url(self.context, '@@manage')+'?tab2')
-                return
+            message = self.context[bed_id].switchReservation()
+            switched.append('%s (%s)' % (bed_id,message))
+            m_translated = translate(message, 'waeup.sirp',
+                target_language=preferred_language)
+            switched_translated.append('%s (%s)' % (bed_id,m_translated))
         if len(switched):
             message = ', '.join(switched)
-            self.flash('Successfully switched beds: %s' % message)
+            m_translated = ', '.join(switched_translated)
+            self.flash(_('Successfully switched beds: ${a}',
+                mapping = {'a':m_translated}))
             write_log_message(self, 'switched: %s' % message)
             self.redirect(self.url(self.context, '@@manage')+'?tab2')
         return
 
-    @action('Release selected beds')
+    @action(_('Release selected beds'))
     def releaseBeds(self, **data):
         form = self.request.form
@@ -275,5 +285,5 @@
             child_id = form['val_id']
         else:
-            self.flash('No item selected.')
+            self.flash(_('No item selected.'))
             self.redirect(self.url(self.context, '@@manage')+'?tab2')
             return
@@ -287,9 +297,10 @@
         if len(released):
             message = ', '.join(released)
-            self.flash('Successfully released beds: %s' % message)
+            self.flash(_('Successfully released beds: ${a}',
+                mapping = {'a':message}))
             write_log_message(self, 'released: %s' % message)
             self.redirect(self.url(self.context, '@@manage')+'?tab2')
         else:
-            self.flash('No allocated bed selected.')
+            self.flash(_('No allocated bed selected.'))
             self.redirect(self.url(self.context, '@@manage')+'?tab2')
         return
@@ -303,8 +314,8 @@
     form_fields = grok.AutoFields(IBedAllocateStudent).omit(
         'bed_id').omit('bed_number').omit('bed_type')
-    label = 'Allocate student'
-    pnav = 5
-
-    @action('Save')
+    label = _('Allocate student')
+    pnav = 5
+
+    @action(_('Save'))
     def save(self, **data):
         msave(self, **data)
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containermanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containermanagepage.pt	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containermanagepage.pt	(revision 7718)
@@ -1,3 +1,5 @@
-<form action="." tal:attributes="action request/URL" method="POST" enctype="multipart/form-data">
+<form action="." tal:attributes="action request/URL"
+    i18n:domain="waeup.sirp"
+    method="POST" enctype="multipart/form-data">
   <table>
     <thead>
@@ -5,7 +7,7 @@
         <th>&nbsp;
         </th>
-        <th>Id
+        <th i18n:translate="">Id
         </th>
-        <th>Name
+        <th i18n:translate="">Name
         </th>
       </tr>
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containerpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containerpage.pt	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/containerpage.pt	(revision 7718)
@@ -1,11 +1,12 @@
-<div tal:condition="python: not len(context.keys())">
+<div i18n:domain="waeup.sirp"
+   i18n:translate="" tal:condition="python: not len(context.keys())">
 There no subobjects registered yet.
 </div>
 
-<table>
+<table i18n:domain="waeup.sirp">
   <thead>
     <tr>
-      <th>Id</th>
-      <th>Name</th>
+      <th i18n:translate="">Id</th>
+      <th i18n:translate="">Name</th>
     </tr>
   </thead>
@@ -13,6 +14,6 @@
     <tr tal:repeat="value context/values">
       <td> <a tal:attributes="href value/__name__">
-          <span tal:content="value/hostel_id">Id</span></a></td>
-      <td tal:content="value/hostel_name">Name</td>
+          <span tal:content="value/hostel_id">ID</span></a></td>
+      <td tal:content="value/hostel_name">NAME</td>
     </tr>
   </tbody>
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/hostelmanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/hostelmanagepage.pt	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/browser_templates/hostelmanagepage.pt	(revision 7718)
@@ -1,8 +1,12 @@
 <form action="." tal:attributes="action request/URL" method="POST"
-      enctype="multipart/form-data">
+      i18n:domain="waeup.sirp" enctype="multipart/form-data">
 
   <ul class="tabs" data-tabs="tabs">
-    <li tal:attributes="class view/tab1"><a href="#tab-1"><span>Hostel Data</span></a></li>
-    <li tal:attributes="class view/tab2"><a href="#tab-2"><span>Beds</span></a></li>
+    <li tal:attributes="class view/tab1"><a href="#tab-1">
+      <span i18n:translate="">Hostel Data</span></a>
+    </li>
+    <li tal:attributes="class view/tab2"><a href="#tab-2">
+      <span i18n:translate="">Beds</span></a>
+    </li>
   </ul>
 
@@ -15,5 +19,5 @@
           <td class="fieldname">
             <span class="required" tal:condition="widget/required">*</span>
-            <span tal:content="widget/label">label</span>:
+            <span tal:content="widget/label">LABEL</span>:
           </td>
           <td>
@@ -22,8 +26,8 @@
             </span>
             <tal:error tal:condition="widget/error">
-              <span tal:replace="structure widget/error">error</span>
+              <span tal:replace="structure widget/error">ERROR</span>
             </tal:error>
             <tal:hint tal:condition="widget/hint">
-              <span tal:content="structure widget/hint">hint</span>
+              <span tal:content="structure widget/hint">HINT</span>
             </tal:hint>
           </td>
@@ -47,8 +51,8 @@
         <tr>
           <th>&nbsp;</th>
-          <th>Id</th>
-          <th>Type</th>
-          <th>Number</th>
-          <th>Owner</th>
+          <th i18n:translate="">Id</th>
+          <th i18n:translate="">Type</th>
+          <th i18n:translate="">Number</th>
+          <th i18n:translate="">Owner</th>
         </tr>
       </thead>
@@ -59,15 +63,16 @@
       		  tal:attributes="value value/__name__" />
           </td>
-          <td tal:content="value/bed_id">Id</td>
-          <td tal:content="value/bed_type">Type</td>
-          <td tal:content="value/bed_number">Number</td>
+          <td tal:content="value/bed_id">ID</td>
+          <td tal:content="value/bed_type">TYPE</td>
+          <td tal:content="value/bed_number">NUMBER</td>
           <td>
             <a tal:condition="python: value.owner != view.not_occupied"
                tal:attributes="href python: '%s/%s/accommodation' %
                     (view.students_url,value.owner)">
-              <span tal:content="value/owner">Owner</span>
+              <span tal:content="value/owner">OWNER</span>
             </a>
             <a tal:condition="python: value.owner == view.not_occupied"
-               tal:attributes="href python: view.url(value)">
+               tal:attributes="href python: view.url(value)"
+               i18n:translate="">
             [allocate student]
             </a>
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/hostel.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/hostel.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/hostel.py	(revision 7718)
@@ -26,4 +26,5 @@
 from waeup.sirp.hostels.interfaces import IHostel, IBed, IBedAllocateStudent
 from waeup.sirp.students.interfaces import IBedTicket
+from waeup.sirp.interfaces import MessageFactory as _
 
 class Hostel(grok.Container):
@@ -159,9 +160,5 @@
                 bt = 're'
             bt = u'%s_%s_%s' % (sh, sex, bt)
-            hostel.beds_reserved.remove(bed_string)
-            message = u'unreserved'
-        else:
-            bt = u'%s_%s_reserved' % (sh, sex)
-            hostel.beds_reserved.append(bed_string)
+
             # Comment of Martijn:
             # If you have a non-Persistent subobject (like a list) and you change it,
@@ -172,6 +169,21 @@
             # (PersistentList, PersistentMapping), and more advanced building blocks
             # for indexes (BTrees), that don't have this issue.
-            hostel._p_changed = True
-            message = u'reserved'
+            #hostel._p_changed = True
+
+            # Henrik: Unfortunately, this doesn't work in our case.
+            # After restarting the portal,
+            # added or removed list items are gone. The only way to ensure
+            # persistance is to reassign the list attribute.
+            br = hostel.beds_reserved
+            br.remove(bed_string)
+            hostel.beds_reserved = br
+            message = _(u'unreserved')
+        else:
+            bt = u'%s_%s_reserved' % (sh, sex)
+            # See comment above
+            br = hostel.beds_reserved
+            br.append(bed_string)
+            hostel.beds_reserved = br
+            message = _(u'reserved')
         self.bed_type = bt
         return message
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/interfaces.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/interfaces.py	(revision 7718)
@@ -19,4 +19,5 @@
 from zope import schema
 from waeup.sirp.interfaces import ISIRPObject
+from waeup.sirp.interfaces import MessageFactory as _
 from waeup.sirp.hostels.vocabularies import (
     bed_letters, blocks, special_handling, StudentSource)
@@ -41,10 +42,10 @@
 
     hostel_id = schema.TextLine(
-        title = u'Hostel Id',
+        title = _(u'Hostel Id'),
         readonly = True,
         )
 
     sort_id = schema.Int(
-        title = u'Sort Id',
+        title = _(u'Sort Id'),
         required = True,
         default = 10,
@@ -52,5 +53,5 @@
 
     hostel_name = schema.TextLine(
-        title = u'Hall Name',
+        title = _(u'Hostel Name'),
         required = True,
         default = u'Hall 1',
@@ -58,5 +59,5 @@
 
     floors_per_block = schema.Int(
-        title = u'Floors per Block',
+        title = _(u'Floors per Block'),
         required = True,
         default = 1,
@@ -64,5 +65,5 @@
 
     rooms_per_floor = schema.Int(
-        title = u'Rooms per Floor',
+        title = _(u'Rooms per Floor'),
         required = True,
         default = 2,
@@ -70,5 +71,5 @@
 
     beds_reserved = schema.List(
-        title = u'Reserved Beds',
+        title = _(u'Reserved Beds'),
         value_type = schema.TextLine(
             default = u'',
@@ -81,5 +82,5 @@
 
     blocks_for_female = schema.List(
-        title = u'Blocks for Female Students',
+        title = _(u'Blocks for Female Students'),
         value_type = schema.Choice(
             vocabulary = blocks
@@ -88,5 +89,5 @@
 
     blocks_for_male = schema.List(
-        title = u'Blocks for Male Students',
+        title = _(u'Blocks for Male Students'),
         value_type = schema.Choice(
             vocabulary = blocks
@@ -95,5 +96,5 @@
 
     beds_for_fresh = schema.List(
-        title = u'Beds for Fresh Students',
+        title = _(u'Beds for Fresh Students'),
         value_type = schema.Choice(
             vocabulary = bed_letters
@@ -102,5 +103,5 @@
 
     beds_for_returning = schema.List(
-        title = u'Beds for Returning Students',
+        title = _(u'Beds for Returning Students'),
         value_type = schema.Choice(
             vocabulary = bed_letters
@@ -109,5 +110,5 @@
 
     beds_for_final = schema.List(
-        title = u'Beds for Final Year Students',
+        title = _(u'Beds for Final Year Students'),
         value_type = schema.Choice(
             vocabulary = bed_letters
@@ -116,5 +117,5 @@
 
     beds_for_all = schema.List(
-        title = u'Beds without category',
+        title = _(u'Beds without category'),
         value_type = schema.Choice(
             vocabulary = bed_letters
@@ -123,5 +124,5 @@
 
     special_handling = schema.Choice(
-        title = u'Special Handling',
+        title = _(u'Special Handling'),
         vocabulary = special_handling,
         required = True,
@@ -134,5 +135,5 @@
         bma = hostel.blocks_for_male
         if set(bfe).intersection(set(bma)):
-            raise Invalid('Female and male blocks overlap.')
+            raise Invalid(_('Female and male blocks overlap.'))
 
     @invariant
@@ -143,5 +144,5 @@
                 hostel.beds_for_all)
         if len(beds) != len(set(beds)):
-            raise Invalid('Bed categories overlap.')
+            raise Invalid(_('Bed categories overlap.'))
 
 class IBed(ISIRPObject):
@@ -166,5 +167,5 @@
 
     bed_id = schema.TextLine(
-        title = u'Bed Id',
+        title = _(u'Bed Id'),
         required = True,
         default = u'',
@@ -172,5 +173,5 @@
 
     bed_type = schema.TextLine(
-        title = u'Bed Type',
+        title = _(u'Bed Type'),
         required = True,
         default = u'',
@@ -178,10 +179,10 @@
 
     bed_number = schema.Int(
-        title = u'Bed Number',
+        title = _(u'Bed Number'),
         required = True,
         )
 
     owner = schema.TextLine(
-        title = u'Owner (Student)',
+        title = _(u'Owner (Student)'),
         required = True,
         default = u'',
@@ -196,5 +197,5 @@
 
     owner = schema.Choice(
-        title = u'Owner (Student)',
+        title = _(u'Owner (Student)'),
         source = StudentSource(),
         default = None,
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py	(revision 7718)
@@ -246,15 +246,5 @@
         assert self.app['hostels']['hall-1'][
             'hall-1_A_101_D'].bed_type == 'regular_female_reserved'
-        expected = 'name="form.beds_reserved.0." size="20" type="text" value="A_101_A"  />'
-        self.assertTrue(expected in self.browser.contents)
-        # Provoke exception
-        self.app['hostels']['hall-1']['hall-1_A_101_D'].bed_type = u'nonsense'
-        ctrl = self.browser.getControl(name='val_id')
-        ctrl.getControl(value='hall-1_A_101_D').selected = True
-        self.browser.getControl("Switch reservation", index=0).click()
-        self.assertMatches(
-            '...need more than 1 value to unpack...', self.browser.contents)
-        self.app['hostels']['hall-1'][
-            'hall-1_A_101_D'].bed_type = u'regular_female_reserved'
+        self.assertTrue('<li>A_101_A</li>' in self.browser.contents)
         # Change hostel configuration
         hall.beds_for_all = ['D']
Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/vocabularies.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/vocabularies.py	(revision 7694)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/vocabularies.py	(revision 7718)
@@ -23,4 +23,5 @@
 from zc.sourcefactory.contextual import BasicContextualSourceFactory
 from waeup.sirp.interfaces import SimpleSIRPVocabulary
+from waeup.sirp.interfaces import MessageFactory as _
 
 NOT_OCCUPIED = u'not occupied'
@@ -54,36 +55,36 @@
 
 bed_letters = SimpleSIRPVocabulary(
-    ('Bed A','A'),
-    ('Bed B','B'),
-    ('Bed C','C'),
-    ('Bed D','D'),
-    ('Bed E','E'),
-    ('Bed F','F'),
-    ('Bed G','G'),
-    ('Bed H','H'),
-    ('Bed I','I'),
+    (_('Bed A'),'A'),
+    (_('Bed B'),'B'),
+    (_('Bed C'),'C'),
+    (_('Bed D'),'D'),
+    (_('Bed E'),'E'),
+    (_('Bed F'),'F'),
+    (_('Bed G'),'G'),
+    (_('Bed H'),'H'),
+    (_('Bed I'),'I'),
     )
 
 blocks = SimpleSIRPVocabulary(
-    ('Block A','A'),
-    ('Block B','B'),
-    ('Block C','C'),
-    ('Block D','D'),
-    ('Block E','E'),
-    ('Block F','F'),
-    ('Block G','G'),
-    ('Block H','H'),
-    ('Block I','I'),
-    ('Block K','K'),
-    ('Block L','L'),
-    ('Block M','M'),
-    ('Block N','N'),
-    ('Block O','O'),
-    ('Block P','P'),
+    (_('Block A'),'A'),
+    (_('Block B'),'B'),
+    (_('Block C'),'C'),
+    (_('Block D'),'D'),
+    (_('Block E'),'E'),
+    (_('Block F'),'F'),
+    (_('Block G'),'G'),
+    (_('Block H'),'H'),
+    (_('Block I'),'I'),
+    (_('Block K'),'K'),
+    (_('Block L'),'L'),
+    (_('Block M'),'M'),
+    (_('Block N'),'N'),
+    (_('Block O'),'O'),
+    (_('Block P'),'P'),
     )
 
 special_handling = SimpleSIRPVocabulary(
-    ('Regular Hostel','regular'),
-    ('Blocked Hostel','blocked'),
-    ('Postgraduate Hostel','pg'),
+    (_('Regular Hostel'),'regular'),
+    (_('Blocked Hostel'),'blocked'),
+    (_('Postgraduate Hostel'),'pg'),
     )
