Index: django/conf/locale/uk/formats.py
===================================================================
--- django/conf/locale/uk/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/uk/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y р.'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/uk/__init__.py
===================================================================
Index: django/conf/locale/da/formats.py
===================================================================
--- django/conf/locale/da/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/da/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'H:i'
+DATETIME_FORMAT = 'j. F Y H:i'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
+FIRST_DAY_OF_WEEK = 1
+DATE_INPUT_FORMATS = (
+    '%d.%m.%Y', 			# '25.10.2006'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     			# '14:30:59'
+    '%H:%M',        			# '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%d.%m.%Y %H:%M:%S',     		# '25.10.2006 14:30:59'
+    '%d.%m.%Y %H:%M',    	    	# '25.10.2006 14:30'
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
Index: django/conf/locale/da/__init__.py
===================================================================
Index: django/conf/locale/sr/formats.py
===================================================================
--- django/conf/locale/sr/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/sr/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd. F Y.'
+TIME_FORMAT = 'H.i.s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'Y F'
+MONTH_DAY_FORMAT = 'F j.'
+SHORT_DATE_FORMAT = 'd.m.Y.'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/sr/__init__.py
===================================================================
Index: django/conf/locale/__init__.py
===================================================================
Index: django/conf/locale/fa/formats.py
===================================================================
--- django/conf/locale/fa/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/fa/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'G:i:s'
+DATETIME_FORMAT = 'j F Y، ساعت G:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'Y/n/j'
+SHORT_DATETIME_FORMAT = 'Y/n/j،‏ G:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/fa/__init__.py
===================================================================
Index: django/conf/locale/bg/formats.py
===================================================================
--- django/conf/locale/bg/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/bg/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/bg/__init__.py
===================================================================
Index: django/conf/locale/de/formats.py
===================================================================
--- django/conf/locale/de/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/de/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'H:i:s'
+DATETIME_FORMAT = 'j. F Y H:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+SHORT_DATETIME_FORMAT = 'd.m.Y H:i:s'
+FIRST_DAY_OF_WEEK = 1 # Monday
+DATE_INPUT_FORMATS = (
+    '%d.%m.%Y', '%d.%m.%y',     # '25.10.2006', '25.10.06'
+    '%Y-%m-%d', '%y-%m-%d',     # '2006-10-25', '06-10-25'
+    '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S', # '14:30:59'
+    '%H:%M',    # '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%d.%m.%Y %H:%M:%S',    # '25.10.2006 14:30:59'
+    '%d.%m.%Y %H:%M',       # '25.10.2006 14:30'
+    '%d.%m.%Y',             # '25.10.2006'
+    '%Y-%m-%d %H:%M:%S',    # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',       # '2006-10-25 14:30'
+    '%Y-%m-%d',             # '2006-10-25'
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
Index: django/conf/locale/de/__init__.py
===================================================================
Index: django/conf/locale/sv/formats.py
===================================================================
--- django/conf/locale/sv/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/sv/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'H.i.s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'Y F'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/sv/__init__.py
===================================================================
Index: django/conf/locale/es_AR/formats.py
===================================================================
--- django/conf/locale/es_AR/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/es_AR/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+# DATE_FORMAT = 
+# TIME_FORMAT = 
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+# SHORT_DATE_FORMAT = 
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/es_AR/__init__.py
===================================================================
Index: django/conf/locale/ja/formats.py
===================================================================
--- django/conf/locale/ja/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ja/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Y年n月j日'
+TIME_FORMAT = 'G:i:s'
+DATETIME_FORMAT = 'Y年n月j日G:i:s'
+YEAR_MONTH_FORMAT = 'Y年n月'
+MONTH_DAY_FORMAT = 'n月j日'
+SHORT_DATE_FORMAT = 'Y/m/d'
+SHORT_DATETIME_FORMAT = 'Y/m/d G:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/ja/__init__.py
===================================================================
Index: django/conf/locale/he/formats.py
===================================================================
--- django/conf/locale/he/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/he/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j בF Y'
+TIME_FORMAT = 'H:i:s'
+DATETIME_FORMAT = 'j בF Y H:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j בF'
+SHORT_DATE_FORMAT = 'd/m/Y'
+SHORT_DATETIME_FORMAT = 'd/m/Y H:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/he/__init__.py
===================================================================
Index: django/conf/locale/fi/formats.py
===================================================================
--- django/conf/locale/fi/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/fi/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'G.i.s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j.n.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/fi/__init__.py
===================================================================
Index: django/conf/locale/bn/formats.py
===================================================================
--- django/conf/locale/bn/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/bn/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F, Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M, Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/bn/__init__.py
===================================================================
Index: django/conf/locale/nb/formats.py
===================================================================
--- django/conf/locale/nb/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/nb/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,38 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'H:i'
+DATETIME_FORMAT = 'j. F Y H:i'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
+FIRST_DAY_OF_WEEK = 1 # Monday
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%j.%m.%Y', '%j.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
+    '%Y-%m-%j',                         # '2006-10-25', 
+    '%j. %b %Y', '%j %b %Y',            # '25. okt 2006', '25 okt 2006'
+    '%j. %b. %Y', '%j %b. %Y',          # '25. okt. 2006', '25 okt. 2006'
+    '%j. %B %Y', '%j %B %Y',            # '25. oktober 2006', '25 oktober 2006'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%i:%S',     # '14:30:59'
+    '%H:%i',     # '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%i:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%i',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%Y-%m-%j',              # '2006-10-25'
+    '%j.%m.%Y %H:%i:%S',     # '25.10.2006 14:30:59'
+    '%j.%m.%Y %H:%i',        # '25.10.2006 14:30'
+    '%j.%m.%Y',              # '25.10.2006'
+    '%j.%m.%y %H:%i:%S',     # '25.10.06 14:30:59'
+    '%j.%m.%y %H:%i',        # '25.10.06 14:30'
+    '%j.%m.%y',              # '25.10.06'
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+NUMBER_GROUPING = 3
\ No newline at end of file
Index: django/conf/locale/nb/LC_MESSAGES/django.po
===================================================================
--- django/conf/locale/nb/LC_MESSAGES/django.po	(.../trunk)	(revision 0)
+++ django/conf/locale/nb/LC_MESSAGES/django.po	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,4410 @@
+# translation of django.po to norwegian
+# Copyright (C) 2005 and beyond
+# This file is distributed under the same license as the Django package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-16 10:12+0200\n"
+"PO-Revision-Date: 2009-07-24 15:44+0200\n"
+"Last-Translator: Christian Mikalsen and Jon Lønne\n"
+"Language-Team: Norsk <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: conf/global_settings.py:44
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: conf/global_settings.py:45
+msgid "Bengali"
+msgstr "Bengalsk"
+
+#: conf/global_settings.py:46
+msgid "Bulgarian"
+msgstr "Bulgarsk"
+
+#: conf/global_settings.py:47
+msgid "Catalan"
+msgstr "Katalansk"
+
+#: conf/global_settings.py:48
+msgid "Czech"
+msgstr "Tsjekkisk"
+
+#: conf/global_settings.py:49
+msgid "Welsh"
+msgstr "Walisisk"
+
+#: conf/global_settings.py:50
+msgid "Danish"
+msgstr "Dansk"
+
+#: conf/global_settings.py:51
+msgid "German"
+msgstr "Tysk"
+
+#: conf/global_settings.py:52
+msgid "Greek"
+msgstr "Gresk"
+
+#: conf/global_settings.py:53
+msgid "English"
+msgstr "Engelsk"
+
+#: conf/global_settings.py:54
+msgid "Spanish"
+msgstr "Spansk"
+
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "Estisk"
+
+#: conf/global_settings.py:56
+msgid "Argentinean Spanish"
+msgstr "Argentinsk spansk"
+
+#: conf/global_settings.py:57
+msgid "Basque"
+msgstr "Baskisk"
+
+#: conf/global_settings.py:58
+msgid "Persian"
+msgstr "Persisk"
+
+#: conf/global_settings.py:59
+msgid "Finnish"
+msgstr "Finsk"
+
+#: conf/global_settings.py:60
+msgid "French"
+msgstr "Fransk"
+
+#: conf/global_settings.py:61
+msgid "Irish"
+msgstr "Irsk"
+
+#: conf/global_settings.py:62
+msgid "Galician"
+msgstr "Galisisk"
+
+#: conf/global_settings.py:63
+msgid "Hungarian"
+msgstr "Ungarsk"
+
+#: conf/global_settings.py:64
+msgid "Hebrew"
+msgstr "Hebraisk"
+
+#: conf/global_settings.py:65
+msgid "Hindi"
+msgstr "Hindi"
+
+#: conf/global_settings.py:66
+msgid "Croatian"
+msgstr "Kroatisk"
+
+#: conf/global_settings.py:67
+msgid "Icelandic"
+msgstr "Islandsk"
+
+#: conf/global_settings.py:68
+msgid "Italian"
+msgstr "Italiensk"
+
+#: conf/global_settings.py:69
+msgid "Japanese"
+msgstr "Japansk"
+
+#: conf/global_settings.py:70
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: conf/global_settings.py:71
+msgid "Korean"
+msgstr "Koreansk"
+
+#: conf/global_settings.py:72
+msgid "Khmer"
+msgstr "Khmer"
+
+#: conf/global_settings.py:73
+msgid "Kannada"
+msgstr "Kannada"
+
+#: conf/global_settings.py:74
+msgid "Latvian"
+msgstr "Latvisk"
+
+#: conf/global_settings.py:75
+msgid "Lithuanian"
+msgstr "Litauisk"
+
+#: conf/global_settings.py:76
+msgid "Macedonian"
+msgstr "Makedonsk"
+
+#: conf/global_settings.py:77
+msgid "Dutch"
+msgstr "Nederlandsk"
+
+#: conf/global_settings.py:78
+msgid "Norwegian"
+msgstr "Norsk"
+
+#: conf/global_settings.py:79
+msgid "Polish"
+msgstr "Polsk"
+
+#: conf/global_settings.py:80
+msgid "Portuguese"
+msgstr "Portugisisk"
+
+#: conf/global_settings.py:81
+msgid "Brazilian Portuguese"
+msgstr "Brasiliansk portugisisk"
+
+#: conf/global_settings.py:82
+msgid "Romanian"
+msgstr "Rumensk"
+
+#: conf/global_settings.py:83
+msgid "Russian"
+msgstr "Russisk"
+
+#: conf/global_settings.py:84
+msgid "Slovak"
+msgstr "Slovakisk"
+
+#: conf/global_settings.py:85
+msgid "Slovenian"
+msgstr "Slovensk"
+
+#: conf/global_settings.py:86
+msgid "Serbian"
+msgstr "Serbisk"
+
+#: conf/global_settings.py:87
+msgid "Swedish"
+msgstr "Svensk"
+
+#: conf/global_settings.py:88
+msgid "Tamil"
+msgstr "Tamil"
+
+#: conf/global_settings.py:89
+msgid "Telugu"
+msgstr "Telugu"
+
+#: conf/global_settings.py:90
+msgid "Thai"
+msgstr "Thai"
+
+#: conf/global_settings.py:91
+msgid "Turkish"
+msgstr "Tyrkisk"
+
+#: conf/global_settings.py:92
+msgid "Ukrainian"
+msgstr "Ukrainsk"
+
+#: conf/global_settings.py:93
+msgid "Simplified Chinese"
+msgstr "Simplifisert kinesisk"
+
+#: conf/global_settings.py:94
+msgid "Traditional Chinese"
+msgstr "Tradisjonell kinesisk"
+
+#: contrib/admin/actions.py:60
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Slettet %(count)d %(items)s."
+
+#: contrib/admin/actions.py:67 contrib/admin/options.py:1027
+msgid "Are you sure?"
+msgstr "Er du sikker?"
+
+#: contrib/admin/actions.py:85
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Slett valgte %(verbose_name_plural)s"
+
+#: contrib/admin/filterspecs.py:44
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
+msgstr ""
+"<h3>Etter %s:</h3>\n"
+"<ul>\n"
+
+#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
+msgid "All"
+msgstr "Alle"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Any date"
+msgstr "Når som helst"
+
+#: contrib/admin/filterspecs.py:114
+msgid "Today"
+msgstr "I dag"
+
+#: contrib/admin/filterspecs.py:117
+msgid "Past 7 days"
+msgstr "Siste syv dager"
+
+#: contrib/admin/filterspecs.py:119
+msgid "This month"
+msgstr "Denne måneden"
+
+#: contrib/admin/filterspecs.py:121
+msgid "This year"
+msgstr "I år"
+
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
+msgid "Yes"
+msgstr "Ja"
+
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
+msgid "No"
+msgstr "Nei"
+
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:434
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: contrib/admin/helpers.py:14
+msgid "Action:"
+msgstr "Handling:"
+
+#: contrib/admin/models.py:19
+msgid "action time"
+msgstr "tid for handling"
+
+#: contrib/admin/models.py:22
+msgid "object id"
+msgstr "objekt-ID"
+
+#: contrib/admin/models.py:23
+msgid "object repr"
+msgstr "objekt repr"
+
+#: contrib/admin/models.py:24
+msgid "action flag"
+msgstr "handlingsflagg"
+
+#: contrib/admin/models.py:25
+msgid "change message"
+msgstr "endre melding"
+
+#: contrib/admin/models.py:28
+msgid "log entry"
+msgstr "logginnlegg"
+
+#: contrib/admin/models.py:29
+msgid "log entries"
+msgstr "logginnlegg"
+
+#: contrib/admin/options.py:133 contrib/admin/options.py:147
+msgid "None"
+msgstr "Ingen"
+
+#: contrib/admin/options.py:519
+#, python-format
+msgid "Changed %s."
+msgstr "Endret %s."
+
+#: contrib/admin/options.py:519 contrib/admin/options.py:529
+#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388
+#: forms/models.py:600
+msgid "and"
+msgstr "og"
+
+#: contrib/admin/options.py:524
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Opprettet %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:528
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Endret %(list)s for %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:533
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Slettet %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:537
+msgid "No fields changed."
+msgstr "Ingen felt endret."
+
+#: contrib/admin/options.py:599 contrib/auth/admin.py:67
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" ble opprettet."
+
+#: contrib/admin/options.py:603 contrib/admin/options.py:636
+#: contrib/auth/admin.py:75
+msgid "You may edit it again below."
+msgstr "Du kan redigere videre nedenfor."
+
+#: contrib/admin/options.py:613 contrib/admin/options.py:646
+#, python-format
+msgid "You may add another %s below."
+msgstr "Du kan opprette ny %s nedenfor."
+
+#: contrib/admin/options.py:634
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" ble endret."
+
+#: contrib/admin/options.py:642
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" ble endret. Du kan redigere videre nedenfor."
+
+#: contrib/admin/options.py:773
+#, python-format
+msgid "Add %s"
+msgstr "Opprett %s"
+
+#: contrib/admin/options.py:804 contrib/admin/options.py:1005
+#, python-format
+msgid "%(name)s object with primary key %(key)r does not exist."
+msgstr "%(name)s-objekt med primærnøkkelen %(key)r finnes ikke."
+
+#: contrib/admin/options.py:861
+#, python-format
+msgid "Change %s"
+msgstr "Rediger %s"
+
+#: contrib/admin/options.py:905
+msgid "Database error"
+msgstr "Databasefeil"
+
+#: contrib/admin/options.py:941
+#, python-format
+msgid "%(count)s %(name)s was changed successfully."
+msgid_plural "%(count)s %(name)s were changed successfully."
+msgstr[0] "%(count)s %(name)s ble endret."
+msgstr[1] "%(count)s %(name)s ble endret."
+
+#: contrib/admin/options.py:1020
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" ble slettet."
+
+#: contrib/admin/options.py:1057
+#, python-format
+msgid "Change history: %s"
+msgstr "Endringshistorikk: %s"
+
+#: contrib/admin/sites.py:21 contrib/admin/views/decorators.py:14
+#: contrib/auth/forms.py:80
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på "
+"små og store bokstaver."
+
+#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:40
+msgid "Please log in again, because your session has expired."
+msgstr "Økten din har tidsavbrutt, vennligst logg inn igjen."
+
+#: contrib/admin/sites.py:292 contrib/admin/views/decorators.py:47
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Det ser ut som om nettleseren din ikke støtter informasjonskapsler "
+"(cookies). Vennligst konfigurer nettleseren din og prøv igjen."
+
+#: contrib/admin/sites.py:308 contrib/admin/sites.py:314
+#: contrib/admin/views/decorators.py:66
+msgid "Usernames cannot contain the '@' character."
+msgstr "Brukernavnet kan ikke inneholde tegnet '@'."
+
+#: contrib/admin/sites.py:311 contrib/admin/views/decorators.py:62
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "E-postadressen er ikke brukernavnet ditt, prøv '%s' isteden."
+
+#: contrib/admin/sites.py:367
+msgid "Site administration"
+msgstr "Nettstedsadministrasjon"
+
+#: contrib/admin/sites.py:381 contrib/admin/templates/admin/login.html:26
+#: contrib/admin/templates/registration/password_reset_complete.html:14
+#: contrib/admin/views/decorators.py:20
+msgid "Log in"
+msgstr "Logg inn"
+
+#: contrib/admin/sites.py:426
+#, python-format
+msgid "%s administration"
+msgstr "%s-administrasjon"
+
+#: contrib/admin/util.py:168
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:173
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "En eller flere %(fieldname)s i %(name)s:"
+
+#: contrib/admin/widgets.py:71
+msgid "Date:"
+msgstr "Dato:"
+
+#: contrib/admin/widgets.py:71
+msgid "Time:"
+msgstr "Tid:"
+
+#: contrib/admin/widgets.py:95
+msgid "Currently:"
+msgstr "Nå:"
+
+#: contrib/admin/widgets.py:95
+msgid "Change:"
+msgstr "Endre:"
+
+#: contrib/admin/widgets.py:124
+msgid "Lookup"
+msgstr "Oppslag"
+
+#: contrib/admin/widgets.py:236
+msgid "Add Another"
+msgstr "Legg til ny"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Fant ikke siden"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Beklager, men siden du spør etter finnes ikke."
+
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/app_index.html:8
+#: contrib/admin/templates/admin/base.html:54
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/delete_selected_confirmation.html:6
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/object_history.html:6
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
+msgid "Home"
+msgstr "Hjem"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Tjenerfeil"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Tjenerfeil (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Tjenerfeil <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
+"post, og vil bli fikset snart. Takk for din tålmodighet."
+
+#: contrib/admin/templates/admin/actions.html:4
+msgid "Run the selected action"
+msgstr "Utfør den valgte handlingen"
+
+#: contrib/admin/templates/admin/actions.html:4
+msgid "Go"
+msgstr "Gå"
+
+#: contrib/admin/templates/admin/app_index.html:10
+#: contrib/admin/templates/admin/index.html:19
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: contrib/admin/templates/admin/base.html:27
+msgid "Welcome,"
+msgstr "Velkommen,"
+
+#: contrib/admin/templates/admin/base.html:32
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr "Dokumentasjon"
+
+#: contrib/admin/templates/admin/base.html:40
+#: contrib/admin/templates/admin/auth/user/change_password.html:14
+#: contrib/admin/templates/admin/auth/user/change_password.html:47
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+msgid "Change password"
+msgstr "Endre passord"
+
+#: contrib/admin/templates/admin/base.html:47
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+msgid "Log out"
+msgstr "Logg ut"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Django administrasjonsside"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Django-administrasjon"
+
+#: contrib/admin/templates/admin/change_form.html:20
+#: contrib/admin/templates/admin/index.html:29
+msgid "Add"
+msgstr "Opprett"
+
+#: contrib/admin/templates/admin/change_form.html:27
+#: contrib/admin/templates/admin/object_history.html:10
+msgid "History"
+msgstr "Historikk"
+
+#: contrib/admin/templates/admin/change_form.html:28
+#: contrib/admin/templates/admin/edit_inline/stacked.html:13
+#: contrib/admin/templates/admin/edit_inline/tabular.html:27
+msgid "View on site"
+msgstr "Vis på nettside"
+
+#: contrib/admin/templates/admin/change_form.html:38
+#: contrib/admin/templates/admin/change_list.html:54
+#: contrib/admin/templates/admin/auth/user/change_password.html:23
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Vennligst korriger feilen under."
+msgstr[1] "Vennligst korriger feilene under."
+
+#: contrib/admin/templates/admin/change_list.html:46
+#, python-format
+msgid "Add %(name)s"
+msgstr "Opprett %(name)s"
+
+#: contrib/admin/templates/admin/change_list.html:65
+msgid "Filter"
+msgstr "Filtrering"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:10
+#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275
+msgid "Delete"
+msgstr "Slett"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:16
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Hvis du sletter %(object_name)s '%(escaped_object)s', vil også slette "
+"relaterte objekter, men du har ikke tillatelse til å slette følgende "
+"objekttyper:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:23
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? "
+"Alle de følgende relaterte objektene vil bli slettet:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:28
+#: contrib/admin/templates/admin/delete_selected_confirmation.html:33
+msgid "Yes, I'm sure"
+msgstr "Ja, jeg er sikker"
+
+#: contrib/admin/templates/admin/delete_selected_confirmation.html:9
+msgid "Delete multiple objects"
+msgstr "Slett flere objekter"
+
+#: contrib/admin/templates/admin/delete_selected_confirmation.html:15
+#, python-format
+msgid ""
+"Deleting the %(object_name)s would result in deleting related objects, but "
+"your account doesn't have permission to delete the following types of "
+"objects:"
+msgstr ""
+"Sletting av %(object_name)s vil også slette relaterte objekter, men du har "
+"ikke tillatelse til å slette følgende objekttyper:"
+
+#: contrib/admin/templates/admin/delete_selected_confirmation.html:22
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(object_name)s objects? All of "
+"the following objects and it's related items will be deleted:"
+msgstr ""
+"Er du sikker på at du vil slette disse %(object_name)s-objektene? De "
+"følgende objektene og deres relaterte objekter vil bli slettet:"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "Etter %(filter_title)s "
+
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Modeller tilgjengelig i %(name)s-applikasjonen."
+
+#: contrib/admin/templates/admin/index.html:35
+msgid "Change"
+msgstr "Endre"
+
+#: contrib/admin/templates/admin/index.html:45
+msgid "You don't have permission to edit anything."
+msgstr "Du har ikke rettigheter til å redigere noe."
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "Recent Actions"
+msgstr "Siste handlinger"
+
+#: contrib/admin/templates/admin/index.html:54
+msgid "My Actions"
+msgstr "Mine handlinger"
+
+#: contrib/admin/templates/admin/index.html:58
+msgid "None available"
+msgstr "Ingen tilgjengelige"
+
+#: contrib/admin/templates/admin/index.html:72
+msgid "Unknown content"
+msgstr "Ukjent innhold"
+
+#: contrib/admin/templates/admin/invalid_setup.html:7
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er "
+"opprettet og at brukeren har de nødvendige rettigheter."
+
+#: contrib/admin/templates/admin/login.html:19
+msgid "Username:"
+msgstr "Brukernavn:"
+
+#: contrib/admin/templates/admin/login.html:22
+msgid "Password:"
+msgstr "Passord:"
+
+#: contrib/admin/templates/admin/object_history.html:22
+msgid "Date/time"
+msgstr "Dato/tid"
+
+#: contrib/admin/templates/admin/object_history.html:23
+msgid "User"
+msgstr "Bruker"
+
+#: contrib/admin/templates/admin/object_history.html:24
+#: contrib/comments/templates/comments/moderation_queue.html:33
+msgid "Action"
+msgstr "Handling"
+
+#: contrib/admin/templates/admin/object_history.html:30
+#: utils/translation/trans_real.py:400
+msgid "DATETIME_FORMAT"
+msgstr "j. F Y H:i"
+
+#: contrib/admin/templates/admin/object_history.html:38
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke "
+"opprettet med administrasjonssiden."
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Vis alle"
+
+#: contrib/admin/templates/admin/pagination.html:11
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Save"
+msgstr "Lagre"
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Search"
+msgstr "Søk"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "Ett resultat"
+msgstr[1] "%(counter)s resultater"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s totalt"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save as new"
+msgstr "Lagre som ny"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and add another"
+msgstr "Lagre og opprett ny"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save and continue editing"
+msgstr "Lagre og fortsett å redigere"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å "
+"endre flere brukerinnstillinger."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:14 contrib/auth/forms.py:47 contrib/auth/forms.py:59
+msgid "Username"
+msgstr "Brukernavn"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185
+msgid "Password"
+msgstr "Passord"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/auth/forms.py:186
+msgid "Password (again)"
+msgstr "Passord (gjenta)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:41
+msgid "Enter the same password as above, for verification."
+msgstr "Skriv inn det samme passordet som ovenfor, for verifisering."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>."
+
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
+msgid "Delete?"
+msgstr "Slette?"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Logg inn igjen"
+
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+msgid "Password change"
+msgstr "Endre passord"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Passord endret"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Ditt passord ble endret."
+
+#: contrib/admin/templates/registration/password_change_form.html:12
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Venligst oppgi ditt gamle passord av sikkerhetsgrunner. Oppgi deretter ditt "
+"nye passord to ganger, slik at vi kan kontrollere at det er korrekt."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Gammelt passord:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+#: contrib/admin/templates/registration/password_reset_confirm.html:18
+msgid "New password:"
+msgstr "Nytt passord:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+#: contrib/admin/templates/registration/password_reset_confirm.html:20
+msgid "Confirm password:"
+msgstr "Gjenta nytt passord:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+#: contrib/admin/templates/registration/password_reset_confirm.html:21
+msgid "Change my password"
+msgstr "Endre passord"
+
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:6
+#: contrib/admin/templates/registration/password_reset_form.html:10
+msgid "Password reset"
+msgstr "Nullstill passord"
+
+#: contrib/admin/templates/registration/password_reset_complete.html:6
+#: contrib/admin/templates/registration/password_reset_complete.html:10
+msgid "Password reset complete"
+msgstr "Passord nullstilt"
+
+#: contrib/admin/templates/registration/password_reset_complete.html:12
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Passordet ditt er satt. Du kan nå logge inn."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
+msgid "Password reset confirmation"
+msgstr "Bekreftelse på nullstilt passord"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:12
+msgid "Enter new password"
+msgstr "Oppgi nytt passord"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:14
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Venligst oppgi ditt nye passord to ganger, for å sikre at du oppgir det "
+"korrekt."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:26
+msgid "Password reset unsuccessful"
+msgstr "Passordet ble ikke nullstilt"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:28
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+"Nullstillingslinken er ugyldig, kanskje fordi den allerede har vært brukt. "
+"Vennligst nullstill passordet ditt på nytt."
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Passordet ble nullstilt"
+
+#: contrib/admin/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord. Du "
+"bør motta den om kort tid."
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+"Du har mottatt denne e-posten fordi du har bedt om nullstilling av passordet "
+"ditt"
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "for din konto på %(site_name)s"
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+msgid "Please go to the following page and choose a new password:"
+msgstr "Vennligst gå til følgende side og velg et nytt passord:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:9
+msgid "Your username, in case you've forgotten:"
+msgstr "Brukernavnet ditt, i tilfelle du har glemt det:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Thanks for using our site!"
+msgstr "Takk for at du bruker siden vår!"
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Hilsen %(site_name)s"
+
+#: contrib/admin/templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-"
+"post med instruksjoner for nullstilling av passord."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "E-postadresse:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Nullstill mitt passord"
+
+#: contrib/admin/templatetags/admin_list.py:299
+msgid "All dates"
+msgstr "Alle datoer"
+
+#: contrib/admin/views/main.py:70
+#, python-format
+msgid "Select %s"
+msgstr "Velg %s"
+
+#: contrib/admin/views/main.py:70
+#, python-format
+msgid "Select %s to change"
+msgstr "Velg %s du ønsker å redigere"
+
+#: contrib/admin/views/template.py:37 contrib/sites/models.py:38
+msgid "site"
+msgstr "nettside"
+
+#: contrib/admin/views/template.py:39
+msgid "template"
+msgstr "mal"
+
+#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63
+#: contrib/admindocs/views.py:65
+msgid "tag:"
+msgstr "tag:"
+
+#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96
+#: contrib/admindocs/views.py:98
+msgid "filter:"
+msgstr "filter:"
+
+#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160
+#: contrib/admindocs/views.py:162
+msgid "view:"
+msgstr "view:"
+
+#: contrib/admindocs/views.py:190
+#, python-format
+msgid "App %r not found"
+msgstr "Fant ikke applikasjonen %r"
+
+#: contrib/admindocs/views.py:197
+#, python-format
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Fant ikke modellen %(model_name)r i applikasjonen %(app_label)r"
+
+#: contrib/admindocs/views.py:209
+#, python-format
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet"
+
+#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247
+#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266
+msgid "model:"
+msgstr "modell:"
+
+#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256
+#, python-format
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "relaterte `%(app_label)s.%(object_name)s`-objekter"
+
+#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261
+#, python-format
+msgid "all %s"
+msgstr "alle %s"
+
+#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266
+#, python-format
+msgid "number of %s"
+msgstr "antall %s"
+
+#: contrib/admindocs/views.py:271
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Felter på %s-objekter"
+
+#: contrib/admindocs/views.py:334 contrib/admindocs/views.py:345
+#: contrib/admindocs/views.py:347 contrib/admindocs/views.py:353
+#: contrib/admindocs/views.py:354 contrib/admindocs/views.py:356
+msgid "Integer"
+msgstr "Heltall"
+
+#: contrib/admindocs/views.py:335
+msgid "Boolean (Either True or False)"
+msgstr "Boolsk (True eller False)"
+
+#: contrib/admindocs/views.py:336 contrib/admindocs/views.py:355
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "Tekst (opp til %(max_length)s tegn)"
+
+#: contrib/admindocs/views.py:337
+msgid "Comma-separated integers"
+msgstr "Heltall adskilt med komma"
+
+#: contrib/admindocs/views.py:338
+msgid "Date (without time)"
+msgstr "Dato (uten tid)"
+
+#: contrib/admindocs/views.py:339
+msgid "Date (with time)"
+msgstr "Dato (med tid)"
+
+#: contrib/admindocs/views.py:340
+msgid "Decimal number"
+msgstr "Desimaltall"
+
+#: contrib/admindocs/views.py:341
+msgid "E-mail address"
+msgstr "E-postadresse"
+
+#: contrib/admindocs/views.py:342 contrib/admindocs/views.py:343
+#: contrib/admindocs/views.py:346
+msgid "File path"
+msgstr "Filsti"
+
+#: contrib/admindocs/views.py:344
+msgid "Floating point number"
+msgstr "Flyttall"
+
+#: contrib/admindocs/views.py:348 contrib/comments/models.py:60
+msgid "IP address"
+msgstr "IP-adresse"
+
+#: contrib/admindocs/views.py:350
+msgid "Boolean (Either True, False or None)"
+msgstr "Boolsk (True, False eller None)"
+
+#: contrib/admindocs/views.py:351
+msgid "Relation to parent model"
+msgstr "Relasjon til foreldermodell"
+
+#: contrib/admindocs/views.py:352
+msgid "Phone number"
+msgstr "Telefonnummer"
+
+#: contrib/admindocs/views.py:357
+msgid "Text"
+msgstr "Tekst"
+
+#: contrib/admindocs/views.py:358
+msgid "Time"
+msgstr "Tid"
+
+#: contrib/admindocs/views.py:359 contrib/comments/forms.py:95
+#: contrib/comments/templates/comments/moderation_queue.html:37
+#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7
+msgid "URL"
+msgstr "Nettadresse"
+
+#: contrib/admindocs/views.py:360
+msgid "U.S. state (two uppercase letters)"
+msgstr "Stat (i USA, to store bokstaver)"
+
+#: contrib/admindocs/views.py:361
+msgid "XML text"
+msgstr "XML-tekst"
+
+#: contrib/admindocs/views.py:387
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s ser ikke ut til å være et urlpattern-objekt"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Bokmerker"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
+msgid "Documentation bookmarklets"
+msgstr "Dokumentasjonsbokmerker"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
+msgid ""
+"\n"
+"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site.  Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").</p>\n"
+msgstr ""
+"\n"
+"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
+"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
+"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
+"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
+"(kontakt din systemadministrator hvis du er usikker på om maskinen din er "
+"\"intern\").</p>\n"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
+msgid "Documentation for this page"
+msgstr "Dokumentasjon for denne siden"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
+msgid ""
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
+msgstr ""
+"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen "
+"som genererte den siden."
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
+msgid "Show object ID"
+msgstr "Vis objekt-ID"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+"Viser \"content-type\" og en unik ID for sider som representerer et enkelt "
+"objekt."
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
+msgid "Edit this object (current window)"
+msgstr "Endre dette objektet (nåværende vindu)"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr ""
+"Hopper til administrasjonssiden for sider som representerer et enkelt objekt."
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
+msgid "Edit this object (new window)"
+msgstr "Endre dette objektet (nytt vindu)"
+
+#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
+msgid "As above, but opens the admin page in a new window."
+msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu."
+
+#: contrib/auth/admin.py:21
+msgid "Personal info"
+msgstr "Personlig informasjon"
+
+#: contrib/auth/admin.py:22
+msgid "Permissions"
+msgstr "Rettigheter"
+
+#: contrib/auth/admin.py:23
+msgid "Important dates"
+msgstr "Viktige datoer"
+
+#: contrib/auth/admin.py:24
+msgid "Groups"
+msgstr "Grupper"
+
+#: contrib/auth/admin.py:80
+msgid "Add user"
+msgstr "Opprett ny bruker"
+
+#: contrib/auth/admin.py:106
+msgid "Password changed successfully."
+msgstr "Passordet er endret."
+
+#: contrib/auth/admin.py:112
+#, python-format
+msgid "Change password: %s"
+msgstr "Endre passord: %s"
+
+#: contrib/auth/forms.py:15 contrib/auth/forms.py:48
+#: contrib/auth/models.py:128
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Påkrevet. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, tall og "
+"understreker)."
+
+#: contrib/auth/forms.py:16 contrib/auth/forms.py:49
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Feltet kan kun inneholde bokstaver, nummer og understreker."
+
+#: contrib/auth/forms.py:18
+msgid "Password confirmation"
+msgstr "Passordbekreftelse"
+
+#: contrib/auth/forms.py:30
+msgid "A user with that username already exists."
+msgstr "Det eksisterer allerede en bruker med dette brukernavnet."
+
+#: contrib/auth/forms.py:36 contrib/auth/forms.py:155
+#: contrib/auth/forms.py:197
+msgid "The two password fields didn't match."
+msgstr "De to passordfeltene er ikke like."
+
+#: contrib/auth/forms.py:82
+msgid "This account is inactive."
+msgstr "Denne kontoen er inaktiv."
+
+#: contrib/auth/forms.py:87
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). "
+"Informasjonskapsler er påkrevet for å logge inn."
+
+#: contrib/auth/forms.py:100
+msgid "E-mail"
+msgstr "E-post"
+
+#: contrib/auth/forms.py:109
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at "
+"du er registrert?"
+
+#: contrib/auth/forms.py:135
+#, python-format
+msgid "Password reset on %s"
+msgstr "Nullstilling av passord på %s"
+
+#: contrib/auth/forms.py:143
+msgid "New password"
+msgstr "Nytt passord"
+
+#: contrib/auth/forms.py:144
+msgid "New password confirmation"
+msgstr "Bekreft nytt passord"
+
+#: contrib/auth/forms.py:169
+msgid "Old password"
+msgstr "Gammelt passord"
+
+#: contrib/auth/forms.py:177
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Ditt gamle passord er galt. Vennligst prøv igjen."
+
+#: contrib/auth/models.py:63 contrib/auth/models.py:86
+msgid "name"
+msgstr "navn"
+
+#: contrib/auth/models.py:65
+msgid "codename"
+msgstr "kodenavn"
+
+#: contrib/auth/models.py:68
+msgid "permission"
+msgstr "rettighet"
+
+#: contrib/auth/models.py:69 contrib/auth/models.py:87
+msgid "permissions"
+msgstr "rettigheter"
+
+#: contrib/auth/models.py:90
+msgid "group"
+msgstr "gruppe"
+
+#: contrib/auth/models.py:91 contrib/auth/models.py:138
+msgid "groups"
+msgstr "grupper"
+
+#: contrib/auth/models.py:128
+msgid "username"
+msgstr "brukernavn"
+
+#: contrib/auth/models.py:129
+msgid "first name"
+msgstr "fornavn"
+
+#: contrib/auth/models.py:130
+msgid "last name"
+msgstr "etternavn"
+
+#: contrib/auth/models.py:131
+msgid "e-mail address"
+msgstr "e-postadresse"
+
+#: contrib/auth/models.py:132
+msgid "password"
+msgstr "passord"
+
+#: contrib/auth/models.py:132
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Bruk '[algo]$[salt]$[hexdigest]' eller <a href=\"password/\">endre passord-"
+"skjemaet</a>."
+
+#: contrib/auth/models.py:133
+msgid "staff status"
+msgstr "administrasjonsstatus"
+
+#: contrib/auth/models.py:133
+msgid "Designates whether the user can log into this admin site."
+msgstr "Angir at brukeren kan logge inn på denne administrasjonssiden."
+
+#: contrib/auth/models.py:134
+msgid "active"
+msgstr "aktiv"
+
+#: contrib/auth/models.py:134
+msgid ""
+"Designates whether this user should be treated as active. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen."
+
+#: contrib/auth/models.py:135
+msgid "superuser status"
+msgstr "superbruker"
+
+#: contrib/auth/models.py:135
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Angir at denne brukeren har alle rettigheter uten å eksplisitt sette de."
+
+#: contrib/auth/models.py:136
+msgid "last login"
+msgstr "siste innlogging"
+
+#: contrib/auth/models.py:137
+msgid "date joined"
+msgstr "registrert"
+
+#: contrib/auth/models.py:139
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"I tillegg til de rettighetene som blir angitt manuelt, får brukeren også "
+"rettighetene til gruppene han/hun er med i."
+
+#: contrib/auth/models.py:140
+msgid "user permissions"
+msgstr "Brukerrettigheter"
+
+#: contrib/auth/models.py:144 contrib/comments/models.py:50
+#: contrib/comments/models.py:168
+msgid "user"
+msgstr "bruker"
+
+#: contrib/auth/models.py:145
+msgid "users"
+msgstr "brukere"
+
+#: contrib/auth/models.py:301
+msgid "message"
+msgstr "melding"
+
+#: contrib/auth/views.py:56
+msgid "Logged out"
+msgstr "Logget ut"
+
+#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:429
+msgid "Enter a valid e-mail address."
+msgstr "Oppgi en gyldig e-postadresse."
+
+#: contrib/comments/admin.py:11
+msgid "Content"
+msgstr "Innhold"
+
+#: contrib/comments/admin.py:14
+msgid "Metadata"
+msgstr "Metadata"
+
+#: contrib/comments/feeds.py:13
+#, python-format
+msgid "%(site_name)s comments"
+msgstr "%(site_name)s - kommentarer"
+
+#: contrib/comments/feeds.py:23
+#, python-format
+msgid "Latest comments on %(site_name)s"
+msgstr "Siste kommentarer fra %(site_name)s"
+
+#: contrib/comments/forms.py:93
+#: contrib/comments/templates/comments/moderation_queue.html:34
+msgid "Name"
+msgstr "Navn"
+
+#: contrib/comments/forms.py:94
+msgid "Email address"
+msgstr "E-postadresse"
+
+#: contrib/comments/forms.py:96
+#: contrib/comments/templates/comments/moderation_queue.html:35
+msgid "Comment"
+msgstr "Kommentar"
+
+#: contrib/comments/forms.py:173
+#, python-format
+msgid "Watch your mouth! The word %s is not allowed here."
+msgid_plural "Watch your mouth! The words %s are not allowed here."
+msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her."
+msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
+
+#: contrib/comments/forms.py:180
+msgid ""
+"If you enter anything in this field your comment will be treated as spam"
+msgstr ""
+"Hvis du oppgir noe i dette feltet, vil kommentaren bli behandlet som spam"
+
+#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74
+msgid "content type"
+msgstr "innholdstype"
+
+#: contrib/comments/models.py:24
+msgid "object ID"
+msgstr "objekt-ID"
+
+#: contrib/comments/models.py:52
+msgid "user's name"
+msgstr "brukerens navn"
+
+#: contrib/comments/models.py:53
+msgid "user's email address"
+msgstr "brukerens e-postadresse"
+
+#: contrib/comments/models.py:54
+msgid "user's URL"
+msgstr "brukerens nettadresse"
+
+#: contrib/comments/models.py:56 contrib/comments/models.py:76
+#: contrib/comments/models.py:169
+msgid "comment"
+msgstr "kommentar"
+
+#: contrib/comments/models.py:59
+msgid "date/time submitted"
+msgstr "dato/tid for innsendelse"
+
+#: contrib/comments/models.py:61
+msgid "is public"
+msgstr "er tilgjengelig for alle"
+
+#: contrib/comments/models.py:62
+msgid ""
+"Uncheck this box to make the comment effectively disappear from the site."
+msgstr "Avmerk denne boksen for å fjerne kommentaren fra siden."
+
+#: contrib/comments/models.py:64
+msgid "is removed"
+msgstr "er fjernet"
+
+#: contrib/comments/models.py:65
+msgid ""
+"Check this box if the comment is inappropriate. A \"This comment has been "
+"removed\" message will be displayed instead."
+msgstr ""
+"Huk av denne hvis kommentaren er upassende. Meldingen \"Denne kommentaren "
+"har blitt fjernet\" vil bli vist i stedet."
+
+#: contrib/comments/models.py:77
+msgid "comments"
+msgstr "kommentarer"
+
+#: contrib/comments/models.py:119
+msgid ""
+"This comment was posted by an authenticated user and thus the name is read-"
+"only."
+msgstr ""
+"Denne kommentaren er skrevet av en innlogget bruker og navnet kan derfor "
+"ikke endres."
+
+#: contrib/comments/models.py:128
+msgid ""
+"This comment was posted by an authenticated user and thus the email is read-"
+"only."
+msgstr ""
+"Denne kommentaren er skrevet av en innlogget bruker og e-postadressen kan "
+"derfor ikke endres."
+
+#: contrib/comments/models.py:153
+#, python-format
+msgid ""
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+msgstr ""
+"Skrevet av %(user)s, %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+
+#: contrib/comments/models.py:170
+msgid "flag"
+msgstr "flagg"
+
+#: contrib/comments/models.py:171
+msgid "date"
+msgstr "dato"
+
+#: contrib/comments/models.py:181
+msgid "comment flag"
+msgstr "kommentarflagg"
+
+#: contrib/comments/models.py:182
+msgid "comment flags"
+msgstr "kommentarflagg"
+
+#: contrib/comments/templates/comments/approve.html:4
+msgid "Approve a comment"
+msgstr "Tillat en kommentar"
+
+#: contrib/comments/templates/comments/approve.html:7
+msgid "Really make this comment public?"
+msgstr "Gjør denne kommentaren offentlig?"
+
+#: contrib/comments/templates/comments/approve.html:12
+#: contrib/comments/templates/comments/moderation_queue.html:49
+msgid "Approve"
+msgstr "Godkjenn"
+
+#: contrib/comments/templates/comments/approved.html:4
+msgid "Thanks for approving"
+msgstr "Takk for godkjennelse"
+
+#: contrib/comments/templates/comments/approved.html:7
+#: contrib/comments/templates/comments/deleted.html:7
+#: contrib/comments/templates/comments/flagged.html:7
+msgid ""
+"Thanks for taking the time to improve the quality of discussion on our site"
+msgstr ""
+"Takk for at du tok deg tid til å forbedre kvaliteten på diskusjonen på siden "
+"vår"
+
+#: contrib/comments/templates/comments/delete.html:4
+msgid "Remove a comment"
+msgstr "Fjern en kommentar"
+
+#: contrib/comments/templates/comments/delete.html:7
+msgid "Really remove this comment?"
+msgstr "Fjerne denne kommentaren?"
+
+#: contrib/comments/templates/comments/delete.html:12
+#: contrib/comments/templates/comments/moderation_queue.html:53
+msgid "Remove"
+msgstr "Fjern"
+
+#: contrib/comments/templates/comments/deleted.html:4
+msgid "Thanks for removing"
+msgstr "Takk for fjerningen"
+
+#: contrib/comments/templates/comments/flag.html:4
+msgid "Flag this comment"
+msgstr "Flagg denne kommentaren"
+
+#: contrib/comments/templates/comments/flag.html:7
+msgid "Really flag this comment?"
+msgstr "Flagg denne kommentaren?"
+
+#: contrib/comments/templates/comments/flag.html:12
+msgid "Flag"
+msgstr "Flagg"
+
+#: contrib/comments/templates/comments/flagged.html:4
+msgid "Thanks for flagging"
+msgstr "Takk for flagging"
+
+#: contrib/comments/templates/comments/form.html:17
+#: contrib/comments/templates/comments/preview.html:32
+msgid "Post"
+msgstr "Publiser"
+
+#: contrib/comments/templates/comments/form.html:18
+#: contrib/comments/templates/comments/preview.html:33
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: contrib/comments/templates/comments/moderation_queue.html:4
+#: contrib/comments/templates/comments/moderation_queue.html:19
+msgid "Comment moderation queue"
+msgstr "Kommentarmoderasjonskø"
+
+#: contrib/comments/templates/comments/moderation_queue.html:26
+msgid "No comments to moderate"
+msgstr "Ingen kommentarer å moderere"
+
+#: contrib/comments/templates/comments/moderation_queue.html:36
+msgid "Email"
+msgstr "E-post"
+
+#: contrib/comments/templates/comments/moderation_queue.html:38
+msgid "Authenticated?"
+msgstr "Godkjent?"
+
+#: contrib/comments/templates/comments/moderation_queue.html:39
+msgid "IP Address"
+msgstr "IP-adresse"
+
+#: contrib/comments/templates/comments/moderation_queue.html:40
+msgid "Date posted"
+msgstr "Dato lagt inn"
+
+#: contrib/comments/templates/comments/moderation_queue.html:63
+msgid "yes"
+msgstr "ja"
+
+#: contrib/comments/templates/comments/moderation_queue.html:63
+msgid "no"
+msgstr "nei"
+
+#: contrib/comments/templates/comments/posted.html:4
+msgid "Thanks for commenting"
+msgstr "Takk for kommentar"
+
+#: contrib/comments/templates/comments/posted.html:7
+msgid "Thank you for your comment"
+msgstr "Takk for din kommentar"
+
+#: contrib/comments/templates/comments/preview.html:4
+#: contrib/comments/templates/comments/preview.html:13
+msgid "Preview your comment"
+msgstr "Forhåndsvis kommentaren din"
+
+#: contrib/comments/templates/comments/preview.html:11
+msgid "Please correct the error below"
+msgid_plural "Please correct the errors below"
+msgstr[0] "Vennligst korriger feilen under"
+msgstr[1] "Vennligst korriger feilene under"
+
+#: contrib/comments/templates/comments/preview.html:16
+msgid "Post your comment"
+msgstr "Publiser din kommentar"
+
+#: contrib/comments/templates/comments/preview.html:16
+msgid "or make changes"
+msgstr "eller gjør endringer"
+
+#: contrib/contenttypes/models.py:70
+msgid "python model class name"
+msgstr "python-modell klassenavn"
+
+#: contrib/contenttypes/models.py:75
+msgid "content types"
+msgstr "innholdstyper"
+
+#: contrib/flatpages/admin.py:9
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"Eksempel: '/om/kontakt/'. Kontroller at det er en skråstrek foran og bak."
+
+#: contrib/flatpages/admin.py:11
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Dette feltet kan bare inneholde bokstaver, nummer, understreker, "
+"bindestreker eller skråstreker."
+
+#: contrib/flatpages/admin.py:22
+msgid "Advanced options"
+msgstr "Avanserte innstillinger"
+
+#: contrib/flatpages/models.py:8
+msgid "title"
+msgstr "tittel"
+
+#: contrib/flatpages/models.py:9
+msgid "content"
+msgstr "innhold"
+
+#: contrib/flatpages/models.py:10
+msgid "enable comments"
+msgstr "tillat kommentarer"
+
+#: contrib/flatpages/models.py:11
+msgid "template name"
+msgstr "malnavn"
+
+#: contrib/flatpages/models.py:12
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke er gitt, vil "
+"'flatpages/default.html' bli brukt."
+
+#: contrib/flatpages/models.py:13
+msgid "registration required"
+msgstr "krever registrering"
+
+#: contrib/flatpages/models.py:13
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Hvis denne er krysset av, kan kun innloggede brukere se siden."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "flatside"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "flatsider"
+
+#: contrib/formtools/wizard.py:130
+msgid ""
+"We apologize, but your form has expired. Please continue filling out the "
+"form from this page."
+msgstr ""
+"Vi beklager, men dette skjemaet har tidsavbrutt. Vennligst fyll ut skjemaet "
+"fra denne siden."
+
+#: contrib/gis/forms/fields.py:17
+msgid "No geometry value provided."
+msgstr "Ingen geometriverdi oppgitt."
+
+#: contrib/gis/forms/fields.py:18
+msgid "Invalid geometry value."
+msgstr "Ugyldig geometriverdi"
+
+#: contrib/gis/forms/fields.py:19
+msgid "Invalid geometry type."
+msgstr "Ugyldig geometritype"
+
+#: contrib/gis/forms/fields.py:20
+msgid ""
+"An error occurred when transforming the geometry to the SRID of the geometry "
+"form field."
+msgstr ""
+"En feil oppstod ved transformering av geometrien til SRID fra geometrifeltet."
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "th"
+msgstr "."
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "st"
+msgstr "."
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "nd"
+msgstr "."
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "rd"
+msgstr "."
+
+#: contrib/humanize/templatetags/humanize.py:51
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "%(value).1f million"
+msgstr[1] "%(value).1f millioner"
+
+#: contrib/humanize/templatetags/humanize.py:54
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f milliard"
+msgstr[1] "%(value).1f milliarder"
+
+#: contrib/humanize/templatetags/humanize.py:57
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f billion"
+msgstr[1] "%(value).1f billioner"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "one"
+msgstr "én"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "two"
+msgstr "to"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "three"
+msgstr "tre"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "four"
+msgstr "fire"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "five"
+msgstr "fem"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "six"
+msgstr "seks"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "seven"
+msgstr "sju"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "eight"
+msgstr "åtte"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "nine"
+msgstr "ni"
+
+#: contrib/humanize/templatetags/humanize.py:93
+msgid "today"
+msgstr "i dag"
+
+#: contrib/humanize/templatetags/humanize.py:95
+msgid "tomorrow"
+msgstr "i morgen"
+
+#: contrib/humanize/templatetags/humanize.py:97
+msgid "yesterday"
+msgstr "i går"
+
+#: contrib/localflavor/ar/forms.py:27
+msgid "Enter a postal code in the format NNNN or ANNNNAAA."
+msgstr "Oppgi et postnummer på formen NNNN eller ANNNNAAA."
+
+#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
+#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
+#: contrib/localflavor/pe/forms.py:51
+msgid "This field requires only numbers."
+msgstr "Feltet krever kun tall."
+
+#: contrib/localflavor/ar/forms.py:50
+msgid "This field requires 7 or 8 digits."
+msgstr "Feltet krever 7 eller 8 siffer."
+
+#: contrib/localflavor/ar/forms.py:79
+msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
+msgstr "Oppgi gyldig CUIT på formen XX-XXXXXXXX-X or XXXXXXXXXXXX."
+
+#: contrib/localflavor/ar/forms.py:80
+msgid "Invalid CUIT."
+msgstr "Ugyldig CUIT."
+
+#: contrib/localflavor/at/at_states.py:5
+msgid "Burgenland"
+msgstr "Burgenland"
+
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr "Carinthia"
+
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr "Niederösterreich"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr "Oberösterreich"
+
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr "Salzburg"
+
+#: contrib/localflavor/at/at_states.py:10
+msgid "Styria"
+msgstr "Steiermark"
+
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr "Tirol"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr "Vorarlberg"
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr "Wien"
+
+#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Oppgi et postnummer på formen XXXX."
+
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr "Oppgi et gyldig Østerrisk personnummer på formen XXXX XXXXXX."
+
+#: contrib/localflavor/au/forms.py:16
+msgid "Enter a 4 digit post code."
+msgstr "Oppgi et firesifret postnummer."
+
+#: contrib/localflavor/br/forms.py:21
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Oppgi et postnummer på formen XXXXX-XXX."
+
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Telefonnummeret må være på formen XX-XXXX-XXXX."
+
+#: contrib/localflavor/br/forms.py:58
+msgid ""
+"Select a valid brazilian state. That state is not one of the available "
+"states."
+msgstr ""
+"Velg en gyldig brasiliansk stat. Den staten er ikke et av de tilgjengelige "
+"valgene."
+
+#: contrib/localflavor/br/forms.py:94
+msgid "Invalid CPF number."
+msgstr "Ugyldig CPF-nummer."
+
+#: contrib/localflavor/br/forms.py:95
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Feltet krever maksimum 11 eller 14 siffer."
+
+#: contrib/localflavor/br/forms.py:134
+msgid "Invalid CNPJ number."
+msgstr "Ugyldig CNPJ-nummer."
+
+#: contrib/localflavor/br/forms.py:136
+msgid "This field requires at least 14 digits"
+msgstr "Feltet krever minst 14 siffer."
+
+#: contrib/localflavor/ca/forms.py:17
+msgid "Enter a postal code in the format XXX XXX."
+msgstr "Oppgi et postnummer på formen XXX XXX."
+
+#: contrib/localflavor/ca/forms.py:88
+msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
+msgstr "Oppgi et gyldig kanadisk personnummer på formen XXX-XXX-XXX."
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr "Aargau"
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr "Appenzell Innerrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr "Appenzell Ausserrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr "Basel-Stadt"
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr "Basel-Landschaft"
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr "Bern"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr "Fribourg"
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr "Genève"
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr "Glarus"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr "Graubünden"
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr "Jura"
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr "Luzern"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr "Neuchâtel"
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr "Nidwalden"
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr "Obwalden"
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr "Schaffhausen"
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr "Schwyz"
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr "Solothurn"
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr "St. Gallen"
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr "Thurgau"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr "Ticino"
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr "Uri"
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr "Wallis"
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr "Vaud"
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr "Zug"
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr "Zürich"
+
+#: contrib/localflavor/ch/forms.py:64
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Oppgi et gyldig sveitsisk identitets- eller passnummer på formen X1234567<0 "
+"eller 1234567890."
+
+#: contrib/localflavor/cl/forms.py:29
+msgid "Enter a valid Chilean RUT."
+msgstr "Oppgi et gyldig chilensk RUT."
+
+#: contrib/localflavor/cl/forms.py:30
+msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Oppgi et gyldig chilensk RUT på formen XX.XXX.XXX-X."
+
+#: contrib/localflavor/cl/forms.py:31
+msgid "The Chilean RUT is not valid."
+msgstr "Den chilenske RUT er ugyldig."
+
+#: contrib/localflavor/cz/cz_regions.py:8
+msgid "Prague"
+msgstr "Praha"
+
+#: contrib/localflavor/cz/cz_regions.py:9
+msgid "Central Bohemian Region"
+msgstr "Sentralbøhmen region"
+
+#: contrib/localflavor/cz/cz_regions.py:10
+msgid "South Bohemian Region"
+msgstr "Sydbøhmen region"
+
+#: contrib/localflavor/cz/cz_regions.py:11
+msgid "Pilsen Region"
+msgstr "Plzeň region"
+
+#: contrib/localflavor/cz/cz_regions.py:12
+msgid "Carlsbad Region"
+msgstr "Karlovy Vary region"
+
+#: contrib/localflavor/cz/cz_regions.py:13
+msgid "Usti Region"
+msgstr "Ústí nad Labem region"
+
+#: contrib/localflavor/cz/cz_regions.py:14
+msgid "Liberec Region"
+msgstr "Liberec region"
+
+#: contrib/localflavor/cz/cz_regions.py:15
+msgid "Hradec Region"
+msgstr "Hradec Králové region"
+
+#: contrib/localflavor/cz/cz_regions.py:16
+msgid "Pardubice Region"
+msgstr "Pardubice region"
+
+#: contrib/localflavor/cz/cz_regions.py:17
+msgid "Vysocina Region"
+msgstr "Žilina-regionen"
+
+#: contrib/localflavor/cz/cz_regions.py:18
+msgid "South Moravian Region"
+msgstr "Sydmähriske region"
+
+#: contrib/localflavor/cz/cz_regions.py:19
+msgid "Olomouc Region"
+msgstr "Olomouc region"
+
+#: contrib/localflavor/cz/cz_regions.py:20
+msgid "Zlin Region"
+msgstr "Zlín region"
+
+#: contrib/localflavor/cz/cz_regions.py:21
+msgid "Moravian-Silesian Region"
+msgstr "Mähren-Schlesien region"
+
+#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30
+msgid "Enter a postal code in the format XXXXX or XXX XX."
+msgstr "Oppgi et postnummer på formen XXXXX or XXX XX."
+
+#: contrib/localflavor/cz/forms.py:47
+msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX."
+msgstr "Oppgi et fødselsnummer på formen XXXXXX/XXXX eller XXXXXXXXXX."
+
+#: contrib/localflavor/cz/forms.py:48
+msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'"
+msgstr ""
+
+#: contrib/localflavor/cz/forms.py:49
+msgid "Enter a valid birth number."
+msgstr "Oppgi et gyldig fødselsnummer."
+
+#: contrib/localflavor/cz/forms.py:106
+msgid "Enter a valid IC number."
+msgstr "Oppgi et gyldig IC-nummer."
+
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr "Baden-Württemberg"
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr "Bayern"
+
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
+msgstr "Berlin"
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr "Brandenburg"
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr "Bremen"
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr "Hamburg"
+
+#: contrib/localflavor/de/de_states.py:11
+msgid "Hessen"
+msgstr "Hessen"
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr "Mecklenburg-Vorpommern"
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr "Niedersachsen"
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr "Nordrhein-Westfalen"
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr "Rheinland-Pfalz"
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr "Saarland"
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr "Sachsen"
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr "Sachsen-Anhalt"
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr "Schleswig-Holstein"
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr "Thüringen"
+
+#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
+#: contrib/localflavor/fr/forms.py:15
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Oppgi et postnummer på formen XXXXX."
+
+#: contrib/localflavor/de/forms.py:41
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Oppgi et gyldig tysk identitetsnummer på formen XXXXXXXXXXX-XXXXXXX-XXXXXXX-"
+"X."
+
+#: contrib/localflavor/es/es_provinces.py:5
+msgid "Arava"
+msgstr "Álava"
+
+#: contrib/localflavor/es/es_provinces.py:6
+msgid "Albacete"
+msgstr "Albacete"
+
+#: contrib/localflavor/es/es_provinces.py:7
+msgid "Alacant"
+msgstr "Alicante"
+
+#: contrib/localflavor/es/es_provinces.py:8
+msgid "Almeria"
+msgstr "Almería"
+
+#: contrib/localflavor/es/es_provinces.py:9
+msgid "Avila"
+msgstr "Ávila"
+
+#: contrib/localflavor/es/es_provinces.py:10
+msgid "Badajoz"
+msgstr "Badajoz"
+
+#: contrib/localflavor/es/es_provinces.py:11
+msgid "Illes Balears"
+msgstr "Balearene"
+
+#: contrib/localflavor/es/es_provinces.py:12
+msgid "Barcelona"
+msgstr "Barcelona"
+
+#: contrib/localflavor/es/es_provinces.py:13
+msgid "Burgos"
+msgstr "Burgos"
+
+#: contrib/localflavor/es/es_provinces.py:14
+msgid "Caceres"
+msgstr "Cáceres"
+
+#: contrib/localflavor/es/es_provinces.py:15
+msgid "Cadiz"
+msgstr "Cádiz"
+
+#: contrib/localflavor/es/es_provinces.py:16
+msgid "Castello"
+msgstr "Castellón"
+
+#: contrib/localflavor/es/es_provinces.py:17
+msgid "Ciudad Real"
+msgstr "Ciudad Real"
+
+#: contrib/localflavor/es/es_provinces.py:18
+msgid "Cordoba"
+msgstr "Córdoba"
+
+#: contrib/localflavor/es/es_provinces.py:19
+msgid "A Coruna"
+msgstr "A Coruna"
+
+#: contrib/localflavor/es/es_provinces.py:20
+msgid "Cuenca"
+msgstr "Cuenca"
+
+#: contrib/localflavor/es/es_provinces.py:21
+msgid "Girona"
+msgstr "Girona"
+
+#: contrib/localflavor/es/es_provinces.py:22
+msgid "Granada"
+msgstr "Granada"
+
+#: contrib/localflavor/es/es_provinces.py:23
+msgid "Guadalajara"
+msgstr "Guadalajara"
+
+#: contrib/localflavor/es/es_provinces.py:24
+msgid "Guipuzkoa"
+msgstr "Gipuzkoa"
+
+#: contrib/localflavor/es/es_provinces.py:25
+msgid "Huelva"
+msgstr "Huelva"
+
+#: contrib/localflavor/es/es_provinces.py:26
+msgid "Huesca"
+msgstr "Huesca"
+
+#: contrib/localflavor/es/es_provinces.py:27
+msgid "Jaen"
+msgstr "Jaén"
+
+#: contrib/localflavor/es/es_provinces.py:28
+msgid "Leon"
+msgstr "León"
+
+#: contrib/localflavor/es/es_provinces.py:29
+msgid "Lleida"
+msgstr "Lleida"
+
+#: contrib/localflavor/es/es_provinces.py:30
+#: contrib/localflavor/es/es_regions.py:17
+msgid "La Rioja"
+msgstr "La Rioja"
+
+#: contrib/localflavor/es/es_provinces.py:31
+msgid "Lugo"
+msgstr "Lugo"
+
+#: contrib/localflavor/es/es_provinces.py:32
+#: contrib/localflavor/es/es_regions.py:18
+msgid "Madrid"
+msgstr "Madrid"
+
+#: contrib/localflavor/es/es_provinces.py:33
+msgid "Malaga"
+msgstr "Málaga"
+
+#: contrib/localflavor/es/es_provinces.py:34
+msgid "Murcia"
+msgstr "Murcia"
+
+#: contrib/localflavor/es/es_provinces.py:35
+msgid "Navarre"
+msgstr "Navarra"
+
+#: contrib/localflavor/es/es_provinces.py:36
+msgid "Ourense"
+msgstr "Ourense"
+
+#: contrib/localflavor/es/es_provinces.py:37
+msgid "Asturias"
+msgstr "Asturias"
+
+#: contrib/localflavor/es/es_provinces.py:38
+msgid "Palencia"
+msgstr "Palencia"
+
+#: contrib/localflavor/es/es_provinces.py:39
+msgid "Las Palmas"
+msgstr "Las Palmas"
+
+#: contrib/localflavor/es/es_provinces.py:40
+msgid "Pontevedra"
+msgstr "Pontevedra"
+
+#: contrib/localflavor/es/es_provinces.py:41
+msgid "Salamanca"
+msgstr "Salamanca"
+
+#: contrib/localflavor/es/es_provinces.py:42
+msgid "Santa Cruz de Tenerife"
+msgstr "Santa Cruz de Tenerife"
+
+#: contrib/localflavor/es/es_provinces.py:43
+#: contrib/localflavor/es/es_regions.py:11
+msgid "Cantabria"
+msgstr "Cantabria"
+
+#: contrib/localflavor/es/es_provinces.py:44
+msgid "Segovia"
+msgstr "Segovia"
+
+#: contrib/localflavor/es/es_provinces.py:45
+msgid "Seville"
+msgstr "Sevilla"
+
+#: contrib/localflavor/es/es_provinces.py:46
+msgid "Soria"
+msgstr "Soria"
+
+#: contrib/localflavor/es/es_provinces.py:47
+msgid "Tarragona"
+msgstr "Tarragona"
+
+#: contrib/localflavor/es/es_provinces.py:48
+msgid "Teruel"
+msgstr "Teruel"
+
+#: contrib/localflavor/es/es_provinces.py:49
+msgid "Toledo"
+msgstr "Toledo"
+
+#: contrib/localflavor/es/es_provinces.py:50
+msgid "Valencia"
+msgstr "Valencia"
+
+#: contrib/localflavor/es/es_provinces.py:51
+msgid "Valladolid"
+msgstr "Valladolid"
+
+#: contrib/localflavor/es/es_provinces.py:52
+msgid "Bizkaia"
+msgstr "Bizkaia"
+
+#: contrib/localflavor/es/es_provinces.py:53
+msgid "Zamora"
+msgstr "Zamora"
+
+#: contrib/localflavor/es/es_provinces.py:54
+msgid "Zaragoza"
+msgstr "Zaragoza"
+
+#: contrib/localflavor/es/es_provinces.py:55
+msgid "Ceuta"
+msgstr "Ceuta"
+
+#: contrib/localflavor/es/es_provinces.py:56
+msgid "Melilla"
+msgstr "Melilla"
+
+#: contrib/localflavor/es/es_regions.py:5
+msgid "Andalusia"
+msgstr "Andalucía"
+
+#: contrib/localflavor/es/es_regions.py:6
+msgid "Aragon"
+msgstr "Aragón"
+
+#: contrib/localflavor/es/es_regions.py:7
+msgid "Principality of Asturias"
+msgstr "Asturias"
+
+#: contrib/localflavor/es/es_regions.py:8
+msgid "Balearic Islands"
+msgstr "Balearene"
+
+#: contrib/localflavor/es/es_regions.py:9
+msgid "Basque Country"
+msgstr "Baskerland"
+
+#: contrib/localflavor/es/es_regions.py:10
+msgid "Canary Islands"
+msgstr "Kanariøyene"
+
+#: contrib/localflavor/es/es_regions.py:12
+msgid "Castile-La Mancha"
+msgstr "Castilla-La Mancha"
+
+#: contrib/localflavor/es/es_regions.py:13
+msgid "Castile and Leon"
+msgstr "Castilla y León"
+
+#: contrib/localflavor/es/es_regions.py:14
+msgid "Catalonia"
+msgstr "Catalonia"
+
+#: contrib/localflavor/es/es_regions.py:15
+msgid "Extremadura"
+msgstr "Extremadura"
+
+#: contrib/localflavor/es/es_regions.py:16
+msgid "Galicia"
+msgstr "Galicia"
+
+#: contrib/localflavor/es/es_regions.py:19
+msgid "Region of Murcia"
+msgstr "Murcia"
+
+#: contrib/localflavor/es/es_regions.py:20
+msgid "Foral Community of Navarre"
+msgstr "Navarra"
+
+#: contrib/localflavor/es/es_regions.py:21
+msgid "Valencian Community"
+msgstr "Valenciana"
+
+#: contrib/localflavor/es/forms.py:19
+msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
+msgstr "Oppgi et gyldig postnummer på formen 01XXX - 52XXX."
+
+#: contrib/localflavor/es/forms.py:39
+msgid ""
+"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
+"9XXXXXXXX."
+msgstr ""
+"Oppgi et gyldig telefonnummer på et av følgende formater: 6XXXXXXXX, "
+"8XXXXXXXX eller 9XXXXXXXX."
+
+#: contrib/localflavor/es/forms.py:66
+msgid "Please enter a valid NIF, NIE, or CIF."
+msgstr "Oppgi et gyldig NIF, NIE eller CIF."
+
+#: contrib/localflavor/es/forms.py:67
+msgid "Please enter a valid NIF or NIE."
+msgstr "Oppgi et gyldig NIF eller NIE."
+
+#: contrib/localflavor/es/forms.py:68
+msgid "Invalid checksum for NIF."
+msgstr "Ugyldig kontrollsum for NIF."
+
+#: contrib/localflavor/es/forms.py:69
+msgid "Invalid checksum for NIE."
+msgstr "Ugyldig kontrollsum for NIE."
+
+#: contrib/localflavor/es/forms.py:70
+msgid "Invalid checksum for CIF."
+msgstr "Ugyldig kontrollsum for CIF."
+
+#: contrib/localflavor/es/forms.py:142
+msgid ""
+"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
+msgstr "Oppgi et gyldig kontonummer på formen XXXX-XXXX-XX-XXXXXXXXXX."
+
+#: contrib/localflavor/es/forms.py:143
+msgid "Invalid checksum for bank account number."
+msgstr "Ugyldig kontrollsum for kontonummer."
+
+#: contrib/localflavor/fi/forms.py:28
+msgid "Enter a valid Finnish social security number."
+msgstr "Oppgi et gyldig finsk personnummer."
+
+#: contrib/localflavor/in_/forms.py:14
+msgid "Enter a zip code in the format XXXXXXX."
+msgstr "Oppgi et postnummer på formen XXXXXXX."
+
+#: contrib/localflavor/is_/forms.py:17
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr "Oppgi et gyldig islandsk identifikasjonsnummer på formen XXXXXX-XXXX."
+
+#: contrib/localflavor/is_/forms.py:18
+msgid "The Icelandic identification number is not valid."
+msgstr "Det islandsk identifikasjonsnummer er ugyldig."
+
+#: contrib/localflavor/it/forms.py:14
+msgid "Enter a valid zip code."
+msgstr "Oppgi et gyldig postnummer."
+
+#: contrib/localflavor/it/forms.py:43
+msgid "Enter a valid Social Security number."
+msgstr "Oppgi et gyldig italiensk personnummer."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Oppgi et gyldig VAT-nummer."
+
+#: contrib/localflavor/jp/forms.py:16
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Oppgi et postnummer på formen XXXXXXX eller XXX-XXXX."
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr "Hokkaido"
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr "Aomori"
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
+msgstr "Iwate"
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr "Miyagi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr "Akita"
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr "Yamagata"
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr "Fukushima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr "Ibaraki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr "Tochigi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr "Gunma"
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr "Saitama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr "Chiba"
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr "Tokyo"
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr "Kanagawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr "Yamanashi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr "Nagano"
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr "Niigata"
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr "Toyama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr "Ishikawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr "Fukui"
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr "Gifu"
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr "Shizuoka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr "Aichi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr "Mie"
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr "Shiga"
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr "Kyoto"
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr "Osaka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr "Hyogo"
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr "Nara"
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr "Wakayama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr "Tottori"
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+msgid "Shimane"
+msgstr "Shimane"
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr "Okayama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr "Hiroshima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr "Yamaguchi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr "Tokushima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr "Kagawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+msgid "Ehime"
+msgstr "Ehime"
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr "Kochi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr "Fukuoka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr "Saga"
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr "Nagasaki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr "Kumamoto"
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr "Oita"
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr "Miyazaki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr "Kagoshima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr "Okinawa"
+
+#: contrib/localflavor/mx/mx_states.py:12
+msgid "Aguascalientes"
+msgstr "Aguascalientes"
+
+#: contrib/localflavor/mx/mx_states.py:13
+msgid "Baja California"
+msgstr "Baja California"
+
+#: contrib/localflavor/mx/mx_states.py:14
+msgid "Baja California Sur"
+msgstr "Baja California Sur"
+
+#: contrib/localflavor/mx/mx_states.py:15
+msgid "Campeche"
+msgstr "Campeche"
+
+#: contrib/localflavor/mx/mx_states.py:16
+msgid "Chihuahua"
+msgstr "Chihuahua"
+
+#: contrib/localflavor/mx/mx_states.py:17
+msgid "Chiapas"
+msgstr "Chiapas"
+
+#: contrib/localflavor/mx/mx_states.py:18
+msgid "Coahuila"
+msgstr "Coahuila"
+
+#: contrib/localflavor/mx/mx_states.py:19
+msgid "Colima"
+msgstr "Colima"
+
+#: contrib/localflavor/mx/mx_states.py:20
+msgid "Distrito Federal"
+msgstr "Distrito Federal"
+
+#: contrib/localflavor/mx/mx_states.py:21
+msgid "Durango"
+msgstr "Durango"
+
+#: contrib/localflavor/mx/mx_states.py:22
+msgid "Guerrero"
+msgstr "Guerrero"
+
+#: contrib/localflavor/mx/mx_states.py:23
+msgid "Guanajuato"
+msgstr "Guanajuato"
+
+#: contrib/localflavor/mx/mx_states.py:24
+msgid "Hidalgo"
+msgstr "Hidalgo"
+
+#: contrib/localflavor/mx/mx_states.py:25
+msgid "Jalisco"
+msgstr "Jalisco"
+
+#: contrib/localflavor/mx/mx_states.py:26
+msgid "Estado de México"
+msgstr "Estado de México"
+
+#: contrib/localflavor/mx/mx_states.py:27
+msgid "Michoacán"
+msgstr "Michoacán"
+
+#: contrib/localflavor/mx/mx_states.py:28
+msgid "Morelos"
+msgstr "Morelos"
+
+#: contrib/localflavor/mx/mx_states.py:29
+msgid "Nayarit"
+msgstr "Nayarit"
+
+#: contrib/localflavor/mx/mx_states.py:30
+msgid "Nuevo León"
+msgstr "Nuevo León"
+
+#: contrib/localflavor/mx/mx_states.py:31
+msgid "Oaxaca"
+msgstr "Oaxaca"
+
+#: contrib/localflavor/mx/mx_states.py:32
+msgid "Puebla"
+msgstr "Puebla"
+
+#: contrib/localflavor/mx/mx_states.py:33
+msgid "Querétaro"
+msgstr "Querétaro"
+
+#: contrib/localflavor/mx/mx_states.py:34
+msgid "Quintana Roo"
+msgstr "Quintana Roo"
+
+#: contrib/localflavor/mx/mx_states.py:35
+msgid "Sinaloa"
+msgstr "Sinaloa"
+
+#: contrib/localflavor/mx/mx_states.py:36
+msgid "San Luis Potosí"
+msgstr "San Luis Potosí"
+
+#: contrib/localflavor/mx/mx_states.py:37
+msgid "Sonora"
+msgstr "Sonora"
+
+#: contrib/localflavor/mx/mx_states.py:38
+msgid "Tabasco"
+msgstr "Tabasco"
+
+#: contrib/localflavor/mx/mx_states.py:39
+msgid "Tamaulipas"
+msgstr "Tamaulipas"
+
+#: contrib/localflavor/mx/mx_states.py:40
+msgid "Tlaxcala"
+msgstr "Tlaxcala"
+
+#: contrib/localflavor/mx/mx_states.py:41
+msgid "Veracruz"
+msgstr "Veracruz"
+
+#: contrib/localflavor/mx/mx_states.py:42
+msgid "Yucatán"
+msgstr "Yucatán"
+
+#: contrib/localflavor/mx/mx_states.py:43
+msgid "Zacatecas"
+msgstr "Zacatecas"
+
+#: contrib/localflavor/nl/forms.py:21
+msgid "Enter a valid postal code"
+msgstr "Oppgi et gyldig postnummer."
+
+#: contrib/localflavor/nl/forms.py:52
+msgid "Enter a valid phone number"
+msgstr "Oppgi et gyldig telefonnummer."
+
+#: contrib/localflavor/nl/forms.py:78
+msgid "Enter a valid SoFi number"
+msgstr "Oppgi et gyldig SoFi-nummer."
+
+#: contrib/localflavor/nl/nl_provinces.py:4
+msgid "Drenthe"
+msgstr "Drenthe"
+
+#: contrib/localflavor/nl/nl_provinces.py:5
+msgid "Flevoland"
+msgstr "Flevoland"
+
+#: contrib/localflavor/nl/nl_provinces.py:6
+msgid "Friesland"
+msgstr "Friesland"
+
+#: contrib/localflavor/nl/nl_provinces.py:7
+msgid "Gelderland"
+msgstr "Gelderland"
+
+#: contrib/localflavor/nl/nl_provinces.py:8
+msgid "Groningen"
+msgstr "Groningen"
+
+#: contrib/localflavor/nl/nl_provinces.py:9
+msgid "Limburg"
+msgstr "Limburg"
+
+#: contrib/localflavor/nl/nl_provinces.py:10
+msgid "Noord-Brabant"
+msgstr "Noord-Brabant"
+
+#: contrib/localflavor/nl/nl_provinces.py:11
+msgid "Noord-Holland"
+msgstr "Noord-Holland"
+
+#: contrib/localflavor/nl/nl_provinces.py:12
+msgid "Overijssel"
+msgstr "Overijssel"
+
+#: contrib/localflavor/nl/nl_provinces.py:13
+msgid "Utrecht"
+msgstr "Utrecht"
+
+#: contrib/localflavor/nl/nl_provinces.py:14
+msgid "Zeeland"
+msgstr "Zeeland"
+
+#: contrib/localflavor/nl/nl_provinces.py:15
+msgid "Zuid-Holland"
+msgstr "Zuid-Holland"
+
+#: contrib/localflavor/no/forms.py:33
+msgid "Enter a valid Norwegian social security number."
+msgstr "Oppgi et gyldig norsk personnummer."
+
+#: contrib/localflavor/pe/forms.py:24
+msgid "This field requires 8 digits."
+msgstr "Feltet krever åtte siffer."
+
+#: contrib/localflavor/pe/forms.py:52
+msgid "This field requires 11 digits."
+msgstr "Feltet krever 11 siffer."
+
+#: contrib/localflavor/pl/forms.py:38
+msgid "National Identification Number consists of 11 digits."
+msgstr "National Identification Number består av 11 siffer."
+
+#: contrib/localflavor/pl/forms.py:39
+msgid "Wrong checksum for the National Identification Number."
+msgstr "Feil kontrollsum for National Identification Number."
+
+#: contrib/localflavor/pl/forms.py:71
+msgid ""
+"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
+msgstr "Oppgi et NIP på formen XXX-XXX-XX-XX eller XX-XX-XXX-XXX."
+
+#: contrib/localflavor/pl/forms.py:72
+msgid "Wrong checksum for the Tax Number (NIP)."
+msgstr "Ugyldig kontrollsum for NIP."
+
+#: contrib/localflavor/pl/forms.py:109
+msgid "National Business Register Number (REGON) consists of 9 or 14 digits."
+msgstr "National Business Register Number (REGON) består av 9 eller 14 siffer."
+
+#: contrib/localflavor/pl/forms.py:110
+msgid "Wrong checksum for the National Business Register Number (REGON)."
+msgstr "Ugyldig kontrollsum for National Business Register Number (REGON)."
+
+#: contrib/localflavor/pl/forms.py:148
+msgid "Enter a postal code in the format XX-XXX."
+msgstr "Oppgi et postnummer på formen XX-XXX."
+
+#: contrib/localflavor/pl/pl_voivodeships.py:8
+msgid "Lower Silesia"
+msgstr "Lower Silesia"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:9
+msgid "Kuyavia-Pomerania"
+msgstr "Kuyavia-Pomerania"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:10
+msgid "Lublin"
+msgstr "Lublin"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:11
+msgid "Lubusz"
+msgstr "Lubusz"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:12
+msgid "Lodz"
+msgstr "Lodz"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:13
+msgid "Lesser Poland"
+msgstr "Lesser Poland"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:14
+msgid "Masovia"
+msgstr "Masovia"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:15
+msgid "Opole"
+msgstr "Opole"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:16
+msgid "Subcarpatia"
+msgstr "Subcarpatia"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:17
+msgid "Podlasie"
+msgstr "Podlasie"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:18
+msgid "Pomerania"
+msgstr "Pomerania"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:19
+msgid "Silesia"
+msgstr "Silesia"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:20
+msgid "Swietokrzyskie"
+msgstr "Swietokrzyskie"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:21
+msgid "Warmia-Masuria"
+msgstr "Warmia-Masuria"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:22
+msgid "Greater Poland"
+msgstr "Greater Poland"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:23
+msgid "West Pomerania"
+msgstr "West Pomerania"
+
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Oppgi et gyldig CIF."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Oppgi et gyldig CNP."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Oppgi et gyldig IBAN på formen ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Telefonnummeret må være på formen XXXX-XXXXXX."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Oppgi et postnummer på formen XXXXXX."
+
+#: contrib/localflavor/sk/sk_districts.py:8
+msgid "Banska Bystrica"
+msgstr "Banska Bystrica"
+
+#: contrib/localflavor/sk/sk_districts.py:9
+msgid "Banska Stiavnica"
+msgstr "Banska Stiavnica"
+
+#: contrib/localflavor/sk/sk_districts.py:10
+msgid "Bardejov"
+msgstr "Bardejov"
+
+#: contrib/localflavor/sk/sk_districts.py:11
+msgid "Banovce nad Bebravou"
+msgstr "Banovce nad Bebravou"
+
+#: contrib/localflavor/sk/sk_districts.py:12
+msgid "Brezno"
+msgstr "Brezno"
+
+#: contrib/localflavor/sk/sk_districts.py:13
+msgid "Bratislava I"
+msgstr "Bratislava I"
+
+#: contrib/localflavor/sk/sk_districts.py:14
+msgid "Bratislava II"
+msgstr "Bratislava II"
+
+#: contrib/localflavor/sk/sk_districts.py:15
+msgid "Bratislava III"
+msgstr "Bratislava III"
+
+#: contrib/localflavor/sk/sk_districts.py:16
+msgid "Bratislava IV"
+msgstr "Bratislava IV"
+
+#: contrib/localflavor/sk/sk_districts.py:17
+msgid "Bratislava V"
+msgstr "Bratislava V"
+
+#: contrib/localflavor/sk/sk_districts.py:18
+msgid "Bytca"
+msgstr "Bytca"
+
+#: contrib/localflavor/sk/sk_districts.py:19
+msgid "Cadca"
+msgstr "Cadca"
+
+#: contrib/localflavor/sk/sk_districts.py:20
+msgid "Detva"
+msgstr "Detva"
+
+#: contrib/localflavor/sk/sk_districts.py:21
+msgid "Dolny Kubin"
+msgstr "Dolny Kubin"
+
+#: contrib/localflavor/sk/sk_districts.py:22
+msgid "Dunajska Streda"
+msgstr "Dunajska Streda"
+
+#: contrib/localflavor/sk/sk_districts.py:23
+msgid "Galanta"
+msgstr "Galanta"
+
+#: contrib/localflavor/sk/sk_districts.py:24
+msgid "Gelnica"
+msgstr "Gelnica"
+
+#: contrib/localflavor/sk/sk_districts.py:25
+msgid "Hlohovec"
+msgstr "Hlohovec"
+
+#: contrib/localflavor/sk/sk_districts.py:26
+msgid "Humenne"
+msgstr "Humenne"
+
+#: contrib/localflavor/sk/sk_districts.py:27
+msgid "Ilava"
+msgstr "Ilava"
+
+#: contrib/localflavor/sk/sk_districts.py:28
+msgid "Kezmarok"
+msgstr "Kezmarok"
+
+#: contrib/localflavor/sk/sk_districts.py:29
+msgid "Komarno"
+msgstr "Komarno"
+
+#: contrib/localflavor/sk/sk_districts.py:30
+msgid "Kosice I"
+msgstr "Kosice I"
+
+#: contrib/localflavor/sk/sk_districts.py:31
+msgid "Kosice II"
+msgstr "Kosice II"
+
+#: contrib/localflavor/sk/sk_districts.py:32
+msgid "Kosice III"
+msgstr "Kosice III"
+
+#: contrib/localflavor/sk/sk_districts.py:33
+msgid "Kosice IV"
+msgstr "Kosice IV"
+
+#: contrib/localflavor/sk/sk_districts.py:34
+msgid "Kosice - okolie"
+msgstr "Kosice - okolie"
+
+#: contrib/localflavor/sk/sk_districts.py:35
+msgid "Krupina"
+msgstr "Krupina"
+
+#: contrib/localflavor/sk/sk_districts.py:36
+msgid "Kysucke Nove Mesto"
+msgstr "Kysucke Nove Mesto"
+
+#: contrib/localflavor/sk/sk_districts.py:37
+msgid "Levice"
+msgstr "Levice"
+
+#: contrib/localflavor/sk/sk_districts.py:38
+msgid "Levoca"
+msgstr "Levoca"
+
+#: contrib/localflavor/sk/sk_districts.py:39
+msgid "Liptovsky Mikulas"
+msgstr "Liptovsky Mikulas"
+
+#: contrib/localflavor/sk/sk_districts.py:40
+msgid "Lucenec"
+msgstr "Lucenec"
+
+#: contrib/localflavor/sk/sk_districts.py:41
+msgid "Malacky"
+msgstr "Malacky"
+
+#: contrib/localflavor/sk/sk_districts.py:42
+msgid "Martin"
+msgstr "Martin"
+
+#: contrib/localflavor/sk/sk_districts.py:43
+msgid "Medzilaborce"
+msgstr "Medzilaborce"
+
+#: contrib/localflavor/sk/sk_districts.py:44
+msgid "Michalovce"
+msgstr "Michalovce"
+
+#: contrib/localflavor/sk/sk_districts.py:45
+msgid "Myjava"
+msgstr "Myjava"
+
+#: contrib/localflavor/sk/sk_districts.py:46
+msgid "Namestovo"
+msgstr "Namestovo"
+
+#: contrib/localflavor/sk/sk_districts.py:47
+msgid "Nitra"
+msgstr "Nitra"
+
+#: contrib/localflavor/sk/sk_districts.py:48
+msgid "Nove Mesto nad Vahom"
+msgstr "Nove Mesto nad Vahom"
+
+#: contrib/localflavor/sk/sk_districts.py:49
+msgid "Nove Zamky"
+msgstr "Nove Zamky"
+
+#: contrib/localflavor/sk/sk_districts.py:50
+msgid "Partizanske"
+msgstr "Partizanske"
+
+#: contrib/localflavor/sk/sk_districts.py:51
+msgid "Pezinok"
+msgstr "Pezinok"
+
+#: contrib/localflavor/sk/sk_districts.py:52
+msgid "Piestany"
+msgstr "Piestany"
+
+#: contrib/localflavor/sk/sk_districts.py:53
+msgid "Poltar"
+msgstr "Poltar"
+
+#: contrib/localflavor/sk/sk_districts.py:54
+msgid "Poprad"
+msgstr "Poprad"
+
+#: contrib/localflavor/sk/sk_districts.py:55
+msgid "Povazska Bystrica"
+msgstr "Povazska Bystrica"
+
+#: contrib/localflavor/sk/sk_districts.py:56
+msgid "Presov"
+msgstr "Presov"
+
+#: contrib/localflavor/sk/sk_districts.py:57
+msgid "Prievidza"
+msgstr "Prievidza"
+
+#: contrib/localflavor/sk/sk_districts.py:58
+msgid "Puchov"
+msgstr "Puchov"
+
+#: contrib/localflavor/sk/sk_districts.py:59
+msgid "Revuca"
+msgstr "Revuca"
+
+#: contrib/localflavor/sk/sk_districts.py:60
+msgid "Rimavska Sobota"
+msgstr "Rimavska Sobota"
+
+#: contrib/localflavor/sk/sk_districts.py:61
+msgid "Roznava"
+msgstr "Roznava"
+
+#: contrib/localflavor/sk/sk_districts.py:62
+msgid "Ruzomberok"
+msgstr "Ruzomberok"
+
+#: contrib/localflavor/sk/sk_districts.py:63
+msgid "Sabinov"
+msgstr "Sabinov"
+
+#: contrib/localflavor/sk/sk_districts.py:64
+msgid "Senec"
+msgstr "Senec"
+
+#: contrib/localflavor/sk/sk_districts.py:65
+msgid "Senica"
+msgstr "Senica"
+
+#: contrib/localflavor/sk/sk_districts.py:66
+msgid "Skalica"
+msgstr "Skalica"
+
+#: contrib/localflavor/sk/sk_districts.py:67
+msgid "Snina"
+msgstr "Snina"
+
+#: contrib/localflavor/sk/sk_districts.py:68
+msgid "Sobrance"
+msgstr "Sobrance"
+
+#: contrib/localflavor/sk/sk_districts.py:69
+msgid "Spisska Nova Ves"
+msgstr "Spisska Nova Ves"
+
+#: contrib/localflavor/sk/sk_districts.py:70
+msgid "Stara Lubovna"
+msgstr "Stara Lubovna"
+
+#: contrib/localflavor/sk/sk_districts.py:71
+msgid "Stropkov"
+msgstr "Stropkov"
+
+#: contrib/localflavor/sk/sk_districts.py:72
+msgid "Svidnik"
+msgstr "Svidnik"
+
+#: contrib/localflavor/sk/sk_districts.py:73
+msgid "Sala"
+msgstr "Sala"
+
+#: contrib/localflavor/sk/sk_districts.py:74
+msgid "Topolcany"
+msgstr "Topolcany"
+
+#: contrib/localflavor/sk/sk_districts.py:75
+msgid "Trebisov"
+msgstr "Trebisov"
+
+#: contrib/localflavor/sk/sk_districts.py:76
+msgid "Trencin"
+msgstr "Trencin"
+
+#: contrib/localflavor/sk/sk_districts.py:77
+msgid "Trnava"
+msgstr "Trnava"
+
+#: contrib/localflavor/sk/sk_districts.py:78
+msgid "Turcianske Teplice"
+msgstr "Turcianske Teplice"
+
+#: contrib/localflavor/sk/sk_districts.py:79
+msgid "Tvrdosin"
+msgstr "Tvrdosin"
+
+#: contrib/localflavor/sk/sk_districts.py:80
+msgid "Velky Krtis"
+msgstr "Velky Krtis"
+
+#: contrib/localflavor/sk/sk_districts.py:81
+msgid "Vranov nad Toplou"
+msgstr "Vranov nad Toplou"
+
+#: contrib/localflavor/sk/sk_districts.py:82
+msgid "Zlate Moravce"
+msgstr "Zlate Moravce"
+
+#: contrib/localflavor/sk/sk_districts.py:83
+msgid "Zvolen"
+msgstr "Zvolen"
+
+#: contrib/localflavor/sk/sk_districts.py:84
+msgid "Zarnovica"
+msgstr "Zarnovica"
+
+#: contrib/localflavor/sk/sk_districts.py:85
+msgid "Ziar nad Hronom"
+msgstr "Ziar nad Hronom"
+
+#: contrib/localflavor/sk/sk_districts.py:86
+msgid "Zilina"
+msgstr "Zilina"
+
+#: contrib/localflavor/sk/sk_regions.py:8
+msgid "Banska Bystrica region"
+msgstr "Banská Bystrica-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:9
+msgid "Bratislava region"
+msgstr "Bratislava-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:10
+msgid "Kosice region"
+msgstr "Košice-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:11
+msgid "Nitra region"
+msgstr "Nitra-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:12
+msgid "Presov region"
+msgstr "Prešov-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:13
+msgid "Trencin region"
+msgstr "Trenčín-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:14
+msgid "Trnava region"
+msgstr "Trnava-regionen"
+
+#: contrib/localflavor/sk/sk_regions.py:15
+msgid "Zilina region"
+msgstr "Žilina-regionen"
+
+#: contrib/localflavor/uk/forms.py:21
+msgid "Enter a valid postcode."
+msgstr "Oppgi et gyldig postnummer."
+
+#: contrib/localflavor/uk/uk_regions.py:11
+msgid "Bedfordshire"
+msgstr "Bedfordshire"
+
+#: contrib/localflavor/uk/uk_regions.py:12
+msgid "Buckinghamshire"
+msgstr "Buckinghamshire"
+
+#: contrib/localflavor/uk/uk_regions.py:14
+msgid "Cheshire"
+msgstr "Cheshire"
+
+#: contrib/localflavor/uk/uk_regions.py:15
+msgid "Cornwall and Isles of Scilly"
+msgstr "Cornwall"
+
+#: contrib/localflavor/uk/uk_regions.py:16
+msgid "Cumbria"
+msgstr "Cumbria"
+
+#: contrib/localflavor/uk/uk_regions.py:17
+msgid "Derbyshire"
+msgstr "Derbyshire"
+
+#: contrib/localflavor/uk/uk_regions.py:18
+msgid "Devon"
+msgstr "Devon"
+
+#: contrib/localflavor/uk/uk_regions.py:19
+msgid "Dorset"
+msgstr "Dorset"
+
+#: contrib/localflavor/uk/uk_regions.py:20
+msgid "Durham"
+msgstr "Durham"
+
+#: contrib/localflavor/uk/uk_regions.py:21
+msgid "East Sussex"
+msgstr "East Sussex"
+
+#: contrib/localflavor/uk/uk_regions.py:22
+msgid "Essex"
+msgstr "Essex"
+
+#: contrib/localflavor/uk/uk_regions.py:23
+msgid "Gloucestershire"
+msgstr "Gloucestershire"
+
+#: contrib/localflavor/uk/uk_regions.py:24
+msgid "Greater London"
+msgstr "Stor-London"
+
+#: contrib/localflavor/uk/uk_regions.py:25
+msgid "Greater Manchester"
+msgstr "Stor-Manchester"
+
+#: contrib/localflavor/uk/uk_regions.py:26
+msgid "Hampshire"
+msgstr "Hampshire"
+
+#: contrib/localflavor/uk/uk_regions.py:27
+msgid "Hertfordshire"
+msgstr "Hertfordshire"
+
+#: contrib/localflavor/uk/uk_regions.py:28
+msgid "Kent"
+msgstr "Kent"
+
+#: contrib/localflavor/uk/uk_regions.py:29
+msgid "Lancashire"
+msgstr "Lancashire"
+
+#: contrib/localflavor/uk/uk_regions.py:30
+msgid "Leicestershire"
+msgstr "Leicestershire"
+
+#: contrib/localflavor/uk/uk_regions.py:31
+msgid "Lincolnshire"
+msgstr "Lincolnshire"
+
+#: contrib/localflavor/uk/uk_regions.py:32
+msgid "Merseyside"
+msgstr "Merseyside"
+
+#: contrib/localflavor/uk/uk_regions.py:33
+msgid "Norfolk"
+msgstr "Norfolk"
+
+#: contrib/localflavor/uk/uk_regions.py:34
+msgid "North Yorkshire"
+msgstr "North Yorkshire"
+
+#: contrib/localflavor/uk/uk_regions.py:35
+msgid "Northamptonshire"
+msgstr "Northamptonshire"
+
+#: contrib/localflavor/uk/uk_regions.py:36
+msgid "Northumberland"
+msgstr "Northumberland"
+
+#: contrib/localflavor/uk/uk_regions.py:37
+msgid "Nottinghamshire"
+msgstr "Nottinghamshire"
+
+#: contrib/localflavor/uk/uk_regions.py:38
+msgid "Oxfordshire"
+msgstr "Oxfordshire"
+
+#: contrib/localflavor/uk/uk_regions.py:39
+msgid "Shropshire"
+msgstr "Shropshire"
+
+#: contrib/localflavor/uk/uk_regions.py:40
+msgid "Somerset"
+msgstr "Somerset"
+
+#: contrib/localflavor/uk/uk_regions.py:41
+msgid "South Yorkshire"
+msgstr "South Yorkshire"
+
+#: contrib/localflavor/uk/uk_regions.py:42
+msgid "Staffordshire"
+msgstr "Staffordshire"
+
+#: contrib/localflavor/uk/uk_regions.py:43
+msgid "Suffolk"
+msgstr "Suffolk"
+
+#: contrib/localflavor/uk/uk_regions.py:44
+msgid "Surrey"
+msgstr "Surrey"
+
+#: contrib/localflavor/uk/uk_regions.py:45
+msgid "Tyne and Wear"
+msgstr "Tyne and Wear"
+
+#: contrib/localflavor/uk/uk_regions.py:46
+msgid "Warwickshire"
+msgstr "Warwickshire"
+
+#: contrib/localflavor/uk/uk_regions.py:47
+msgid "West Midlands"
+msgstr "West Midlands"
+
+#: contrib/localflavor/uk/uk_regions.py:48
+msgid "West Sussex"
+msgstr "West Sussex"
+
+#: contrib/localflavor/uk/uk_regions.py:49
+msgid "West Yorkshire"
+msgstr "West Yorkshire"
+
+#: contrib/localflavor/uk/uk_regions.py:50
+msgid "Wiltshire"
+msgstr "Wiltshire"
+
+#: contrib/localflavor/uk/uk_regions.py:51
+msgid "Worcestershire"
+msgstr "Worcestershire"
+
+#: contrib/localflavor/uk/uk_regions.py:55
+msgid "County Antrim"
+msgstr "Antrim"
+
+#: contrib/localflavor/uk/uk_regions.py:56
+msgid "County Armagh"
+msgstr "Armagh"
+
+#: contrib/localflavor/uk/uk_regions.py:57
+msgid "County Down"
+msgstr "Down"
+
+#: contrib/localflavor/uk/uk_regions.py:58
+msgid "County Fermanagh"
+msgstr "Fermanagh"
+
+#: contrib/localflavor/uk/uk_regions.py:59
+msgid "County Londonderry"
+msgstr "Londonderry"
+
+#: contrib/localflavor/uk/uk_regions.py:60
+msgid "County Tyrone"
+msgstr "Tyrone"
+
+#: contrib/localflavor/uk/uk_regions.py:64
+msgid "Clwyd"
+msgstr "Clwyd"
+
+#: contrib/localflavor/uk/uk_regions.py:65
+msgid "Dyfed"
+msgstr "Dyfed"
+
+#: contrib/localflavor/uk/uk_regions.py:66
+msgid "Gwent"
+msgstr "Gwent"
+
+#: contrib/localflavor/uk/uk_regions.py:67
+msgid "Gwynedd"
+msgstr "Gwynedd"
+
+#: contrib/localflavor/uk/uk_regions.py:68
+msgid "Mid Glamorgan"
+msgstr "Mid Glamorgan"
+
+#: contrib/localflavor/uk/uk_regions.py:69
+msgid "Powys"
+msgstr "Powys"
+
+#: contrib/localflavor/uk/uk_regions.py:70
+msgid "South Glamorgan"
+msgstr "South Glamorgan"
+
+#: contrib/localflavor/uk/uk_regions.py:71
+msgid "West Glamorgan"
+msgstr "West Glamorgan"
+
+#: contrib/localflavor/uk/uk_regions.py:75
+msgid "Borders"
+msgstr "Borders"
+
+#: contrib/localflavor/uk/uk_regions.py:76
+msgid "Central Scotland"
+msgstr "Central Scotland"
+
+#: contrib/localflavor/uk/uk_regions.py:77
+msgid "Dumfries and Galloway"
+msgstr "Dumfries and Galloway"
+
+#: contrib/localflavor/uk/uk_regions.py:78
+msgid "Fife"
+msgstr "Fife"
+
+#: contrib/localflavor/uk/uk_regions.py:79
+msgid "Grampian"
+msgstr "Grampian"
+
+#: contrib/localflavor/uk/uk_regions.py:80
+msgid "Highland"
+msgstr "Highland"
+
+#: contrib/localflavor/uk/uk_regions.py:81
+msgid "Lothian"
+msgstr "Lothian"
+
+#: contrib/localflavor/uk/uk_regions.py:82
+msgid "Orkney Islands"
+msgstr "Orknøyene"
+
+#: contrib/localflavor/uk/uk_regions.py:83
+msgid "Shetland Islands"
+msgstr "Shetland"
+
+#: contrib/localflavor/uk/uk_regions.py:84
+msgid "Strathclyde"
+msgstr "Strathclyde"
+
+#: contrib/localflavor/uk/uk_regions.py:85
+msgid "Tayside"
+msgstr "Tayside"
+
+#: contrib/localflavor/uk/uk_regions.py:86
+msgid "Western Isles"
+msgstr "Ytre Hebridene"
+
+#: contrib/localflavor/uk/uk_regions.py:90
+msgid "England"
+msgstr "England"
+
+#: contrib/localflavor/uk/uk_regions.py:91
+msgid "Northern Ireland"
+msgstr "Nord-Irland"
+
+#: contrib/localflavor/uk/uk_regions.py:92
+msgid "Scotland"
+msgstr "Skottland"
+
+#: contrib/localflavor/uk/uk_regions.py:93
+msgid "Wales"
+msgstr "Wales"
+
+#: contrib/localflavor/us/forms.py:16
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Oppgi et postnummer på formen XXXXX eller XXXXX-XXXX."
+
+#: contrib/localflavor/us/forms.py:54
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr ""
+"Oppgi et gyldig amerikansik Social Security-nummer på formen XXX-XX-XXXX."
+
+#: contrib/localflavor/za/forms.py:20
+msgid "Enter a valid South African ID number"
+msgstr "Oppgi et gyldig South African ID-nummer."
+
+#: contrib/localflavor/za/forms.py:54
+msgid "Enter a valid South African postal code"
+msgstr "Oppgi et gyldig postnummer."
+
+#: contrib/localflavor/za/za_provinces.py:4
+msgid "Eastern Cape"
+msgstr "Eastern Cape"
+
+#: contrib/localflavor/za/za_provinces.py:5
+msgid "Free State"
+msgstr "Free State"
+
+#: contrib/localflavor/za/za_provinces.py:6
+msgid "Gauteng"
+msgstr "Gauteng"
+
+#: contrib/localflavor/za/za_provinces.py:7
+msgid "KwaZulu-Natal"
+msgstr "KwaZulu-Natal"
+
+#: contrib/localflavor/za/za_provinces.py:8
+msgid "Limpopo"
+msgstr "Limpopo"
+
+#: contrib/localflavor/za/za_provinces.py:9
+msgid "Mpumalanga"
+msgstr "Mpumalanga"
+
+#: contrib/localflavor/za/za_provinces.py:10
+msgid "Northern Cape"
+msgstr "Northern Cape"
+
+#: contrib/localflavor/za/za_provinces.py:11
+msgid "North West"
+msgstr "North West"
+
+#: contrib/localflavor/za/za_provinces.py:12
+msgid "Western Cape"
+msgstr "Western Cape"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "omadresser fra"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Dette bør være en fullstendig sti uten domenenavn. Eksempel: '/hendelser/"
+"finn/"
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "omadresser til"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Dette kan enten være en fullstendig sti (som over), eller en fullstendig "
+"nettadresse som starter med 'http://'"
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "omadressering"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "omadresseringer"
+
+#: contrib/sessions/models.py:45
+msgid "session key"
+msgstr "sesjonsnøkkel"
+
+#: contrib/sessions/models.py:47
+msgid "session data"
+msgstr "sesjonsdata"
+
+#: contrib/sessions/models.py:48
+msgid "expire date"
+msgstr "utløpsdato"
+
+#: contrib/sessions/models.py:53
+msgid "session"
+msgstr "sesjon"
+
+#: contrib/sessions/models.py:54
+msgid "sessions"
+msgstr "sesjoner"
+
+#: contrib/sites/models.py:32
+msgid "domain name"
+msgstr "domenenavn"
+
+#: contrib/sites/models.py:33
+msgid "display name"
+msgstr "visningsnavn"
+
+#: contrib/sites/models.py:39
+msgid "sites"
+msgstr "nettsider"
+
+#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710
+msgid "This value must be an integer."
+msgstr "Verdien må være et heltall."
+
+#: db/models/fields/__init__.py:388
+msgid "This value must be either True or False."
+msgstr "Verdien må være True eller False."
+
+#: db/models/fields/__init__.py:427
+msgid "This field cannot be null."
+msgstr "Feltet kan ikke være tomt."
+
+#: db/models/fields/__init__.py:443
+msgid "Enter only digits separated by commas."
+msgstr "Oppgi kun tall adskilt med komma."
+
+#: db/models/fields/__init__.py:474
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Oppgi en gyldig dato på formen ÅÅÅÅ-MM-DD."
+
+#: db/models/fields/__init__.py:483
+#, python-format
+msgid "Invalid date: %s"
+msgstr "Ugyldig dato: %s"
+
+#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
+msgstr "Oppgi dato og tid på formen ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]."
+
+#: db/models/fields/__init__.py:601
+msgid "This value must be a decimal number."
+msgstr "Verdien må være et desimaltall."
+
+#: db/models/fields/__init__.py:686
+msgid "This value must be a float."
+msgstr "Verdien må være et flyttall."
+
+#: db/models/fields/__init__.py:746
+msgid "This value must be either None, True or False."
+msgstr "Verdien må være None, True eller False."
+
+#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863
+msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
+msgstr "Oppgi tiden på formen TT:MM[:ss[.uuuuuu]]."
+
+#: db/models/fields/related.py:816
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en."
+
+#: db/models/fields/related.py:894
+#, python-format
+msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
+msgid_plural ""
+"Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "Oppgi gyldige %(self)s-ID-er. Verdien %(value)r er ugyldig."
+msgstr[1] "Oppgi gyldige %(self)s-ID-er. Verdiene %(value)r er ugyldige."
+
+#: forms/fields.py:54
+msgid "This field is required."
+msgstr "Feltet er påkrevet."
+
+#: forms/fields.py:55
+msgid "Enter a valid value."
+msgstr "Oppgi en gyldig verdi."
+
+#: forms/fields.py:138
+#, python-format
+msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
+msgstr "Verdien kan maksimalt ha %(max)d tegn (den er %(length)d)."
+
+#: forms/fields.py:139
+#, python-format
+msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
+msgstr "Verdien må minimum ha %(min)d tegn (den er %(length)d)."
+
+#: forms/fields.py:166
+msgid "Enter a whole number."
+msgstr "Oppgi et heltall."
+
+#: forms/fields.py:167 forms/fields.py:196 forms/fields.py:225
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Verdien må være mindre enn eller lik %s."
+
+#: forms/fields.py:168 forms/fields.py:197 forms/fields.py:226
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Verdien må være større enn eller lik %s."
+
+#: forms/fields.py:195 forms/fields.py:224
+msgid "Enter a number."
+msgstr "Oppgi et tall."
+
+#: forms/fields.py:227
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "Verdien kan ikke ha mer enn %s siffer totalt."
+
+#: forms/fields.py:228
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "Verdien kan ikke ha mer enn %s desimaler."
+
+#: forms/fields.py:229
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "Verdien kan ikke ha mer enn %s siffer foran komma."
+
+#: forms/fields.py:288 forms/fields.py:863
+msgid "Enter a valid date."
+msgstr "Oppgi en gyldig dato."
+
+#: forms/fields.py:322 forms/fields.py:864
+msgid "Enter a valid time."
+msgstr "Oppgi et gyldig tidspunkt."
+
+#: forms/fields.py:361
+msgid "Enter a valid date/time."
+msgstr "Oppgi gyldig dato og tidspunkt."
+
+#: forms/fields.py:447
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Ingen fil ble sendt. Sjekk \"encoding\"-typen på skjemaet."
+
+#: forms/fields.py:448
+msgid "No file was submitted."
+msgstr "Ingen fil ble sendt."
+
+#: forms/fields.py:449
+msgid "The submitted file is empty."
+msgstr "Filen er tom."
+
+#: forms/fields.py:450
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr "Filnavnet kan maksimalt ha %(max)d tegn (det har %(length)d)."
+
+#: forms/fields.py:483
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et "
+"bilde."
+
+#: forms/fields.py:544
+msgid "Enter a valid URL."
+msgstr "Oppgi en gyldig nettadresse."
+
+#: forms/fields.py:545
+msgid "This URL appears to be a broken link."
+msgstr "Nettadressen fører til en side som ikke eksisterer."
+
+#: forms/fields.py:625 forms/fields.py:703
+#, python-format
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene."
+
+#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003
+msgid "Enter a list of values."
+msgstr "Oppgi en liste med verdier."
+
+#: forms/fields.py:892
+msgid "Enter a valid IPv4 address."
+msgstr "Oppgi en gyldig IPv4-adresse."
+
+#: forms/fields.py:902
+msgid ""
+"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
+msgstr ""
+"Oppgi en gyldig 'slug' bestående av bokstaver, nummer, understreker eller "
+"bindestreker."
+
+#: forms/formsets.py:271 forms/formsets.py:273
+msgid "Order"
+msgstr "Rekkefølge"
+
+#: forms/models.py:367
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "%(field_name)s må være unik for %(date_field)s %(lookup)s."
+
+#: forms/models.py:381 forms/models.py:389
+#, python-format
+msgid "%(model_name)s with this %(field_label)s already exists."
+msgstr "%(model_name)s med %(field_label)s finnes allerede."
+
+#: forms/models.py:594
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "Vennligst korriger duplisert data for %(field)s."
+
+#: forms/models.py:598
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr "Vennligst korriger duplisert data for %(field)s, som må være unik."
+
+#: forms/models.py:604
+#, python-format
+msgid ""
+"Please correct the duplicate data for %(field_name)s which must be unique "
+"for the %(lookup)s in %(date_field)s."
+msgstr ""
+"Vennligst korriger duplisert data for %(field_name)s, som må være unik for "
+"%(lookup)s i %(date_field)s."
+
+#: forms/models.py:612
+msgid "Please correct the duplicate values below."
+msgstr "Vennligst korriger de dupliserte verdiene nedenfor."
+
+#: forms/models.py:867
+msgid "The inline foreign key did not match the parent instance primary key."
+msgstr "Primærnøkkelen er ikke den samme som foreldreinstansens primærnøkkel."
+
+#: forms/models.py:930
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Velg et gyldig valg. Valget er ikke et av de tilgjengelige valgene."
+
+#: forms/models.py:1004
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Velg et gyldig valg. %s er ikke et av de tilgjengelige valgene."
+
+#: forms/models.py:1006
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "\"%s\" er ikke en gyldig verdi for en primærnøkkel."
+
+#: template/defaultfilters.py:767
+msgid "yes,no,maybe"
+msgstr "ja,nei,kanskje"
+
+#: template/defaultfilters.py:798
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d byte"
+msgstr[1] "%(size)d bytes"
+
+#: template/defaultfilters.py:800
+#, python-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
+
+#: template/defaultfilters.py:802
+#, python-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: template/defaultfilters.py:803
+#, python-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: utils/dateformat.py:42
+msgid "p.m."
+msgstr "p.m."
+
+#: utils/dateformat.py:43
+msgid "a.m."
+msgstr "a.m."
+
+#: utils/dateformat.py:48
+msgid "PM"
+msgstr "PM"
+
+#: utils/dateformat.py:49
+msgid "AM"
+msgstr "AM"
+
+#: utils/dateformat.py:98
+msgid "midnight"
+msgstr "midnatt"
+
+#: utils/dateformat.py:100
+msgid "noon"
+msgstr "12:00"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "mandag"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "tirsdag"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "torsdag"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "fredag"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "lørdag"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "søndag"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "man"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "tirs"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "ons"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "tors"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "fre"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "lør"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "søn"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "januar"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "februar"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "March"
+msgstr "mars"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "April"
+msgstr "april"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "May"
+msgstr "mai"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "June"
+msgstr "juni"
+
+#: utils/dates.py:19 utils/dates.py:31
+msgid "July"
+msgstr "juli"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "august"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "september"
+
+#: utils/dates.py:19
+msgid "October"
+msgstr "oktober"
+
+#: utils/dates.py:19
+msgid "November"
+msgstr "november"
+
+#: utils/dates.py:20
+msgid "December"
+msgstr "desember"
+
+#: utils/dates.py:23
+msgid "jan"
+msgstr "jan"
+
+#: utils/dates.py:23
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:23
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:23
+msgid "apr"
+msgstr "apr"
+
+#: utils/dates.py:23
+msgid "may"
+msgstr "mai"
+
+#: utils/dates.py:23
+msgid "jun"
+msgstr "jun"
+
+#: utils/dates.py:24
+msgid "jul"
+msgstr "jul"
+
+#: utils/dates.py:24
+msgid "aug"
+msgstr "aug"
+
+#: utils/dates.py:24
+msgid "sep"
+msgstr "sep"
+
+#: utils/dates.py:24
+msgid "oct"
+msgstr "okt"
+
+#: utils/dates.py:24
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:24
+msgid "dec"
+msgstr "des"
+
+#: utils/dates.py:31
+msgid "Jan."
+msgstr "jan."
+
+#: utils/dates.py:31
+msgid "Feb."
+msgstr "feb."
+
+#: utils/dates.py:32
+msgid "Aug."
+msgstr "aug."
+
+#: utils/dates.py:32
+msgid "Sept."
+msgstr "sept."
+
+#: utils/dates.py:32
+msgid "Oct."
+msgstr "okt."
+
+#: utils/dates.py:32
+msgid "Nov."
+msgstr "nov."
+
+#: utils/dates.py:32
+msgid "Dec."
+msgstr "des."
+
+#: utils/text.py:128
+msgid "or"
+msgstr "eller"
+
+#: utils/timesince.py:21
+msgid "year"
+msgid_plural "years"
+msgstr[0] "år"
+msgstr[1] "år"
+
+#: utils/timesince.py:22
+msgid "month"
+msgid_plural "months"
+msgstr[0] "måned"
+msgstr[1] "måneder"
+
+#: utils/timesince.py:23
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "uke"
+msgstr[1] "uker"
+
+#: utils/timesince.py:24
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dag"
+msgstr[1] "dager"
+
+#: utils/timesince.py:25
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "time"
+msgstr[1] "timer"
+
+#: utils/timesince.py:26
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minutt"
+msgstr[1] "minutter"
+
+#: utils/timesince.py:45
+msgid "minutes"
+msgstr "minutter"
+
+#: utils/timesince.py:50
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:56
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: utils/translation/trans_real.py:399
+msgid "DATE_FORMAT"
+msgstr "j. F Y"
+
+#: utils/translation/trans_real.py:401
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: utils/translation/trans_real.py:417
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:418
+msgid "MONTH_DAY_FORMAT"
+msgstr "j. F"
+
+#: views/generic/create_update.py:114
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s ble opprettet."
+
+#: views/generic/create_update.py:156
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s ble oppdatert."
+
+#: views/generic/create_update.py:198
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s ble slettet."
Index: django/conf/locale/nb/LC_MESSAGES/djangojs.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: django/conf/locale/nb/LC_MESSAGES/djangojs.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: django/conf/locale/nb/LC_MESSAGES/django.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: django/conf/locale/nb/LC_MESSAGES/django.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: django/conf/locale/nb/LC_MESSAGES/djangojs.po
===================================================================
--- django/conf/locale/nb/LC_MESSAGES/djangojs.po	(.../trunk)	(revision 0)
+++ django/conf/locale/nb/LC_MESSAGES/djangojs.po	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,118 @@
+# translation of djangojs.po to norwegian
+# Copyright (C) 2005 and beyond
+# This file is distributed under the same license as the Django package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-12-09 11:51+0100\n"
+"PO-Revision-Date: 2008-08-29 16:12+0200\n"
+"Last-Translator: Christian Mikalsen and Jon Lønne\n"
+"Language-Team: Norsk <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "Tilgjengelige %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "Velg alle"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "Ny"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "Slett"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "Valgte %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "Velg ditt valg og klikk "
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "Fjern alle"
+
+#: contrib/admin/media/js/calendar.js:24
+#: contrib/admin/media/js/dateparse.js:32
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr ""
+"Januar Februar Mars April Mai Juni Juli August September Oktober November "
+"Desember"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "S M T O T F L"
+
+#: contrib/admin/media/js/dateparse.js:33
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Vis"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Skjul"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Now"
+msgstr "Nå"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
+msgid "Clock"
+msgstr "Klokke"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
+msgid "Choose a time"
+msgstr "Velg et klokkeslett"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "Midnight"
+msgstr "Midnatt"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "6 a.m."
+msgstr "06:00"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
+msgid "Noon"
+msgstr "12:00"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
+msgid "Today"
+msgstr "I dag"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
+msgid "Calendar"
+msgstr "Kalender"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
+msgid "Yesterday"
+msgstr "I går"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
+msgid "Tomorrow"
+msgstr "I morgen"
Index: django/conf/locale/nb/__init__.py
===================================================================

