diff options
| author | Marc Garcia <garcia.marc@gmail.com> | 2009-08-08 15:29:30 +0000 |
|---|---|---|
| committer | Marc Garcia <garcia.marc@gmail.com> | 2009-08-08 15:29:30 +0000 |
| commit | ac70e26bafb47f8a69aa805273724fba29ccc26f (patch) | |
| tree | 3bea1b9bb80609474c53c852bb113e0fef0e63d4 | |
| parent | b6ceeb15958958587df8ee600c026b2251e9c4e0 (diff) | |
[soc2009/i18n] tests improved, and bugs fixed on tests and because of tests
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/i18n-improvements@11414 bcc190cf-cafb-0310-a4f2-bffc1f526a37
57 files changed, 209 insertions, 56 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 540eb0a6de..b21a8cabf1 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # Default Django settings. Override these with settings in the module # pointed-to by the DJANGO_SETTINGS_MODULE environment variable. @@ -75,7 +76,7 @@ LANGUAGES = ( ('lt', gettext_noop('Lithuanian')), ('mk', gettext_noop('Macedonian')), ('nl', gettext_noop('Dutch')), - ('no', gettext_noop('Norwegian')), + ('nb', gettext_noop(u'Norwegian Bokmål')), ('pl', gettext_noop('Polish')), ('pt', gettext_noop('Portuguese')), ('pt-br', gettext_noop('Brazilian Portuguese')), diff --git a/django/conf/locale/ar/formats.py b/django/conf/locale/ar/formats.py index 8a0f54d072..d8d627f820 100644 --- a/django/conf/locale/ar/formats.py +++ b/django/conf/locale/ar/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/bg/formats.py b/django/conf/locale/bg/formats.py index 20bfc826eb..045543a7ac 100644 --- a/django/conf/locale/bg/formats.py +++ b/django/conf/locale/bg/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/bn/formats.py b/django/conf/locale/bn/formats.py index 3d78d5c414..46e5da9392 100644 --- a/django/conf/locale/bn/formats.py +++ b/django/conf/locale/bn/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ca/formats.py b/django/conf/locale/ca/formats.py index aec16aceb2..464882a6ae 100644 --- a/django/conf/locale/ca/formats.py +++ b/django/conf/locale/ca/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/cs/formats.py b/django/conf/locale/cs/formats.py index e8a9626f13..327e77e868 100644 --- a/django/conf/locale/cs/formats.py +++ b/django/conf/locale/cs/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/cy/formats.py b/django/conf/locale/cy/formats.py index 3b6f62a620..a58d81f479 100644 --- a/django/conf/locale/cy/formats.py +++ b/django/conf/locale/cy/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/da/formats.py b/django/conf/locale/da/formats.py index 049103489a..bc80c6d6dd 100644 --- a/django/conf/locale/da/formats.py +++ b/django/conf/locale/da/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/de/formats.py b/django/conf/locale/de/formats.py index 5c038a5598..aab1c86167 100644 --- a/django/conf/locale/de/formats.py +++ b/django/conf/locale/de/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/el/formats.py b/django/conf/locale/el/formats.py index a548ad09c9..d476ab3885 100644 --- a/django/conf/locale/el/formats.py +++ b/django/conf/locale/el/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/en/formats.py b/django/conf/locale/en/formats.py index 3ff8ee4201..3a507cd27e 100644 --- a/django/conf/locale/en/formats.py +++ b/django/conf/locale/en/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/es/formats.py b/django/conf/locale/es/formats.py index 5b2fe92300..349810f0fe 100644 --- a/django/conf/locale/es/formats.py +++ b/django/conf/locale/es/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/es_AR/formats.py b/django/conf/locale/es_AR/formats.py index a66be1f94b..6d71786415 100644 --- a/django/conf/locale/es_AR/formats.py +++ b/django/conf/locale/es_AR/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/et/formats.py b/django/conf/locale/et/formats.py index b7d2255eb7..b96420c0c1 100644 --- a/django/conf/locale/et/formats.py +++ b/django/conf/locale/et/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/eu/formats.py b/django/conf/locale/eu/formats.py index 1838808356..475f924fe8 100644 --- a/django/conf/locale/eu/formats.py +++ b/django/conf/locale/eu/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/fa/formats.py b/django/conf/locale/fa/formats.py index b25864fa9a..dc11281790 100644 --- a/django/conf/locale/fa/formats.py +++ b/django/conf/locale/fa/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/fi/formats.py b/django/conf/locale/fi/formats.py index 964f17c003..670e26841a 100644 --- a/django/conf/locale/fi/formats.py +++ b/django/conf/locale/fi/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/fr/formats.py b/django/conf/locale/fr/formats.py index 2ddbef6173..965f21304d 100644 --- a/django/conf/locale/fr/formats.py +++ b/django/conf/locale/fr/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ga/formats.py b/django/conf/locale/ga/formats.py index 1bab609447..f177bb28d4 100644 --- a/django/conf/locale/ga/formats.py +++ b/django/conf/locale/ga/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/gl/formats.py b/django/conf/locale/gl/formats.py index 58a6f89d07..e0a95d5106 100644 --- a/django/conf/locale/gl/formats.py +++ b/django/conf/locale/gl/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/he/formats.py b/django/conf/locale/he/formats.py index 4d9d34c127..8d7c7f2a4a 100644 --- a/django/conf/locale/he/formats.py +++ b/django/conf/locale/he/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/hi/formats.py b/django/conf/locale/hi/formats.py index a678794bfc..6afa2581b9 100644 --- a/django/conf/locale/hi/formats.py +++ b/django/conf/locale/hi/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/hr/formats.py b/django/conf/locale/hr/formats.py index 05fdb0dc97..62d1a7edf5 100644 --- a/django/conf/locale/hr/formats.py +++ b/django/conf/locale/hr/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/hu/formats.py b/django/conf/locale/hu/formats.py index 3ecb69eeec..6ee2db0cd5 100644 --- a/django/conf/locale/hu/formats.py +++ b/django/conf/locale/hu/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/is/formats.py b/django/conf/locale/is/formats.py index bcff36bdd6..b6377db40b 100644 --- a/django/conf/locale/is/formats.py +++ b/django/conf/locale/is/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/it/formats.py b/django/conf/locale/it/formats.py index 150738be18..fe86b5bd70 100644 --- a/django/conf/locale/it/formats.py +++ b/django/conf/locale/it/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ja/formats.py b/django/conf/locale/ja/formats.py index ab446214e6..853056d8da 100644 --- a/django/conf/locale/ja/formats.py +++ b/django/conf/locale/ja/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ka/formats.py b/django/conf/locale/ka/formats.py index 59c9e20b69..da37b4d06f 100644 --- a/django/conf/locale/ka/formats.py +++ b/django/conf/locale/ka/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/km/formats.py b/django/conf/locale/km/formats.py index f1ab00740a..3736d574fb 100644 --- a/django/conf/locale/km/formats.py +++ b/django/conf/locale/km/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/kn/formats.py b/django/conf/locale/kn/formats.py index 9e934ddfda..fa7a7b9546 100644 --- a/django/conf/locale/kn/formats.py +++ b/django/conf/locale/kn/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ko/formats.py b/django/conf/locale/ko/formats.py index b4bc8a8cc0..51986c7910 100644 --- a/django/conf/locale/ko/formats.py +++ b/django/conf/locale/ko/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/lt/formats.py b/django/conf/locale/lt/formats.py index 17536830d7..d9fb0c86f7 100644 --- a/django/conf/locale/lt/formats.py +++ b/django/conf/locale/lt/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/lv/formats.py b/django/conf/locale/lv/formats.py index 4e47c680d6..5dc211cfc0 100644 --- a/django/conf/locale/lv/formats.py +++ b/django/conf/locale/lv/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/mk/formats.py b/django/conf/locale/mk/formats.py index 210a686a18..746ac0ea9f 100644 --- a/django/conf/locale/mk/formats.py +++ b/django/conf/locale/mk/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/nb/formats.py b/django/conf/locale/nb/formats.py index e64a606d19..5896a7fff1 100644 --- a/django/conf/locale/nb/formats.py +++ b/django/conf/locale/nb/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/nl/formats.py b/django/conf/locale/nl/formats.py index c3feb3ed27..3fdf4d631a 100644 --- a/django/conf/locale/nl/formats.py +++ b/django/conf/locale/nl/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/pl/formats.py b/django/conf/locale/pl/formats.py index 54db5039dc..860a4a88ca 100644 --- a/django/conf/locale/pl/formats.py +++ b/django/conf/locale/pl/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/pt/formats.py b/django/conf/locale/pt/formats.py index f9513efb49..053a48af53 100644 --- a/django/conf/locale/pt/formats.py +++ b/django/conf/locale/pt/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/pt_BR/formats.py b/django/conf/locale/pt_BR/formats.py index 14653031ff..f30d5c4dfc 100644 --- a/django/conf/locale/pt_BR/formats.py +++ b/django/conf/locale/pt_BR/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ro/formats.py b/django/conf/locale/ro/formats.py index d80371ef85..6d6e800467 100644 --- a/django/conf/locale/ro/formats.py +++ b/django/conf/locale/ro/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ru/formats.py b/django/conf/locale/ru/formats.py index bf76c22056..9a9ee96561 100644 --- a/django/conf/locale/ru/formats.py +++ b/django/conf/locale/ru/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/sk/formats.py b/django/conf/locale/sk/formats.py index 425e8cf82d..1bc3549dcf 100644 --- a/django/conf/locale/sk/formats.py +++ b/django/conf/locale/sk/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/sl/formats.py b/django/conf/locale/sl/formats.py index 0537637be2..4007f10707 100644 --- a/django/conf/locale/sl/formats.py +++ b/django/conf/locale/sl/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/sr/formats.py b/django/conf/locale/sr/formats.py index 68f5993e15..b1aaa77deb 100644 --- a/django/conf/locale/sr/formats.py +++ b/django/conf/locale/sr/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/sr_Latn/formats.py b/django/conf/locale/sr_Latn/formats.py index a66be1f94b..6d71786415 100644 --- a/django/conf/locale/sr_Latn/formats.py +++ b/django/conf/locale/sr_Latn/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/sv/formats.py b/django/conf/locale/sv/formats.py index 4f75056583..df4e633562 100644 --- a/django/conf/locale/sv/formats.py +++ b/django/conf/locale/sv/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/ta/formats.py b/django/conf/locale/ta/formats.py index 85b9e49437..69fa17df33 100644 --- a/django/conf/locale/ta/formats.py +++ b/django/conf/locale/ta/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/te/formats.py b/django/conf/locale/te/formats.py index 5d3c384c48..e805872d52 100644 --- a/django/conf/locale/te/formats.py +++ b/django/conf/locale/te/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/th/formats.py b/django/conf/locale/th/formats.py index 3ab3661fd3..7091dc6b98 100644 --- a/django/conf/locale/th/formats.py +++ b/django/conf/locale/th/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/tr/formats.py b/django/conf/locale/tr/formats.py index 57b4e5605b..b97878865b 100644 --- a/django/conf/locale/tr/formats.py +++ b/django/conf/locale/tr/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/uk/formats.py b/django/conf/locale/uk/formats.py index 918062b79a..8e41bf020d 100644 --- a/django/conf/locale/uk/formats.py +++ b/django/conf/locale/uk/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/zh_CN/formats.py b/django/conf/locale/zh_CN/formats.py index a66be1f94b..6d71786415 100644 --- a/django/conf/locale/zh_CN/formats.py +++ b/django/conf/locale/zh_CN/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/conf/locale/zh_TW/formats.py b/django/conf/locale/zh_TW/formats.py index a66be1f94b..6d71786415 100644 --- a/django/conf/locale/zh_TW/formats.py +++ b/django/conf/locale/zh_TW/formats.py @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # This file is distributed under the same license as the Django package. # diff --git a/django/core/management/commands/importcldr.py b/django/core/management/commands/importcldr.py index ab8bd079bf..c4a13e6238 100644 --- a/django/core/management/commands/importcldr.py +++ b/django/core/management/commands/importcldr.py @@ -11,7 +11,8 @@ except ImportError: raise CommandError('You need to install `python-lxml` to run this script') FORMATS_FILE_NAME = 'formats.py' -FORMATS_FILE_HEADER = '''# This file is distributed under the same license as the Django package. +FORMATS_FILE_HEADER = '''# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. # ''' diff --git a/django/forms/fields.py b/django/forms/fields.py index b4f454dd40..c9a069edfd 100644 --- a/django/forms/fields.py +++ b/django/forms/fields.py @@ -210,7 +210,8 @@ class FloatField(Field): return None try: # We always accept dot as decimal separator - value = float(value.replace(getformat('DECIMAL_SEPARATOR'), '.')) + if isinstance(value, str) or isinstance(value, unicode): + value = float(value.replace(getformat('DECIMAL_SEPARATOR'), '.')) except (ValueError, TypeError): raise ValidationError(self.error_messages['invalid']) if self.max_value is not None and value > self.max_value: @@ -247,7 +248,8 @@ class DecimalField(Field): value = smart_str(value).strip() try: # We always accept dot as decimal separator - value = Decimal(value.replace(getformat('DECIMAL_SEPARATOR'), '.')) + if isinstance(value, str) or isinstance(value, unicode): + value = Decimal(value.replace(getformat('DECIMAL_SEPARATOR'), '.')) except DecimalException: raise ValidationError(self.error_messages['invalid']) diff --git a/django/views/i18n.py b/django/views/i18n.py index e70cd3eca3..4a19e4b31c 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -208,7 +208,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): for k, v in pdict.items(): src.append("catalog['%s'] = [%s];\n" % (javascript_quote(k), ','.join(["''"]*(v+1)))) for k, v in get_formats().items(): - src.append("catalog['%s'] = '%s';\n" % (javascript_quote(k), javascript_quote(unicode(v)))) + src.append("catalog['%s'] = '%s';\n" % (javascript_quote(k), javascript_quote(unicode(v)).encode('utf-8'))) src.extend(csrc) src.append(LibFoot) src.append(InterPolate) diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index 0ec72dc440..eb19e7f4d3 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -69,11 +69,17 @@ Localization of dates and numbers >>> import datetime >>> import decimal +>>> from django.conf import settings >>> from django.utils.formats import getformat, date_format, number_format, localize +>>> from django.utils.numberformat import format >>> from django import template >>> from django import forms >>> from django.forms.extras import SelectDateWidget +>>> old_use_i18n = settings.USE_I18N +>>> old_use_format_i18n = settings.USE_FORMAT_I18N +>>> old_use_thousand_separator = settings.USE_THOUSAND_SEPARATOR + >>> n = decimal.Decimal('66666.666') >>> f = 99999.999 >>> d = datetime.date(2009, 12, 31) @@ -88,14 +94,23 @@ Localization of dates and numbers Locale independent ->>> number_format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') -'66,666.66' ->>> number_format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') -'6B6B6B6B6BA6' +>>> settings.USE_FORMAT_I18N = True +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') +u'66666.66' +>>> format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') +u'66666A6' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> format(n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=',') +u'66,666.66' +>>> format(n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B') +u'6B6B6B6B6A6' -English locale +Catalan locale with format i18n disabled +translations will be used, but not formats ->>> activate('en') +>>> settings.USE_FORMAT_I18N = False +>>> activate('ca') >>> getformat('DATE_FORMAT') 'N j, Y' >>> getformat('FIRST_DAY_OF_WEEK') @@ -103,40 +118,102 @@ English locale >>> getformat('DECIMAL_SEPARATOR') '.' >>> date_format(d) -'December 31, 2009' +u'des. 31, 2009' >>> date_format(d, 'YEAR_MONTH_FORMAT') -'December 2009' ->>> date_format(d, 'SHORT_DATETIME_FORMAT') -'12/31/2009 8:50 p.m.' +u'desembre 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'12/31/2009 8:50 p.m.' >>> localize('No localizable') 'No localizable' >>> localize(n) -'66666.666' +Decimal('66666.666') >>> localize(f) -'99999.999' +99999.999 >>> localize(d) -'December 31, 2009' +datetime.date(2009, 12, 31) >>> localize(dt) -'December 31, 2009, 8:50 p.m.' +datetime.datetime(2009, 12, 31, 20, 50) >>> template.Template('{{ n }}').render(ctxt) -'66666.666' +u'66666.666' >>> template.Template('{{ f }}').render(ctxt) -'99999.999' +u'99999.999' >>> template.Template('{{ d }}').render(ctxt) -'December 31, 2009' +u'desembre 31, 2009' >>> template.Template('{{ dt }}').render(ctxt) -'December 31, 2009, 8:50 p.m.' +u'desembre 31, 2009, 8:50 p.m.' >>> template.Template('{{ n|floatformat:2 }}').render(ctxt) -'66666.66' +u'66666.67' >>> template.Template('{{ f|floatformat }}').render(ctxt) -'99999.9' +u'100000.0' >>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) -'12/31/2009' +u'12/31/2009' >>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) -'12/31/2009 8:50 p.m.' ->>> form = I18nForm({'decimal_field': u'66666.666', 'float_field': u'99999.999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +u'12/31/2009 8:50 p.m.' +>>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +False +>>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) +u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>' + +Catalan locale + +>>> settings.USE_FORMAT_I18N = True +>>> activate('ca') +>>> getformat('DATE_FORMAT') +'j \de N \de Y' +>>> getformat('FIRST_DAY_OF_WEEK') +1 +>>> getformat('DECIMAL_SEPARATOR') +',' +>>> date_format(d) +u'31 de desembre de 2009' +>>> date_format(d, 'YEAR_MONTH_FORMAT') +u'desembre de 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'31/12/2009 20:50' +>>> localize('No localizable') +'No localizable' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> localize(n) +u'66.666,666' +>>> localize(f) +u'99.999,999' +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> localize(n) +u'66666,666' +>>> localize(f) +u'99999,999' +>>> localize(d) +u'31 de desembre de 2009' +>>> localize(dt) +u'31 de desembre de 2009 a les 20:50' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> template.Template('{{ n }}').render(ctxt) +u'66.666,666' +>>> template.Template('{{ f }}').render(ctxt) +u'99.999,999' +>>> settings.USE_THOUSAND_SEPARATOR = False +>>> template.Template('{{ n }}').render(ctxt) +u'66666,666' +>>> template.Template('{{ f }}').render(ctxt) +u'99999,999' +>>> template.Template('{{ d }}').render(ctxt) +u'31 de desembre de 2009' +>>> template.Template('{{ dt }}').render(ctxt) +u'31 de desembre de 2009 a les 20:50' +>>> template.Template('{{ n|floatformat:2 }}').render(ctxt) +u'66666,67' +>>> template.Template('{{ f|floatformat }}').render(ctxt) +u'100000,0' +>>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) +u'31/12/2009' +>>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) +u'31/12/2009 20:50' +>>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'31/12/2009', 'datetime_field': u'31/12/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +True >>> form.cleaned_data['decimal_field'] -decimal.Decimal('66666.666') +Decimal('66666.666') >>> form.cleaned_data['float_field'] 99999.999 >>> form.cleaned_data['date_field'] @@ -146,54 +223,67 @@ datetime.datetime(2009, 12, 31, 20, 50) >>> form.cleaned_data['time_field'] datetime.time(20, 50) >>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) -u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>' +u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>' -Catalan locale +English locale ->>> activate('ca') +>>> settings.USE_FORMAT_I18N = True +>>> activate('en') >>> getformat('DATE_FORMAT') -'j \de N \de Y' +'N j, Y' >>> getformat('FIRST_DAY_OF_WEEK') -1 +0 >>> getformat('DECIMAL_SEPARATOR') -',' +'.' >>> date_format(d) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> date_format(d, 'YEAR_MONTH_FORMAT') -'desembre de 2009' ->>> date_format(d, 'SHORT_DATETIME_FORMAT') -'31/12/2009 20:50' +u'December 2009' +>>> date_format(dt, 'SHORT_DATETIME_FORMAT') +u'12/31/2009 8:50 p.m.' >>> localize('No localizable') 'No localizable' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> localize(n) +u'66,666.666' +>>> localize(f) +u'99,999.999' +>>> settings.USE_THOUSAND_SEPARATOR = False >>> localize(n) -'66.666,666' +u'66666.666' >>> localize(f) -'99.999,999' +u'99999.999' >>> localize(d) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> localize(dt) -'31 de desembre de 2009 a les 20:50' ->>> tplt.render(ctxt) -'66.666,666 # 99.999,999 # 6 de juliol de 2009 # 6 de juliol de 2009 a les 20:50' +u'Dec. 31, 2009, 8:50 p.m.' +>>> settings.USE_THOUSAND_SEPARATOR = True +>>> template.Template('{{ n }}').render(ctxt) +u'66,666.666' +>>> template.Template('{{ f }}').render(ctxt) +u'99,999.999' +>>> settings.USE_THOUSAND_SEPARATOR = False >>> template.Template('{{ n }}').render(ctxt) -'66666,666' +u'66666.666' >>> template.Template('{{ f }}').render(ctxt) -'99999,999' +u'99999.999' >>> template.Template('{{ d }}').render(ctxt) -'31 de desembre de 2009' +u'Dec. 31, 2009' >>> template.Template('{{ dt }}').render(ctxt) -'31 de desembre de 2009 a les 20:50' +u'Dec. 31, 2009, 8:50 p.m.' >>> template.Template('{{ n|floatformat:2 }}').render(ctxt) -'66666,66' +u'66666.67' >>> template.Template('{{ f|floatformat }}').render(ctxt) -'99999,9' +u'100000.0' >>> template.Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(ctxt) -'31/12/2009' +u'12/31/2009' >>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt) -'31/12/2009 20:50' ->>> form = I18nForm({'decimal_field': u'66666,666', 'float_field': u'99999,999', 'date_field': u'31/12/2009', 'datetime_field': u'31/12/2009 20:50', 'time_field': u'20:50'}) +u'12/31/2009 8:50 p.m.' +>>> form = I18nForm({'decimal_field': u'66666.666', 'float_field': u'99999.999', 'date_field': u'12/31/2009', 'datetime_field': u'12/31/2009 20:50', 'time_field': u'20:50'}) +>>> form.is_valid() +True >>> form.cleaned_data['decimal_field'] -decimal.Decimal('66666.666') +Decimal('66666.666') >>> form.cleaned_data['float_field'] 99999.999 >>> form.cleaned_data['date_field'] @@ -203,7 +293,14 @@ datetime.datetime(2009, 12, 31, 20, 50) >>> form.cleaned_data['time_field'] datetime.time(20, 50) >>> SelectDateWidget().render('mydate', datetime.date(2009, 12, 31)) -u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>' +u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>' + +Restore defaults + +>>> settings.USE_I18N = old_use_i18n +>>> settings.USE_FORMAT_I18N = old_use_format_i18n +>>> settings.USE_THOUSAND_SEPARATOR = old_use_thousand_separator +>>> deactivate() """ |
