Index: conf/locale/ca/LC_MESSAGES/django.po
===================================================================
--- conf/locale/ca/LC_MESSAGES/django.po	(revision 8093)
+++ conf/locale/ca/LC_MESSAGES/django.po	(working copy)
@@ -501,10 +501,6 @@
 msgid "Action"
 msgstr "Acció"
 
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "F j, Y, H:i "
-
 #: contrib/admin/templates/admin/object_history.html:35
 msgid ""
 "This object doesn't have a change history. It probably wasn't added via this "
@@ -4378,26 +4374,46 @@
 msgid ", %(number)d %(type)s"
 msgstr ", %(number)d %(type)s"
 
-#: utils/translation/trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr "F j, Y"
-
 #: utils/translation/trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr "F j, Y, H:i"
+msgid "LONG_DATE_FORMAT"
+msgstr "l, j \\de N \\de Y"
 
 #: utils/translation/trans_real.py:405
+msgid "SHORT_DATE_FORMAT"
+msgstr "d/m/Y"
+
+#: utils/translation/trans_real.py:406
+msgid "LONG_DATETIME_FORMAT"
+msgstr "l, j \\de N \\de Y, H:i"
+
+#: utils/translation/trans_real.py:407
+msgid "SHORT_DATETIME_FORMAT"
+msgstr "d/m/Y, H:i"
+
+#: utils/translation/trans_real.py:408
 msgid "TIME_FORMAT"
 msgstr "H:i"
 
-#: utils/translation/trans_real.py:421
+#: utils/translation/trans_real.py:409
 msgid "YEAR_MONTH_FORMAT"
-msgstr "j de/d' F del Y"
+msgstr "F \\de Y"
 
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:410
 msgid "MONTH_DAY_FORMAT"
-msgstr "j de/d' F del Y"
+msgstr "j \\de F"
 
+#: utils/translation/trans_real.py:411
+msgid "FIRST_DAY_OF_WEEK"
+msgstr "1"
+
+#: utils/translation/trans_real.py:412
+msgid "DECIMAL_SEPARATOR"
+msgstr ","
+
+#: utils/translation/trans_real.py:413
+msgid "THOUSAND_SEPARATOR"
+msgstr "."
+
 #: views/generic/create_update.py:43
 #, python-format
 msgid "The %(verbose_name)s was created successfully."
Index: conf/locale/ca/LC_MESSAGES/djangojs.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: conf/locale/ca/LC_MESSAGES/django.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: conf/locale/ca/LC_MESSAGES/djangojs.po
===================================================================
--- conf/locale/ca/LC_MESSAGES/djangojs.po	(revision 8093)
+++ conf/locale/ca/LC_MESSAGES/djangojs.po	(working copy)
@@ -57,6 +57,10 @@
 msgid "S M T W T F S"
 msgstr "Dg Dl Dt Dc Dj Dv Ds"
 
+#: contrib/admin/media/js/calendar.js:26
+msgid "FIRST_DAY_OF_WEEK"
+msgstr "1"
+
 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
 msgid "Now"
Index: conf/locale/en/LC_MESSAGES/django.po
===================================================================
--- conf/locale/en/LC_MESSAGES/django.po	(revision 8093)
+++ conf/locale/en/LC_MESSAGES/django.po	(working copy)
@@ -474,10 +474,6 @@
 msgid "Action"
 msgstr ""
 
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
 #: contrib/admin/templates/admin/object_history.html:35
 msgid ""
 "This object doesn't have a change history. It probably wasn't added via this "
@@ -3732,26 +3728,46 @@
 msgid ", %(number)d %(type)s"
 msgstr ""
 
-#: utils/translation/trans_real.py:399
-msgid "DATE_FORMAT"
+#: utils/translation/trans_real.py:405
+msgid "LONG_DATE_FORMAT"
 msgstr "N j, Y"
 