Property changes on: django/conf/locale/nb
___________________________________________________________________
Added: svn:mergeinfo

Index: django/conf/locale/hi/formats.py
===================================================================
--- django/conf/locale/hi/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/hi/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd-m-Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/hi/__init__.py
===================================================================
Index: django/conf/locale/sr_Latn/formats.py
===================================================================
--- django/conf/locale/sr_Latn/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/sr_Latn/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+# DATE_FORMAT = 
+# TIME_FORMAT = 
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+# SHORT_DATE_FORMAT = 
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/sr_Latn/__init__.py
===================================================================
Index: django/conf/locale/ta/formats.py
===================================================================
--- django/conf/locale/ta/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ta/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F, Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M, Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/ta/__init__.py
===================================================================
Index: django/conf/locale/pt_BR/formats.py
===================================================================
--- django/conf/locale/pt_BR/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/pt_BR/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,35 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j \\de N \\de Y'
+TIME_FORMAT = 'H:i'
+DATETIME_FORMAT = 'j \\de N \\de Y à\\s H:i'
+YEAR_MONTH_FORMAT = 'F \\de Y'
+MONTH_DAY_FORMAT = 'j \\de F'
+SHORT_DATE_FORMAT = 'd/m/Y'
+SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
+FIRST_DAY_OF_WEEK = 0  # Sunday
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'
+    '%d de %b de %Y', '%d de %b, %Y',   # '25 de Out de 2006', '25 Out, 2006'
+    '%d de %B de %Y', '%d de %B, %Y',   # '25 de Outubro de 2006', '25 de Outubro, 2006'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     # '14:30:59'
+    '%H:%M',        # '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'
+    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'
+    '%d/%m/%Y',              # '25/10/2006'
+    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'
+    '%d/%m/%y %H:%M',        # '25/10/06 14:30'
+    '%d/%m/%y',              # '25/10/06'
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
Index: django/conf/locale/pt_BR/__init__.py
===================================================================
Index: django/conf/locale/fr/formats.py
===================================================================
--- django/conf/locale/fr/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/fr/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'H:i:s'
+DATETIME_FORMAT = 'j F Y H:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+SHORT_DATETIME_FORMAT = 'j M Y H:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/fr/__init__.py
===================================================================
Index: django/conf/locale/te/formats.py
===================================================================
--- django/conf/locale/te/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/te/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/te/__init__.py
===================================================================
Index: django/conf/locale/hr/formats.py
===================================================================
--- django/conf/locale/hr/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/hr/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y.'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y.'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j.n.Y.'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/hr/__init__.py
===================================================================
Index: django/conf/locale/nl/formats.py
===================================================================
--- django/conf/locale/nl/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/nl/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,48 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'                   # '20 januari 2009'
+TIME_FORMAT = 'H:i'                     # '15:23'
+DATETIME_FORMAT = 'j F Y H:i'           # '20 januari 2009 15:23'
+YEAR_MONTH_FORMAT = 'F Y'               # 'januari 2009'
+MONTH_DAY_FORMAT = 'j F'                # '20 januari'
+SHORT_DATE_FORMAT = 'j-n-Y'             # '20-1-2009'
+SHORT_DATETIME_FORMAT = 'j-n-Y H:i'     # '20-1-2009 15:23'
+FIRST_DAY_OF_WEEK = 1                   # Monday (in Dutch 'maandag')
+DATE_INPUT_FORMATS = (
+    '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d', # '20-01-2009', '20-01-09', '2009-01-20'
+    '%d %b %Y', '%d %b %y',             # '20 jan 2009', '20 jan 09'
+    '%d %B %Y', '%d %B %y',             # '20 januari 2009', '20 januari 09'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',                         # '15:23:35'
+    '%H.%M:%S',                         # '15.23:35'
+    '%H.%M',                            # '15.23'
+    '%H:%M',                            # '15:23'
+)
+DATETIME_INPUT_FORMATS = (
+    # With time in %H:%M:%S :
+    '%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S',  # '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35'
+    '%d %b %Y %H:%M:%S', '%d %b %y %H:%M:%S',   # '20 jan 2009 15:23:35', '20 jan 09 15:23:35'
+    '%d %B %Y %H:%M:%S', '%d %B %y %H:%M:%S',   # '20 januari 2009 15:23:35', '20 januari 2009 15:23:35'
+    # With time in %H.%M:%S :
+    '%d-%m-%Y %H.%M:%S', '%d-%m-%y %H.%M:%S',   # '20-01-2009 15.23:35', '20-01-09 15.23:35'
+    '%d %b %Y %H.%M:%S', '%d %b %y %H.%M:%S',   # '20 jan 2009 15.23:35', '20 jan 09 15.23:35'
+    '%d %B %Y %H.%M:%S', '%d %B %y %H.%M:%S',   # '20 januari 2009 15.23:35', '20 januari 2009 15.23:35'
+    # With time in %H:%M :
+    '%d-%m-%Y %H:%M', '%d-%m-%y %H:%M', '%Y-%m-%d %H:%M',   # '20-01-2009 15:23', '20-01-09 15:23', '2009-01-20 15:23'
+    '%d %b %Y %H:%M', '%d %b %y %H:%M',         # '20 jan 2009 15:23', '20 jan 09 15:23'
+    '%d %B %Y %H:%M', '%d %B %y %H:%M',         # '20 januari 2009 15:23', '20 januari 2009 15:23'
+    # With time in %H.%M :
+    '%d-%m-%Y %H.%M', '%d-%m-%y %H.%M',         # '20-01-2009 15.23', '20-01-09 15.23'
+    '%d %b %Y %H.%M', '%d %b %y %H.%M',         # '20 jan 2009 15.23', '20 jan 09 15.23'
+    '%d %B %Y %H.%M', '%d %B %y %H.%M',         # '20 januari 2009 15.23', '20 januari 2009 15.23'
+    # Without time :
+    '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d',         # '20-01-2009', '20-01-09', '2009-01-20'
+    '%d %b %Y', '%d %b %y',                     # '20 jan 2009', '20 jan 09'
+    '%d %B %Y', '%d %B %y',                     # '20 januari 2009', '20 januari 2009'
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
Index: django/conf/locale/nl/__init__.py
===================================================================
Index: django/conf/locale/pl/formats.py
===================================================================
--- django/conf/locale/pl/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/pl/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd-m-Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/pl/__init__.py
===================================================================
Index: django/conf/locale/th/formats.py
===================================================================
--- django/conf/locale/th/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/th/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'G:i:s'
+DATETIME_FORMAT = 'j F Y, G:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+SHORT_DATETIME_FORMAT = 'j M Y, G:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/th/__init__.py
===================================================================
Index: django/conf/locale/hu/formats.py
===================================================================
--- django/conf/locale/hu/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/hu/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Y. F j.'
+TIME_FORMAT = 'G:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'F j.'
+SHORT_DATE_FORMAT = 'Y.m.d.'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/hu/__init__.py
===================================================================
Index: django/conf/locale/lt/formats.py
===================================================================
--- django/conf/locale/lt/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/lt/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Y \m. F j \d.'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+SHORT_DATE_FORMAT = 'Y.m.d'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/lt/__init__.py
===================================================================
Index: django/conf/locale/ro/formats.py
===================================================================
--- django/conf/locale/ro/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ro/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'H:i:s'
+DATETIME_FORMAT = 'j F Y, H:i:s'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+SHORT_DATETIME_FORMAT = 'd.m.Y, H:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/ro/__init__.py
===================================================================
Index: django/conf/locale/lv/formats.py
===================================================================
--- django/conf/locale/lv/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/lv/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Y. \g\a\d\a j. F'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'Y. \g. F'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'Y. \g\a\d\a j. M'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/lv/__init__.py
===================================================================
Index: django/conf/locale/ca/formats.py
===================================================================
--- django/conf/locale/ca/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ca/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,30 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j \de F \de Y'
+TIME_FORMAT = 'G:i:s'
+DATETIME_FORMAT = 'j \de F \de Y \\a \le\s G:i'
+YEAR_MONTH_FORMAT = 'F \de\l Y'
+MONTH_DAY_FORMAT = 'j \de F'
+SHORT_DATE_FORMAT = 'd/m/Y'
+SHORT_DATETIME_FORMAT = 'd/m/Y G:i'
+FIRST_DAY_OF_WEEK = 1 # Monday
+DATE_INPUT_FORMATS = (
+    # '31/12/2009', '31/12/09'
+    '%d/%m/%Y', '%d/%m/%y'
+)
+TIME_INPUT_FORMATS = (
+    # '14:30:59', '14:30'
+    '%H:%M:%S', '%H:%M'
+)
+DATETIME_INPUT_FORMATS = (
+    '%d/%m/%Y %H:%M:%S',
+    '%d/%m/%Y %H:%M',
+    '%d/%m/%y %H:%M:%S',
+    '%d/%m/%y %H:%M',
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
+
Index: django/conf/locale/ca/__init__.py
===================================================================
Index: django/conf/locale/pt/formats.py
===================================================================
--- django/conf/locale/pt/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/pt/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j \de F \de Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F \de Y'
+MONTH_DAY_FORMAT = 'j \de F'
+SHORT_DATE_FORMAT = 'd/m/Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/pt/__init__.py
===================================================================
Index: django/conf/locale/tr/formats.py
===================================================================
--- django/conf/locale/tr/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/tr/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'd F'
+SHORT_DATE_FORMAT = 'd M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/tr/__init__.py
===================================================================
Index: django/conf/locale/ru/formats.py
===================================================================
--- django/conf/locale/ru/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ru/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y г.'
+TIME_FORMAT = 'G:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/ru/__init__.py
===================================================================
Index: django/conf/locale/ga/formats.py
===================================================================
--- django/conf/locale/ga/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ga/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+# NUMBER_GROUPING = 
Index: django/conf/locale/ga/__init__.py
===================================================================
Index: django/conf/locale/ka/formats.py
===================================================================
--- django/conf/locale/ka/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ka/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,42 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'l, j F, Y'
+TIME_FORMAT = 'h:i:s a'
+DATETIME_FORMAT = 'j F, Y h:i:s a'
+YEAR_MONTH_FORMAT = 'F, Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j.M.Y'
+SHORT_DATETIME_FORMAT = 'j.M.Y H:i:s'
+FIRST_DAY_OF_WEEK = 1 # (Monday)
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y',     # '2006-10-25', '10/25/2006', '10/25/06'
+    '%d %b %Y', '%d %b, %Y', '%d %b. %Y',   # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006'
+    '%d %B %Y', '%d %B, %Y',                # '25 October 2006', '25 October, 2006'
+    '%d.%m.%Y', '%d.%m.%y',                 # '25.10.2006', '25.10.06'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     # '14:30:59'
+    '%H:%M',        # '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'
+    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'
+    '%d.%m.%Y',              # '25.10.2006'
+    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'
+    '%d.%m.%y %H:%M',        # '25.10.06 14:30'
+    '%d.%m.%y',              # '25.10.06'
+    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
+    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
+    '%m/%d/%Y',              # '10/25/2006'
+    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
+    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
+    '%m/%d/%y',              # '10/25/06'
+)
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = " "
+NUMBER_GROUPING = 3
Index: django/conf/locale/ka/__init__.py
===================================================================
Index: django/conf/locale/zh_TW/formats.py
===================================================================
--- django/conf/locale/zh_TW/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/zh_TW/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+# DATE_FORMAT = 
+# TIME_FORMAT = 
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+# SHORT_DATE_FORMAT = 
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/zh_TW/__init__.py
===================================================================
Index: django/conf/locale/el/formats.py
===================================================================
--- django/conf/locale/el/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/el/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/el/__init__.py
===================================================================
Index: django/conf/locale/zh_CN/formats.py
===================================================================
--- django/conf/locale/zh_CN/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/zh_CN/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+# DATE_FORMAT = 
+# TIME_FORMAT = 
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+# SHORT_DATE_FORMAT = 
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/zh_CN/__init__.py
===================================================================
Index: django/conf/locale/gl/formats.py
===================================================================
--- django/conf/locale/gl/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/gl/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M, Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/gl/__init__.py
===================================================================
Index: django/conf/locale/ar/formats.py
===================================================================
--- django/conf/locale/ar/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ar/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F، Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd‏/m‏/Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/ar/__init__.py
===================================================================
Index: django/conf/locale/en/formats.py
===================================================================
--- django/conf/locale/en/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/en/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,38 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'N j, Y'
+TIME_FORMAT = 'P'
+DATETIME_FORMAT = 'N j, Y, P'
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'F j'
+SHORT_DATE_FORMAT = 'm/d/Y'
+SHORT_DATETIME_FORMAT = 'm/d/Y P'
+FIRST_DAY_OF_WEEK = 0 # Sunday
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
+    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
+    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
+    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
+    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     # '14:30:59'
+    '%H:%M',        # '14:30'
+)
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
+    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
+    '%m/%d/%Y',              # '10/25/2006'
+    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
+    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
+    '%m/%d/%y',              # '10/25/06'
+)
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+NUMBER_GROUPING = 3
+
Index: django/conf/locale/en/__init__.py
===================================================================
Index: django/conf/locale/cs/formats.py
===================================================================
--- django/conf/locale/cs/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/cs/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'G:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j.n.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/cs/__init__.py
===================================================================
Index: django/conf/locale/km/formats.py
===================================================================
--- django/conf/locale/km/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/km/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j ខែ F ឆ្នាំ Y'
+TIME_FORMAT = 'G:i:s'
+DATETIME_FORMAT = 'j ខែ F ឆ្នាំ Y, G:i:s'
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+SHORT_DATETIME_FORMAT = 'j M Y, G:i:s'
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/km/__init__.py
===================================================================
Index: django/conf/locale/es/formats.py
===================================================================
--- django/conf/locale/es/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/es/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,30 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j \de F \de Y'
+TIME_FORMAT = 'H:i:s'
+DATETIME_FORMAT = 'j \de F \de Y \a \l\a\s H:i'
+YEAR_MONTH_FORMAT = 'F \de Y'
+MONTH_DAY_FORMAT = 'j \de F'
+SHORT_DATE_FORMAT = 'd/m/Y'
+SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
+FIRST_DAY_OF_WEEK = 1 # Monday
+DATE_INPUT_FORMATS = (
+    # '31/12/2009', '31/12/09'
+    '%d/%m/%Y', '%d/%m/%y'
+)
+TIME_INPUT_FORMATS = (
+    # '14:30:59', '14:30'
+    '%H:%M:%S', '%H:%M'
+)
+DATETIME_INPUT_FORMATS = (
+    '%d/%m/%Y %H:%M:%S',
+    '%d/%m/%Y %H:%M',
+    '%d/%m/%y %H:%M:%S',
+    '%d/%m/%y %H:%M',
+)
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+NUMBER_GROUPING = 3
+
Index: django/conf/locale/es/__init__.py
===================================================================
Index: django/conf/locale/mk/formats.py
===================================================================
--- django/conf/locale/mk/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/mk/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+SHORT_DATE_FORMAT = 'd.n.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/mk/__init__.py
===================================================================
Index: django/conf/locale/kn/formats.py
===================================================================
--- django/conf/locale/kn/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/kn/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'h:i:s A'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/kn/__init__.py
===================================================================
Index: django/conf/locale/et/formats.py
===================================================================
--- django/conf/locale/et/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/et/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j F Y'
+TIME_FORMAT = 'G:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd.m.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/et/__init__.py
===================================================================
Index: django/conf/locale/ko/formats.py
===================================================================
--- django/conf/locale/ko/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/ko/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,44 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Y년 n월 j일'
+TIME_FORMAT = 'A g:i:s'
+DATETIME_FORMAT = 'Y년 n월 j일 g:i:s A'
+YEAR_MONTH_FORMAT = 'Y년 F월'
+MONTH_DAY_FORMAT = 'F월 j일'
+SHORT_DATE_FORMAT = 'Y-n-j.'
+SHORT_DATETIME_FORMAT = 'Y-n-j H:i'
+# FIRST_DAY_OF_WEEK = 
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
+    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
+    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
+    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
+    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
+    '%Y년 %m월 %d일',                   # '2006년 10월 25일', with localized suffix.
+)
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     # '14:30:59'
+    '%H:%M',        # '14:30'
+    '%H시 %M분 %S초',   # '14시 30분 59초'
+    '%H시 %M분',        # '14시 30분'
+)
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
+    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
+    '%m/%d/%Y',              # '10/25/2006'
+    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
+    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
+    '%m/%d/%y',              # '10/25/06'
+
+    '%Y년 %m월 %d일 %H시 %M분 %S초',  # '2006년 10월 25일 14시 30분 59초'
+    '%Y년 %m월 %d일 %H시 %M분',       # '2006년 10월 25일 14시 30분'
+)
+
+DECIMAL_SEPARATOR = '.'
+THOUSAND_SEPARATOR = ','
+NUMBER_GROUPING = 3
Index: django/conf/locale/ko/__init__.py
===================================================================
Index: django/conf/locale/eu/formats.py
===================================================================
--- django/conf/locale/eu/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/eu/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'Yeko M\re\n d\a'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+SHORT_DATE_FORMAT = 'Y M j'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/eu/__init__.py
===================================================================
Index: django/conf/locale/is/formats.py
===================================================================
--- django/conf/locale/is/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/is/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j.n.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/is/__init__.py
===================================================================
Index: django/conf/locale/cy/formats.py
===================================================================
--- django/conf/locale/cy/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/cy/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'g:i:s A'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+# MONTH_DAY_FORMAT = 
+SHORT_DATE_FORMAT = 'j M Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+# DECIMAL_SEPARATOR = 
+# THOUSAND_SEPARATOR = 
+# NUMBER_GROUPING = 
Index: django/conf/locale/cy/__init__.py
===================================================================
Index: django/conf/locale/it/formats.py
===================================================================
--- django/conf/locale/it/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/it/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd F Y'
+TIME_FORMAT = 'H.i.s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j F'
+SHORT_DATE_FORMAT = 'd/M/Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/it/__init__.py
===================================================================
Index: django/conf/locale/sk/formats.py
===================================================================
--- django/conf/locale/sk/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/sk/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'j. F Y'
+TIME_FORMAT = 'G:i:s'
+# DATETIME_FORMAT = 
+YEAR_MONTH_FORMAT = 'F Y'
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j.n.Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = ' '
+# NUMBER_GROUPING = 
Index: django/conf/locale/sk/__init__.py
===================================================================
Index: django/conf/locale/sl/formats.py
===================================================================
--- django/conf/locale/sl/formats.py	(.../trunk)	(revision 0)
+++ django/conf/locale/sl/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+DATE_FORMAT = 'd. F Y'
+TIME_FORMAT = 'H:i:s'
+# DATETIME_FORMAT = 
+# YEAR_MONTH_FORMAT = 
+MONTH_DAY_FORMAT = 'j. F'
+SHORT_DATE_FORMAT = 'j. M. Y'
+# SHORT_DATETIME_FORMAT = 
+# FIRST_DAY_OF_WEEK = 
+# DATE_INPUT_FORMATS = 
+# TIME_INPUT_FORMATS = 
+# DATETIME_INPUT_FORMATS = 
+DECIMAL_SEPARATOR = ','
+THOUSAND_SEPARATOR = '.'
+# NUMBER_GROUPING = 
Index: django/conf/locale/sl/__init__.py
===================================================================
Index: django/conf/global_settings.py
===================================================================
--- django/conf/global_settings.py	(.../trunk)	(revision 11464)
+++ django/conf/global_settings.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -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 @@
     ('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')),
