h3. h3. - 11 months ago 319
Python Question

Problems trying to format currency with Python (Django)

I have the following code in Django:

import locale
locale.setlocale( locale.LC_ALL, '' )

def format_currency(i):
return locale.currency(float(i), grouping=True)

It work on some computers in dev mode, but as soon as I try to deploy it on production I get this error:

Exception Type: TemplateSyntaxError
Exception Value: Caught ValueError while rendering: Currency formatting is not possible using the 'C' locale.
Exception Location: /usr/lib/python2.6/locale.py in currency, line 240

The weird thing is that I can do this on the production server and it will work without any errors:

python manage.py shell
>>> import locale
>>> locale.setlocale( locale.LC_ALL, '' )
>>> locale.currency(1, grouping=True)

I .. don't get it.i


On the production server, try

locale.setlocale( locale.LC_ALL, 'en_CA.UTF-8' )

instead of

locale.setlocale( locale.LC_ALL, '' )

When you use '', the locale is set to the user's default (usually specified by the LANG environment variable). On the production server, that appears to be 'C', while as a test user it appears to be 'en_CA.UTF-8'.