-#: utils/translation/trans_real.py:400
-msgid "DATETIME_FORMAT"
+#: utils/translation/trans_real.py:406
+msgid "SHORT_DATE_FORMAT"
+msgstr "m/d/Y"
+
+#: utils/translation/trans_real.py:407
+msgid "LONG_DATETIME_FORMAT"
 msgstr "N j, Y, P"
 
-#: utils/translation/trans_real.py:401
+#: utils/translation/trans_real.py:408
+msgid "SHORT_DATETIME_FORMAT"
+msgstr "m/d/Y, P"
+
+#: utils/translation/trans_real.py:409
 msgid "TIME_FORMAT"
 msgstr "P"
 
-#: utils/translation/trans_real.py:417
+#: utils/translation/trans_real.py:410
 msgid "YEAR_MONTH_FORMAT"
 msgstr "F Y"
 
-#: utils/translation/trans_real.py:418
+#: utils/translation/trans_real.py:411
 msgid "MONTH_DAY_FORMAT"
 msgstr "F j"
 
+#: utils/translation/trans_real.py:412
+msgid "FIRST_DAY_OF_WEEK"
+msgstr "0"
+
+#: utils/translation/trans_real.py:413
+msgid "DECIMAL_SEPARATOR"
+msgstr ","
+
+#: utils/translation/trans_real.py:414
+msgid "THOUSAND_SEPARATOR"
+msgstr "."
+
 #: views/generic/create_update.py:43
 #, python-format
 msgid "The %(verbose_name)s was created successfully."
Index: conf/locale/en/LC_MESSAGES/djangojs.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: conf/locale/en/LC_MESSAGES/django.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: conf/locale/en/LC_MESSAGES/djangojs.po
===================================================================
--- conf/locale/en/LC_MESSAGES/djangojs.po	(revision 8093)
+++ conf/locale/en/LC_MESSAGES/djangojs.po	(working copy)
@@ -56,6 +56,10 @@
 msgid "S M T W T F S"
 msgstr ""
 
+#: contrib/admin/media/js/calendar.js:26
+msgid "FIRST_DAY_OF_WEEK"
+msgstr "0"
+
 #: contrib/admin/media/js/dateparse.js:33
 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
 msgstr ""
Index: conf/global_settings.py
===================================================================
--- conf/global_settings.py	(revision 8093)
+++ conf/global_settings.py	(working copy)
@@ -249,14 +249,22 @@
 # (i.e. "/tmp" on *nix systems).
 FILE_UPLOAD_TEMP_DIR = None
 
-# Default formatting for date objects. See all available format strings here:
+# Default formatting for long date objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
-DATE_FORMAT = 'N j, Y'
+LONG_DATE_FORMAT = 'N j, Y'
 
-# Default formatting for datetime objects. See all available format strings here:
+# Default formatting for short date objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
-DATETIME_FORMAT = 'N j, Y, P'
+SHORT_DATE_FORMAT = 'm/d/Y'
 
+# Default formatting for long datetime objects. See all available format strings here:
+# http://www.djangoproject.com/documentation/templates/#now
+LONG_DATETIME_FORMAT = 'N j, Y, P'
+
+# Default formatting for short datetime objects. See all available format strings here:
+# http://www.djangoproject.com/documentation/templates/#now
+SHORT_DATETIME_FORMAT = 'm/d/Y P'
+
 # Default formatting for time objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
 TIME_FORMAT = 'P'
@@ -271,6 +279,15 @@
 # http://www.djangoproject.com/documentation/templates/#now
 MONTH_DAY_FORMAT = 'F j'
 
+# Default value for first day of week on calendars. 0 is Sunday, 1 is Monday...
+FIRST_DAY_OF_WEEK = '0'
+
+# Default value used as decimal separator when formatting numbers.
+DECIMAL_SEPARATOR = '.'
+
+# Default value used as thousand separator when formatting numbers.
+THOUSAND_SEPARATOR = ','
+
 # Do you want to manage transactions manually?
 # Hint: you really don't!
 TRANSACTIONS_MANAGED = False
