Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Update Django to 1.4.2.

  • Loading branch information...
commit 866031660b491797e0b0923b81d942d23528709b 1 parent e7738cc
@willkg willkg authored
Showing with 43,338 additions and 0 deletions.
  1. +30 −0 lib/python/django/__init__.py
  2. 0  lib/python/django/bin/__init__.py
  3. +13 −0 lib/python/django/bin/daily_cleanup.py
  4. +5 −0 lib/python/django/bin/django-admin.py
  5. 0  lib/python/django/bin/profiling/__init__.py
  6. +37 −0 lib/python/django/bin/profiling/gather_profile_stats.py
  7. +28 −0 lib/python/django/bin/unique-messages.py
  8. +196 −0 lib/python/django/conf/__init__.py
  9. 0  lib/python/django/conf/app_template/__init__.py
  10. +3 −0  lib/python/django/conf/app_template/models.py
  11. +16 −0 lib/python/django/conf/app_template/tests.py
  12. +1 −0  lib/python/django/conf/app_template/views.py
  13. +618 −0 lib/python/django/conf/global_settings.py
  14. +434 −0 lib/python/django/conf/locale/__init__.py
  15. BIN  lib/python/django/conf/locale/ar/LC_MESSAGES/django.mo
  16. +1,255 −0 lib/python/django/conf/locale/ar/LC_MESSAGES/django.po
  17. 0  lib/python/django/conf/locale/ar/__init__.py
  18. +23 −0 lib/python/django/conf/locale/ar/formats.py
  19. BIN  lib/python/django/conf/locale/az/LC_MESSAGES/django.mo
  20. +1,238 −0 lib/python/django/conf/locale/az/LC_MESSAGES/django.po
  21. BIN  lib/python/django/conf/locale/bg/LC_MESSAGES/django.mo
  22. +1,245 −0 lib/python/django/conf/locale/bg/LC_MESSAGES/django.po
  23. 0  lib/python/django/conf/locale/bg/__init__.py
  24. +23 −0 lib/python/django/conf/locale/bg/formats.py
  25. BIN  lib/python/django/conf/locale/bn/LC_MESSAGES/django.mo
  26. +1,215 −0 lib/python/django/conf/locale/bn/LC_MESSAGES/django.po
  27. 0  lib/python/django/conf/locale/bn/__init__.py
  28. +23 −0 lib/python/django/conf/locale/bn/formats.py
  29. BIN  lib/python/django/conf/locale/bs/LC_MESSAGES/django.mo
  30. +1,239 −0 lib/python/django/conf/locale/bs/LC_MESSAGES/django.po
  31. 0  lib/python/django/conf/locale/bs/__init__.py
  32. +23 −0 lib/python/django/conf/locale/bs/formats.py
  33. BIN  lib/python/django/conf/locale/ca/LC_MESSAGES/django.mo
  34. +1,252 −0 lib/python/django/conf/locale/ca/LC_MESSAGES/django.po
  35. 0  lib/python/django/conf/locale/ca/__init__.py
  36. +35 −0 lib/python/django/conf/locale/ca/formats.py
  37. BIN  lib/python/django/conf/locale/cs/LC_MESSAGES/django.mo
  38. +1,247 −0 lib/python/django/conf/locale/cs/LC_MESSAGES/django.po
  39. 0  lib/python/django/conf/locale/cs/__init__.py
  40. +37 −0 lib/python/django/conf/locale/cs/formats.py
  41. BIN  lib/python/django/conf/locale/cy/LC_MESSAGES/django.mo
  42. +1,227 −0 lib/python/django/conf/locale/cy/LC_MESSAGES/django.po
  43. 0  lib/python/django/conf/locale/cy/__init__.py
  44. +23 −0 lib/python/django/conf/locale/cy/formats.py
  45. BIN  lib/python/django/conf/locale/da/LC_MESSAGES/django.mo
  46. +1,247 −0 lib/python/django/conf/locale/da/LC_MESSAGES/django.po
  47. 0  lib/python/django/conf/locale/da/__init__.py
  48. +31 −0 lib/python/django/conf/locale/da/formats.py
  49. BIN  lib/python/django/conf/locale/de/LC_MESSAGES/django.mo
  50. +1,254 −0 lib/python/django/conf/locale/de/LC_MESSAGES/django.po
  51. 0  lib/python/django/conf/locale/de/__init__.py
  52. +37 −0 lib/python/django/conf/locale/de/formats.py
  53. BIN  lib/python/django/conf/locale/el/LC_MESSAGES/django.mo
  54. +1,257 −0 lib/python/django/conf/locale/el/LC_MESSAGES/django.po
  55. 0  lib/python/django/conf/locale/el/__init__.py
  56. +23 −0 lib/python/django/conf/locale/el/formats.py
  57. BIN  lib/python/django/conf/locale/en/LC_MESSAGES/django.mo
  58. +1,207 −0 lib/python/django/conf/locale/en/LC_MESSAGES/django.po
  59. 0  lib/python/django/conf/locale/en/__init__.py
  60. +43 −0 lib/python/django/conf/locale/en/formats.py
  61. BIN  lib/python/django/conf/locale/en_GB/LC_MESSAGES/django.mo
  62. +1,239 −0 lib/python/django/conf/locale/en_GB/LC_MESSAGES/django.po
  63. 0  lib/python/django/conf/locale/en_GB/__init__.py
  64. +44 −0 lib/python/django/conf/locale/en_GB/formats.py
  65. BIN  lib/python/django/conf/locale/eo/LC_MESSAGES/django.mo
  66. +1,250 −0 lib/python/django/conf/locale/eo/LC_MESSAGES/django.po
  67. BIN  lib/python/django/conf/locale/es/LC_MESSAGES/django.mo
  68. +1,255 −0 lib/python/django/conf/locale/es/LC_MESSAGES/django.po
  69. 0  lib/python/django/conf/locale/es/__init__.py
  70. +35 −0 lib/python/django/conf/locale/es/formats.py
  71. BIN  lib/python/django/conf/locale/es_AR/LC_MESSAGES/django.mo
  72. +1,255 −0 lib/python/django/conf/locale/es_AR/LC_MESSAGES/django.po
  73. 0  lib/python/django/conf/locale/es_AR/__init__.py
  74. +34 −0 lib/python/django/conf/locale/es_AR/formats.py
  75. BIN  lib/python/django/conf/locale/es_MX/LC_MESSAGES/django.mo
  76. +1,253 −0 lib/python/django/conf/locale/es_MX/LC_MESSAGES/django.po
  77. 0  lib/python/django/conf/locale/es_MX/__init__.py
  78. +28 −0 lib/python/django/conf/locale/es_MX/formats.py
  79. 0  lib/python/django/conf/locale/es_NI/__init__.py
  80. +30 −0 lib/python/django/conf/locale/es_NI/formats.py
  81. BIN  lib/python/django/conf/locale/et/LC_MESSAGES/django.mo
  82. +1,228 −0 lib/python/django/conf/locale/et/LC_MESSAGES/django.po
  83. 0  lib/python/django/conf/locale/et/__init__.py
  84. +23 −0 lib/python/django/conf/locale/et/formats.py
  85. BIN  lib/python/django/conf/locale/eu/LC_MESSAGES/django.mo
  86. +1,249 −0 lib/python/django/conf/locale/eu/LC_MESSAGES/django.po
  87. 0  lib/python/django/conf/locale/eu/__init__.py
  88. +23 −0 lib/python/django/conf/locale/eu/formats.py
  89. BIN  lib/python/django/conf/locale/fa/LC_MESSAGES/django.mo
  90. +1,221 −0 lib/python/django/conf/locale/fa/LC_MESSAGES/django.po
  91. 0  lib/python/django/conf/locale/fa/__init__.py
  92. +23 −0 lib/python/django/conf/locale/fa/formats.py
  93. BIN  lib/python/django/conf/locale/fi/LC_MESSAGES/django.mo
  94. +1,228 −0 lib/python/django/conf/locale/fi/LC_MESSAGES/django.po
  95. 0  lib/python/django/conf/locale/fi/__init__.py
  96. +23 −0 lib/python/django/conf/locale/fi/formats.py
  97. BIN  lib/python/django/conf/locale/fr/LC_MESSAGES/django.mo
  98. +1,261 −0 lib/python/django/conf/locale/fr/LC_MESSAGES/django.po
  99. 0  lib/python/django/conf/locale/fr/__init__.py
  100. +41 −0 lib/python/django/conf/locale/fr/formats.py
  101. BIN  lib/python/django/conf/locale/fy_NL/LC_MESSAGES/django.mo
  102. +1,220 −0 lib/python/django/conf/locale/fy_NL/LC_MESSAGES/django.po
  103. 0  lib/python/django/conf/locale/fy_NL/__init__.py
  104. +23 −0 lib/python/django/conf/locale/fy_NL/formats.py
  105. BIN  lib/python/django/conf/locale/ga/LC_MESSAGES/django.mo
  106. +1,276 −0 lib/python/django/conf/locale/ga/LC_MESSAGES/django.po
  107. 0  lib/python/django/conf/locale/ga/__init__.py
  108. +23 −0 lib/python/django/conf/locale/ga/formats.py
  109. BIN  lib/python/django/conf/locale/gl/LC_MESSAGES/django.mo
  110. +1,244 −0 lib/python/django/conf/locale/gl/LC_MESSAGES/django.po
  111. 0  lib/python/django/conf/locale/gl/__init__.py
  112. +23 −0 lib/python/django/conf/locale/gl/formats.py
  113. BIN  lib/python/django/conf/locale/he/LC_MESSAGES/django.mo
  114. +1,225 −0 lib/python/django/conf/locale/he/LC_MESSAGES/django.po
  115. 0  lib/python/django/conf/locale/he/__init__.py
  116. +23 −0 lib/python/django/conf/locale/he/formats.py
  117. BIN  lib/python/django/conf/locale/hi/LC_MESSAGES/django.mo
  118. +1,230 −0 lib/python/django/conf/locale/hi/LC_MESSAGES/django.po
  119. 0  lib/python/django/conf/locale/hi/__init__.py
  120. +23 −0 lib/python/django/conf/locale/hi/formats.py
  121. BIN  lib/python/django/conf/locale/hr/LC_MESSAGES/django.mo
  122. +1,260 −0 lib/python/django/conf/locale/hr/LC_MESSAGES/django.po
  123. 0  lib/python/django/conf/locale/hr/__init__.py
  124. +47 −0 lib/python/django/conf/locale/hr/formats.py
  125. BIN  lib/python/django/conf/locale/hu/LC_MESSAGES/django.mo
  126. +1,259 −0 lib/python/django/conf/locale/hu/LC_MESSAGES/django.po
  127. 0  lib/python/django/conf/locale/hu/__init__.py
  128. +32 −0 lib/python/django/conf/locale/hu/formats.py
  129. BIN  lib/python/django/conf/locale/id/LC_MESSAGES/django.mo
  130. +1,242 −0 lib/python/django/conf/locale/id/LC_MESSAGES/django.po
  131. 0  lib/python/django/conf/locale/id/__init__.py
  132. +47 −0 lib/python/django/conf/locale/id/formats.py
  133. BIN  lib/python/django/conf/locale/is/LC_MESSAGES/django.mo
  134. +1,245 −0 lib/python/django/conf/locale/is/LC_MESSAGES/django.po
  135. 0  lib/python/django/conf/locale/is/__init__.py
  136. +23 −0 lib/python/django/conf/locale/is/formats.py
  137. BIN  lib/python/django/conf/locale/it/LC_MESSAGES/django.mo
  138. +1,249 −0 lib/python/django/conf/locale/it/LC_MESSAGES/django.po
  139. 0  lib/python/django/conf/locale/it/__init__.py
  140. +46 −0 lib/python/django/conf/locale/it/formats.py
  141. BIN  lib/python/django/conf/locale/ja/LC_MESSAGES/django.mo
  142. +1,227 −0 lib/python/django/conf/locale/ja/LC_MESSAGES/django.po
  143. 0  lib/python/django/conf/locale/ja/__init__.py
  144. +23 −0 lib/python/django/conf/locale/ja/formats.py
  145. BIN  lib/python/django/conf/locale/ka/LC_MESSAGES/django.mo