@@ -103,6 +104,10 @@
 LOCALE_PATHS = ()
 LANGUAGE_COOKIE_NAME = 'django_language'
 
+# If you set this to True, Django will format dates, numbers and calendars
+# according to user current locale
+USE_FORMAT_I18N = False
+
 # Not-necessarily-technical managers of the site. They get broken link
 # notifications and other various e-mails.
 MANAGERS = ADMINS
@@ -255,6 +260,12 @@
 # you'd pass directly to os.chmod; see http://docs.python.org/lib/os-file-dir.html.
 FILE_UPLOAD_PERMISSIONS = None
 
+# Python module path where user will place custom format definition.
+# The directory where this setting is pointing should contain subdirectories
+# named as the locales, containing a formats.py file
+# (i.e. "myproject.locale" for myproject/locale/en/formats.py etc. use)
+FORMAT_MODULE_PATH = None
+
 # Default formatting for date objects. See all available format strings here:
 # http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now
 DATE_FORMAT = 'N j, Y'
@@ -277,6 +288,72 @@
 # http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now
 MONTH_DAY_FORMAT = 'F j'
 
+# Default shortformatting for date objects. See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now
+SHORT_DATE_FORMAT = 'm/d/Y'
+
+# Default short formatting for datetime objects.
+# See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#now
+SHORT_DATETIME_FORMAT = 'm/d/Y P'
+
+# Default formats tried to parse dates from input boxes
+# These formats are tried in the specified order
+# See all available format string here:
+# http://docs.python.org/library/datetime.html#strftime-behavior
+# * Note that these format strings are different from the ones to display dates
+DATE_INPUT_FORMATS = (
+    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
+    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
+    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
+    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
+    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
+)
+
+# Default formats tried to parse times from input boxes
+# These formats are tried in the specified order
+# See all available format string here:
+# http://docs.python.org/library/datetime.html#strftime-behavior
+# * Note that these format strings are different from the ones to display dates
+TIME_INPUT_FORMATS = (
+    '%H:%M:%S',     # '14:30:59'
+    '%H:%M',        # '14:30'
+)
+
+# Default formats tried to parse dates and times from input boxes
+# These formats are tried in the specified order
+# See all available format string here:
+# http://docs.python.org/library/datetime.html#strftime-behavior
+# * Note that these format strings are different from the ones to display dates
+DATETIME_INPUT_FORMATS = (
+    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
+    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
+    '%Y-%m-%d',              # '2006-10-25'
+    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
+    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
+    '%m/%d/%Y',              # '10/25/2006'
+    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
+    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
+    '%m/%d/%y',              # '10/25/06'
+)
+
+# First day of week, to be used on calendars
+# 0 means Sunday, 1 means Monday...
+FIRST_DAY_OF_WEEK = 0
+
+# Decimal separator symbol
+DECIMAL_SEPARATOR = '.'
+
+# Boolean that sets whether to add thousand separator when formatting numbers
+USE_THOUSAND_SEPARATOR = False
+
+# Number of digits that will be togheter, when spliting them by THOUSAND_SEPARATOR
+# 0 means no grouping, 3 means splitting by thousands...
+NUMBER_GROUPING = 0
+
+# Thousand separator symbol
+THOUSAND_SEPARATOR = ','
+
 # Do you want to manage transactions manually?
 # Hint: you really don't!
 TRANSACTIONS_MANAGED = False