Index: utils/translation/trans_real.py
===================================================================
--- utils/translation/trans_real.py	(revision 8093)
+++ utils/translation/trans_real.py	(working copy)
@@ -4,9 +4,12 @@
 import os
 import re
 import sys
+import decimal
+import datetime
 import gettext as gettext_module
 from cStringIO import StringIO
 
+from django.utils import dateformat
 from django.utils.safestring import mark_safe, SafeData
 from django.utils.thread_support import currentThread
 
@@ -391,38 +394,45 @@
 
     return settings.LANGUAGE_CODE
 
-def get_date_formats():
+def get_formats():
     """
     Checks whether translation files provide a translation for some technical
-    message ID to store date and time formats. If it doesn't contain one, the
+    message ID to store date, time and number formats. If it doesn't contain one, the
     formats provided in the settings will be used.
     """
     from django.conf import settings
-    date_format = ugettext('DATE_FORMAT')
-    datetime_format = ugettext('DATETIME_FORMAT')
-    time_format = ugettext('TIME_FORMAT')
-    if date_format == 'DATE_FORMAT':
-        date_format = settings.DATE_FORMAT
-    if datetime_format == 'DATETIME_FORMAT':
-        datetime_format = settings.DATETIME_FORMAT
-    if time_format == 'TIME_FORMAT':
-        time_format = settings.TIME_FORMAT
-    return date_format, datetime_format, time_format
+    formats = {}
+    formats['LONG_DATE_FORMAT'] = ugettext('LONG_DATE_FORMAT')
+    formats['SHORT_DATE_FORMAT'] = ugettext('SHORT_DATE_FORMAT')
+    formats['LONG_DATETIME_FORMAT'] = ugettext('LONG_DATETIME_FORMAT')
+    formats['SHORT_DATETIME_FORMAT'] = ugettext('SHORT_DATETIME_FORMAT')
+    formats['TIME_FORMAT'] = ugettext('TIME_FORMAT')
+    formats['YEAR_MONTH_FORMAT'] = ugettext('YEAR_MONTH_FORMAT')
+    formats['MONTH_DAY_FORMAT'] = ugettext('MONTH_DAY_FORMAT')
+    formats['FIRST_DAY_OF_WEEK'] = ugettext('FIRST_DAY_OF_WEEK')
+    formats['DECIMAL_SEPARATOR'] = ugettext('DECIMAL_SEPARATOR')
+    formats['THOUSAND_SEPARATOR'] = ugettext('THOUSAND_SEPARATOR')
+    
+    for format_name, format_value in formats.iteritems():
+        if format_name == format_value:
+            formats[format_name] = getattr(settings, format_name)
 
-def get_partial_date_formats():
+    return formats
+
+def i18ize(value):
     """
-    Checks whether translation files provide a translation for some technical
-    message ID to store partial date formats. If it doesn't contain one, the
-    formats provided in the settings will be used.
+    Converts a date/time or decimal number to a string, using the format defined
+    for current locale.
     """
-    from django.conf import settings
-    year_month_format = ugettext('YEAR_MONTH_FORMAT')
-    month_day_format = ugettext('MONTH_DAY_FORMAT')
-    if year_month_format == 'YEAR_MONTH_FORMAT':
-        year_month_format = settings.YEAR_MONTH_FORMAT
-    if month_day_format == 'MONTH_DAY_FORMAT':
-        month_day_format = settings.MONTH_DAY_FORMAT
-    return year_month_format, month_day_format
+    formats = get_formats()
+    if isinstance(value, decimal.Decimal):
+        return str(value).replace('.', formats['DECIMAL_SEPARATOR'])
+    elif isinstance(value, datetime.date):
+        return dateformat.format(value, formats['LONG_DATE_FORMAT'])
+    elif isinstance(value, datetime.datetime):
+        return dateformat.format(value, formats['LONG_DATETIME_FORMAT'])
+    else:
+        return value
 
 dot_re = re.compile(r'\S')
 def blankout(src, char):