Sorry, we could not display the entire diff because too many files (3,453) changed.
View
30 lib/python/django/__init__.py
@@ -0,0 +1,30 @@
+VERSION = (1, 4, 2, 'final', 0)
+
+def get_version(version=None):
+ """Derives a PEP386-compliant version number from VERSION."""
+ if version is None:
+ version = VERSION
+ assert len(version) == 5
+ assert version[3] in ('alpha', 'beta', 'rc', 'final')
+
+ # Now build the two parts of the version number:
+ # main = X.Y[.Z]
+ # sub = .devN - for pre-alpha releases
+ # | {a|b|c}N - for alpha, beta and rc releases
+
+ parts = 2 if version[2] == 0 else 3
+ main = '.'.join(str(x) for x in version[:parts])
+
+ sub = ''
+ if version[3] == 'alpha' and version[4] == 0:
+ # At the toplevel, this would cause an import loop.
+ from django.utils.version import get_svn_revision
+ svn_revision = get_svn_revision()[4:]
+ if svn_revision != 'unknown':
+ sub = '.dev%s' % svn_revision
+
+ elif version[3] != 'final':
+ mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}
+ sub = mapping[version[3]] + str(version[4])
+
+ return main + sub
View
0  lib/python/django/bin/__init__.py
No changes.
View
13 lib/python/django/bin/daily_cleanup.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+"""
+Daily cleanup job.
+
+Can be run as a cronjob to clean out old data from the database (only expired
+sessions at the moment).
+"""
+
+from django.core import management
+
+if __name__ == "__main__":
+ management.call_command('cleanup')
View
5 lib/python/django/bin/django-admin.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+from django.core import management
+
+if __name__ == "__main__":
+ management.execute_from_command_line()
View
0  lib/python/django/bin/profiling/__init__.py
No changes.
View
37 lib/python/django/bin/profiling/gather_profile_stats.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+"""
+gather_profile_stats.py /path/to/dir/of/profiles
+
+Note that the aggregated profiles must be read with pstats.Stats, not
+hotshot.stats (the formats are incompatible)
+"""
+
+from hotshot import stats
+import os
+import pstats
+import sys
+
+def gather_stats(p):
+ profiles = {}
+ for f in os.listdir(p):
+ if f.endswith('.agg.prof'):
+ path = f[:-9]
+ prof = pstats.Stats(os.path.join(p, f))
+ elif f.endswith('.prof'):
+ bits = f.split('.')
+ path = ".".join(bits[:-3])
+ prof = stats.load(os.path.join(p, f))
+ else:
+ continue
+ print "Processing %s" % f
+ if path in profiles:
+ profiles[path].add(prof)
+ else:
+ profiles[path] = prof
+ os.unlink(os.path.join(p, f))
+ for (path, prof) in profiles.items():
+ prof.dump_stats(os.path.join(p, "%s.agg.prof" % path))
+
+if __name__ == '__main__':
+ gather_stats(sys.argv[1])
View
28 lib/python/django/bin/unique-messages.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+
+import os
+import sys
+
+def unique_messages():
+ basedir = None
+
+ if os.path.isdir(os.path.join('conf', 'locale')):
+ basedir = os.path.abspath(os.path.join('conf', 'locale'))
+ elif os.path.isdir('locale'):
+ basedir = os.path.abspath('locale')
+ else:
+ print "this script should be run from the django svn tree or your project or app tree"
+ sys.exit(1)
+
+ for (dirpath, dirnames, filenames) in os.walk(basedir):
+ for f in filenames:
+ if f.endswith('.po'):
+ sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
+ pf = os.path.splitext(os.path.join(dirpath, f))[0]
+ cmd = 'msguniq "%s.po"' % pf
+ stdout = os.popen(cmd)
+ msg = stdout.read()
+ open('%s.po' % pf, 'w').write(msg)
+
+if __name__ == "__main__":
+ unique_messages()
View
196 lib/python/django/conf/__init__.py
@@ -0,0 +1,196 @@
+"""
+Settings and configuration for Django.
+
+Values will be read from the module specified by the DJANGO_SETTINGS_MODULE environment
+variable, and then from django.conf.global_settings; see the global settings file for
+a list of all possible variables.
+"""
+
+import os
+import re
+import time # Needed for Windows
+import warnings
+
+from django.conf import global_settings
+from django.utils.functional import LazyObject, empty
+from django.utils import importlib
+
+ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
+
+
+class LazySettings(LazyObject):
+ """
+ A lazy proxy for either global Django settings or a custom settings object.
+ The user can manually configure settings prior to using them. Otherwise,
+ Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
+ """
+ def _setup(self):
+ """
+ Load the settings module pointed to by the environment variable. This
+ is used the first time we need any settings at all, if the user has not
+ previously configured the settings manually.
+ """
+ try:
+ settings_module = os.environ[ENVIRONMENT_VARIABLE]
+ if not settings_module: # If it's set but is an empty string.
+ raise KeyError
+ except KeyError:
+ # NOTE: This is arguably an EnvironmentError, but that causes
+ # problems with Python's interactive help.
+ raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
+
+ self._wrapped = Settings(settings_module)
+
+ def configure(self, default_settings=global_settings, **options):
+ """
+ Called to manually configure the settings. The 'default_settings'
+ parameter sets where to retrieve any unspecified values from (its
+ argument must support attribute access (__getattr__)).
+ """
+ if self._wrapped is not empty:
+ raise RuntimeError('Settings already configured.')
+ holder = UserSettingsHolder(default_settings)
+ for name, value in options.items():
+ setattr(holder, name, value)
+ self._wrapped = holder
+
+ @property
+ def configured(self):
+ """
+ Returns True if the settings have already been configured.
+ """
+ return self._wrapped is not empty
+
+
+class BaseSettings(object):
+ """
+ Common logic for settings whether set by a module or by the user.
+ """
+ def __setattr__(self, name, value):
+ if name in ("MEDIA_URL", "STATIC_URL") and value and not value.endswith('/'):
+ warnings.warn("If set, %s must end with a slash" % name,
+ DeprecationWarning)
+ elif name == "ADMIN_MEDIA_PREFIX":
+ warnings.warn("The ADMIN_MEDIA_PREFIX setting has been removed; "
+ "use STATIC_URL instead.", DeprecationWarning)
+ elif name == "ALLOWED_INCLUDE_ROOTS" and isinstance(value, basestring):
+ raise ValueError("The ALLOWED_INCLUDE_ROOTS setting must be set "
+ "to a tuple, not a string.")
+ object.__setattr__(self, name, value)
+
+
+class Settings(BaseSettings):
+ def __init__(self, settings_module):
+ # update this dict from global settings (but only for ALL_CAPS settings)
+ for setting in dir(global_settings):
+ if setting == setting.upper():
+ setattr(self, setting, getattr(global_settings, setting))
+
+ # store the settings module in case someone later cares
+ self.SETTINGS_MODULE = settings_module
+
+ try:
+ mod = importlib.import_module(self.SETTINGS_MODULE)
+ except ImportError, e:
+ raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
+
+ # Settings that should be converted into tuples if they're mistakenly entered
+ # as strings.
+ tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS")
+
+ for setting in dir(mod):
+ if setting == setting.upper():
+ setting_value = getattr(mod, setting)
+ if setting in tuple_settings and \
+ isinstance(setting_value, basestring):
+ setting_value = (setting_value,) # In case the user forgot the comma.
+ setattr(self, setting, setting_value)
+
+ if not self.SECRET_KEY:
+ warnings.warn("The SECRET_KEY setting must not be empty.", DeprecationWarning)
+
+ if hasattr(time, 'tzset') and self.TIME_ZONE:
+ # When we can, attempt to validate the timezone. If we can't find
+ # this file, no check happens and it's harmless.
+ zoneinfo_root = '/usr/share/zoneinfo'
+ if (os.path.exists(zoneinfo_root) and not
+ os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))):
+ raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE)
+ # Move the time zone info into os.environ. See ticket #2315 for why
+ # we don't do this unconditionally (breaks Windows).
+ os.environ['TZ'] = self.TIME_ZONE
+ time.tzset()
+
+ # Settings are configured, so we can set up the logger if required
+ if self.LOGGING_CONFIG:
+ # First find the logging configuration function ...
+ logging_config_path, logging_config_func_name = self.LOGGING_CONFIG.rsplit('.', 1)
+ logging_config_module = importlib.import_module(logging_config_path)
+ logging_config_func = getattr(logging_config_module, logging_config_func_name)
+
+ # Backwards-compatibility shim for #16288 fix
+ compat_patch_logging_config(self.LOGGING)
+
+ # ... then invoke it with the logging settings
+ logging_config_func(self.LOGGING)
+
+
+class UserSettingsHolder(BaseSettings):
+ """
+ Holder for user configured settings.
+ """
+ # SETTINGS_MODULE doesn't make much sense in the manually configured
+ # (standalone) case.
+ SETTINGS_MODULE = None
+
+ def __init__(self, default_settings):
+ """
+ Requests for configuration variables not in this class are satisfied
+ from the module specified in default_settings (if possible).
+ """
+ self.default_settings = default_settings
+
+ def __getattr__(self, name):
+ return getattr(self.default_settings, name)
+
+ def __dir__(self):
+ return self.__dict__.keys() + dir(self.default_settings)
+
+ # For Python < 2.6:
+ __members__ = property(lambda self: self.__dir__())
+
+settings = LazySettings()
+
+
+
+def compat_patch_logging_config(logging_config):
+ """
+ Backwards-compatibility shim for #16288 fix. Takes initial value of
+ ``LOGGING`` setting and patches it in-place (issuing deprecation warning)
+ if "mail_admins" logging handler is configured but has no filters.
+
+ """
+ # Shim only if LOGGING["handlers"]["mail_admins"] exists,
+ # but has no "filters" key
+ if "filters" not in logging_config.get(
+ "handlers", {}).get(
+ "mail_admins", {"filters": []}):
+
+ warnings.warn(
+ "You have no filters defined on the 'mail_admins' logging "
+ "handler: adding implicit debug-false-only filter. "
+ "See http://docs.djangoproject.com/en/dev/releases/1.4/"
+ "#request-exceptions-are-now-always-logged",
+ PendingDeprecationWarning)
+
+ filter_name = "require_debug_false"
+
+ filters = logging_config.setdefault("filters", {})
+ while filter_name in filters:
+ filter_name = filter_name + "_"
+
+ filters[filter_name] = {
+ "()": "django.utils.log.RequireDebugFalse",
+ }
+
+ logging_config["handlers"]["mail_admins"]["filters"] = [filter_name]
View
0  lib/python/django/conf/app_template/__init__.py
No changes.
View
3  lib/python/django/conf/app_template/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
View
16 lib/python/django/conf/app_template/tests.py
@@ -0,0 +1,16 @@
+"""
+This file demonstrates writing tests using the unittest module. These will pass
+when you run "manage.py test".
+
+Replace this with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.assertEqual(1 + 1, 2)
View
1  lib/python/django/conf/app_template/views.py
@@ -0,0 +1 @@
+# Create your views here.
View
618 lib/python/django/conf/global_settings.py
@@ -0,0 +1,618 @@
+# Default Django settings. Override these with settings in the module
+# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.
+
+# This is defined here as a do-nothing function because we can't import
+# django.utils.translation -- that module depends on the settings.
+gettext_noop = lambda s: s
+
+####################
+# CORE #
+####################
+
+DEBUG = False
+TEMPLATE_DEBUG = False
+
+# Whether the framework should propagate raw exceptions rather than catching
+# them. This is useful under some testing situations and should never be used
+# on a live site.
+DEBUG_PROPAGATE_EXCEPTIONS = False
+
+# Whether to use the "Etag" header. This saves bandwidth but slows down performance.
+USE_ETAGS = False
+
+# People who get code error notifications.
+# In the format (('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com'))
+ADMINS = ()
+
+# Tuple of IP addresses, as strings, that:
+# * See debug comments, when DEBUG is true
+# * Receive x-headers
+INTERNAL_IPS = ()
+
+# Local time zone for this installation. All choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all
+# systems may support all possibilities). When USE_TZ is True, this is
+# interpreted as the default user time zone.
+TIME_ZONE = 'America/Chicago'
+
+# If you set this to True, Django will use timezone-aware datetimes.
+USE_TZ = False
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+# Languages we provide translations for, out of the box. The language name
+# should be the utf-8 encoded local name for the language.
+LANGUAGES = (
+ ('ar', gettext_noop('Arabic')),
+ ('az', gettext_noop('Azerbaijani')),
+ ('bg', gettext_noop('Bulgarian')),
+ ('bn', gettext_noop('Bengali')),
+ ('bs', gettext_noop('Bosnian')),
+ ('ca', gettext_noop('Catalan')),
+ ('cs', gettext_noop('Czech')),
+ ('cy', gettext_noop('Welsh')),
+ ('da', gettext_noop('Danish')),
+ ('de', gettext_noop('German')),
+ ('el', gettext_noop('Greek')),
+ ('en', gettext_noop('English')),
+ ('en-gb', gettext_noop('British English')),
+ ('eo', gettext_noop('Esperanto')),
+ ('es', gettext_noop('Spanish')),
+ ('es-ar', gettext_noop('Argentinian Spanish')),
+ ('es-mx', gettext_noop('Mexican Spanish')),
+ ('es-ni', gettext_noop('Nicaraguan Spanish')),
+ ('et', gettext_noop('Estonian')),
+ ('eu', gettext_noop('Basque')),
+ ('fa', gettext_noop('Persian')),
+ ('fi', gettext_noop('Finnish')),
+ ('fr', gettext_noop('French')),
+ ('fy-nl', gettext_noop('Frisian')),
+ ('ga', gettext_noop('Irish')),
+ ('gl', gettext_noop('Galician')),
+ ('he', gettext_noop('Hebrew')),
+ ('hi', gettext_noop('Hindi')),
+ ('hr', gettext_noop('Croatian')),
+ ('hu', gettext_noop('Hungarian')),
+ ('id', gettext_noop('Indonesian')),
+ ('is', gettext_noop('Icelandic')),
+ ('it', gettext_noop('Italian')),
+ ('ja', gettext_noop('Japanese')),
+ ('ka', gettext_noop('Georgian')),
+ ('kk', gettext_noop('Kazakh')),
+ ('km', gettext_noop('Khmer')),
+ ('kn', gettext_noop('Kannada')),
+ ('ko', gettext_noop('Korean')),
+ ('lt', gettext_noop('Lithuanian')),
+ ('lv', gettext_noop('Latvian')),
+ ('mk', gettext_noop('Macedonian')),
+ ('ml', gettext_noop('Malayalam')),
+ ('mn', gettext_noop('Mongolian')),
+ ('nb', gettext_noop('Norwegian Bokmal')),
+ ('ne', gettext_noop('Nepali')),
+ ('nl', gettext_noop('Dutch')),
+ ('nn', gettext_noop('Norwegian Nynorsk')),
+ ('pa', gettext_noop('Punjabi')),
+ ('pl', gettext_noop('Polish')),
+ ('pt', gettext_noop('Portuguese')),
+ ('pt-br', gettext_noop('Brazilian Portuguese')),
+ ('ro', gettext_noop('Romanian')),
+ ('ru', gettext_noop('Russian')),
+ ('sk', gettext_noop('Slovak')),
+ ('sl', gettext_noop('Slovenian')),
+ ('sq', gettext_noop('Albanian')),
+ ('sr', gettext_noop('Serbian')),
+ ('sr-latn', gettext_noop('Serbian Latin')),
+ ('sv', gettext_noop('Swedish')),
+ ('sw', gettext_noop('Swahili')),
+ ('ta', gettext_noop('Tamil')),
+ ('te', gettext_noop('Telugu')),
+ ('th', gettext_noop('Thai')),
+ ('tr', gettext_noop('Turkish')),
+ ('tt', gettext_noop('Tatar')),
+ ('uk', gettext_noop('Ukrainian')),
+ ('ur', gettext_noop('Urdu')),
+ ('vi', gettext_noop('Vietnamese')),
+ ('zh-cn', gettext_noop('Simplified Chinese')),
+ ('zh-tw', gettext_noop('Traditional Chinese')),
+)
+
+# Languages using BiDi (right-to-left) layout
+LANGUAGES_BIDI = ("he", "ar", "fa")
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+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_L10N = False
+
+# Not-necessarily-technical managers of the site. They get broken link
+# notifications and other various emails.
+MANAGERS = ADMINS
+
+# Default content type and charset to use for all HttpResponse objects, if a
+# MIME type isn't manually specified. These are used to construct the
+# Content-Type header.
+DEFAULT_CONTENT_TYPE = 'text/html'
+DEFAULT_CHARSET = 'utf-8'
+
+# Encoding of files read from disk (template and initial SQL files).
+FILE_CHARSET = 'utf-8'
+
+# E-mail address that error messages come from.
+SERVER_EMAIL = 'root@localhost'
+
+# Whether to send broken-link emails.
+SEND_BROKEN_LINK_EMAILS = False
+
+# Database connection info.
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.dummy',
+ },
+}
+
+# Classes used to implement DB routing behavior.
+DATABASE_ROUTERS = []
+
+# The email backend to use. For possible shortcuts see django.core.mail.
+# The default is to use the SMTP backend.
+# Third-party backends can be specified by providing a Python path
+# to a module that defines an EmailBackend class.
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
+
+# Host for sending email.
+EMAIL_HOST = 'localhost'
+
+# Port for sending email.
+EMAIL_PORT = 25
+
+# Optional SMTP authentication information for EMAIL_HOST.
+EMAIL_HOST_USER = ''
+EMAIL_HOST_PASSWORD = ''
+EMAIL_USE_TLS = False
+
+# List of strings representing installed apps.
+INSTALLED_APPS = ()
+
+# List of locations of the template source files, in search order.
+TEMPLATE_DIRS = ()
+
+# List of callables that know how to import templates from various sources.
+# See the comments in django/core/template/loader.py for interface
+# documentation.
+TEMPLATE_LOADERS = (
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+# 'django.template.loaders.eggs.Loader',
+)
+
+# List of processors used by RequestContext to populate the context.
+# Each one should be a callable that takes the request object as its
+# only parameter and returns a dictionary to add to the context.
+TEMPLATE_CONTEXT_PROCESSORS = (
+ 'django.contrib.auth.context_processors.auth',
+ 'django.core.context_processors.debug',
+ 'django.core.context_processors.i18n',
+ 'django.core.context_processors.media',
+ 'django.core.context_processors.static',
+ 'django.core.context_processors.tz',
+# 'django.core.context_processors.request',
+ 'django.contrib.messages.context_processors.messages',
+)
+
+# Output to use in template system for invalid (e.g. misspelled) variables.
+TEMPLATE_STRING_IF_INVALID = ''
+
+# Default email address to use for various automated correspondence from
+# the site managers.
+DEFAULT_FROM_EMAIL = 'webmaster@localhost'
+
+# Subject-line prefix for email messages send with django.core.mail.mail_admins
+# or ...mail_managers. Make sure to include the trailing space.
+EMAIL_SUBJECT_PREFIX = '[Django] '
+
+# Whether to append trailing slashes to URLs.
+APPEND_SLASH = True
+
+# Whether to prepend the "www." subdomain to URLs that don't have it.
+PREPEND_WWW = False
+
+# Override the server-derived value of SCRIPT_NAME
+FORCE_SCRIPT_NAME = None
+
+# List of compiled regular expression objects representing User-Agent strings
+# that are not allowed to visit any page, systemwide. Use this for bad
+# robots/crawlers. Here are a few examples:
+# import re
+# DISALLOWED_USER_AGENTS = (
+# re.compile(r'^NaverBot.*'),
+# re.compile(r'^EmailSiphon.*'),
+# re.compile(r'^SiteSucker.*'),
+# re.compile(r'^sohu-search')
+# )
+DISALLOWED_USER_AGENTS = ()
+
+ABSOLUTE_URL_OVERRIDES = {}
+
+# Tuple of strings representing allowed prefixes for the {% ssi %} tag.
+# Example: ('/home/html', '/var/www')
+ALLOWED_INCLUDE_ROOTS = ()
+
+# If this is a admin settings module, this should be a list of
+# settings modules (in the format 'foo.bar.baz') for which this admin
+# is an admin.
+ADMIN_FOR = ()
+
+# List of compiled regular expression objects representing URLs that need not
+# be reported when SEND_BROKEN_LINK_EMAILS is True. Here are a few examples:
+# import re
+# IGNORABLE_404_URLS = (
+# re.compile(r'^/apple-touch-icon.*\.png$'),
+# re.compile(r'^/favicon.ico$),
+# re.compile(r'^/robots.txt$),
+# re.compile(r'^/phpmyadmin/),
+# re.compile(r'\.(cgi|php|pl)$'),
+# )
+IGNORABLE_404_URLS = ()
+
+# A secret key for this particular Django installation. Used in secret-key
+# hashing algorithms. Set this in your settings, or Django will complain
+# loudly.
+SECRET_KEY = ''
+
+# Default file storage mechanism that holds media.
+DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/home/media/media.lawrence.com/media/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT.
+# Example: "http://media.lawrence.com/media/"
+MEDIA_URL = ''
+
+# Absolute path to the directory that holds static files.
+# Example: "/home/media/media.lawrence.com/static/"
+STATIC_ROOT = ''
+
+# URL that handles the static files served from STATIC_ROOT.
+# Example: "http://media.lawrence.com/static/"
+STATIC_URL = None
+
+# List of upload handler classes to be applied in order.
+FILE_UPLOAD_HANDLERS = (
+ 'django.core.files.uploadhandler.MemoryFileUploadHandler',
+ 'django.core.files.uploadhandler.TemporaryFileUploadHandler',
+)
+
+# Maximum size, in bytes, of a request before it will be streamed to the
+# file system instead of into memory.
+FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB
+
+# Directory in which upload streamed files will be temporarily saved. A value of
+# `None` will make Django use the operating system's default temporary directory
+# (i.e. "/tmp" on *nix systems).
+FILE_UPLOAD_TEMP_DIR = None
+
+# The numeric mode to set newly-uploaded files to. The value should be a mode
+# 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/#date
+DATE_FORMAT = 'N j, Y'
+
+# Default formatting for datetime objects. See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+DATETIME_FORMAT = 'N j, Y, P'
+
+# Default formatting for time objects. See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+TIME_FORMAT = 'P'
+
+# Default formatting for date objects when only the year and month are relevant.
+# See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+YEAR_MONTH_FORMAT = 'F Y'
+
+# Default formatting for date objects when only the month and day are relevant.
+# See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+MONTH_DAY_FORMAT = 'F j'
+
+# Default short formatting for date objects. See all available format strings here:
+# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+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/#date
+SHORT_DATETIME_FORMAT = 'm/d/Y P'
+
+# Default formats to be used when parsing dates from input boxes, in 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 to be used when parsing times from input boxes, in 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 to be used when parsing dates and times from input boxes,
+# in 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:%S.%f', # '2006-10-25 14:30:59.000200'
+ '%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:%S.%f', # '10/25/2006 14:30:59.000200'
+ '%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:%S.%f', # '10/25/06 14:30:59.000200'
+ '%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 together, when splitting 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
+
+# The User-Agent string to use when checking for URL validity through the
+# isExistingURL validator.
+from django import get_version
+URL_VALIDATOR_USER_AGENT = "Django/%s (https://www.djangoproject.com)" % get_version()
+
+# The tablespaces to use for each model when not specified otherwise.
+DEFAULT_TABLESPACE = ''
+DEFAULT_INDEX_TABLESPACE = ''
+
+# Default X-Frame-Options header value
+X_FRAME_OPTIONS = 'SAMEORIGIN'
+
+USE_X_FORWARDED_HOST = False
+
+# The Python dotted path to the WSGI application that Django's internal servers
+# (runserver, runfcgi) will use. If `None`, the return value of
+# 'django.core.wsgi.get_wsgi_application' is used, thus preserving the same
+# behavior as previous versions of Django. Otherwise this should point to an
+# actual WSGI application object.
+WSGI_APPLICATION = None
+
+# If your Django app is behind a proxy that sets a header to specify secure
+# connections, AND that proxy ensures that user-submitted headers with the
+# same name are ignored (so that people can't spoof it), set this value to
+# a tuple of (header_name, header_value). For any requests that come in with
+# that header/value, request.is_secure() will return True.
+# WARNING! Only set this if you fully understand what you're doing. Otherwise,
+# you may be opening yourself up to a security risk.
+SECURE_PROXY_SSL_HEADER = None
+
+##############
+# MIDDLEWARE #
+##############
+
+# List of middleware classes to use. Order is important; in the request phase,
+# this middleware classes will be applied in the order given, and in the
+# response phase the middleware will be applied in reverse order.
+MIDDLEWARE_CLASSES = (
+ 'django.middleware.common.CommonMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+# 'django.middleware.http.ConditionalGetMiddleware',
+# 'django.middleware.gzip.GZipMiddleware',
+)
+
+############
+# SESSIONS #
+############
+
+SESSION_COOKIE_NAME = 'sessionid' # Cookie name. This can be whatever you want.
+SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2 # Age of cookie, in seconds (default: 2 weeks).
+SESSION_COOKIE_DOMAIN = None # A string like ".lawrence.com", or None for standard domain cookie.
+SESSION_COOKIE_SECURE = False # Whether the session cookie should be secure (https:// only).
+SESSION_COOKIE_PATH = '/' # The path of the session cookie.
+SESSION_COOKIE_HTTPONLY = True # Whether to use the non-RFC standard httpOnly flag (IE, FF3+, others)
+SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request.
+SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether a user's session cookie expires when the Web browser is closed.
+SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data
+SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If None, the backend will use a sensible default.
+
+#########
+# CACHE #
+#########
+
+# New format
+CACHES = {
+}
+# The cache backend to use. See the docstring in django.core.cache for the
+# possible values.
+CACHE_MIDDLEWARE_KEY_PREFIX = ''
+CACHE_MIDDLEWARE_SECONDS = 600
+CACHE_MIDDLEWARE_ALIAS = 'default'
+
+####################
+# COMMENTS #
+####################
+
+COMMENTS_ALLOW_PROFANITIES = False
+
+# The profanities that will trigger a validation error in
+# CommentDetailsForm.clean_comment. All of these should be in lowercase.
+PROFANITIES_LIST = ()
+
+##################
+# AUTHENTICATION #
+##################
+
+AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
+
+LOGIN_URL = '/accounts/login/'
+
+LOGOUT_URL = '/accounts/logout/'
+
+LOGIN_REDIRECT_URL = '/accounts/profile/'
+
+# The number of days a password reset link is valid for
+PASSWORD_RESET_TIMEOUT_DAYS = 3
+
+# the first hasher in this list is the preferred algorithm. any
+# password using different algorithms will be converted automatically
+# upon login
+PASSWORD_HASHERS = (
+ 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
+ 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
+ 'django.contrib.auth.hashers.BCryptPasswordHasher',
+ 'django.contrib.auth.hashers.SHA1PasswordHasher',
+ 'django.contrib.auth.hashers.MD5PasswordHasher',
+ 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
+ 'django.contrib.auth.hashers.CryptPasswordHasher',
+)
+
+###########
+# SIGNING #
+###########
+
+SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
+
+########
+# CSRF #
+########
+
+# Dotted path to callable to be used as view when a request is
+# rejected by the CSRF middleware.
+CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
+
+# Settings for CSRF cookie.
+CSRF_COOKIE_NAME = 'csrftoken'
+CSRF_COOKIE_DOMAIN = None
+CSRF_COOKIE_PATH = '/'
+CSRF_COOKIE_SECURE = False
+
+############
+# MESSAGES #
+############
+
+# Class to use as messages backend
+MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
+
+# Default values of MESSAGE_LEVEL and MESSAGE_TAGS are defined within
+# django.contrib.messages to avoid imports in this settings file.
+
+###########
+# LOGGING #
+###########
+
+# The callable to use to configure logging
+LOGGING_CONFIG = 'django.utils.log.dictConfig'
+
+# The default logging configuration. This sends an email to
+# the site admins on every HTTP 500 error. All other log
+# records are sent to the bit bucket.
+
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'filters': {
+ 'require_debug_false': {
+ '()': 'django.utils.log.RequireDebugFalse',
+ }
+ },
+ 'handlers': {
+ 'mail_admins': {
+ 'level': 'ERROR',
+ 'filters': ['require_debug_false'],
+ 'class': 'django.utils.log.AdminEmailHandler'
+ }
+ },
+ 'loggers': {
+ 'django.request': {
+ 'handlers': ['mail_admins'],
+ 'level': 'ERROR',
+ 'propagate': True,
+ },
+ }
+}
+
+# Default exception reporter filter class used in case none has been
+# specifically assigned to the HttpRequest instance.
+DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
+
+###########
+# TESTING #
+###########
+
+# The name of the class to use to run the test suite
+TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'
+
+############
+# FIXTURES #
+############
+
+# The list of directories to search for fixtures
+FIXTURE_DIRS = ()
+
+###############
+# STATICFILES #
+###############
+
+# A list of locations of additional static files
+STATICFILES_DIRS = ()
+
+# The default file storage backend used during the build process
+STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
+
+# List of finder classes that know how to find static files in
+# various locations.
+STATICFILES_FINDERS = (
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
+)
View
434 lib/python/django/conf/locale/__init__.py
@@ -0,0 +1,434 @@
+LANG_INFO = {
+ 'ar': {
+ 'bidi': True,
+ 'code': 'ar',
+ 'name': 'Arabic',
+ 'name_local': u'\u0627\u0644\u0639\u0631\u0628\u064a\u0651\u0629',
+ },
+ 'az': {
+ 'bidi': True,
+ 'code': 'az',
+ 'name': 'Azerbaijani',
+ 'name_local': u'az\u0259rbaycan dili',
+ },
+ 'bg': {
+ 'bidi': False,
+ 'code': 'bg',
+ 'name': 'Bulgarian',
+ 'name_local': u'\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438',
+ },
+ 'bn': {
+ 'bidi': False,
+ 'code': 'bn',
+ 'name': 'Bengali',
+ 'name_local': u'\u09ac\u09be\u0982\u09b2\u09be',
+ },
+ 'bs': {
+ 'bidi': False,
+ 'code': 'bs',
+ 'name': 'Bosnian',
+ 'name_local': u'bosanski',
+ },
+ 'ca': {
+ 'bidi': False,
+ 'code': 'ca',
+ 'name': 'Catalan',
+ 'name_local': u'catal\xe0',
+ },
+ 'cs': {
+ 'bidi': False,
+ 'code': 'cs',
+ 'name': 'Czech',
+ 'name_local': u'\u010desky',
+ },
+ 'cy': {
+ 'bidi': False,
+ 'code': 'cy',
+ 'name': 'Welsh',
+ 'name_local': u'Cymraeg',
+ },
+ 'da': {
+ 'bidi': False,
+ 'code': 'da',
+ 'name': 'Danish',
+ 'name_local': u'Dansk',
+ },
+ 'de': {
+ 'bidi': False,
+ 'code': 'de',
+ 'name': 'German',
+ 'name_local': u'Deutsch',
+ },
+ 'el': {
+ 'bidi': False,
+ 'code': 'el',
+ 'name': 'Greek',
+ 'name_local': u'\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac',
+ },
+ 'en': {
+ 'bidi': False,
+ 'code': 'en',
+ 'name': 'English',
+ 'name_local': u'English',
+ },
+ 'en-gb': {
+ 'bidi': False,
+ 'code': 'en-gb',
+ 'name': 'British English',
+ 'name_local': u'British English',
+ },
+ 'eo': {
+ 'bidi': False,
+ 'code': 'eo',
+ 'name': 'Esperanto',
+ 'name_local': u'Esperanto',
+ },
+ 'es': {
+ 'bidi': False,
+ 'code': 'es',
+ 'name': 'Spanish',
+ 'name_local': u'espa\xf1ol',
+ },
+ 'es-ar': {
+ 'bidi': False,
+ 'code': 'es-ar',
+ 'name': 'Argentinian Spanish',
+ 'name_local': u'espa\xf1ol de Argentina',
+ },
+ 'es-mx': {
+ 'bidi': False,
+ 'code': 'es-mx',
+ 'name': 'Mexican Spanish',
+ 'name_local': u'espa\xf1ol de Mexico',
+ },
+ 'es-ni': {
+ 'bidi': False,
+ 'code': 'es-ni',
+ 'name': 'Nicaraguan Spanish',
+ 'name_local': u'espa\xf1ol de Nicaragua',
+ },
+ 'et': {
+ 'bidi': False,
+ 'code': 'et',
+ 'name': 'Estonian',
+ 'name_local': u'eesti',
+ },
+ 'eu': {
+ 'bidi': False,
+ 'code': 'eu',
+ 'name': 'Basque',
+ 'name_local': u'Basque',
+ },
+ 'fa': {
+ 'bidi': True,
+ 'code': 'fa',
+ 'name': 'Persian',
+ 'name_local': u'\u0641\u0627\u0631\u0633\u06cc',
+ },
+ 'fi': {
+ 'bidi': False,
+ 'code': 'fi',
+ 'name': 'Finnish',
+ 'name_local': u'suomi',
+ },
+ 'fr': {
+ 'bidi': False,
+ 'code': 'fr',
+ 'name': 'French',
+ 'name_local': u'Fran\xe7ais',
+ },
+ 'fy-nl': {
+ 'bidi': False,
+ 'code': 'fy-nl',
+ 'name': 'Frisian',
+ 'name_local': u'Frisian',
+ },
+ 'ga': {
+ 'bidi': False,
+ 'code': 'ga',
+ 'name': 'Irish',
+ 'name_local': u'Gaeilge',
+ },
+ 'gl': {
+ 'bidi': False,
+ 'code': 'gl',
+ 'name': 'Galician',
+ 'name_local': u'galego',
+ },
+ 'he': {
+ 'bidi': True,
+ 'code': 'he',
+ 'name': 'Hebrew',
+ 'name_local': u'\u05e2\u05d1\u05e8\u05d9\u05ea',
+ },
+ 'hi': {
+ 'bidi': False,
+ 'code': 'hi',
+ 'name': 'Hindi',
+ 'name_local': u'Hindi',
+ },
+ 'hr': {
+ 'bidi': False,
+ 'code': 'hr',
+ 'name': 'Croatian',
+ 'name_local': u'Hrvatski',
+ },
+ 'hu': {
+ 'bidi': False,
+ 'code': 'hu',
+ 'name': 'Hungarian',
+ 'name_local': u'Magyar',
+ },
+ 'id': {
+ 'bidi': False,
+ 'code': 'id',
+ 'name': 'Indonesian',
+ 'name_local': u'Bahasa Indonesia',
+ },
+ 'is': {
+ 'bidi': False,
+ 'code': 'is',
+ 'name': 'Icelandic',
+ 'name_local': u'\xcdslenska',
+ },
+ 'it': {
+ 'bidi': False,
+ 'code': 'it',
+ 'name': 'Italian',
+ 'name_local': u'italiano',
+ },
+ 'ja': {
+ 'bidi': False,
+ 'code': 'ja',
+ 'name': 'Japanese',
+ 'name_local': u'\u65e5\u672c\u8a9e',
+ },
+ 'ka': {
+ 'bidi': False,
+ 'code': 'ka',
+ 'name': 'Georgian',
+ 'name_local': u'\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8',
+ },
+ 'kk': {
+ 'bidi': False,
+ 'code': 'kk',
+ 'name': 'Kazakh',
+ 'name_local': u'\u049a\u0430\u0437\u0430\u049b',
+ },
+ 'km': {
+ 'bidi': False,
+ 'code': 'km',
+ 'name': 'Khmer',
+ 'name_local': u'Khmer',
+ },
+ 'kn': {
+ 'bidi': False,
+ 'code': 'kn',
+ 'name': 'Kannada',
+ 'name_local': u'Kannada',
+ },
+ 'ko': {
+ 'bidi': False,
+ 'code': 'ko',
+ 'name': 'Korean',
+ 'name_local': u'\ud55c\uad6d\uc5b4',
+ },
+ 'lt': {
+ 'bidi': False,
+ 'code': 'lt',
+ 'name': 'Lithuanian',
+ 'name_local': u'Lithuanian',
+ },
+ 'lv': {
+ 'bidi': False,
+ 'code': 'lv',
+ 'name': 'Latvian',
+ 'name_local': u'latvie\u0161u',
+ },
+ 'mk': {
+ 'bidi': False,
+ 'code': 'mk',
+ 'name': 'Macedonian',
+ 'name_local': u'\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438',
+ },
+ 'ml': {
+ 'bidi': False,
+ 'code': 'ml',
+ 'name': 'Malayalam',
+ 'name_local': u'Malayalam',
+ },
+ 'mn': {
+ 'bidi': False,
+ 'code': 'mn',
+ 'name': 'Mongolian',
+ 'name_local': u'Mongolian',
+ },
+ 'nb': {
+ 'bidi': False,
+ 'code': 'nb',
+ 'name': 'Norwegian Bokmal',
+ 'name_local': u'Norsk (bokm\xe5l)',
+ },
+ 'ne': {
+ 'bidi': False,
+ 'code': 'ne',
+ 'name': 'Nepali',
+ 'name_local': u'\u0928\u0947\u092a\u093e\u0932\u0940',
+ },
+ 'nl': {
+ 'bidi': False,
+ 'code': 'nl',
+ 'name': 'Dutch',
+ 'name_local': u'Nederlands',
+ },
+ 'nn': {
+ 'bidi': False,
+ 'code': 'nn',
+ 'name': 'Norwegian Nynorsk',
+ 'name_local': u'Norsk (nynorsk)',
+ },
+ 'no': {
+ 'bidi': False,
+ 'code': 'no',
+ 'name': 'Norwegian',
+ 'name_local': u'Norsk',
+ },
+ 'pa': {
+ 'bidi': False,
+ 'code': 'pa',
+ 'name': 'Punjabi',
+ 'name_local': u'Punjabi',
+ },
+ 'pl': {
+ 'bidi': False,
+ 'code': 'pl',
+ 'name': 'Polish',
+ 'name_local': u'polski',
+ },
+ 'pt': {
+ 'bidi': False,
+ 'code': 'pt',
+ 'name': 'Portuguese',
+ 'name_local': u'Portugu\xeas',
+ },
+ 'pt-br': {
+ 'bidi': False,
+ 'code': 'pt-br',
+ 'name': 'Brazilian Portuguese',
+ 'name_local': u'Portugu\xeas Brasileiro',
+ },
+ 'ro': {
+ 'bidi': False,
+ 'code': 'ro',
+ 'name': 'Romanian',
+ 'name_local': u'Rom\xe2n\u0103',
+ },
+ 'ru': {
+ 'bidi': False,
+ 'code': 'ru',
+ 'name': 'Russian',
+ 'name_local': u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439',
+ },
+ 'sk': {
+ 'bidi': False,
+ 'code': 'sk',
+ 'name': 'Slovak',
+ 'name_local': u'slovensk\xfd',
+ },
+ 'sl': {
+ 'bidi': False,
+ 'code': 'sl',
+ 'name': 'Slovenian',
+ 'name_local': u'Sloven\u0161\u010dina',
+ },
+ 'sq': {
+ 'bidi': False,
+ 'code': 'sq',
+ 'name': 'Albanian',
+ 'name_local': u'Albanian',
+ },
+ 'sr': {
+ 'bidi': False,
+ 'code': 'sr',
+ 'name': 'Serbian',
+ 'name_local': u'\u0441\u0440\u043f\u0441\u043a\u0438',
+ },
+ 'sr-latn': {
+ 'bidi': False,
+ 'code': 'sr-latn',
+ 'name': 'Serbian Latin',
+ 'name_local': u'srpski (latinica)',
+ },
+ 'sv': {
+ 'bidi': False,
+ 'code': 'sv',
+ 'name': 'Swedish',
+ 'name_local': u'Svenska',
+ },
+ 'sw': {
+ 'bidi': False,
+ 'code': 'sw',
+ 'name': 'Swahili',
+ 'name_local': u'Kiswahili',
+ },
+ 'ta': {
+ 'bidi': False,
+ 'code': 'ta',
+ 'name': 'Tamil',
+ 'name_local': u'\u0ba4\u0bae\u0bbf\u0bb4\u0bcd',
+ },
+ 'te': {
+ 'bidi': False,
+ 'code': 'te',
+ 'name': 'Telugu',
+ 'name_local': u'\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41',
+ },
+ 'th': {
+ 'bidi': False,
+ 'code': 'th',
+ 'name': 'Thai',
+ 'name_local': u'Thai',
+ },
+ 'tr': {
+ 'bidi': False,
+ 'code': 'tr',
+ 'name': 'Turkish',
+ 'name_local': u'T\xfcrk\xe7e',
+ },
+ 'tt': {
+ 'bidi': False,
+ 'code': 'tt',
+ 'name': 'Tatar',
+ 'name_local': u'\u0422\u0430\u0442\u0430\u0440\u0447\u0430',
+ },
+ 'uk': {
+ 'bidi': False,
+ 'code': 'uk',
+ 'name': 'Ukrainian',
+ 'name_local': u'\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430',
+ },
+ 'ur': {
+ 'bidi': False,
+ 'code': 'ur',
+ 'name': 'Urdu',
+ 'name_local': u'\u0627\u0631\u062f\u0648',
+ },
+ 'vi': {
+ 'bidi': False,
+ 'code': 'vi',
+ 'name': 'Vietnamese',
+ 'name_local': u'Vietnamese',
+ },
+ 'zh-cn': {
+ 'bidi': False,
+ 'code': 'zh-cn',
+ 'name': 'Simplified Chinese',
+ 'name_local': u'\u7b80\u4f53\u4e2d\u6587',
+ },
+ 'zh-tw': {
+ 'bidi': False,
+ 'code': 'zh-tw',
+ 'name': 'Traditional Chinese',
+ 'name_local': u'\u7e41\u9ad4\u4e2d\u6587',
+ }
+}
View
BIN  lib/python/django/conf/locale/ar/LC_MESSAGES/django.mo
Binary file not shown
View
1,255 lib/python/django/conf/locale/ar/LC_MESSAGES/django.po
@@ -0,0 +1,1255 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011.
+# Ossama Khayat <okhayat@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-03-23 02:28+0100\n"
+"PO-Revision-Date: 2012-03-08 12:00+0000\n"
+"Last-Translator: Ossama Khayat <okhayat@gmail.com>\n"
+"Language-Team: Arabic (http://www.transifex.net/projects/p/django/language/"
+"ar/)\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
+
+#: conf/global_settings.py:48
+msgid "Arabic"
+msgstr "العربيّة"
+
+#: conf/global_settings.py:49
+msgid "Azerbaijani"
+msgstr "الأذربيجانية"
+
+#: conf/global_settings.py:50
+msgid "Bulgarian"
+msgstr "البلغاريّة"
+
+#: conf/global_settings.py:51
+msgid "Bengali"
+msgstr "البنغاليّة"
+
+#: conf/global_settings.py:52
+msgid "Bosnian"
+msgstr "البوسنيّة"
+
+#: conf/global_settings.py:53
+msgid "Catalan"
+msgstr "الكتلانيّة"
+
+#: conf/global_settings.py:54
+msgid "Czech"
+msgstr "التشيكيّة"
+
+#: conf/global_settings.py:55
+msgid "Welsh"
+msgstr "الويلز"
+
+#: conf/global_settings.py:56
+msgid "Danish"
+msgstr "الدنماركيّة"
+
+#: conf/global_settings.py:57
+msgid "German"
+msgstr "الألمانيّة"
+
+#: conf/global_settings.py:58
+msgid "Greek"
+msgstr "اليونانيّة"
+
+#: conf/global_settings.py:59
+msgid "English"
+msgstr "الإنجليزيّة"
+
+#: conf/global_settings.py:60
+msgid "British English"
+msgstr "الإنجليزيّة البريطانيّة"
+
+#: conf/global_settings.py:61
+msgid "Esperanto"
+msgstr ""
+
+#: conf/global_settings.py:62
+msgid "Spanish"
+msgstr "الإسبانيّة"
+
+#: conf/global_settings.py:63
+msgid "Argentinian Spanish"
+msgstr "الأسبانية الأرجنتينية"
+
+#: conf/global_settings.py:64
+msgid "Mexican Spanish"
+msgstr "الأسبانية المكسيكية"
+
+#: conf/global_settings.py:65
+msgid "Nicaraguan Spanish"
+msgstr ""
+
+#: conf/global_settings.py:66
+msgid "Estonian"
+msgstr "الإستونيّة"
+
+#: conf/global_settings.py:67
+msgid "Basque"
+msgstr "الباسك"
+
+#: conf/global_settings.py:68
+msgid "Persian"
+msgstr "الفارسيّة"
+
+#: conf/global_settings.py:69
+msgid "Finnish"
+msgstr "الفنلنديّة"
+
+#: conf/global_settings.py:70
+msgid "French"
+msgstr "الفرنسيّة"
+
+#: conf/global_settings.py:71
+msgid "Frisian"
+msgstr "الفريزيّة"
+
+#: conf/global_settings.py:72
+msgid "Irish"
+msgstr "الإيرلنديّة"
+
+#: conf/global_settings.py:73
+msgid "Galician"
+msgstr "الجليقيّة"
+
+#: conf/global_settings.py:74
+msgid "Hebrew"
+msgstr "العبريّة"
+
+#: conf/global_settings.py:75
+msgid "Hindi"
+msgstr "الهندية"
+
+#: conf/global_settings.py:76
+msgid "Croatian"
+msgstr "الكرواتيّة"
+
+#: conf/global_settings.py:77
+msgid "Hungarian"
+msgstr "الهنغاريّة"
+
+#: conf/global_settings.py:78
+msgid "Indonesian"
+msgstr "الإندونيسيّة"
+
+#: conf/global_settings.py:79
+msgid "Icelandic"
+msgstr "الآيسلنديّة"
+
+#: conf/global_settings.py:80
+msgid "Italian"
+msgstr "الإيطاليّة"
+
+#: conf/global_settings.py:81
+msgid "Japanese"
+msgstr "اليابانيّة"
+
+#: conf/global_settings.py:82
+msgid "Georgian"
+msgstr "الجورجيّة"
+
+#: conf/global_settings.py:83
+msgid "Kazakh"
+msgstr ""
+
+#: conf/global_settings.py:84
+msgid "Khmer"
+msgstr "الخمر"
+
+#: conf/global_settings.py:85
+msgid "Kannada"
+msgstr "الهنديّة (كنّادا)"
+
+#: conf/global_settings.py:86
+msgid "Korean"
+msgstr "الكوريّة"
+
+#: conf/global_settings.py:87
+msgid "Lithuanian"
+msgstr "اللتوانيّة"
+
+#: conf/global_settings.py:88
+msgid "Latvian"
+msgstr "اللاتفيّة"
+
+#: conf/global_settings.py:89
+msgid "Macedonian"
+msgstr "المقدونيّة"
+
+#: conf/global_settings.py:90
+msgid "Malayalam"
+msgstr "المايالام"
+
+#: conf/global_settings.py:91
+msgid "Mongolian"
+msgstr "المنغوليّة"
+
+#: conf/global_settings.py:92
+msgid "Norwegian Bokmal"
+msgstr "البوكمال نرويجيّة"
+
+#: conf/global_settings.py:93
+msgid "Nepali"
+msgstr ""
+
+#: conf/global_settings.py:94
+msgid "Dutch"
+msgstr "الهولنديّة"
+
+#: conf/global_settings.py:95
+msgid "Norwegian Nynorsk"
+msgstr "النينورسك نرويجيّة"
+
+#: conf/global_settings.py:96
+msgid "Punjabi"
+msgstr "البنجابيّة"
+
+#: conf/global_settings.py:97
+msgid "Polish"
+msgstr "البولنديّة"
+
+#: conf/global_settings.py:98
+msgid "Portuguese"
+msgstr "البرتغاليّة"
+
+#: conf/global_settings.py:99
+msgid "Brazilian Portuguese"
+msgstr "البرتغاليّة البرازيليّة"
+
+#: conf/global_settings.py:100
+msgid "Romanian"
+msgstr "الرومانيّة"
+
+#: conf/global_settings.py:101
+msgid "Russian"
+msgstr "الروسيّة"
+
+#: conf/global_settings.py:102
+msgid "Slovak"
+msgstr "السلوفاكيّة"
+
+#: conf/global_settings.py:103
+msgid "Slovenian"
+msgstr "السلوفانيّة"
+
+#: conf/global_settings.py:104
+msgid "Albanian"
+msgstr "الألبانيّة"
+
+#: conf/global_settings.py:105
+msgid "Serbian"
+msgstr "الصربيّة"
+
+#: conf/global_settings.py:106
+msgid "Serbian Latin"
+msgstr "اللاتينيّة الصربيّة"
+
+#: conf/global_settings.py:107
+msgid "Swedish"
+msgstr "السويديّة"
+
+#: conf/global_settings.py:108
+msgid "Swahili"
+msgstr ""
+
+#: conf/global_settings.py:109
+msgid "Tamil"
+msgstr "التاميل"
+
+#: conf/global_settings.py:110
+msgid "Telugu"
+msgstr "التيلوغو"
+
+#: conf/global_settings.py:111
+msgid "Thai"
+msgstr "التايلنديّة"
+
+#: conf/global_settings.py:112
+msgid "Turkish"
+msgstr "التركيّة"
+
+#: conf/global_settings.py:113
+msgid "Tatar"
+msgstr ""
+
+#: conf/global_settings.py:114
+msgid "Ukrainian"
+msgstr "الأكرانيّة"
+
+#: conf/global_settings.py:115
+msgid "Urdu"
+msgstr "الأوردو"
+
+#: conf/global_settings.py:116
+msgid "Vietnamese"
+msgstr "الفيتناميّة"
+
+#: conf/global_settings.py:117
+msgid "Simplified Chinese"
+msgstr "الصينيّة المبسطة"
+
+#: conf/global_settings.py:118
+msgid "Traditional Chinese"
+msgstr "الصينيّة التقليدية"
+
+#: core/validators.py:24 forms/fields.py:51
+msgid "Enter a valid value."
+msgstr "أدخل قيمة صحيحة."
+
+#: core/validators.py:99 forms/fields.py:601
+msgid "This URL appears to be a broken link."
+msgstr "يبدو أن هذا الرابط غير متوفر."
+
+#: core/validators.py:131 forms/fields.py:600
+msgid "Enter a valid URL."
+msgstr "أدخل رابطاً صحيحاً."
+
+#: core/validators.py:165 forms/fields.py:474
+msgid "Enter a valid e-mail address."
+msgstr "أدخل عنوان بريد إلكتروني صحيح."
+
+#: core/validators.py:168 forms/fields.py:1023
+msgid ""
+"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
+msgstr "أدخل اختصار 'slug' صحيح يتكوّن من أحرف، أرقام، شرطات سفلية وعاديّة."
+
+#: core/validators.py:171 core/validators.py:188 forms/fields.py:997
+msgid "Enter a valid IPv4 address."
+msgstr "أدخل عنوان IPv4 صحيح."
+
+#: core/validators.py:175 core/validators.py:189
+msgid "Enter a valid IPv6 address."
+msgstr ""
+
+#: core/validators.py:184 core/validators.py:187
+msgid "Enter a valid IPv4 or IPv6 address."
+msgstr ""
+
+#: core/validators.py:209 db/models/fields/__init__.py:638
+msgid "Enter only digits separated by commas."
+msgstr "أدخل أرقاما فقط مفصول بينها بفواصل."
+
+#: core/validators.py:215
+#, python-format
+msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
+msgstr "تحقق من أن هذه القيمة هي %(limit_value)s (إنها %(show_value)s)."
+
+#: core/validators.py:233 forms/fields.py:209 forms/fields.py:262
+#, python-format
+msgid "Ensure this value is less than or equal to %(limit_value)s."
+msgstr "تحقق من أن تكون هذه القيمة أقل من %(limit_value)s أو مساوية لها."
+
+#: core/validators.py:238 forms/fields.py:210 forms/fields.py:263
+#, python-format
+msgid "Ensure this value is greater than or equal to %(limit_value)s."
+msgstr "تحقق من أن تكون هذه القيمة أكثر من %(limit_value)s أو مساوية لها."
+
+#: core/validators.py:244
+#, python-format
+msgid ""
+"Ensure this value has at least %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr ""
+"تحقق من أن هذه القيمة تحتوي %(limit_value)d أحرف على الأقل (عدد أحرفها "
+"%(show_value)d)."
+
+#: core/validators.py:250
+#, python-format
+msgid ""
+"Ensure this value has at most %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr ""
+"تحقق من أن هذه القيمة مكونة من %(limit_value)d أحرف كحد أقصى (عدد أحرفها "
+"الآن %(show_value)d)."
+
+#: db/models/base.py:764
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "%(field_name)s يجب أن يكون مُميّزاً مع %(date_field)s %(lookup)s."
+
+#: db/models/base.py:787 forms/models.py:577
+msgid "and"
+msgstr "و"
+
+#: db/models/base.py:788 db/models/fields/__init__.py:65
+#, python-format
+msgid "%(model_name)s with this %(field_label)s already exists."
+msgstr "النموذج %(model_name)s والحقل %(field_label)s موجود مسبقاً."
+
+#: db/models/fields/__init__.py:62
+#, python-format
+msgid "Value %r is not a valid choice."
+msgstr "القيمة %r ليست خياراً صالحاً."
+
+#: db/models/fields/__init__.py:63
+msgid "This field cannot be null."
+msgstr "لا يمكن تعيين null كقيمة لهذا الحقل."
+
+#: db/models/fields/__init__.py:64
+msgid "This field cannot be blank."
+msgstr "لا يمكن ترك هذا الحقل فارغاً."
+
+#: db/models/fields/__init__.py:71
+#, python-format
+msgid "Field of type: %(field_type)s"
+msgstr "حقل نوع: %(field_type)s"
+
+#: db/models/fields/__init__.py:506 db/models/fields/__init__.py:961
+msgid "Integer"
+msgstr "عدد صحيح"
+
+#: db/models/fields/__init__.py:510 db/models/fields/__init__.py:959
+#, python-format
+msgid "'%s' value must be an integer."
+msgstr ""
+
+#: db/models/fields/__init__.py:552
+#, python-format
+msgid "'%s' value must be either True or False."
+msgstr ""
+
+#: db/models/fields/__init__.py:554
+msgid "Boolean (Either True or False)"
+msgstr "ثنائي (إما True أو False)"
+
+#: db/models/fields/__init__.py:605
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "سلسلة نص (%(max_length)s كحد أقصى)"
+
+#: db/models/fields/__init__.py:633
+msgid "Comma-separated integers"
+msgstr "أرقام صحيحة مفصولة بفواصل"
+
+#: db/models/fields/__init__.py:647
+#, python-format
+msgid "'%s' value has an invalid date format. It must be in YYYY-MM-DD format."
+msgstr ""
+
+#: db/models/fields/__init__.py:649 db/models/fields/__init__.py:734
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date."
+msgstr ""
+
+#: db/models/fields/__init__.py:652
+msgid "Date (without time)"
+msgstr "التاريخ (دون الوقت)"
+
+#: db/models/fields/__init__.py:732
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
+"uuuuuu]][TZ] format."
+msgstr ""
+
+#: db/models/fields/__init__.py:736
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but "
+"it is an invalid date/time."
+msgstr ""
+
+#: db/models/fields/__init__.py:740
+msgid "Date (with time)"
+msgstr "التاريخ (مع الوقت)"
+
+#: db/models/fields/__init__.py:831
+#, python-format
+msgid "'%s' value must be a decimal number."
+msgstr ""
+
+#: db/models/fields/__init__.py:833
+msgid "Decimal number"
+msgstr "رقم عشري"
+
+#: db/models/fields/__init__.py:890
+msgid "E-mail address"
+msgstr "عنوان بريد إلكتروني"
+
+#: db/models/fields/__init__.py:906
+msgid "File path"
+msgstr "مسار الملف"
+
+#: db/models/fields/__init__.py:930
+#, python-format
+msgid "'%s' value must be a float."
+msgstr ""
+
+#: db/models/fields/__init__.py:932
+msgid "Floating point number"
+msgstr "رقم فاصلة عائمة"
+
+#: db/models/fields/__init__.py:993
+msgid "Big (8 byte) integer"
+msgstr "عدد صحيح كبير (8 بايت)"
+
+#: db/models/fields/__init__.py:1007
+msgid "IPv4 address"
+msgstr ""
+
+#: db/models/fields/__init__.py:1023
+msgid "IP address"
+msgstr "عنوان IP"
+
+#: db/models/fields/__init__.py:1065
+#, python-format
+msgid "'%s' value must be either None, True or False."
+msgstr ""
+
+#: db/models/fields/__init__.py:1067
+msgid "Boolean (Either True, False or None)"
+msgstr "ثنائي (إما True أو False أو None)"
+
+#: db/models/fields/__init__.py:1116
+msgid "Positive integer"
+msgstr ""
+
+#: db/models/fields/__init__.py:1127
+msgid "Positive small integer"
+msgstr ""
+
+#: db/models/fields/__init__.py:1138
+#, python-format
+msgid "Slug (up to %(max_length)s)"
+msgstr ""
+
+#: db/models/fields/__init__.py:1156
+msgid "Small integer"
+msgstr ""
+
+#: db/models/fields/__init__.py:1162
+msgid "Text"
+msgstr "نص"
+
+#: db/models/fields/__init__.py:1180
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format."
+msgstr ""
+
+#: db/models/fields/__init__.py:1182
+#, python-format
+msgid ""
+"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid "
+"time."
+msgstr ""
+
+#: db/models/fields/__init__.py:1185
+msgid "Time"
+msgstr "وقت"
+
+#: db/models/fields/__init__.py:1249
+msgid "URL"
+msgstr "رابط"
+
+#: db/models/fields/files.py:214
+msgid "File"
+msgstr ""
+
+#: db/models/fields/files.py:321
+msgid "Image"
+msgstr ""
+
+#: db/models/fields/related.py:903
+#, python-format
+msgid "Model %(model)s with pk %(pk)r does not exist."
+msgstr "النموذج %(model)s ذو الحقل الرئيسي %(pk)r غير موجود."
+
+#: db/models/fields/related.py:905
+msgid "Foreign Key (type determined by related field)"
+msgstr "الحقل المرتبط (تم تحديد النوع وفقاً للحقل المرتبط)"
+
+#: db/models/fields/related.py:1033
+msgid "One-to-one relationship"
+msgstr "علاقة واحد إلى واحد"
+
+#: db/models/fields/related.py:1096
+msgid "Many-to-many relationship"
+msgstr "علاقة متعدد إلى متعدد"
+
+#: db/models/fields/related.py:1120
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"اضغط زر التحكم \"Control\", أو \"Command\" على أجهزة Mac لاختيار أكثر من "
+"واحد."
+
+#: forms/fields.py:50
+msgid "This field is required."
+msgstr "هذا الحقل مطلوب."
+
+#: forms/fields.py:208
+msgid "Enter a whole number."
+msgstr "أدخل رقما صحيحا."
+
+#: forms/fields.py:240 forms/fields.py:261
+msgid "Enter a number."
+msgstr "أدخل رقماً."
+
+#: forms/fields.py:264
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "تحقق من أن تدخل %s أرقام لا أكثر."
+
+#: forms/fields.py:265
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "تحقق من أن تدخل %s خانات عشرية لا أكثر."
+
+#: forms/fields.py:266
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "تحقق من أن تدخل %s أرقام قبل الفاصل العشري لا أكثر."
+
+#: forms/fields.py:365 forms/fields.py:963
+msgid "Enter a valid date."
+msgstr "أدخل تاريخاً صحيحاً."
+
+#: forms/fields.py:388 forms/fields.py:964
+msgid "Enter a valid time."
+msgstr "أدخل وقتاً صحيحاً."
+
+#: forms/fields.py:409
+msgid "Enter a valid date/time."
+msgstr "أدخل تاريخاً/وقتاً صحيحاً."
+
+#: forms/fields.py:485
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "لم يتم ارسال ملف، الرجاء التأكد من نوع ترميز الاستمارة."
+
+#: forms/fields.py:486
+msgid "No file was submitted."
+msgstr "لم يتم إرسال اي ملف."
+
+#: forms/fields.py:487
+msgid "The submitted file is empty."
+msgstr "الملف الذي قمت بإرساله فارغ."
+
+#: forms/fields.py:488
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr ""
+"تحقق من أن اسم الملف يتكون بحد أقصى من %(max)d أحرف (يتكون حالياً من "
+"%(length)d)."
+
+#: forms/fields.py:489
+msgid "Please either submit a file or check the clear checkbox, not both."
+msgstr "رجاءً أرسل ملف أو صح علامة صح عند مربع اختيار \"فارغ\"، وليس كلاهما."
+
+#: forms/fields.py:544
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"قم برفع صورة صحيحة، الملف الذي قمت برفعه إما أنه ليس ملفا لصورة أو أنه ملف "
+"معطوب."
+
+#: forms/fields.py:689 forms/fields.py:769
+#, python-format
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "انتق خياراً صحيحاً. %(value)s ليس أحد الخيارات المتاحة."
+
+#: forms/fields.py:770 forms/fields.py:858 forms/models.py:999
+msgid "Enter a list of values."
+msgstr "أدخل قائمة من القيم."
+
+#: forms/formsets.py:317 forms/formsets.py:319
+msgid "Order"
+msgstr "الترتيب"
+
+#: forms/formsets.py:321
+msgid "Delete"
+msgstr "احذف"
+
+#: forms/models.py:571
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "رجاء صحّح بيانات %(field)s المتكررة."
+
+#: forms/models.py:575
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr "رجاء صحّح بيانات %(field)s المتكررة والتي يجب أن تكون مُميّزة."
+
+#: forms/models.py:581
+#, 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 ""
+"رجاء صحّح بيانات %(field_name)s المتكررة والتي يجب أن تكون مُميّزة لـ%(lookup)s "
+"في %(date_field)s."
+
+#: forms/models.py:589
+msgid "Please correct the duplicate values below."
+msgstr "رجاءً صحّح القيم المُكرّرة أدناه."
+
+#: forms/models.py:849
+msgid "The inline foreign key did not match the parent instance primary key."
+msgstr "حقل foreign key المحدد لا يطابق الحقل الرئيسي له."
+
+#: forms/models.py:910
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "انتق خياراً صحيحاً. اختيارك ليس أحد الخيارات المتاحة."
+
+#: forms/models.py:1000
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "انتق خياراً صحيحاً. %s ليس أحد الخيارات المتاحة."
+
+#: forms/models.py:1002
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "القيمة \"%s\" هي صحيحة للحقل المرجعي."
+
+#: forms/util.py:70
+#, python-format
+msgid ""
+"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
+"may be ambiguous or it may not exist."
+msgstr ""
+
+#: forms/widgets.py:325
+msgid "Currently"
+msgstr "حالياً"
+
+#: forms/widgets.py:326
+msgid "Change"
+msgstr "عدّل"
+
+#: forms/widgets.py:327
+msgid "Clear"
+msgstr "تفريغ"
+
+#: forms/widgets.py:582
+msgid "Unknown"
+msgstr "مجهول"
+
+#: forms/widgets.py:583
+msgid "Yes"
+msgstr "نعم"
+
+#: forms/widgets.py:584
+msgid "No"
+msgstr "لا"
+
+#: template/defaultfilters.py:797
+msgid "yes,no,maybe"
+msgstr "نعم,لا,ربما"
+
+#: template/defaultfilters.py:825 template/defaultfilters.py:830
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d بايت"
+msgstr[1] "بايت واحد"
+msgstr[2] "بايتان"
+msgstr[3] "%(size)d بايتان"
+msgstr[4] "%(size)d بايت"
+msgstr[5] "%(size)d بايت"
+
+#: template/defaultfilters.py:832
+#, python-format
+msgid "%s KB"
+msgstr "%s ك.ب"
+
+#: template/defaultfilters.py:834
+#, python-format
+msgid "%s MB"
+msgstr "%s م.ب"
+
+#: template/defaultfilters.py:836
+#, python-format
+msgid "%s GB"
+msgstr "%s ج.ب"
+
+#: template/defaultfilters.py:838
+#, python-format
+msgid "%s TB"
+msgstr "%s ت.ب"
+
+#: template/defaultfilters.py:839
+#, python-format
+msgid "%s PB"
+msgstr "%s ب.ب"
+
+#: utils/dateformat.py:45
+msgid "p.m."
+msgstr "م"
+
+#: utils/dateformat.py:46
+msgid "a.m."
+msgstr "ص"
+
+#: utils/dateformat.py:51
+msgid "PM"
+msgstr "م"
+
+#: utils/dateformat.py:52
+msgid "AM"
+msgstr "ص"
+
+#: utils/dateformat.py:101
+msgid "midnight"
+msgstr "منتصف الليل"
+
+#: utils/dateformat.py:103
+msgid "noon"
+msgstr "ظهراً"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "الاثنين"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "الثلاثاء"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "الأربعاء"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "الخميس"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "الجمعة"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "السبت"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "الأحد"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "إثنين"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "ثلاثاء"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "أربعاء"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "خميس"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "جمعة"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "سبت"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "أحد"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "يناير"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "فبراير"
+
+#: utils/dates.py:18
+msgid "March"
+msgstr "مارس"
+
+#: utils/dates.py:18
+msgid "April"
+msgstr "إبريل"
+
+#: utils/dates.py:18
+msgid "May"
+msgstr "مايو"
+
+#: utils/dates.py:18
+msgid "June"
+msgstr "يونيو"
+
+#: utils/dates.py:19
+msgid "July"
+msgstr "يوليو"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "أغسطس"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "سبتمبر"
+