Index: django/forms/extras/widgets.py
===================================================================
--- django/forms/extras/widgets.py	(.../trunk)	(revision 11464)
+++ django/forms/extras/widgets.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -8,6 +8,8 @@
 from django.forms.widgets import Widget, Select
 from django.utils.dates import MONTHS
 from django.utils.safestring import mark_safe
+from django.utils.formats import getformat
+from django.conf import settings
 
 __all__ = ('SelectDateWidget',)
 
@@ -45,38 +47,27 @@
                 if match:
                     year_val, month_val, day_val = [int(v) for v in match.groups()]
 
+        choices = [(i, i) for i in self.years]
+        year_html = self.create_select(name, self.year_field, value, year_val, choices)
+        choices = MONTHS.items()
+        month_html = self.create_select(name, self.month_field, value, month_val, choices)
+        choices = [(i, i) for i in range(1, 32)]
+        day_html = self.create_select(name, self.day_field, value, day_val,  choices)
+
+        format = getformat('DATE_FORMAT')
+        escaped = False
         output = []
-
-        if 'id' in self.attrs:
-            id_ = self.attrs['id']
-        else:
-            id_ = 'id_%s' % name
-
-        month_choices = MONTHS.items()
-        if not (self.required and value):
-            month_choices.append(self.none_value)
-        month_choices.sort()
-        local_attrs = self.build_attrs(id=self.month_field % id_)
-        s = Select(choices=month_choices)
-        select_html = s.render(self.month_field % name, month_val, local_attrs)
-        output.append(select_html)
-
-        day_choices = [(i, i) for i in range(1, 32)]
-        if not (self.required and value):
-            day_choices.insert(0, self.none_value)
-        local_attrs['id'] = self.day_field % id_
-        s = Select(choices=day_choices)
-        select_html = s.render(self.day_field % name, day_val, local_attrs)
-        output.append(select_html)
-
-        year_choices = [(i, i) for i in self.years]
-        if not (self.required and value):
-            year_choices.insert(0, self.none_value)
-        local_attrs['id'] = self.year_field % id_
-        s = Select(choices=year_choices)
-        select_html = s.render(self.year_field % name, year_val, local_attrs)
-        output.append(select_html)
-
+        for char in format:
+            if escaped:
+                escaped = False
+            elif char == '\\':
+                escaped = True
+            elif char in 'Yy':
+                output.append(year_html)
+            elif char in 'bFMmNn':
+                output.append(month_html)
+            elif char in 'dj':
+                output.append(day_html)
         return mark_safe(u'\n'.join(output))
 
     def id_for_label(self, id_):