Index: utils/translation/__init__.py
===================================================================
--- utils/translation/__init__.py	(revision 8093)
+++ utils/translation/__init__.py	(working copy)
@@ -6,10 +6,9 @@
 
 __all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
         'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
-        'get_language', 'get_language_bidi', 'get_date_formats',
-        'get_partial_date_formats', 'check_for_language', 'to_locale',
-        'get_language_from_request', 'templatize', 'ugettext',
-        'ungettext', 'deactivate_all']
+        'get_language', 'get_language_bidi', 'get_formats', 'i18ize',
+        'check_for_language', 'to_locale', 'get_language_from_request',
+        'templatize', 'ugettext', 'ungettext', 'deactivate_all']
 
 # Here be dragons, so a short explanation of the logic won't hurt:
 # We are trying to solve two problems: (1) access settings, in particular
@@ -81,11 +80,11 @@
 def get_language_bidi():
     return real_get_language_bidi()
 
-def get_date_formats():
-    return real_get_date_formats()
+def get_formats():
+    return real_get_formats()
 
-def get_partial_date_formats():
-    return real_get_partial_date_formats()
+def i18ize(value):
+    return real_i18ize(value)
 
 def check_for_language(lang_code):
     return real_check_for_language(lang_code)
Index: utils/translation/trans_null.py
===================================================================
--- utils/translation/trans_null.py	(revision 8093)
+++ utils/translation/trans_null.py	(working copy)
@@ -18,8 +18,6 @@
 deactivate = deactivate_all = lambda: None
 get_language = lambda: settings.LANGUAGE_CODE
 get_language_bidi = lambda: settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI
-get_date_formats = lambda: (settings.DATE_FORMAT, settings.DATETIME_FORMAT, settings.TIME_FORMAT)
-get_partial_date_formats = lambda: (settings.YEAR_MONTH_FORMAT, settings.MONTH_DAY_FORMAT)
 check_for_language = lambda x: True
 
 TECHNICAL_ID_MAP = {
@@ -51,3 +49,15 @@
 
 def get_language_from_request(request):
     return settings.LANGUAGE_CODE
+
+def get_formats():
+    formats = ('LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT', 'LONG_DATETIME_FORMAT',
+        'SHORT_DATETIME_FORMAT', 'TIME_FORMAT', 'YEAR_MONTH_FORMAT', 'MONTH_DAY_FORMAT',
+        'FIRST_DAY_OF_WEEK', 'DECIMAL_SEPARATOR', 'THOUSAND_SEPARATOR')
+    result = {}
+    for format in formats:
+        result[format] = getattr(settings, format)
+    return result
+
+def i18ize(value):
+    return value
Index: contrib/admin/media/js/calendar.js
===================================================================
--- contrib/admin/media/js/calendar.js	(revision 8093)
+++ contrib/admin/media/js/calendar.js	(working copy)
@@ -25,6 +25,7 @@
 var CalendarNamespace = {
     monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
     daysOfWeek: gettext('S M T W T F S').split(' '),
+    firstDayOfWeek: parseInt(gettext('FIRST_DAY_OF_WEEK').replace('FIRST_DAY_OF_WEEK', '0')),
     isLeapYear: function(year) {
         return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
     },
@@ -56,7 +57,7 @@
         // Draw days-of-week header
         var tableRow = quickElement('tr', tableBody);
         for (var i = 0; i < 7; i++) {
-            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[i]);
+            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
         }
 
         var startingPos = new Date(year, month-1, 1).getDay();
Index: contrib/admin/templatetags/admin_list.py
===================================================================
--- contrib/admin/templatetags/admin_list.py	(revision 8093)
+++ contrib/admin/templatetags/admin_list.py	(working copy)
@@ -7,7 +7,7 @@
 from django.utils.html import escape, conditional_escape
 from django.utils.text import capfirst
 from django.utils.safestring import mark_safe
-from django.utils.translation import get_date_formats, get_partial_date_formats, ugettext as _
+from django.utils.translation import get_formats, ugettext as _
 from django.utils.encoding import smart_unicode, smart_str, force_unicode
 from django.template import Library
 import datetime
@@ -153,6 +153,7 @@
         else:
             field_val = getattr(result, f.attname)
 
+            formats = get_formats()
             if isinstance(f.rel, models.ManyToOneRel):
                 if field_val is not None:
                     result_repr = escape(getattr(result, f.name))
@@ -161,13 +162,12 @@
             # Dates and times are special: They're formatted in a certain way.
             elif isinstance(f, models.DateField) or isinstance(f, models.TimeField):
                 if field_val:
-                    (date_format, datetime_format, time_format) = get_date_formats()
                     if isinstance(f, models.DateTimeField):
-                        result_repr = capfirst(dateformat.format(field_val, datetime_format))
+                        result_repr = capfirst(dateformat.format(field_val, formats['LONG_DATETIME_FORMAT']))
                     elif isinstance(f, models.TimeField):
-                        result_repr = capfirst(dateformat.time_format(field_val, time_format))
+                        result_repr = capfirst(dateformat.time_format(field_val, formats['TIME_FORMAT']))
                     else:
-                        result_repr = capfirst(dateformat.format(field_val, date_format))
+                        result_repr = capfirst(dateformat.format(field_val, formats['LONG_DATE_FORMAT']))
                 else:
                     result_repr = EMPTY_CHANGELIST_VALUE
                 row_class = ' class="nowrap"'
@@ -177,7 +177,7 @@
             # DecimalFields are special: Zero-pad the decimals.
             elif isinstance(f, models.DecimalField):
                 if field_val is not None:
-                    result_repr = ('%%.%sf' % f.decimal_places) % field_val
+                    result_repr = (('%%.%sf' % f.decimal_places) % field_val).replace('.', formats['DECIMAL_SEPARATOR'])
                 else:
                     result_repr = EMPTY_CHANGELIST_VALUE
             # Fields with choices are special: Use the representation
@@ -221,7 +221,7 @@
         year_lookup = cl.params.get(year_field)
         month_lookup = cl.params.get(month_field)
         day_lookup = cl.params.get(day_field)
-        year_month_format, month_day_format = get_partial_date_formats()
+        formats = get_formats()
 
         link = lambda d: mark_safe(cl.get_query_string(d, [field_generic]))
 
@@ -231,9 +231,9 @@
                 'show': True,
                 'back': {
                     'link': link({year_field: year_lookup, month_field: month_lookup}),
-                    'title': dateformat.format(day, year_month_format)
+                    'title': dateformat.format(day, formats['YEAR_MONTH_FORMAT'])
                 },
-                'choices': [{'title': dateformat.format(day, month_day_format)}]
+                'choices': [{'title': dateformat.format(day, formats['MONTH_DAY_FORMAT'])}]
             }
         elif year_lookup and month_lookup:
             days = cl.query_set.filter(**{year_field: year_lookup, month_field: month_lookup}).dates(field_name, 'day')
@@ -245,7 +245,7 @@
                 },
                 'choices': [{
                     'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}),
-                    'title': dateformat.format(day, month_day_format)
+                    'title': dateformat.format(day, formats['MONTH_DAY_FORMAT'])
                 } for day in days]
             }
         elif year_lookup:
@@ -258,7 +258,7 @@
                 },
                 'choices': [{
                     'link': link({year_field: year_lookup, month_field: month.month}),
-                    'title': dateformat.format(month, year_month_format)
+                    'title': dateformat.format(month, formats['YEAR_MONTH_FORMAT'])
                 } for month in months]
             }
         else:
Index: contrib/admin/templates/admin/object_history.html
===================================================================
--- contrib/admin/templates/admin/object_history.html	(revision 8093)
+++ contrib/admin/templates/admin/object_history.html	(working copy)
@@ -21,7 +21,7 @@
         <tbody>
         {% for action in action_list %}
         <tr>
-            <th scope="row">{{ action.action_time|date:_("DATE_WITH_TIME_FULL") }}</th>
+            <th scope="row">{{ action.action_time }}</th>
             <td>{{ action.user.username }}{% if action.user.first_name %} ({{ action.user.first_name }} {{ action.user.last_name }}){% endif %}</td>
             <td>{{ action.change_message }}</td>
         </tr>
Index: contrib/databrowse/datastructures.py
===================================================================
--- contrib/databrowse/datastructures.py	(revision 8093)
+++ contrib/databrowse/datastructures.py	(working copy)
@@ -6,7 +6,7 @@
 from django.db import models
 from django.utils import dateformat
 from django.utils.text import capfirst
-from django.utils.translation import get_date_formats
+from django.utils.translation import get_formats
 from django.utils.encoding import smart_unicode, smart_str, iri_to_uri
 from django.utils.safestring import mark_safe
 from django.db.models.query import QuerySet
@@ -156,13 +156,13 @@
             objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)
         elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):
             if self.raw_value:
-                date_format, datetime_format, time_format = get_date_formats()
+                formats = get_formats()
                 if isinstance(self.field, models.DateTimeField):
-                    objs = capfirst(dateformat.format(self.raw_value, datetime_format))
+                    objs = capfirst(dateformat.format(self.raw_value, formats['DATETIME_FORMAT']))
                 elif isinstance(self.field, models.TimeField):
-                    objs = capfirst(dateformat.time_format(self.raw_value, time_format))
+                    objs = capfirst(dateformat.time_format(self.raw_value, formats['TIME_FORMAT']))
                 else:
-                    objs = capfirst(dateformat.format(self.raw_value, date_format))
+                    objs = capfirst(dateformat.format(self.raw_value, formats['DATE_FORMAT']))
             else:
                 objs = EMPTY_VALUE
         elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
Index: template/__init__.py
===================================================================
--- template/__init__.py	(revision 8093)
+++ template/__init__.py	(working copy)
@@ -56,7 +56,7 @@
 from django.utils.functional import curry, Promise
 from django.utils.text import smart_split
 from django.utils.encoding import smart_unicode, force_unicode
-from django.utils.translation import ugettext as _
+from django.utils.translation import i18ize, ugettext as _
 from django.utils.safestring import SafeData, EscapeData, mark_safe, mark_for_escaping
 from django.utils.html import escape
 
@@ -782,7 +782,9 @@
 
     def render(self, context):
         try:
-            output = force_unicode(self.filter_expression.resolve(context))
+            value = self.filter_expression.resolve(context)
+            i18n_value = i18ize(value)
+            output = force_unicode(i18n_value)
         except UnicodeDecodeError:
             # Unicode conversion can fail sometimes for reasons out of our
             # control (e.g. exception rendering). In that case, we fail quietly.
Index: template/debug.py
===================================================================
--- template/debug.py	(revision 8093)
+++ template/debug.py	(working copy)
@@ -1,3 +1,4 @@
+import decimal, datetime
 from django.template import Lexer, Parser, tag_re, NodeList, VariableNode, TemplateSyntaxError
 from django.utils.encoding import force_unicode
 from django.utils.html import escape
@@ -2,2 +3,3 @@
 from django.utils.safestring import SafeData, EscapeData
+from django.utils.translation import i18ize
 
@@ -84,7 +86,9 @@
 class DebugVariableNode(VariableNode):
     def render(self, context):
         try:
-            output = force_unicode(self.filter_expression.resolve(context))
+            value = self.filter_expression.resolve(context)
+            i18n_value = i18ize(value)
+            output = force_unicode(i18n_value)
         except TemplateSyntaxError, e:
             if not hasattr(e, 'source'):
                 e.source = self.source
