Index: main/waeup.custom/trunk/buildout.cfg
===================================================================
--- main/waeup.custom/trunk/buildout.cfg	(revision 7621)
+++ main/waeup.custom/trunk/buildout.cfg	(revision 7695)
@@ -54,5 +54,5 @@
 zope.xmlpickle = 3.4.0
 # Require latest version...
-Sphinx =
+Sphinx = 1.0.7
 ZODB3 = 3.10.3
 docutils = 0.7
@@ -62,5 +62,5 @@
 # This creates all scripts in bin/. The sirpctl created here is 'faulty'.
 recipe = zc.recipe.egg
-eggs = waeup.custom
+eggs = waeup.custom [beaker]
        z3c.evalexception>=2.0
        Paste
@@ -74,5 +74,5 @@
 # fixed path to zdaemon.conf as argument.
 recipe = zc.recipe.egg
-eggs = waeup.custom
+eggs = waeup.custom [beaker]
 arguments = "${buildout:parts-directory}/etc/zdaemon.conf"
 scripts = sirpctl=sirpctl
@@ -89,8 +89,8 @@
 [test]
 recipe = zc.recipe.testrunner
-eggs = waeup.custom [test]
+eggs = waeup.custom [beaker, test]
 defaults = ['--tests-pattern', '^f?tests$', '-v']
 
-# this section named so that the i18n scripts are called bin/i18n...
+# This section named so that the i18n scripts are called bin/i18n...
 [i18n]
 recipe = z3c.recipe.i18n:i18n
@@ -164,5 +164,5 @@
 [coverage-detect]
 recipe = zc.recipe.testrunner
-eggs = waeup.custom
+eggs = waeup.custom[beaker]
 defaults = ['--tests-pattern', '^f?tests$', '-v', '--coverage', 'coverage']
 
Index: main/waeup.custom/trunk/setup.py
===================================================================
--- main/waeup.custom/trunk/setup.py	(revision 7621)
+++ main/waeup.custom/trunk/setup.py	(revision 7695)
@@ -11,4 +11,13 @@
     'waeup.sirp',
     ],
+
+# Having beaker installed additionally is a feature very recommended
+# for production use. The default buildout includes beaker for tests,
+# start scripts, and other parts that can benefit from it. The windows
+# buildout does not include it due to compiling problems with the
+# beaker package.
+beaker_require = [
+    'dolmen.beaker',
+    ]
 
 tests_require = [
@@ -75,4 +84,5 @@
         test = tests_require,
         docs = docs_require,
+        beaker = beaker_require,
         ),
       entry_points="""
Index: main/waeup.custom/trunk/src/waeup/custom/browser/theming.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/browser/theming.py	(revision 7621)
+++ main/waeup.custom/trunk/src/waeup/custom/browser/theming.py	(revision 7695)
@@ -20,4 +20,6 @@
 from waeup.custom.browser.resources import custom_theme_1
 
+from waeup.custom.interfaces import MessageFactory as _
+
 class CustomTheme1(grok.GlobalUtility):
     """A custom theme based on the SIRP base theme.
@@ -26,5 +28,5 @@
     grok.name('custom theme 1')
 
-    description = u'Custom Theme 1'
+    description = _(u'Custom Theme 1')
 
     def getResources(self):
Index: main/waeup.custom/trunk/src/waeup/custom/configure.zcml
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/configure.zcml	(revision 7621)
+++ main/waeup.custom/trunk/src/waeup/custom/configure.zcml	(revision 7695)
@@ -1,5 +1,7 @@
 <configure xmlns="http://namespaces.zope.org/zope"
-           xmlns:grok="http://namespaces.zope.org/grok">
+           xmlns:grok="http://namespaces.zope.org/grok"
+           xmlns:i18n="http://namespaces.zope.org/i18n">
   <include package="grok" />
+  <i18n:registerTranslations directory="locales" />
   <includeOverrides package="waeup.custom" file="overrides.zcml" />
 </configure>
Index: main/waeup.custom/trunk/src/waeup/custom/interfaces.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/interfaces.py	(revision 7621)
+++ main/waeup.custom/trunk/src/waeup/custom/interfaces.py	(revision 7695)
@@ -16,7 +16,11 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##
+
+import zope.i18nmessageid
 from zope import schema
 from waeup.sirp.interfaces import (
     ISessionConfiguration, academic_sessions_vocab)
+
+_ = MessageFactory = zope.i18nmessageid.MessageFactory('waeup.custom')
 
 # It's recommended to replicate all fields from the base package here.
@@ -26,45 +30,45 @@
 
     school_fee_base = schema.Int(
-        title = u'School Fee (ignored)',
+        title = _(u'School Fee (ignored)'),
         default = 0,
         )
 
     surcharge_1 = schema.Int(
-        title = u'Surcharge BT',
+        title = _(u'Surcharge BT'),
         default = 0,
         )
 
     surcharge_2 = schema.Int(
-        title = u'Surcharge Interswitch',
+        title = _(u'Surcharge Interswitch'),
         default = 0,
         )
 
     surcharge_3 = schema.Int(
-        title = u'Surcharge 3',
+        title = _(u'Surcharge 3'),
         default = 0,
         )
 
     clearance = schema.Int(
-        title = u'Clearance Fee',
+        title = _(u'Clearance Fee'),
         default = 0,
         )
 
     booking_fee = schema.Int(
-        title = u'Booking Fee',
+        title = _(u'Booking Fee'),
         default = 0,
         )
 
     maint_fee = schema.Int(
-        title = u'Maintenance Fee',
+        title = _(u'Maintenance Fee'),
         default = 0,
         )
 
     gown = schema.Int(
-        title = u'Gown Fee',
+        title = _(u'Gown Fee'),
         default = 0,
         )
 
     transfer = schema.Int(
-        title = u'Transfer Fee',
+        title = _(u'Transfer Fee'),
         default = 0,
         )
@@ -80,5 +84,5 @@
 
     academic_session = schema.Choice(
-        title = u'Academic Session',
+        title = _(u'Academic Session'),
         source = academic_sessions_vocab,
         default = None,
Index: main/waeup.custom/trunk/src/waeup/custom/utils/utils.py
===================================================================
--- main/waeup.custom/trunk/src/waeup/custom/utils/utils.py	(revision 7621)
+++ main/waeup.custom/trunk/src/waeup/custom/utils/utils.py	(revision 7695)
@@ -25,2 +25,3 @@
     """A collection of methods subject to customization.
     """
+    PORTAL_LANGUAGE = 'en'