@@ -90,5 +81,27 @@
         if y == m == d == "0":
             return None
         if y and m and d:
-            return '%s-%s-%s' % (y, m, d)
+            if settings.USE_FORMAT_I18N:
+                input_format = getformat('DATE_INPUT_FORMATS')[0]
+                try:
+                    date_value = datetime.date(int(y), int(m), int(d))
+                except ValueError:
+                    pass
+                else:
+                    return date_value.strftime(input_format)
+            else:
+                return '%s-%s-%s' % (y, m, d)
         return data.get(name, None)
+
+    def create_select(self, name, field, value, val, choices):
+        if 'id' in self.attrs:
+            id_ = self.attrs['id']
+        else:
+            id_ = 'id_%s' % name
+        if not (self.required and value):
+            choices.insert(0, self.none_value)
+        local_attrs = self.build_attrs(id=field % id_)
+        s = Select(choices=choices)
+        select_html = s.render(field % name, val, local_attrs)
+        return select_html
+
Index: django/forms/fields.py
===================================================================
--- django/forms/fields.py	(.../trunk)	(revision 11464)
+++ django/forms/fields.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -26,6 +26,7 @@
 import django.core.exceptions
 from django.utils.translation import ugettext_lazy as _
 from django.utils.encoding import smart_unicode, smart_str
+from django.utils.formats import getformat
 
 from util import ErrorList, ValidationError
 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateInput, DateTimeInput, TimeInput, SplitDateTimeWidget, SplitHiddenDateTimeWidget
@@ -33,9 +34,7 @@
 
 __all__ = (
     'Field', 'CharField', 'IntegerField',
-    'DEFAULT_DATE_INPUT_FORMATS', 'DateField',
-    'DEFAULT_TIME_INPUT_FORMATS', 'TimeField',
-    'DEFAULT_DATETIME_INPUT_FORMATS', 'DateTimeField', 'TimeField',
+    'DateField', 'TimeField', 'DateTimeField', 'TimeField',
     'RegexField', 'EmailField', 'FileField', 'ImageField', 'URLField',
     'BooleanField', 'NullBooleanField', 'ChoiceField', 'MultipleChoiceField',
     'ComboField', 'MultiValueField', 'FloatField', 'DecimalField',
@@ -210,7 +209,9 @@
         if not self.required and value in EMPTY_VALUES:
             return None
         try:
-            value = float(value)
+            # We always accept dot as 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:
@@ -246,7 +247,9 @@
             return None
         value = smart_str(value).strip()
         try:
-            value = Decimal(value)
+            # We always accept dot as 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'])
 
@@ -274,14 +277,6 @@
             raise ValidationError(self.error_messages['max_whole_digits'] % (self.max_digits - self.decimal_places))
         return value
 
-DEFAULT_DATE_INPUT_FORMATS = (
-    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
-    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
-    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
-    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
-    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
-)
-
 class DateField(Field):
     widget = DateInput
     default_error_messages = {
@@ -290,7 +285,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(DateField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS
+        self.input_formats = input_formats
 
     def clean(self, value):
         """
@@ -304,18 +299,13 @@
             return value.date()
         if isinstance(value, datetime.date):
             return value
-        for format in self.input_formats:
+        for format in self.input_formats or getformat('DATE_INPUT_FORMATS'):
             try:
                 return datetime.date(*time.strptime(value, format)[:3])
             except ValueError:
                 continue
         raise ValidationError(self.error_messages['invalid'])
 
-DEFAULT_TIME_INPUT_FORMATS = (
-    '%H:%M:%S',     # '14:30:59'
-    '%H:%M',        # '14:30'
-)
-
 class TimeField(Field):
     widget = TimeInput
     default_error_messages = {
@@ -324,7 +314,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(TimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_TIME_INPUT_FORMATS
+        self.input_formats = input_formats
 
     def clean(self, value):
         """
@@ -336,25 +326,13 @@
             return None
         if isinstance(value, datetime.time):
             return value
-        for format in self.input_formats:
+        for format in self.input_formats or getformat('TIME_INPUT_FORMATS'):
             try:
                 return datetime.time(*time.strptime(value, format)[3:6])
             except ValueError:
                 continue
         raise ValidationError(self.error_messages['invalid'])
 
-DEFAULT_DATETIME_INPUT_FORMATS = (
-    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
-    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
-    '%Y-%m-%d',              # '2006-10-25'
-    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
-    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
-    '%m/%d/%Y',              # '10/25/2006'
-    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
-    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
-    '%m/%d/%y',              # '10/25/06'
-)
-
 class DateTimeField(Field):
     widget = DateTimeInput
     default_error_messages = {
@@ -363,7 +341,7 @@
 
     def __init__(self, input_formats=None, *args, **kwargs):
         super(DateTimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS
+        self.input_formats = input_formats
 
     def clean(self, value):
         """
@@ -383,7 +361,7 @@
             if len(value) != 2:
                 raise ValidationError(self.error_messages['invalid'])
             value = '%s %s' % tuple(value)
-        for format in self.input_formats:
+        for format in self.input_formats or getformat('DATETIME_INPUT_FORMATS'):
             try:
                 return datetime.datetime(*time.strptime(value, format)[:6])
             except ValueError:
Index: django/forms/widgets.py
===================================================================
--- django/forms/widgets.py	(.../trunk)	(revision 11464)
+++ django/forms/widgets.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -15,6 +15,7 @@
 from django.utils.translation import ugettext
 from django.utils.encoding import StrAndUnicode, force_unicode
 from django.utils.safestring import mark_safe
+from django.utils.formats import localize
 from django.utils import datetime_safe
 from datetime import time
 from util import flatatt
@@ -213,7 +214,7 @@
         final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
         if value != '':
             # Only add the 'value' attribute if a value is non-empty.
-            final_attrs['value'] = force_unicode(value)
+            final_attrs['value'] = force_unicode(localize(value, is_input=True))
         return mark_safe(u'<input%s />' % flatatt(final_attrs))
 
 class TextInput(Input):
Index: django/core/management/commands/importcldr.py
===================================================================
--- django/core/management/commands/importcldr.py	(.../trunk)	(revision 0)
+++ django/core/management/commands/importcldr.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,221 @@
+import sys
+import os
+import re
+from optparse import make_option, OptionParser
+
+from django.core.management.base import LabelCommand, CommandError
+
+try:
+    from lxml import etree
+except ImportError:
+    raise CommandError('You need to install `python-lxml` to run this script')
+
+FORMATS_FILE_NAME = 'formats.py'
+FORMATS_FILE_HEADER = '''# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+
+'''
+
+def quote(nodes, name,  locale, previous):
+    if len(nodes):
+        return "'%s'" % unicode(nodes[0].text).replace("'", "\\'")
+    else:
+        return None
+
+def convert_time(nodes, name,  locale, previous):
+    SPECIAL_CHARS = ('a', 'A', 'b', 'B', 'd', 'D', 'f', 'F', 'g', 'G', 'h',
+        'H', 'i', 'I', 'j', 'l', 'L', 'm', 'M', 'n', 'N', 'O', 'P', 'r',
+        's', 'S', 't', 'T', 'U', 'w', 'W', 'y', 'Y', 'z', 'Z')
+    FORMAT_STR_MAP = ( # not using a dict, because we have to apply formats in order
+        ('dd', 'd'),
+        ('d', 'j'),
+        ('MMMM', 'F'),
+        ('MMM', 'M'),
+        ('MM', 'm'),
+        ('M', 'n'),
+        ('yyyy', 'Y'),
+        ('yy', 'y'),
+        ('y', 'Y'),
+        ('hh', 'h'),
+        ('h', 'g'),
+        ('HH', 'H'),
+        ('H', 'G'),
+        ('mm', 'i'),
+        ('ss', 's'),
+        ('a', 'A'),
+        ('LLLL', 'F'),
+    )
+    if len(nodes):
+        original = nodes[0].text
+        result = ''
+        for cnt, segment in enumerate(original.split("'")):
+            if cnt % 2:
+                for char in SPECIAL_CHARS:
+                    segment = segment.replace(char, '\\%s' % char)
+                result += segment
+            else:
+                while segment:
+                    found = False
+                    for src, dst in FORMAT_STR_MAP:
+                        if segment[0:len(src)] == src:
+                            result += dst
+                            segment = segment[len(src):]
+                            found = True
+                            break
+                    if not found:
+                        result += segment[0]
+                        segment = segment[1:]
+
+        return "'%s'" % result
+    else:
+        return None
+
+def datetime(nodes, name, locale, previous):
+    result = None
+    if len(nodes) and 'DATE_FORMAT' in previous and 'TIME_FORMAT' in previous:
+        result = nodes[0].text
+        result = result.replace('{0}', previous['TIME_FORMAT'][1:-1])
+        if name == 'SHORT_DATETIME_FORMAT' and 'SHORT_DATE_FORMAT' in previous:
+            result = result.replace('{1}', previous['SHORT_DATE_FORMAT'][1:-1])
+        else:
+            result = result.replace('{1}', previous['DATE_FORMAT'][1:-1])
+    if result:
+        return "'%s'" % result
+    else:
+        return None
+
+FORMATS_MAP = [
+    {
+        'name': 'DATE_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateFormats/dateFormatLength[@type='long']/dateFormat/pattern",
+        'conversion': convert_time,
+    },
+    {
+        'name': 'TIME_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/timeFormats/timeFormatLength[@type='medium']/timeFormat/pattern",
+        'conversion': convert_time,
+    },
+    {
+        'name': 'DATETIME_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateTimeFormats/dateTimeFormatLength[@type='long']/dateTimeFormat/pattern",
+        'conversion': datetime,
+    },
+    {
+        'name': 'YEAR_MONTH_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateTimeFormats/availableFormats/dateFormatItem[@id='yMMMM']",
+        'conversion': convert_time,
+    },
+    {
+        'name': 'MONTH_DAY_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateTimeFormats/availableFormats/dateFormatItem[@id='MMMMd']",
+        'conversion': convert_time,
+    },
+    {
+        'name': 'SHORT_DATE_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateFormats/dateFormatLength[@type='medium']/dateFormat/pattern",
+        'conversion': convert_time,
+    },
+    {
+        'name': 'SHORT_DATETIME_FORMAT',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/dates/calendars/calendar[@type='gregorian']/dateTimeFormats/dateTimeFormatLength[@type='short']/dateTimeFormat/pattern",
+        'conversion': datetime,
+    },
+    {'name': 'FIRST_DAY_OF_WEEK'},
+    {'name': 'DATE_INPUT_FORMATS'},
+    {'name': 'TIME_INPUT_FORMATS'},
+    {'name': 'DATETIME_INPUT_FORMATS'},
+    {
+        'name': 'DECIMAL_SEPARATOR',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/numbers/symbols/decimal",
+        'conversion': quote,
+    },
+    {
+        'name': 'THOUSAND_SEPARATOR',
+        'file': os.path.join('common', 'main', '%(locale)s.xml'),
+        'pattern': "/ldml/numbers/symbols/group",
+        'conversion': quote,
+    },
+    {'name': 'NUMBER_GROUPING'},
+]
+"""
+"""
+
+def get_locales(django_locale_dir, locale=None):
+    if locale:
+        yield locale
+    else:
+        locale_re = re.compile('[a-z]{2}(_[A-Z]{2})?')
+        for locale in os.listdir(django_locale_dir):
+            if locale_re.match(locale):
+                yield locale
+
+def import_cldr(cldr_dir, locale=None, overwrite=False):
+    """
+    For every locale defined in Django, get from the CLDR locale file all
+    settings defined in output_structure, and write the result to the 
+    locale directories on Django.
+    """
+    if not os.path.isdir(cldr_dir):
+        raise Exception, "Specified CLDR directory '%s' does not exist" % cldr_dir
+
+    import django
+    django_locale_dir = os.path.join(os.path.dirname(django.__file__), 'conf', 'locale')
+
+    for locale in get_locales(django_locale_dir, locale):
+        output_filename = os.path.join(django_locale_dir, locale, FORMATS_FILE_NAME)
+        if os.path.isfile(output_filename) and not overwrite:
+            print "'%s' locale already exists. Skipping" % locale
+        else:
+            result = {}
+            output_file = open(output_filename, 'w')
+            output_file.write(FORMATS_FILE_HEADER)
+            for format in FORMATS_MAP:
+                if 'file' in format:
+                    cldr_file = os.path.join(cldr_dir, format['file'] % dict(locale=locale))
+                    tree = etree.parse(cldr_file) # TODO: error control
+                    try:
+                        original_value = tree.xpath(format['pattern'])
+                    except IndexError:
+                        output_file.write('# %s = \n' % (format['name']))
+                    else:
+                        value = format['conversion'](original_value, format['name'], locale, result)
+                        if value:
+                            output_file.write('%s = %s\n' % (format['name'], value.encode('utf8')))
+                            result[format['name']] = value
+                        else:
+                            output_file.write('# %s = \n' % (format['name']))
+                else:
+                    output_file.write('# %s = \n' % (format['name']))
+            output_file.close()
+
+            init_filename = os.path.join(django_locale_dir, locale, '__init__.py')
+            open(init_filename, 'a').close()
+
+class Command(LabelCommand):
+    option_list = LabelCommand.option_list + (
+        make_option('--locale', '-l', dest='locale',
+            help='The locale to process. Default is to process all.'),
+    ) + (
+        make_option('--overwite', '-o', action='store_true', dest='overwrite',
+            help='Wheter to overwrite format definitions of locales that already have one.'),
+    )
+    help = 'Creates format definition files for locales, importing data from the CLDR.'
+    args = '[cldrpath]'
+    label = 'CLDR path'
+    requires_model_validation = False
+    can_import_settings = False
+
+    def handle_label(self, cldrpath, **options):
+        locale = options.get('locale')
+        overwrite = options.get('overwrite')
+        import_cldr(cldrpath, locale, overwrite)
+
Index: django/views/i18n.py
===================================================================
--- django/views/i18n.py	(.../trunk)	(revision 11464)
+++ django/views/i18n.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -3,6 +3,7 @@
 from django.utils import importlib
 from django.utils.translation import check_for_language, activate, to_locale, get_language
 from django.utils.text import javascript_quote
+from django.utils.formats import project_formats_module, django_formats_module
 import os
 import gettext as gettext_module
 
@@ -32,6 +33,25 @@
                 response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
     return response
 
+def get_formats():
+    """
+    Returns an iterator over all formats in formats file
+    """
+    FORMAT_SETTINGS = ('DATE_FORMAT', 'DATETIME_FORMAT', 'TIME_FORMAT',
+        'YEAR_MONTH_FORMAT', 'MONTH_DAY_FORMAT', 'SHORT_DATE_FORMAT',
+        'SHORT_DATETIME_FORMAT', 'FIRST_DAY_OF_WEEK', 'DECIMAL_SEPARATOR',
+        'THOUSAND_SEPARATOR', 'NUMBER_GROUPING')
+
+    result = {}
+    for module in (settings, django_formats_module(), project_formats_module()):
+        if module:
+            for attr in FORMAT_SETTINGS:
+                try:
+                    result[attr] = getattr(module, attr)
+                except AttributeError:
+                    pass
+    return result
+    
 NullSource = """
 /* gettext identity library */
 
@@ -185,10 +205,13 @@
         else:
             raise TypeError, k
     csrc.sort()
-    for k,v in pdict.items():
+    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.extend(csrc)
     src.append(LibFoot)
     src.append(InterPolate)
     src = ''.join(src)
     return http.HttpResponse(src, 'text/javascript')
+
Index: django/utils/numberformat.py
===================================================================
--- django/utils/numberformat.py	(.../trunk)	(revision 0)
+++ django/utils/numberformat.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,40 @@
+from django.conf import settings
+
+def format(number, decimal_sep, decimal_pos, grouping=0, thousand_sep=''):
+    """
+    Gets a number (as a number or string), and returns it as a string,
+    using formats definied as arguments:
+     * decimal_sep: Decimal separator symbol (for example ".")
+     * decimal_pos: Number of decimal positions
+     * grouping: Number of digits in every group limited by thousand separator
+     * thousand_sep: Thousand separator symbol (for example ",")
+    """
+    # sign
+    if number < 0:
+        sign = '-'
+    else:
+        sign = ''
+    # decimal part
+    str_number = unicode(number)
+    if str_number[0] == '-':
+        str_number = str_number[1:]
+    if '.' in str_number:
+        int_part, dec_part = str_number.split('.')
+        if decimal_pos:
+            dec_part = dec_part[:decimal_pos]
+    else:
+        int_part, dec_part = str_number, ''
+    if decimal_pos:
+        dec_part = dec_part + ('0' * (decimal_pos - len(dec_part)))
+    if dec_part: dec_part = decimal_sep + dec_part
+    # grouping
+    if settings.USE_THOUSAND_SEPARATOR and grouping:
+        int_part_gd = ''
+        for cnt, digit in enumerate(int_part[::-1]):
+            if cnt and not cnt % grouping:
+                int_part_gd += thousand_sep
+            int_part_gd += digit
+        int_part = int_part_gd[::-1]
+
+    return sign + int_part + dec_part
+
Index: django/utils/translation/trans_real.py
===================================================================
--- django/utils/translation/trans_real.py	(.../trunk)	(revision 11464)
+++ django/utils/translation/trans_real.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -266,15 +266,16 @@
     translation object to use. If no current translation is activated, the
     message will be run through the default translation object.
     """
+    eol_message = message.replace('\r\n', '\n').replace('\r', '\n')
     global _default, _active
     t = _active.get(currentThread(), None)
     if t is not None:
-        result = getattr(t, translation_function)(message)
+        result = getattr(t, translation_function)(eol_message)
     else:
         if _default is None:
             from django.conf import settings
             _default = translation(settings.LANGUAGE_CODE)
-        result = getattr(_default, translation_function)(message)
+        result = getattr(_default, translation_function)(eol_message)
     if isinstance(message, SafeData):
         return mark_safe(result)
     return result
@@ -389,39 +390,6 @@
 
     return settings.LANGUAGE_CODE
 
-def get_date_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
-    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
-
-def get_partial_date_formats():
-    """
-    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.
-    """
-    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
-
 dot_re = re.compile(r'\S')
 def blankout(src, char):
     """
@@ -537,3 +505,42 @@
         result.append((lang, priority))
     result.sort(lambda x, y: -cmp(x[1], y[1]))
     return result
+
+# get_date_formats and get_partial_date_formats aren't used anymore from django
+# itself, and are kept for backward compatibility.
+# Note that it's also important to keep format names maked for translation, so
+# for compatibility we still want to have formats on translation catalogs. That
+# makes template code like {{ my_date|date:_('DATE_FORMAT') }} go on working
+def get_date_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
+    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
+
+def get_partial_date_formats():
+    """
+    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.
+    """
+    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
+
Index: django/utils/translation/trans_null.py
===================================================================
--- django/utils/translation/trans_null.py	(.../trunk)	(revision 11464)
+++ django/utils/translation/trans_null.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -18,10 +18,10 @@
 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
 
+# date formats shouldn't be used using gettext anymore. This
+# is kept for backward compatibility
 TECHNICAL_ID_MAP = {
     "DATE_WITH_TIME_FULL": settings.DATETIME_FORMAT,
     "DATE_FORMAT": settings.DATE_FORMAT,
@@ -51,3 +51,8 @@
 
 def get_language_from_request(request):
     return settings.LANGUAGE_CODE
+
+# get_date_formats and get_partial_date_formats aren't used anymore from django
+# itself, and are kept for backward compatibility.
+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)
Index: django/utils/formats.py
===================================================================
--- django/utils/formats.py	(.../trunk)	(revision 0)
+++ django/utils/formats.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -0,0 +1,95 @@
+import decimal
+import datetime
+
+from django.conf import settings
+from django.utils.translation import get_language
+from django.utils.importlib import import_module
+from django.utils import dateformat
+from django.utils import numberformat 
+
+def project_formats_module():
+    """
+    Returns the formats module for the current locale, defined
+    on the project
+    """
+    if settings.FORMAT_MODULE_PATH:
+        try:
+            return import_module('.formats', '%s.%s' % (settings.FORMAT_MODULE_PATH, get_language()))
+        except ImportError:
+            pass
+    return None
+
+def django_formats_module():
+    """
+    Returns the formats module for the current locale, defined
+    on Django
+    """
+    try:
+        return import_module('.formats', 'django.conf.locale.%s' % get_language())
+    except ImportError:
+        return None
+
+def getformat(format_type):
+    """
+    For a specific format type, returns the format for the
+    current language (locale) defaulting to the format on settings.
+    format_type is the name of the format, for example 'DATE_FORMAT'
+    """
+    if settings.USE_I18N and settings.USE_FORMAT_I18N:
+        for module in (project_formats_module(), django_formats_module()):
+            if module:
+                try:
+                    return getattr(module, format_type)
+                except AttributeError:
+                    pass
+    return getattr(settings, format_type)
+
+def date_format(value, format=None):
+    """
+    Formats a datetime.date or datetime.datetime object using a
+    localizable format
+    """
+    return dateformat.format(value, getformat(format or 'DATE_FORMAT'))
+
+def number_format(value, decimal_pos=None):
+    """
+    Formats a numeric value using localization settings
+    """
+    return numberformat.format(
+        value,
+        getformat('DECIMAL_SEPARATOR'),
+        decimal_pos,
+        getformat('NUMBER_GROUPING'),
+        getformat('THOUSAND_SEPARATOR'),
+    )
+
+def localize(value, is_input=False):
+    """
+    Checks value, and if it has a localizable type (date,
+    number...) it returns the value as a string using
+    current locale format
+    """
+    if settings.USE_I18N and settings.USE_FORMAT_I18N:
+        if isinstance(value, decimal.Decimal):
+            return number_format(value)
+        elif isinstance(value, float):
+            return number_format(value)
+        elif isinstance(value, int):
+            return number_format(value)
+        elif isinstance(value, datetime.datetime):
+            if not is_input:
+                return date_format(value, 'DATETIME_FORMAT')
+            else:
+                return value.strftime(getformat('DATETIME_INPUT_FORMATS')[0])
+        elif isinstance(value, datetime.date):
+            if not is_input:
+                return date_format(value)
+            else:
+                return value.strftime(getformat('DATE_INPUT_FORMATS')[0])
+        elif isinstance(value, datetime.time):
+            if not is_input:
+                return date_format(value, 'TIME_FORMAT')
+            else:
+                return value.strftime(getformat('TIME_INPUT_FORMATS')[0])
+    return value
+
Index: django/contrib/admin/media/js/calendar.js
===================================================================
--- django/contrib/admin/media/js/calendar.js	(.../trunk)	(revision 11464)
+++ django/contrib/admin/media/js/calendar.js	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -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')),
     isLeapYear: function(year) {
         return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
     },
@@ -56,10 +57,10 @@
         // 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();
+        var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
         var days = CalendarNamespace.getDaysInMonth(month, year);
 
         // Draw blanks before first of month
Index: django/contrib/admin/templatetags/admin_list.py
===================================================================
--- django/contrib/admin/templatetags/admin_list.py	(.../trunk)	(revision 11464)
+++ django/contrib/admin/templatetags/admin_list.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -3,11 +3,11 @@
 from django.contrib.admin.views.main import ORDER_VAR, ORDER_TYPE_VAR, PAGE_VAR, SEARCH_VAR
 from django.core.exceptions import ObjectDoesNotExist
 from django.db import models
-from django.utils import dateformat
+from django.utils import formats
 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 ugettext as _
 from django.utils.encoding import smart_unicode, smart_str, force_unicode
 from django.template import Library
 import datetime
@@ -184,25 +184,24 @@
             # 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))
-                    elif isinstance(f, models.TimeField):
-                        result_repr = capfirst(dateformat.time_format(field_val, time_format))
-                    else:
-                        result_repr = capfirst(dateformat.format(field_val, date_format))
+                    result_repr = formats.localize(field_val)
                 else:
                     result_repr = EMPTY_CHANGELIST_VALUE
+            elif isinstance(f, models.DecimalField):
+                if field_val:
+                    result_repr = formats.number_format(field_val, f.decimal_places)
+                else:
+                    result_repr = EMPTY_CHANGELIST_VALUE
                 row_class = ' class="nowrap"'
+            elif isinstance(f, models.FloatField):
+                if field_val:
+                    result_repr = formats.number_format(field_val)
+                else:
+                    result_repr = EMPTY_CHANGELIST_VALUE
+                row_class = ' class="nowrap"'
             # Booleans are special: We use images.
             elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
                 result_repr = _boolean_icon(field_val)
-            # 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
-                else:
-                    result_repr = EMPTY_CHANGELIST_VALUE
             # Fields with choices are special: Use the representation
             # of the choice.
             elif f.flatchoices:
@@ -263,7 +262,6 @@
         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()
 
         link = lambda d: mark_safe(cl.get_query_string(d, [field_generic]))
 
@@ -273,9 +271,9 @@
                 'show': True,
                 'back': {
                     'link': link({year_field: year_lookup, month_field: month_lookup}),
-                    'title': dateformat.format(day, year_month_format)
+                    'title': capfirst(formats.date_format(day, 'YEAR_MONTH_FORMAT'))
                 },
-                'choices': [{'title': dateformat.format(day, month_day_format)}]
+                'choices': [{'title': capfirst(formats.date_format(day, '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')
@@ -287,7 +285,7 @@
                 },
                 'choices': [{
                     'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}),
-                    'title': dateformat.format(day, month_day_format)
+                    'title': capfirst(formats.date_format(day, 'MONTH_DAY_FORMAT'))
                 } for day in days]
             }
         elif year_lookup:
@@ -300,7 +298,7 @@
                 },
                 'choices': [{
                     'link': link({year_field: year_lookup, month_field: month.month}),
-                    'title': dateformat.format(month, year_month_format)
+                    'title': capfirst(formats.date_format(month, 'YEAR_MONTH_FORMAT'))
                 } for month in months]
             }
         else:
Index: django/contrib/admin/templates/admin/object_history.html
===================================================================
--- django/contrib/admin/templates/admin/object_history.html	(.../trunk)	(revision 11464)
+++ django/contrib/admin/templates/admin/object_history.html	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -27,7 +27,7 @@
         <tbody>
         {% for action in action_list %}
         <tr>
-            <th scope="row">{{ action.action_time|date:_("DATETIME_FORMAT") }}</th>
+            <th scope="row">{{ action.action_time|date }}</th>
             <td>{{ action.user.username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}</td>
             <td>{{ action.change_message }}</td>
         </tr>
Index: django/contrib/databrowse/datastructures.py
===================================================================
--- django/contrib/databrowse/datastructures.py	(.../trunk)	(revision 11464)
+++ django/contrib/databrowse/datastructures.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -4,9 +4,8 @@
 """
 
 from django.db import models
-from django.utils import dateformat
+from django.utils import formats
 from django.utils.text import capfirst
-from django.utils.translation import get_date_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 +155,12 @@
             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()
                 if isinstance(self.field, models.DateTimeField):
-                    objs = capfirst(dateformat.format(self.raw_value, datetime_format))
+                    objs = capfirst(formats.date_format(self.raw_value, 'DATETIME_FORMAT'))
                 elif isinstance(self.field, models.TimeField):
-                    objs = capfirst(dateformat.time_format(self.raw_value, time_format))
+                    objs = capfirst(formats.date_format(self.raw_value, 'TIME_FORMAT'))
                 else:
-                    objs = capfirst(dateformat.format(self.raw_value, date_format))
+                    objs = capfirst(formats.date_format(self.raw_value, 'DATE_FORMAT'))
             else:
                 objs = EMPTY_VALUE
         elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
Index: django/template/defaultfilters.py
===================================================================
--- django/template/defaultfilters.py	(.../trunk)	(revision 11464)
+++ django/template/defaultfilters.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -18,6 +18,7 @@
 from django.utils.translation import ugettext, ungettext
 from django.utils.encoding import force_unicode, iri_to_uri
 from django.utils.safestring import mark_safe, SafeData
+from django.utils.formats import date_format, number_format
 
 register = Library()
 
@@ -166,14 +167,14 @@
         return input_val
 
     if not m and p < 0:
-        return mark_safe(u'%d' % (int(d)))
+        return mark_safe(number_format(u'%d' % (int(d)), 0))
 
     if p == 0:
         exp = Decimal(1)
     else:
         exp = Decimal('1.0') / (Decimal(10) ** abs(p))
     try:
-        return mark_safe(u'%s' % str(d.quantize(exp, ROUND_HALF_UP)))
+        return mark_safe(number_format(u'%s' % str(d.quantize(exp, ROUND_HALF_UP)), abs(p)))
     except InvalidOperation:
         return input_val
 floatformat.is_safe = True
@@ -684,9 +685,12 @@
     if arg is None:
         arg = settings.DATE_FORMAT
     try:
-        return format(value, arg)
+        return date_format(value, arg)
     except AttributeError:
-        return ''
+        try:
+            return format(value, arg)
+        except AttributeError:
+            return ''
 date.is_safe = False
 
 def time(value, arg=None):
@@ -697,9 +701,12 @@
     if arg is None:
         arg = settings.TIME_FORMAT
     try:
-        return time_format(value, arg)
+        return date_format(value, arg)
     except AttributeError:
-        return ''
+        try:
+            return time_format(value, arg)
+        except AttributeError:
+            return ''
 time.is_safe = False
 
 def timesince(value, arg=None):
Index: django/template/__init__.py
===================================================================
--- django/template/__init__.py	(.../trunk)	(revision 11464)
+++ django/template/__init__.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -60,6 +60,7 @@
 from django.utils.encoding import smart_unicode, force_unicode, smart_str
 from django.utils.translation import ugettext as _
 from django.utils.safestring import SafeData, EscapeData, mark_safe, mark_for_escaping
+from django.utils.formats import localize
 from django.utils.html import escape
 
 __all__ = ('Template', 'Context', 'RequestContext', 'compile_string')
@@ -808,6 +809,7 @@
     means escaping, if required, and conversion to a unicode object. If value
     is a string, it is expected to have already been translated.
     """
+    value = localize(value)
     value = force_unicode(value)
     if (context.autoescape and not isinstance(value, SafeData)) or isinstance(value, EscapeData):
         return escape(value)
Index: django/template/debug.py
===================================================================
--- django/template/debug.py	(.../trunk)	(revision 11464)
+++ django/template/debug.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -2,6 +2,7 @@
 from django.utils.encoding import force_unicode
 from django.utils.html import escape
 from django.utils.safestring import SafeData, EscapeData
+from django.utils.formats import localize
 
 class DebugLexer(Lexer):
     def __init__(self, template_string, origin):
@@ -84,7 +85,9 @@
 class DebugVariableNode(VariableNode):
     def render(self, context):
         try:
-            output = force_unicode(self.filter_expression.resolve(context))
+            output = self.filter_expression.resolve(context)
+            output = localize(output)
+            output = force_unicode(output)
         except TemplateSyntaxError, e:
             if not hasattr(e, 'source'):
                 e.source = self.source
Index: tests/regressiontests/i18n/tests.py
===================================================================
--- tests/regressiontests/i18n/tests.py	(.../trunk)	(revision 11464)
+++ tests/regressiontests/i18n/tests.py	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -64,6 +64,283 @@
 'as'
 >>> print s
 Password
+
+Translations on files with mac or dos end of lines will be converted
+to unix eof in .po catalogs, and they have to match when retrieved
+
+>>> from django.utils.translation.trans_real import translation
+>>> ca_translation = translation('ca')
+>>> ca_translation._catalog[u'Mac\nEOF\n'] = u'Catalan Mac\nEOF\n'
+>>> ca_translation._catalog[u'Win\nEOF\n'] = u'Catalan Win\nEOF\n'
+>>> activate('ca')
+>>> ugettext(u'Mac\rEOF\r')
+u'Catalan Mac\nEOF\n'
+>>> ugettext(u'Win\r\nEOF\r\n')
+u'Catalan Win\nEOF\n'
+>>> deactivate()
+
+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)
+>>> dt = datetime.datetime(2009, 12, 31, 20, 50)
+>>> ctxt = template.Context({'n': n, 'd': d, 'dt': dt, 'f': f})
+>>> class I18nForm(forms.Form):
+...     decimal_field = forms.DecimalField()
+...     float_field = forms.FloatField()
+...     date_field = forms.DateField()
+...     datetime_field = forms.DateTimeField()
+...     time_field = forms.TimeField()
+>>> class SelectDateForm(forms.Form):
+...     date_field = forms.DateField(widget=SelectDateWidget)
+
+Locale independent
+
+>>> 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'
+
+Catalan locale with format i18n disabled
+translations will be used, but not formats
+
+>>> settings.USE_FORMAT_I18N = False
+>>> activate('ca')
+>>> getformat('DATE_FORMAT')
+'N j, Y'
+>>> getformat('FIRST_DAY_OF_WEEK')
+0
+>>> getformat('DECIMAL_SEPARATOR')
+'.'
+>>> date_format(d)
+u'des. 31, 2009'
+>>> date_format(d, 'YEAR_MONTH_FORMAT')
+u'desembre 2009'
+>>> date_format(dt, 'SHORT_DATETIME_FORMAT')
+u'12/31/2009 8:50 p.m.'
+>>> localize('No localizable')
+'No localizable'
+>>> localize(n)
+Decimal('66666.666')
+>>> localize(f)
+99999.999
+>>> localize(d)
+datetime.date(2009, 12, 31)
+>>> localize(dt)
+datetime.datetime(2009, 12, 31, 20, 50)
+>>> template.Template('{{ n }}').render(ctxt)
+u'66666.666'
+>>> template.Template('{{ f }}').render(ctxt)
+u'99999.999'
+>>> template.Template('{{ d }}').render(ctxt)
+u'2009-12-31'
+>>> template.Template('{{ dt }}').render(ctxt)
+u'2009-12-31 20:50:00'
+>>> 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'12/31/2009'
+>>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt)
+u'12/31/2009 8:50 p.m.'
+>>> 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()
+False
+>>> form.errors['float_field']
+[u'Introdu\xefu un n\xfamero.']
+>>> form.errors['decimal_field']
+[u'Introdu\xefu un n\xfamero.']
+>>> form.errors['date_field']
+[u'Introdu\xefu una data v\xe0lida.']
+>>> form.errors['datetime_field']
+[u'Introdu\xefu una data/hora v\xe0lides.']
+>>> form2 = SelectDateForm({'date_field_month': u'12', 'date_field_day': u'31', 'date_field_year': u'2009'})
+>>> form2.is_valid()
+True
+>>> form2.cleaned_data['date_field']
+datetime.date(2009, 12, 31)
+>>> 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 F \\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 del 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('66666.666')
+>>> form.cleaned_data['float_field']
+99999.999
+>>> form.cleaned_data['date_field']
+datetime.date(2009, 12, 31)
+>>> form.cleaned_data['datetime_field']
+datetime.datetime(2009, 12, 31, 20, 50)
+>>> form.cleaned_data['time_field']
+datetime.time(20, 50)
+>>> form2 = SelectDateForm({'date_field_month': u'12', 'date_field_day': u'31', 'date_field_year': u'2009'})
+>>> form2.is_valid()
+True
+>>> form2.cleaned_data['date_field']
+datetime.date(2009, 12, 31)
+>>> 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">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>'
+
+English locale
+
+>>> settings.USE_FORMAT_I18N = True
+>>> activate('en')
+>>> getformat('DATE_FORMAT')
+'N j, Y'
+>>> getformat('FIRST_DAY_OF_WEEK')
+0
+>>> getformat('DECIMAL_SEPARATOR')
+'.'
+>>> date_format(d)
+u'Dec. 31, 2009'
+>>> date_format(d, 'YEAR_MONTH_FORMAT')
+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)
+u'66666.666'
+>>> localize(f)
+u'99999.999'
+>>> localize(d)
+u'Dec. 31, 2009'
+>>> localize(dt)
+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)
+u'66666.666'
+>>> template.Template('{{ f }}').render(ctxt)
+u'99999.999'
+>>> template.Template('{{ d }}').render(ctxt)
+u'Dec. 31, 2009'
+>>> template.Template('{{ dt }}').render(ctxt)
+u'Dec. 31, 2009, 8:50 p.m.'
+>>> 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'12/31/2009'
+>>> template.Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(ctxt)
+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('66666.666')
+>>> form.cleaned_data['float_field']
+99999.999
+>>> form.cleaned_data['date_field']
+datetime.date(2009, 12, 31)
+>>> form.cleaned_data['datetime_field']
+datetime.datetime(2009, 12, 31, 20, 50)
+>>> form.cleaned_data['time_field']
+datetime.time(20, 50)
+>>> form2 = SelectDateForm({'date_field_month': u'12', 'date_field_day': u'31', 'date_field_year': u'2009'})
+>>> form2.is_valid()
+True
+>>> form2.cleaned_data['date_field']
+datetime.date(2009, 12, 31)
+>>> 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>'
+
+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()
+
 """
 
 __test__ = {
Index: docs/topics/i18n.txt
===================================================================
--- docs/topics/i18n.txt	(.../trunk)	(revision 11464)
+++ docs/topics/i18n.txt	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -4,20 +4,21 @@
 Internationalization
 ====================
 
-Django has full support for internationalization of text in code and templates.
-Here's how it works.
+Django has full support for internationalization, including translation
+capabilities of text in code and templates, and format localization for
+dates and numbers. Here's how it works.
 
 Overview
 ========
 
 The goal of internationalization is to allow a single Web application to offer
-its content and functionality in multiple languages.
+its content and functionality in multiple languages and locales.
 
-You, the Django developer, can accomplish this goal by adding a minimal amount
-of hooks to your Python code and templates. These hooks are called
-**translation strings**. They tell Django: "This text should be translated into
-the end user's language, if a translation for this text is available in that
-language."
+For text translation, you, the Django developer, can accomplish this goal by
+adding a minimal amount of hooks to your Python code and templates. These hooks
+are called **translation strings**. They tell Django: "This text should be
+translated into the end user's language, if a translation for this text is
+available in that language."
 
 Django takes care of using these hooks to translate Web apps, on the fly,
 according to users' language preferences.
@@ -29,6 +30,12 @@
     * It uses these hooks to translate Web apps for particular users according
       to their language preferences.
 
+For format localization, it's just necessary to set
+:setting:`USE_FORMAT_I18N = True <USE_FORMAT_I18N>` in your settings file. If
+:settings:`USE_FORMAT_I18N` is set to ``True``, then Django will display
+numbers and dates in the format of the current locale. That includes field
+representation on templates, and allowed input formats on the admin.
+
 If you don't need internationalization in your app
 ==================================================
 
@@ -1074,3 +1081,53 @@
 translation utilities with a ``gettext`` package if the command ``xgettext
 --version`` entered at a Windows command prompt causes a popup window saying
 "xgettext.exe has generated errors and will be closed by Windows".
+
+Format localization
+===================
+
+Django's formatting system is disabled by default. To enable it, it's necessay
+to set :setting:`USE_FORMAT_I18N = True <USE_FORMAT_I18N>` in your settings
+file.  Note that :setting:`USE_FORMAT_I18N` requires `USE_I18N` to be ``True``.
+
+When using Django's formatting system, dates and numbers on templates will be
+displayed using the format specified for the current locale. That means, two
+users accessing the same content, but in different language, will see date and
+number fields formatted in different ways, depending on the format for their
+current locale.
+
+Django will also use localized formats when parsing data in forms. That means
+Django uses different formats for different locales when guessing the format
+used by the user when inputting data on forms. Note that Django uses different
+formats for displaying data, and for parsing it.
+
+Creating custom format files
+----------------------------
+
+Django provides format definitions for many locales, but sometimes you could
+want to create your own ones, because a format files doesn't exist for your
+locale, or because you want to overwrite some of the values.
+
+To use custom formats, first thing to do, is to specify the path where you'll
+place format files. To do that, just set :setting:`FORMAT_MODULE_PATH` setting
+to the the path (in the format ``'foo.bar.baz``) where format files will
+exists.
+
+Files are not placed directly in this directory, but in a directory named as
+the locale. File must be named ``formats.py``. 
+
+For customazing English formats, a structure like this would be needed::
+
+    mysite/
+        formats/
+            __init__.py
+            en/
+                __init__.py
+                formats.py
+
+where :file:`formats.py` contains custom format definitions. For example::
+
+    THOUSAND_SEPARATOR = ' '
+
+to use a space as thousand separator, instead of the default for English,
+comma.
+
Index: docs/ref/settings.txt
===================================================================
--- docs/ref/settings.txt	(.../trunk)	(revision 11464)
+++ docs/ref/settings.txt	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -243,13 +243,33 @@
 
 Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)
 
-The default formatting to use for date fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for date fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATETIME_FORMAT``, ``TIME_FORMAT``, ``YEAR_MONTH_FORMAT``
-and ``MONTH_DAY_FORMAT``.
+See also ``DATETIME_FORMAT``, ``TIME_FORMAT`` and ``SHORT_DATE_FORMAT``.
 
+.. setting:: DATE_INPUT_FORMATS
+
+DATE_INPUT_FORMATS
+------------------
+
+Default::
+
+    ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
+    '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y',
+    '%B %d, %Y', '%d %B %Y', '%d %B, %Y')
+
+A tuple of formats that will be accepted when inputting data on a date
+field. Formats will be tried in order, using the first valid.
+Note that these format strings are specified in Python's datetime_ module
+syntax, that is different from the one used by Django for formatting dates
+to be displayed.
+
+See also ``DATETIME_INPUT_FORMATS`` and ``TIME_INPUT_FORMATS``.
+
+.. _datetime: http://docs.python.org/library/datetime.html#strftime-behavior
+
 .. setting:: DATETIME_FORMAT
 
 DATETIME_FORMAT
@@ -257,13 +277,33 @@
 
 Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)
 
-The default formatting to use for datetime fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for datetime fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``,
-``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``.
+See also ``DATE_FORMAT``, ``TIME_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
 
+.. setting:: DATETIME_INPUT_FORMATS
+
+DATETIME_INPUT_FORMATS
+----------------------
+
+Default::
+
+    ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', '%Y-%m-%d',
+    '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M', '%m/%d/%Y',
+    '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M', '%m/%d/%y')
+
+A tuple of formats that will be accepted when inputting data on a datetime
+field. Formats will be tried in order, using the first valid.
+Note that these format strings are specified in Python's datetime_ module
+syntax, that is different from the one used by Django for formatting dates
+to be displayed.
+
+See also ``DATE_INPUT_FORMATS`` and ``TIME_INPUT_FORMATS``.
+
+.. _datetime: http://docs.python.org/library/datetime.html#strftime-behavior
+
 .. setting:: DEBUG
 
 DEBUG
@@ -302,7 +342,15 @@
 be useful for some test setups, and should never be used on a live
 site.
 
+.. setting:: DECIMAL_SEPARATOR
 
+DECIMAL_SEPARATOR
+-----------------
+
+Default: ``'.'`` (Dot)
+
+Default decimal separator used when formatting decimal numbers.
+
 .. setting:: DEFAULT_CHARSET
 
 DEFAULT_CHARSET
@@ -528,6 +576,21 @@
 
 .. _documentation for os.chmod: http://docs.python.org/lib/os-file-dir.html
 
+.. setting:: FIRST_DAY_OF_WEEK
+
+FIRST_DAY_OF_WEEK
+-----------------
+
+Default: ``0`` (Sunday)
+
+Number representing the first day of the week. This is specially useful
+when displaying a calendar. This value is only used when not using
+format internationalization, or when a format cannot be found for the
+current locale.
+
+The value must be an integer from 0 to 6, where 0 means Sunday, 1 means
+Monday and so on.
+
 .. setting:: FIXTURE_DIRS
 
 FIXTURE_DIRS
@@ -549,6 +612,34 @@
 the server-provided value of ``SCRIPT_NAME``, which may be a rewritten version
 of the preferred value or not supplied at all.
 
+.. setting:: FORMAT_MODULE_PATH
+
+FORMAT_MODULE_PATH
+------------------
+
+Default: ``None``
+
+A full Python path to a Python package that contains format definitions for
+project locales. If not ``None``, Django will check for a ``formats.py``
+file, under the directory named as the current locale, and will use the
+formats defined on this file.
+
+For example, if ``FORMAT_MODULE_PATH`` is set to ``mysite.formats``, and
+current language is ``en`` (English), Django will expect a directory tree
+like::
+
+    mysite/
+        formats/
+            __init__.py
+            en/
+                __init__.py
+                formats.py
+
+Available formats are ``DATE_FORMAT``, ``TIME_FORMAT``, ``DATETIME_FORMAT``,
+``YEAR_MONTH_FORMAT``, ``MONTH_DAY_FORMAT``, ``SHORT_DATE_FORMAT``,
+``SHORT_DATETIME_FORMAT``, ``FIRST_DAY_OF_WEEK``, ``DECIMAL_SEPARATOR``,
+``THOUSAND_SEPARATOR`` and ``NUMBER_GROUPING``.
+
 .. setting:: IGNORABLE_404_ENDS
 
 IGNORABLE_404_ENDS
@@ -774,6 +865,21 @@
 See :ttag:`allowed date format strings <now>`. See also ``DATE_FORMAT``,
 ``DATETIME_FORMAT``, ``TIME_FORMAT`` and ``YEAR_MONTH_FORMAT``.
 
+.. setting:: NUMBER_GROUPING
+
+NUMBER_GROUPING
+----------------
+
+Default: ``0``
+
+Number of digits grouped together on the integer part of a number. Common use
+is to display a thousand separator. If this setting is ``0``, then, no grouping
+will be applied to the number. If this setting is greater than ``0`` then the
+setting ``THOUSAND_SEPARATOR`` will be used as the separator between those
+groups.
+
+See also ``THOUSAND_SEPARATOR``
+
 .. setting:: PREPEND_WWW
 
 PREPEND_WWW
@@ -965,6 +1071,32 @@
 Whether to save the session data on every request. See
 :ref:`topics-http-sessions`.
 
+.. setting:: SHORT_DATE_FORMAT
+
+SHORT_DATE_FORMAT
+-----------------
+
+Default: ``m/d/Y`` (e.g. ``12/31/2003``)
+
+An available formatting that can be used for date fields on templates.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
+
+See also ``DATE_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
+
+.. setting:: SHORT_DATETIME_FORMAT
+
+SHORT_DATETIME_FORMAT
+---------------------
+
+Default: ``m/d/Y P`` (e.g. ``12/31/2003 4 p.m.``)
+
+An available formatting that can be used for datetime fields on templates.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
+
+See also ``DATE_FORMAT`` and ``SHORT_DATETIME_FORMAT``.
+
 .. setting:: SITE_ID
 
 SITE_ID
@@ -1110,6 +1242,18 @@
 
 .. _Testing Django Applications: ../testing/
 
+.. setting:: THOUSAND_SEPARATOR
+
+THOUSAND_SEPARATOR
+------------------
+
+Default ``,`` (Comma)
+
+Default thousand separator used when formatting numbers. This setting is
+used only when ``NUMBER_GROUPPING`` is set.
+
+See also ``NUMBER_GROUPPING``, ``DECIMAL_SEPARATOR``
+
 .. setting:: TIME_FORMAT
 
 TIME_FORMAT
@@ -1117,13 +1261,29 @@
 
 Default: ``'P'`` (e.g. ``4 p.m.``)
 
-The default formatting to use for time fields on Django admin change-list
-pages -- and, possibly, by other parts of the system. See
-:ttag:`allowed date format strings <now>`.
+The default formatting to use for time fields in any part of the system.
+Note that if ``USE_FORMAT_I18N`` is set to ``True``, then locale format will
+be applied. See :ttag:`allowed date format strings <now>`.
 
-See also ``DATE_FORMAT``, ``DATETIME_FORMAT``, ``TIME_FORMAT``,
-``YEAR_MONTH_FORMAT`` and ``MONTH_DAY_FORMAT``.
+See also ``DATE_FORMAT`` and ``DATETIME_FORMAT``.
 
+.. setting:: TIME_INPUT_FORMATS
+
+TIME_INPUT_FORMATS
+------------------
+
+Default: ``('%H:%M:%S', '%H:%M')``
+
+A tuple of formats that will be accepted when inputting data on a time
+field. Formats will be tried in order, using the first valid.
+Note that these format strings are specified in Python's datetime_ module
+syntax, that is different from the one used by Django for formatting dates
+to be displayed.
+
+See also ``DATE_INPUT_FORMATS`` and ``DATETIME_INPUT_FORMATS``.
+
+.. _datetime: http://docs.python.org/library/datetime.html#strftime-behavior
+
 .. setting:: TIME_ZONE
 
 TIME_ZONE
@@ -1177,6 +1337,20 @@
 bandwidth but slows down performance. This is only used if ``CommonMiddleware``
 is installed (see :ref:`topics-http-middleware`).
 
+.. setting:: USE_FORMAT_I18N
+
+USE_FORMAT_I18N
+---------------
+
+Default ``False``
+
+A boolean that specifies if data will be localized by default or not. If this is
+set to ``True``, Django will display numbers and dates using the format of the
+current locale. It is required to set ``USE_I18N`` to ``True`` to allow data
+format localization.
+
+See also ``USE_I18N``
+
 .. setting:: USE_I18N
 
 USE_I18N
@@ -1189,6 +1363,22 @@
 set to ``False``, Django will make some optimizations so as not to load the
 internationalization machinery.
 
+See also ``USE_FORMAT_I18N``
+
+.. setting:: USE_THOUSAND_SEPARATOR
+
+USE_THOUSAND_SEPARATOR
+----------------------
+
+Default ``False``
+
+A boolean that specifies wheter to display numbers using a thousand separator.
+If this is set to ``True``, Django will use values from ``THOUSAND_SEPARATOR``
+and ``NUMBER_GROUPING`` from current locale, to format the number.
+``USE_FORMAT_I18N`` must be set to ``True``, in order to format numbers.
+
+See also ``THOUSAND_SEPARATOR`` and ``NUMBER_GROUPING``.
+
 .. setting:: YEAR_MONTH_FORMAT
 
 YEAR_MONTH_FORMAT
Index: docs/ref/templates/builtins.txt
===================================================================
--- docs/ref/templates/builtins.txt	(.../trunk)	(revision 11464)
+++ docs/ref/templates/builtins.txt	(.../branches/soc2009/i18n-improvements)	(revision 11464)
@@ -897,8 +897,12 @@
 date
 ~~~~
 
-Formats a date according to the given format (same as the `now`_ tag).
+Formats a date according to the given format.
 
+Given format can be one of the predefined ones ``DATE_FORMAT``, ``DATETIME_FORMAT``,
+``SHORT_DATE_FORMAT`` or ``SHORT_DATETIME_FORMAT``, or a custom format, same as the
+`now`_ tag. Note that prefedined formats vary depending on the current locale.
+
 For example::
 
     {{ value|date:"D d M Y" }}
@@ -912,7 +916,7 @@
     {{ value|date }}
 
 ...the formatting string defined in the :setting:`DATE_FORMAT` setting will be
-used.
+used, without applying any localization.
 
 .. templatefilter:: default
 
@@ -1460,7 +1464,10 @@
 time
 ~~~~
 
-Formats a time according to the given format (same as the `now`_ tag).
+Formats a time according to the given format.
+
+Given format can be the predefined one ``TIME_FORMAT``, or a custom format, same as the `now`_ tag. Note that the predefined format is locale depending.
+
 The time filter will only accept parameters in the format string that relate
 to the time of day, not the date (for obvious reasons). If you need to
 format a date, use the `date`_ filter.
@@ -1477,7 +1484,7 @@
     {{ value|time }}
 
 ...the formatting string defined in the :setting:`TIME_FORMAT` setting will be
-used.
+used, without aplying any localization.
 
 .. templatefilter:: timesince
 
