summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJason Pellerin <jpellerin@gmail.com>2006-12-04 19:58:49 +0000
committerJason Pellerin <jpellerin@gmail.com>2006-12-04 19:58:49 +0000
commit040f2272e0aec724a36e7abda445b61ee065a8f1 (patch)
tree8ae714be4e513663470eaf1d3d8026a92a5cd2f8 /django
parent2a58209ff2b7c47245c9d12985ac7581e97988d1 (diff)
[multi-db] Merged trunk to 3950. Some tests still failing.
git-svn-id: http://code.djangoproject.com/svn/django/branches/multiple-db-support@4155 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/conf/global_settings.py1
-rw-r--r--django/conf/locale/ja/LC_MESSAGES/django.mobin36566 -> 41208 bytes
-rw-r--r--django/conf/locale/ja/LC_MESSAGES/django.po188
-rw-r--r--django/conf/locale/tr/LC_MESSAGES/django.mobin14429 -> 37149 bytes
-rw-r--r--django/conf/locale/tr/LC_MESSAGES/django.po2711
-rw-r--r--django/conf/locale/tr/LC_MESSAGES/djangojs.mobin0 -> 1508 bytes
-rw-r--r--django/conf/locale/tr/LC_MESSAGES/djangojs.po109
-rw-r--r--django/contrib/admin/templates/admin/login.html2
-rw-r--r--django/contrib/admin/templatetags/admin_modify.py4
-rw-r--r--django/contrib/admin/views/auth.py1
-rw-r--r--django/contrib/admin/views/main.py2
-rw-r--r--django/contrib/auth/forms.py2
-rw-r--r--django/contrib/auth/models.py17
-rw-r--r--django/contrib/comments/views/comments.py4
-rw-r--r--django/core/handlers/modpython.py3
-rw-r--r--django/core/management.py54
-rw-r--r--django/db/models/fields/related.py2
-rw-r--r--django/db/models/manipulators.py2
-rw-r--r--django/db/models/query.py49
-rw-r--r--django/newforms/__init__.py29
-rw-r--r--django/newforms/fields.py184
-rw-r--r--django/newforms/forms.py103
-rw-r--r--django/newforms/util.py55
-rw-r--r--django/newforms/widgets.py43
-rw-r--r--django/template/__init__.py14
-rw-r--r--django/template/defaulttags.py6
-rw-r--r--django/views/generic/simple.py12
27 files changed, 2198 insertions, 1399 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 1cd75a399b..393c25b7dc 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -56,6 +56,7 @@ LANGUAGES = (
('ja', gettext_noop('Japanese')),
('nl', gettext_noop('Dutch')),
('no', gettext_noop('Norwegian')),
+ ('pl', gettext_noop('Polish')),
('pt-br', gettext_noop('Brazilian')),
('ro', gettext_noop('Romanian')),
('ru', gettext_noop('Russian')),
diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo
index 17f6f6b4c8..e6725c1140 100644
--- a/django/conf/locale/ja/LC_MESSAGES/django.mo
+++ b/django/conf/locale/ja/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/ja/LC_MESSAGES/django.po b/django/conf/locale/ja/LC_MESSAGES/django.po
index c4be20bbaa..a55af3b45d 100644
--- a/django/conf/locale/ja/LC_MESSAGES/django.po
+++ b/django/conf/locale/ja/LC_MESSAGES/django.po
@@ -1,14 +1,13 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Translation of django.po to japanese.
+# Copyright (C) 2005,2006 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# makoto tsuyuki <mtsuyuki@gmail.com>, 2005,2006.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-05 23:35+0900\n"
+"POT-Creation-Date: 2006-10-21 20:42+0900\n"
"PO-Revision-Date: 2006-05-18 00:28+0900\n"
"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
"Language-Team: Japanese <django-ja@googlegroups.com>\n"
@@ -57,9 +56,8 @@ msgid "Argentinean Spanish"
msgstr "アルゼンチンスペイン語"
#: conf/global_settings.py:49
-#, fuzzy
msgid "Finnish"
-msgstr "デンマーク語"
+msgstr "フィンランド語"
#: conf/global_settings.py:50
msgid "French"
@@ -98,52 +96,54 @@ msgid "Norwegian"
msgstr "ノルウェー語"
#: conf/global_settings.py:59
+msgid "Polish"
+msgstr "ポーランド語"
+
+#: conf/global_settings.py:60
msgid "Brazilian"
msgstr "ブラジル語"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:61
msgid "Romanian"
msgstr "ルーマニア語"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:62
msgid "Russian"
msgstr "ロシア語"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:63
msgid "Slovak"
msgstr "スロバキア語"
-#: conf/global_settings.py:63
-#, fuzzy
+#: conf/global_settings.py:64
msgid "Slovenian"
msgstr "スロヴェニア語"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:65
msgid "Serbian"
msgstr "セルビア語"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:66
msgid "Swedish"
msgstr "スウェーデン語"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:67
msgid "Tamil"
msgstr "タミル語"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:68
msgid "Turkish"
msgstr "トルコ語"
-#: conf/global_settings.py:68
-#, fuzzy
+#: conf/global_settings.py:69
msgid "Ukrainian"
msgstr "ウクライナ語"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:70
msgid "Simplified Chinese"
msgstr "簡体字中国語"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:71
msgid "Traditional Chinese"
msgstr "繁体字中国語"
@@ -369,33 +369,33 @@ msgid "Delete"
msgstr "削除"
#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, fuzzy, python-format
+#, 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 ""
-"%(object_name)s '%(object)s' の削除時に関連づけられたオブジェクトも削除しよう"
-"としましたが、あなたのアカウントには以下のタイプのオブジェクトを削除するパー"
-"ミッションがありません:"
+"%(object_name)s '%(escaped_object)s' の削除時に関連づけられたオブジェクトも削"
+"除しようとしましたが、あなたのアカウントには以下のタイプのオブジェクトを削除"
+"するパーミッションがありません:"
#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, fuzzy, python-format
+#, 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 ""
-"%(object_name)s \"%(object)s\"を削除しますか? 関連づけられている以下のオブ"
-"ジェクトも全て削除されます:"
+"%(object_name)s \"%(escaped_object)s\"を削除しますか? 関連づけられている以下"
+"のオブジェクトも全て削除されます:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "はい。"
#: contrib/admin/templates/admin/filter.html:2
-#, fuzzy, python-format
+#, python-format
msgid " By %(filter_title)s "
-msgstr "%(title)s で絞り込む"
+msgstr "%(filter_title)s で絞り込む"
#: contrib/admin/templates/admin/filters.html:4
msgid "Filter"
@@ -407,9 +407,9 @@ msgid "Models available in the %(name)s application."
msgstr "%(name)s アプリケーションで利用可能なモデル"
#: contrib/admin/templates/admin/index.html:18
-#, fuzzy, python-format
+#, python-format
msgid "%(name)s"
-msgstr "%(name)s を追加"
+msgstr "%(name)s"
#: contrib/admin/templates/admin/index.html:34
msgid "Change"
@@ -436,9 +436,9 @@ 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 "データベースの設定に問題があるようです。"
-"適切なテーブルが作られていること、適切なユーザで"
-"データベースのデータを読み込めることを確認してください。"
+msgstr ""
+"データベースの設定に問題があるようです。適切なテーブルが作られていること、適"
+"切なユーザでデータベースのデータを読み込めることを確認してください。"
#: contrib/admin/templates/admin/login.html:17
#: contrib/comments/templates/comments/form.html:6
@@ -525,23 +525,20 @@ msgid ""
"First, enter a username and password. Then, you'll be able to edit more user "
"options."
msgstr ""
-"まずユーザ名とパスワードを登録してください。"
-"その後詳細情報が編集可能になります。"
+"まずユーザ名とパスワードを登録してください。その後詳細情報が編集可能になりま"
+"す。"
#: contrib/admin/templates/admin/auth/user/add_form.html:12
-#, fuzzy
msgid "Username"
-msgstr "ユーザ名:"
+msgstr "ユーザ名"
#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#, fuzzy
msgid "Password"
-msgstr "パスワード:"
+msgstr "パスワード"
#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#, fuzzy
msgid "Password (again)"
-msgstr "パスワードの変更"
+msgstr "パスワード(確認用)"
#: contrib/admin/templates/admin/auth/user/add_form.html:24
msgid "Enter the same password as above, for verification."
@@ -761,9 +758,8 @@ msgid "You may edit it again below."
msgstr "続けて編集できます。"
#: contrib/admin/views/auth.py:28
-#, fuzzy
msgid "Add user"
-msgstr "%s を追加"
+msgstr "ユーザを追加"
#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
msgid ""
@@ -813,9 +809,9 @@ msgid "view:"
msgstr "ビュー"
#: contrib/admin/views/doc.py:164
-#, fuzzy, python-format
+#, python-format
msgid "App %r not found"
-msgstr "ページが見つかりません"
+msgstr "アプリケーション %r が見つかりません"
#: contrib/admin/views/doc.py:171
#, python-format
@@ -1030,9 +1026,8 @@ msgid "The two password fields didn't match."
msgstr "確認用パスワードが一致しません。"
#: contrib/auth/forms.py:24
-#, fuzzy
msgid "A user with that username already exists."
-msgstr "%(fieldname)s に %(optname)s は既に存在します。"
+msgstr "同じユーザ名が既に登録済みです。"
#: contrib/auth/forms.py:52
msgid ""
@@ -1048,11 +1043,9 @@ msgstr "アカウントが無効です。"
#: contrib/auth/forms.py:84
msgid ""
-"That e-mail address doesn't have an associated user acount. Are you sure "
+"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
-msgstr ""
-"メールアドレスの一致するユーザはいません。"
-"本当に登録しましたか?"
+msgstr "メールアドレスの一致するユーザはいません。本当に登録しましたか?"
#: contrib/auth/forms.py:116
msgid "The two 'new password' fields didn't match."
@@ -1071,22 +1064,18 @@ msgid "codename"
msgstr "コード名"
#: contrib/auth/models.py:42
-#, fuzzy
msgid "permission"
msgstr "パーミッション"
#: contrib/auth/models.py:43 contrib/auth/models.py:58
-#, fuzzy
msgid "permissions"
msgstr "パーミッション"
#: contrib/auth/models.py:60
-#, fuzzy
msgid "group"
msgstr "グループ"
#: contrib/auth/models.py:61 contrib/auth/models.py:100
-#, fuzzy
msgid "groups"
msgstr "グループ"
@@ -1099,8 +1088,8 @@ msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
msgstr ""
-"この項目は必須です。"
-"半角アルファベット、半角数字、半角アンダーバーで30文字以下にしてください。"
+"この項目は必須です。半角アルファベット、半角数字、半角アンダーバーで30文字以"
+"下にしてください。"
#: contrib/auth/models.py:91
msgid "first name"
@@ -1138,9 +1127,7 @@ msgstr "有効"
msgid ""
"Designates whether this user can log into the Django admin. Unselect this "
"instead of deleting accounts."
-msgstr ""
-"ユーザが管理サイトにログイン可能か"
-"どうかを示します。"
+msgstr "ユーザが管理サイトにログイン可能かどうかを示します。"
#: contrib/auth/models.py:97
msgid "superuser status"
@@ -1169,17 +1156,14 @@ msgstr ""
"パーミッションを獲得します。"
#: contrib/auth/models.py:102
-#, fuzzy
msgid "user permissions"
msgstr "ユーザパーミッション"
#: contrib/auth/models.py:105
-#, fuzzy
msgid "user"
msgstr "ユーザ"
#: contrib/auth/models.py:106
-#, fuzzy
msgid "users"
msgstr "ユーザ"
@@ -1188,7 +1172,6 @@ msgid "Personal info"
msgstr "個人情報"
#: contrib/auth/models.py:112
-#, fuzzy
msgid "Permissions"
msgstr "パーミッション"
@@ -1201,12 +1184,10 @@ msgid "Groups"
msgstr "グループ"
#: contrib/auth/models.py:258
-#, fuzzy
msgid "message"
msgstr "メッセージ"
#: contrib/auth/views.py:39
-#, fuzzy
msgid "Logged out"
msgstr "ログアウト"
@@ -1280,7 +1261,6 @@ msgstr ""
"た」と表示されるようになります。"
#: contrib/comments/models.py:91
-#, fuzzy
msgid "comments"
msgstr "コメント"
@@ -1316,12 +1296,10 @@ msgid "approved by staff"
msgstr "スタッフの承認済み"
#: contrib/comments/models.py:176
-#, fuzzy
msgid "free comment"
msgstr "フリーコメント"
#: contrib/comments/models.py:177
-#, fuzzy
msgid "free comments"
msgstr "フリーコメント"
@@ -1334,12 +1312,10 @@ msgid "score date"
msgstr "スコアされた日"
#: contrib/comments/models.py:237
-#, fuzzy
msgid "karma score"
msgstr "カルマスコア"
#: contrib/comments/models.py:238
-#, fuzzy
msgid "karma scores"
msgstr "カルマスコア"
@@ -1364,12 +1340,10 @@ msgid "flag date"
msgstr "フラグ日"
#: contrib/comments/models.py:268
-#, fuzzy
msgid "user flag"
msgstr "ユーザフラグ"
#: contrib/comments/models.py:269
-#, fuzzy
msgid "user flags"
msgstr "ユーザフラグ"
@@ -1383,12 +1357,10 @@ msgid "deletion date"
msgstr "削除日"
#: contrib/comments/models.py:280
-#, fuzzy
msgid "moderator deletion"
msgstr "モデレータ削除"
#: contrib/comments/models.py:281
-#, fuzzy
msgid "moderator deletions"
msgstr "モデレータ削除"
@@ -1398,12 +1370,10 @@ msgid "Moderator deletion by %r"
msgstr "%r によるモデレータ削除"
#: contrib/comments/templates/comments/form.html:8
-#, fuzzy
msgid "Forgotten your password?"
msgstr "パスワードをお忘れですか?"
#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
msgid "Ratings"
msgstr "レーティング"
@@ -1423,18 +1393,15 @@ msgstr "写真を登録"
#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
msgid "Comment:"
msgstr "コメント:"
#: contrib/comments/templates/comments/form.html:35
#: contrib/comments/templates/comments/freeform.html:10
-#, fuzzy
msgid "Preview comment"
msgstr "コメントをプレビュー"
#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
msgid "Your name:"
msgstr "ユーザ名:"
@@ -1512,7 +1479,6 @@ msgid "No voting for yourself"
msgstr "自分には投票できません。"
#: contrib/contenttypes/models.py:20
-#, fuzzy
msgid "python model class name"
msgstr "Python モデルクラス名"
@@ -1547,13 +1513,12 @@ msgid "template name"
msgstr "テンプレート名"
#: contrib/flatpages/models.py:13
-#, fuzzy
msgid ""
"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
"will use 'flatpages/default.html'."
msgstr ""
-"例: 'flatpages/contact_page'. 指定しなければ、デフォルト設定の'flatpages/"
-"default' を使います。"
+"例: 'flatpages/contact_page.html'. 指定しなければ、デフォルト設定"
+"の'flatpages/default.html' を使います。"
#: contrib/flatpages/models.py:14
msgid "registration required"
@@ -1640,16 +1605,15 @@ msgid "This value must contain only letters, numbers and underscores."
msgstr "半角の英数字およびアンダースコア以外は使用できません。"
#: core/validators.py:67
-#, fuzzy
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
-msgstr "半角の英数字、アンダースコア、ダッシュ、ラッシュ以外は使用できません。"
+msgstr ""
+"半角の英数字、アンダースコア、ダッシュ、スラッシュ以外は使用できません。"
#: core/validators.py:71
-#, fuzzy
msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "半角の英数字、アンダースコア、ダッシュ、ラッシュ以外は使用できません。"
+msgstr "半角の英数字、アンダースコア、ハイフン以外は使用できません。"
#: core/validators.py:75
msgid "Uppercase letters are not allowed here."
@@ -1696,9 +1660,9 @@ msgid "Year must be 1900 or later."
msgstr "1900年以降を指定してください。"
#: core/validators.py:142
-#, fuzzy, python-format
+#, python-format
msgid "Invalid date: %s."
-msgstr "無効なURL: %s"
+msgstr "無効な日付: %s"
#: core/validators.py:146 db/models/fields/__init__.py:424
msgid "Enter a valid date in YYYY-MM-DD format."
@@ -1718,7 +1682,8 @@ msgstr "有効なメールアドレスを入力してください。"
#: core/validators.py:172 core/validators.py:401 forms/__init__.py:662
msgid "No file was submitted. Check the encoding type on the form."
-msgstr "ファイルが取得できませんでした。formのencoding typeを確認してください。"
+msgstr ""
+"ファイルが取得できませんでした。formのencoding typeを確認してください。"
#: core/validators.py:176
msgid ""
@@ -1825,25 +1790,25 @@ msgstr "有効な 10 進数を入力してください。"
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "最大桁数 %s 桁以下の有効な 10 進数を入力してください。"
-msgstr[1] "最大桁数 %s 桁以下の有効な 10 進数を入力してください。"
+msgstr[0] "全体で %s 文字以下の数字を入力してください。"
+msgstr[1] "全体で %s 文字以下の数字を入力してください。"
#: core/validators.py:381
-#, fuzzy, python-format
+#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
msgid_plural ""
"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "最大桁数 %s 桁以下の有効な 10 進数を入力してください。"
-msgstr[1] "最大桁数 %s 桁以下の有効な 10 進数を入力してください。"
+msgstr[0] "整数部は %s 文字以下の数字を入力してください。"
+msgstr[1] "整数部は %s 文字以下の数字を入力してください。"
#: core/validators.py:384
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "小数点以下が %s 桁までの有効な 10 進数を入力してください。"
-msgstr[1] "小数点以下が %s 桁までの有効な 10 進数を入力してください。"
+msgstr[0] "小数部は %s 文字以下の数字を入力してください。"
+msgstr[1] "小数部は %s 文字以下の数字を入力してください。"
#: core/validators.py:394
#, python-format
@@ -1947,17 +1912,14 @@ msgid "This field is required."
msgstr "このフィールドは必須です。"
#: db/models/fields/__init__.py:349
-#, fuzzy
msgid "This value must be an integer."
msgstr "値は整数でなければなりません。"
#: db/models/fields/__init__.py:381
-#, fuzzy
msgid "This value must be either True or False."
msgstr "値は真: True または偽: False でなければなりません。"
#: db/models/fields/__init__.py:397
-#, fuzzy
msgid "This field cannot be null."
msgstr "このフィールドには NULL を指定できません。"
@@ -1971,7 +1933,6 @@ msgid "Please enter a valid %s."
msgstr "正しい %s を入力してください。"
#: db/models/fields/related.py:618
-#, fuzzy
msgid "Separate multiple IDs with commas."
msgstr "複数の ID はカンマで区切ってください。"
@@ -1979,7 +1940,8 @@ msgstr "複数の ID はカンマで区切ってください。"
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
-"複数選択するときには Control キーを押したまま選択してください。Mac は Command キーを使ってください"
+"複数選択するときには Control キーを押したまま選択してください。Mac は "
+"Command キーを使ってください"
#: db/models/fields/related.py:664
#, python-format
@@ -2102,7 +2064,6 @@ msgid "December"
msgstr "12月"
#: utils/dates.py:19
-#, fuzzy
msgid "jan"
msgstr "1月"
@@ -2119,7 +2080,6 @@ msgid "apr"
msgstr "4月"
#: utils/dates.py:19
-#, fuzzy
msgid "may"
msgstr "5月"
@@ -2228,29 +2188,27 @@ msgid "TIME_FORMAT"
msgstr "H:i"
#: utils/translation/trans_real.py:380
-#, fuzzy
msgid "YEAR_MONTH_FORMAT"
msgstr "Y/m/d"
#: utils/translation/trans_real.py:381
-#, fuzzy
msgid "MONTH_DAY_FORMAT"
-msgstr "Y/m/d"
+msgstr "m/d"
#: views/generic/create_update.py:43
-#, fuzzy, python-format
+#, python-format
msgid "The %(verbose_name)s was created successfully."
-msgstr "%(name)s \"%(obj)s\" を変更しました。"
+msgstr "%(verbose_name)s を作成しました。"
#: views/generic/create_update.py:117
-#, fuzzy, python-format
+#, python-format
msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(name)s \"%(obj)s\" を削除しました。"
+msgstr "%(verbose_name)s を更新しました。"
#: views/generic/create_update.py:184
-#, fuzzy, python-format
+#, python-format
msgid "The %(verbose_name)s was deleted."
-msgstr " %(site_name)s チーム"
+msgstr " %(verbose_name)s を削除しました。"
#~ msgid "String (up to 50)"
#~ msgstr "文字列 (50 字まで)"
diff --git a/django/conf/locale/tr/LC_MESSAGES/django.mo b/django/conf/locale/tr/LC_MESSAGES/django.mo
index ba3dd15be8..2415d26ee9 100644
--- a/django/conf/locale/tr/LC_MESSAGES/django.mo
+++ b/django/conf/locale/tr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/tr/LC_MESSAGES/django.po b/django/conf/locale/tr/LC_MESSAGES/django.po
index 390c8e7d0b..daa299ca66 100644
--- a/django/conf/locale/tr/LC_MESSAGES/django.po
+++ b/django/conf/locale/tr/LC_MESSAGES/django.po
@@ -1,24 +1,979 @@
-# Django Turkish translation.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Baurzhan Ismagulov <ibr@radix50.net>, 2006.
+# translation of django.po to Turkish
+# Django 0.95
+# Copyright (C) 2006 Django
+# This file is distributed under the same license as the Django package.
#
-#, fuzzy
+# Bahadır Kandemir <bahadir@pardus.org.tr>, 2006.
msgid ""
msgstr ""
-"Project-Id-Version: Django 1.0\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:10+0200\n"
-"PO-Revision-Date: 2006-09-12 23:43+0200\n"
-"Last-Translator: Baurzhan Ismagulov <ibr@radix50.net>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"POT-Creation-Date: 2006-10-01 21:09+0300\n"
+"PO-Revision-Date: 2006-10-01 21:19+0300\n"
+"Last-Translator: Bahadır Kandemir <bahadir@pardus.org.tr>\n"
+"Language-Team: Turkish <bahadir@pardus.org.tr>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: db/models/manipulators.py:305
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(type)s ve %(field)s değerine sahip %(object)s kaydı zaten var."
+
+#: db/models/manipulators.py:332
+#, python-format
+msgid ""
+"Please enter a different %s. The one you entered is already being used for %"
+"s."
+msgstr "Lütfen farklı bir %s girin. Girdiğiniz, %s tarihinde bir kez kullanılmış."
+
+#: db/models/fields/__init__.py:41
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(fieldname)s için %(optname)s değeri zaten seçilmiş."
+
+#: db/models/fields/__init__.py:115 db/models/fields/__init__.py:266
+#: db/models/fields/__init__.py:560 db/models/fields/__init__.py:571
+#: forms/__init__.py:347
+msgid "This field is required."
+msgstr "Bu alan gerekli."
+
+#: db/models/fields/__init__.py:349
+msgid "This value must be an integer."
+msgstr "Bu değer tamsayı olmalı."
+
+#: db/models/fields/__init__.py:381
+msgid "This value must be either True or False."
+msgstr "Bu değer True ya da False olabilir."
+
+#: db/models/fields/__init__.py:397
+msgid "This field cannot be null."
+msgstr "Bu alan boş bırakılamaz."
+
+#: db/models/fields/__init__.py:424 core/validators.py:146
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "YYYY-AA-GG formatında tarih girin."
+
+#: db/models/fields/__init__.py:486 core/validators.py:155
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "YYYY-AA-GG SS:DD formatında tarih girin."
+
+#: db/models/fields/__init__.py:580
+msgid "Enter a valid filename."
+msgstr "Geçerli bir dosya adı girin."
+
+#: db/models/fields/related.py:51
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Lütfen geçerli bir %s girin."
+
+#: db/models/fields/related.py:618
+msgid "Separate multiple IDs with commas."
+msgstr "Birden fazla numarayı virgül ile ayırın."
+
+#: db/models/fields/related.py:620
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"\"Ctrl\" ve Mac'de \"Command\" tuşunu basılı tutarak birden fazla seçimde "
+"bulunabilirsiniz."
+
+#: db/models/fields/related.py:664
+#, 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] "Lütfen geçerli bir %(self)s numarası girin. %(value)r değeri geçersiz."
+msgstr[1] "Lütfen geçerli %(self)s numaraları girin. %(value)r değerleri geçersiz."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arapça"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengali Dili"
+
+#: conf/global_settings.py:41
+msgid "Czech"
+msgstr "Çekçe"
+
+#: conf/global_settings.py:42
+msgid "Welsh"
+msgstr "Galce"
+
+#: conf/global_settings.py:43
+msgid "Danish"
+msgstr "Danca"
+
+#: conf/global_settings.py:44
+msgid "German"
+msgstr "Almanca"
+
+#: conf/global_settings.py:45
+msgid "Greek"
+msgstr "Yunanca"
+
+#: conf/global_settings.py:46
+msgid "English"
+msgstr "İngilizce"
+
+#: conf/global_settings.py:47
+msgid "Spanish"
+msgstr "İspanyolca"
+
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "Arjantin İspanyolcası"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "Fince"
+
+#: conf/global_settings.py:50
+msgid "French"
+msgstr "Fransızca"
+
+#: conf/global_settings.py:51
+msgid "Galician"
+msgstr "Galler Dili"
+
+#: conf/global_settings.py:52
+msgid "Hungarian"
+msgstr "Macarca"
+
+#: conf/global_settings.py:53
+msgid "Hebrew"
+msgstr "İbranice"
+
+#: conf/global_settings.py:54
+msgid "Icelandic"
+msgstr "İzlanda dili"
+
+#: conf/global_settings.py:55
+msgid "Italian"
+msgstr "İtalyanca"
+
+#: conf/global_settings.py:56
+msgid "Japanese"
+msgstr "Japonca"
+
+#: conf/global_settings.py:57
+msgid "Dutch"
+msgstr "Flamanca"
+
+#: conf/global_settings.py:58
+msgid "Norwegian"
+msgstr "Norveç Dili"
+
+#: conf/global_settings.py:59
+msgid "Brazilian"
+msgstr "Brezilya Dili"
+
+#: conf/global_settings.py:60
+msgid "Romanian"
+msgstr "Romence"
+
+#: conf/global_settings.py:61
+msgid "Russian"
+msgstr "Rusça"
+
+#: conf/global_settings.py:62
+msgid "Slovak"
+msgstr "Slovakça"
+
+#: conf/global_settings.py:63
+msgid "Slovenian"
+msgstr "Slovence"
+
+#: conf/global_settings.py:64
+msgid "Serbian"
+msgstr "Sırpça"
+
+#: conf/global_settings.py:65
+msgid "Swedish"
+msgstr "İsveççe"
+
+#: conf/global_settings.py:66
+msgid "Tamil"
+msgstr "Tamilce"
+
+#: conf/global_settings.py:67
+msgid "Turkish"
+msgstr "Türkçe"
+
+#: conf/global_settings.py:68
+msgid "Ukrainian"
+msgstr "Ukraynaca"
+
+#: conf/global_settings.py:69
+msgid "Simplified Chinese"
+msgstr "Basiteştirilmiş Çince"
+
+#: conf/global_settings.py:70
+msgid "Traditional Chinese"
+msgstr "Gelenelsek Çince"
+
+#: forms/__init__.py:382
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "Metnin %s karakterden az olmasına dikkat edin."
+msgstr[1] "Metnin %s karakterden az olmasına dikkat edin."
+
+#: forms/__init__.py:387
+msgid "Line breaks are not allowed here."
+msgstr "Burada birden fazla satır olamaz."
+
+#: forms/__init__.py:488 forms/__init__.py:561 forms/__init__.py:600
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "Geçerli bir seçimde bulunun; %(choices)s değerleri içinde '%(data)s' yok."
+
+#: forms/__init__.py:662 core/validators.py:172 core/validators.py:401
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin."
+
+#: forms/__init__.py:664
+msgid "The submitted file is empty."
+msgstr "Gönderilen dosya boş."
+
+#: forms/__init__.py:720
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "-32,768 ve 32,767 arası bir sayı girin."
+
+#: forms/__init__.py:730
+msgid "Enter a positive number."
+msgstr "Pozitif tamsayı girin."
+
+#: forms/__init__.py:740
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "0 ve 32,767 arası bir sayı girin."
+
+#: core/validators.py:63
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Bu değer sadece karakter, rakam ve altçizgiden oluşabilir."
+
+#: core/validators.py:67
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr "Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir."
+
+#: core/validators.py:71
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "Bu değer sadece harf, rakam, altçizgi veya çizgiden oluşabilir."
+
+#: core/validators.py:75
+msgid "Uppercase letters are not allowed here."
+msgstr "Burada büyük harf kullanılamaz."
+
+#: core/validators.py:79
+msgid "Lowercase letters are not allowed here."
+msgstr "Burada küçük harf kullanılamaz."
+
+#: core/validators.py:86
+msgid "Enter only digits separated by commas."
+msgstr "Sadece virgülle ayrılmış sayılar girin."
+
+#: core/validators.py:98
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Virgülle ayrılmış geçerli e-posta adresleri girin."
+
+#: core/validators.py:102
+msgid "Please enter a valid IP address."
+msgstr "Lütfen geçerli bir IP adresi girin."
+
+#: core/validators.py:106
+msgid "Empty values are not allowed here."
+msgstr "Burada boş değer kullanılamaz."
+
+#: core/validators.py:110
+msgid "Non-numeric characters aren't allowed here."
+msgstr "Burada numerik olmayan karakterler kullanılamaz."
+
+#: core/validators.py:114
+msgid "This value can't be comprised solely of digits."
+msgstr "Bu alanda sadece rakam kullanılamaz."
+
+#: core/validators.py:119
+msgid "Enter a whole number."
+msgstr "Sayı girin."
+
+#: core/validators.py:123
+msgid "Only alphabetical characters are allowed here."
+msgstr "Burada sadece alfabetik karakterler kullanılabilir."
+
+#: core/validators.py:138
+msgid "Year must be 1900 or later."
+msgstr "Yıl 1900 ya da sonrası olabilir."
+
+#: core/validators.py:142
+#, python-format
+msgid "Invalid date: %s."
+msgstr "Geçersiz tarih: %s"
+
+#: core/validators.py:151
+msgid "Enter a valid time in HH:MM format."
+msgstr "SS:DD formatında geçerli bir saat girin."
+
+#: core/validators.py:160
+msgid "Enter a valid e-mail address."
+msgstr "Geçerli bir e-posta adresi girin."
+
+#: core/validators.py:176
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir "
+"dosya."
+
+#: core/validators.py:183
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "%s adresi geçerli bir resme işaret etmiyor."
+
+#: core/validators.py:187
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr "Telefon numarası XXX-XXX-XXXX formatında olmalı. \"%s\" geçersiz."
+
+#: core/validators.py:195
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "%s adresi geçerli bir QuickTime dosyasına işaret etmiyor."
+
+#: core/validators.py:199
+msgid "A valid URL is required."
+msgstr "Geçerli bir URL gerekli."
+
+#: core/validators.py:213
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Metnin geçerli bir HTML kodu olması gerekir. Hatalar:\n"
+"%s"
+
+#: core/validators.py:220
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "Geçersiz XML kodu: %s"
+
+#: core/validators.py:230
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "Geçersiz adres: %s"
+
+#: core/validators.py:234 core/validators.py:236
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "%s kırık bir link."
+
+#: core/validators.py:242
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Geçerli bir şehir kodu girin."
+
+#: core/validators.py:256
+#, 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] "Söylediğinize dikkat edin! %s kelimesi burada kullanılamaz."
+msgstr[1] "Söylediğinize dikkat edin! %s kelimeleri burada kullanılamaz."
+
+#: core/validators.py:263
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Bu alan '%s' ile alanı ile uyuşmalı."
+
+#: core/validators.py:282
+msgid "Please enter something for at least one field."
+msgstr "Lütfen en az bir alana giriş yapın."
+
+#: core/validators.py:291 core/validators.py:302
+msgid "Please enter both fields or leave them both empty."
+msgstr "Lütfen tüm alanları doldurun ya da hepsini boş bırakın."
+
+#: core/validators.py:309
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "Bu alan %(field)s alanı %(value)s değerine sahipse doldurulmalı."
+
+#: core/validators.py:321
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Bu alan %(field)s alanı %(value)s değerine sahip değilse doldurulmalı."
+
+#: core/validators.py:340
+msgid "Duplicate values are not allowed."
+msgstr "Tekrarlanan değerler kabul edilmez."
+
+#: core/validators.py:363
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Bu değer %s ya da kuvvetleri olabilir."
+
+#: core/validators.py:374
+msgid "Please enter a valid decimal number."
+msgstr "Lütfen geçerli bir ondalık sayı girin."
+
+#: core/validators.py:378
+#, python-format
+msgid "Please enter a valid decimal number with at most %s total digit."
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] "Lütfen en fazla %s basamaklı bir ondalık sayı girin."
+msgstr[1] "Lütfen en fazla %s basamaklı bir ondalık sayı girin."
+
+#: core/validators.py:381
+#, python-format
+msgid "Please enter a valid decimal number with a whole part of at most %s digit."
+msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
+msgstr[0] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin."
+msgstr[1] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin."
+
+#: core/validators.py:384
+#, python-format
+msgid "Please enter a valid decimal number with at most %s decimal place."
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] "Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin."
+msgstr[1] "Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin."
+
+#: core/validators.py:394
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Gönderdiğiniz dosyanın en az %s byte uzunlukta olduğundan emin olun."
+
+#: core/validators.py:395
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Gönderdiğiniz dosyanın en fazl %s byte uzunlukta olduğundan emin olun."
+
+#: core/validators.py:412
+msgid "The format for this field is wrong."
+msgstr "Bu alandaki veri formatı hatalı."
+
+#: core/validators.py:427
+msgid "This field is invalid."
+msgstr "Alan geçersiz."
+
+#: core/validators.py:463
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "%s içinden hiçbirşey aktarılamıyor."
+
+#: core/validators.py:466
+#, python-format
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "%(url)s adresi geçersiz içerik türü (%(contenttype)s) gönderdi."
+
+#: core/validators.py:499
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Lütfen %(line)s. satırdaki kapatılmayan %(tag)s etiketini kapatın. (Satır, "
+"\"%(start)s\" ile başlıyor.)"
+
+#: core/validators.py:503
+#, python-format
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"%(line)s. satırda başlayan bazı kelimeler içerik olarak kabul edilmiyor. "
+"(Satır, \"%(start)s\" ile başlıyor.)"
+
+#: core/validators.py:508
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"%(line)s. satırdaki \"%(attr)s\" özelliği geçersiz. (Satır, \"%(start)s\" "
+"ile başlıyor.)"
+
+#: core/validators.py:513
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"%(line)s. satırdaki \"<%(tag)s>\" etiketi geçersiz. (Satır, \"%(start)s\" "
+"ile başlıyor.)"
+
+#: core/validators.py:517
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"%(line)s. satırdaki bir etiket eksik ya da eklenmesi gereken özellikleri "
+"var. (Satır, \"%(start)s\" ile başlıyor.)"
+
+#: core/validators.py:522
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"%(line)s. satırdaki \"%(attr)s\" özelliği geçersiz bir değere sahip. (Satır, "
+"\"%(start)s\" ile başlıyor.)"
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s başarıyla yaratıldı."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s başarıyla güncellendi."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s silindi."
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Pazartesi"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Salı"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Çarşamba"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Perşembe"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Cuma"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Cumartesi"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Pazar"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "Ocak"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "Şubat"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr "Mart"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr "Nisan"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr "Mayıs"
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr "Haziran"
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr "Temmuz"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "Ağustos"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "Eylül"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "Ekim"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "Kasım"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "Aralık"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "oca"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "şub"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "nis"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "may"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "haz"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "tem"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "ağu"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "eyl"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "eki"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "kas"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "ara"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "Oca."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "Şub."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "Ağu."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "Eyl."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "Eki."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "Kas."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "Ara."
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "yıl"
+msgstr[1] "yıl"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "ay"
+msgstr[1] "ay"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "hafta"
+msgstr[1] "hafta"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "gün"
+msgstr[1] "gün"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "saat"
+msgstr[1] "saat"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "dakika"
+msgstr[1] "dakika"
+
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "DATE_FORMAT"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "DATETIME_FORMAT"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "TIME_FORMAT"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "YEAR_MONTH_FORMAT"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "MONTH_DAY_FORMAT"
+
+#: contrib/contenttypes/models.py:20
+msgid "python model class name"
+msgstr "python model sınıfı"
+
+#: contrib/contenttypes/models.py:23
+msgid "content type"
+msgstr "içerik türü"
+
+#: contrib/contenttypes/models.py:24
+msgid "content types"
+msgstr "içerik türleri"
+
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "Çıkış yapıldı"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "isim"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "takma ad"
+
+#: contrib/auth/models.py:42
+msgid "permission"
+msgstr "izin"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
+msgstr "izinler"
+
+#: contrib/auth/models.py:60
+msgid "group"
+msgstr "grup"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
+msgstr "gruplar"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "kullanıcı adı"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Gerekli. 30 karakter ya da da az olmalı. Alfanumerik (harf, rakam ve alt "
+"çizgi) karakterler kullanılabilir."
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "isim"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "soyisim"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "e-posta adresi"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "parola"
+
+#: contrib/auth/models.py:94
+msgid "Use '[algo]$[salt]$[hexdigest]'"
+msgstr "'[algo]$[salt]$[hexdigest]' formatında"
+
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "yönetici modu"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr "Kullanıcının yönetici sayfasına girip giremeyeceğini belirler."
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr "aktif"
+
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Kullanıcının Django yönetim sayfasına girip giremeyeceğini belirler. "
+"Kullanıcı hesabı silmek yerine işareti kaldırın."
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr "süper kullanıcı modu"
+
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Kullanıcının tek tek hak atamasına gerek kalmadan tüm haklara sahip olup "
+"olamayacağını belirler."
+
+#: contrib/auth/models.py:98
+msgid "last login"
+msgstr "son ziyaret"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "kayıt tarihi"
+
+#: contrib/auth/models.py:101
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Özel olarak atanmış hakların yanı sıra, kullanıcının üyesi olduğu grupların "
+"hakları alır."
+
+#: contrib/auth/models.py:102
+msgid "user permissions"
+msgstr "kullanıcı izinleri"
+
+#: contrib/auth/models.py:105
+msgid "user"
+msgstr "kullanıcı"
+
+#: contrib/auth/models.py:106
+msgid "users"
+msgstr "kullanıcılar"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "Kişisel bilgiler"
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "İzinler"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "Önemli tarihler"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "Gruplar"
+
+#: contrib/auth/models.py:258
+msgid "message"
+msgstr "mesaj"
+
+#: contrib/auth/forms.py:16
+msgid "The two password fields didn't match."
+msgstr "İki parola alanı uyuşmuyor."
+
+#: contrib/auth/forms.py:24
+msgid "A user with that username already exists."
+msgstr "Bu isimde bir kullanıcı zaten var."
+
+#: contrib/auth/forms.py:52
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için "
+"gerekli."
+
+#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Lütfen geçerli bir kullanıcı adı ve parola girin. Tüm alanlar büyük/küçük "
+"harf duyarlıdır."
+
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr "Bu hesap aktif değil."
+
+#: contrib/auth/forms.py:84
+msgid ""
+"That e-mail address doesn't have an associated user acount. Are you sure "
+"you've registered?"
+msgstr "Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan emin misiniz?"
+
+#: contrib/auth/forms.py:116
+msgid "The two 'new password' fields didn't match."
+msgstr "İki parola alanı uyuşmuyor."
+
+#: contrib/auth/forms.py:123
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Eski parolanız hatalı. Lütfen tekrar girin."
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "eski adres"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/"
+"search/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "yeni adres"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam "
+"adres yazılmalı."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "yönlendirme"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "yönlendirmeler"
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
-msgstr "nesne kodu"
+msgstr "nesne no"
#: contrib/comments/models.py:68
msgid "headline"
@@ -31,61 +986,63 @@ msgstr "yorum"
#: contrib/comments/models.py:70
msgid "rating #1"
-msgstr "rating #1"
+msgstr "reyting 1"
#: contrib/comments/models.py:71
msgid "rating #2"
-msgstr "rating #2"
+msgstr "reyting 2"
#: contrib/comments/models.py:72
msgid "rating #3"
-msgstr "rating #3"
+msgstr "reyting 3"
#: contrib/comments/models.py:73
msgid "rating #4"
-msgstr "rating #4"
+msgstr "reyting 4"
#: contrib/comments/models.py:74
msgid "rating #5"
-msgstr "rating #5"
+msgstr "reyting 5"
#: contrib/comments/models.py:75
msgid "rating #6"
-msgstr "rating #6"
+msgstr "reyting 6"
#: contrib/comments/models.py:76
msgid "rating #7"
-msgstr "rating #7"
+msgstr "reyting 7"
#: contrib/comments/models.py:77
msgid "rating #8"
-msgstr "rating #8"
+msgstr "reyting 8"
#: contrib/comments/models.py:82
msgid "is valid rating"
-msgstr "geçerli bir rating'dir"
+msgstr "geçerli reyting"
#: contrib/comments/models.py:83 contrib/comments/models.py:169
msgid "date/time submitted"
-msgstr "girildiği tarih/saat"
+msgstr "gönderim tarihi/saati"
#: contrib/comments/models.py:84 contrib/comments/models.py:170
msgid "is public"
-msgstr "geneldir"
+msgstr "görünürlük"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
msgid "IP address"
msgstr "IP adresi"
#: contrib/comments/models.py:86
msgid "is removed"
-msgstr "silinmiştir"
+msgstr "silinmiş"
#: contrib/comments/models.py:86
msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
-msgstr "Yorum uygun değilse bu alanı işaretleyin. Yerine \"Bu yorum silinmiştir\" yazısı gözükür."
+msgstr ""
+"Yorum uygunsuz ise bu işareti kaldırın. \"Yorum silindi\" uyarısı "
+"görüntülenecek."
#: contrib/comments/models.py:91
msgid "comments"
@@ -104,7 +1061,7 @@ msgid ""
"\n"
"http://%(domain)s%(url)s"
msgstr ""
-"%(user)s, %(date)s\n"
+"%(date)s tarihinde %(user)s göndermiş:\n"
"\n"
"%(comment)s\n"
"\n"
@@ -112,15 +1069,15 @@ msgstr ""
#: contrib/comments/models.py:168
msgid "person's name"
-msgstr "kişinin adı"
+msgstr "isim"
#: contrib/comments/models.py:171
msgid "ip address"
-msgstr "IP adresi"
+msgstr "ip adresi"
#: contrib/comments/models.py:173
msgid "approved by staff"
-msgstr "personel tarafından onaylanmış"
+msgstr "yönetici onayı"
#: contrib/comments/models.py:176
msgid "free comment"
@@ -128,7 +1085,7 @@ msgstr "serbest yorum"
#: contrib/comments/models.py:177
msgid "free comments"
-msgstr "serbest yorum"
+msgstr "serbest yorumlar"
#: contrib/comments/models.py:233
msgid "score"
@@ -149,7 +1106,7 @@ msgstr "karma puanları"
#: contrib/comments/models.py:242
#, python-format
msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d rating by %(user)s"
+msgstr "%(user)s tarafından %(score)d puan"
#: contrib/comments/models.py:258
#, python-format
@@ -158,7 +1115,7 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
-"Bu yorum, %(user)s tarafından işaretlenmiştir:\n"
+"Bu yorum %(user)s tarafından işaretlenmiş:\n"
"\n"
"%(text)s"
@@ -177,7 +1134,7 @@ msgstr "kullanıcı işaretleri"
#: contrib/comments/models.py:273
#, python-format
msgid "Flag by %r"
-msgstr "Flag by %r"
+msgstr "%r tarafından işaret"
#: contrib/comments/models.py:278
msgid "deletion date"
@@ -185,35 +1142,34 @@ msgstr "silme tarihi"
#: contrib/comments/models.py:280
msgid "moderator deletion"
-msgstr "moderator deletion"
+msgstr "yönetici tarafından silinme"
#: contrib/comments/models.py:281
msgid "moderator deletions"
-msgstr "moderator deletions"
+msgstr "yönetici tarafından silinme"
#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
-msgstr "Moderator deletion by %r"
+msgstr "%s tarafından silme işlemi"
#: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote"
-msgstr "Kayıtlı olmayan kullanıcılar oy veremez"
+msgstr "Kayıtsız kullanıcılar oy veremez"
#: contrib/comments/views/karma.py:23
msgid "Invalid comment ID"
-msgstr "Geçersiz yorum kodu"
+msgstr "Geçersiz yorum numarası"
#: contrib/comments/views/karma.py:25
msgid "No voting for yourself"
msgstr "Kendinize oy veremezsiniz"
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Bu rating zorunludur, çünkü en az bir başka rating girdiniz."
+#: contrib/comments/views/comments.py:27
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "Reyting gerekli, çünkü en az bir reyting tanımladınız."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:111
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -226,119 +1182,207 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
-"Bu yorum, %(count)s'den az yorum yazmış bir kullanıcı tarafından yazılmıştır:\n"
+"Bu yorum, %(count)s yorumdan daha az gönderide bulunmuş bir kullanıcıya "
+"ait:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Bu yorum, %(count)s'den az yorum yazmış bir kullanıcı tarafından yazılmıştır:\n"
+"Bu yorum, %(count)s yorumdan daha az gönderide bulunmuş bir kullanıcıya "
+"ait:\n"
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:116
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
"\n"
"%(text)s"
msgstr ""
-"Bu yorum, yüzeysel bir kullanıcı tarafından yazılmıştır:\n"
+"Bu yorum kusurlu bir kullanıcı tarafından gönderildi:\n"
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:189
+#: contrib/comments/views/comments.py:188
#: contrib/comments/views/comments.py:280
msgid "Only POSTs are allowed"
-msgstr "Yalnızca POST kabul edilir"
+msgstr "Sadece POST yapılabilir"
-#: contrib/comments/views/comments.py:193
+#: contrib/comments/views/comments.py:192
#: contrib/comments/views/comments.py:284
msgid "One or more of the required fields wasn't submitted"
-msgstr "En az bir zorunlu alan doldurulmamıştır"
+msgstr "Bir ya da daha fazla gerekli alan doldurulmadı"
-#: contrib/comments/views/comments.py:197
+#: contrib/comments/views/comments.py:196
#: contrib/comments/views/comments.py:286
msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Yorum formu ile oynanmış (güvenlik problemi)"
+msgstr "Birisi yorum gönderme formunu kötüye kullanmaya çalıştı (güvenlik ihlali)"
-#: contrib/comments/views/comments.py:207
+#: contrib/comments/views/comments.py:206
#: contrib/comments/views/comments.py:292
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
-msgstr "Yorum formunun 'target' parametresi geçersiz, nesne kodu geçersiz"
+msgstr "Bu yorumun geçersiz bir 'hedef' parametresi var -- nesne narası geçersiz"
#: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Yorum formunda ne 'preview', ne de 'post' var"
+msgstr "Yorum görüntülememe mi yoksa gönderme amaçlı mı belirsiz"
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/login.html:17
msgid "Username:"
-msgstr "Kullanıcı adı:"
+msgstr "Kullanıcı:"
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Şifre:"
-
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr "Şifremi unuttum"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
#: contrib/admin/templates/admin_doc/missing_docutils.html:4
#: contrib/admin/templates/admin_doc/view_index.html:5
#: contrib/admin/templates/admin_doc/model_detail.html:3
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
msgid "Log out"
-msgstr "Çıkış"
+msgstr "Çık"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Parola:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Parolanızı mı unuttunuz?"
#: contrib/comments/templates/comments/form.html:12
msgid "Ratings"
-msgstr "Rating'ler"
+msgstr "Reytingler"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr "Zorunlu"
+msgstr "Gerekli"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Optional"
-msgstr "İsteğe bağlı"
+msgstr "Opsiyonel"
#: contrib/comments/templates/comments/form.html:23
msgid "Post a photo"
-msgstr "Resim ekle"
+msgstr "Resim gönder"
-#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
msgid "Comment:"
msgstr "Yorum:"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
msgid "Preview comment"
-msgstr "Yorum önizleme"
+msgstr "Yorumu görüntüle"
#: contrib/comments/templates/comments/freeform.html:4
msgid "Your name:"
-msgstr "Adınız:"
+msgstr "İsminiz:"
+
+#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
+msgid "URL"
+msgstr "URL"
+
+#: contrib/flatpages/models.py:8
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin "
+"olun."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "başlık"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "içerik"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "yorumlara izin ver"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "şablon adı"
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem "
+"otomatik olarak 'flatpages/default.html' kullanacak."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "kayıt gerekli"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "düz sayfa"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "düz sayfalar"
+
+#: contrib/sessions/models.py:51
+msgid "session key"
+msgstr "oturum anahtarı"
+
+#: contrib/sessions/models.py:52
+msgid "session data"
+msgstr "oturum bilgisi"
+
+#: contrib/sessions/models.py:53
+msgid "expire date"
+msgstr "bitiş tarihi"
+
+#: contrib/sessions/models.py:57
+msgid "session"
+msgstr "oturum"
+
+#: contrib/sessions/models.py:58
+msgid "sessions"
+msgstr "oturumlar"
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "alan adı"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "görülen isim"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "site"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "siteler"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -346,13 +1390,13 @@ msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
msgstr ""
-"<h3>%s:</h3>\n"
+"<h3>%s nesnesine göre:</h3>\n"
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
-msgstr "Hepsi"
+msgstr "Tümü"
#: contrib/admin/filterspecs.py:109
msgid "Any date"
@@ -364,7 +1408,7 @@ msgstr "Bugün"
#: contrib/admin/filterspecs.py:113
msgid "Past 7 days"
-msgstr "Son 7 gün"
+msgstr "7 gün içinde"
#: contrib/admin/filterspecs.py:115
msgid "This month"
@@ -388,274 +1432,353 @@ msgstr "Bilinmiyor"
#: contrib/admin/models.py:16
msgid "action time"
-msgstr "hareket saati"
+msgstr "işlem zamanı"
#: contrib/admin/models.py:19
msgid "object id"
-msgstr "nesne kodu"
+msgstr "nesne no"
#: contrib/admin/models.py:20
msgid "object repr"
-msgstr "nesne repr gösterimi"
+msgstr "nesne kodu"
#: contrib/admin/models.py:21
msgid "action flag"
-msgstr "hareket işareti"
+msgstr "işlem adı"
#: contrib/admin/models.py:22
msgid "change message"
-msgstr "değişiklik mesajı"
+msgstr "mesajı değiştir"
#: contrib/admin/models.py:25
msgid "log entry"
-msgstr "günlük kaydı"
+msgstr "girişi kaydet"
#: contrib/admin/models.py:26
msgid "log entries"
-msgstr "günlük kayıtları"
+msgstr "girişleri kaydet"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:230
msgid "All dates"
msgstr "Tüm tarihler"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "Geçerli bir kullanıcı adı ve şifre giriniz. Her ikisinde de büyük ve küçük harfler farklıdır."
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Giriş"
-
-#: contrib/admin/views/decorators.py:61
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "Oturumunuzun süresi dolmuştur, yeniden giriniz. Merak etmeyin, verileriniz kaydedilmiştir."
-
-#: contrib/admin/views/decorators.py:68
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "Tarayıcınızın cookie desteği kapalıdır. Cookie desteğini açın, bu sayfayı yeniden yükleyin ve tekrar deneyin."
+#: contrib/admin/views/auth.py:17 contrib/admin/views/main.py:257
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "\"%(obj)s\" isimli %(name)s eklendi."
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr "Kullanıcı adında '@' karakterini kullanamazsınız."
+#: contrib/admin/views/auth.py:22 contrib/admin/views/main.py:261
+#: contrib/admin/views/main.py:347
+msgid "You may edit it again below."
+msgstr "Tekrar düzenleyebilirsiniz."
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-posta adresiniz, kullanıcı adınız değildir. Yerine '%s' deneyin."
+#: contrib/admin/views/auth.py:28
+msgid "Add user"
+msgstr "Kullanıcı ekle"
-#: contrib/admin/views/main.py:226
+#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr "Site yönetimi"
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \\\"%(obj)s\\\" başarı ile eklenmiştir."
-
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr "Aşağıda değiştirebilirsiniz."
-
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
-msgstr "Aşağıda bir %s daha ekleyebilirsiniz."
+msgstr "Yeni bir %s ekleyebilirsiniz."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr "%s ekle"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
-msgstr "%s eklenmiştir."
+msgstr "%s eklendi."
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
msgid "and"
msgstr "ve"
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
-msgstr "%s değiştirilmiştir."
+msgstr "%s değiştirildi."
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
-msgstr "%s silinmiştir."
+msgstr "%s silindi."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
-msgstr "Herhangi bir alan değiştirilmemiştir."
+msgstr "Hiçbir alan değiştirilmedi."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" başarı ile değiştirilmiştir."
+msgstr "\"%(obj)s\" isimli %(name)s değiştirildi."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \\\"%(obj)s\\\" başarı ile eklenmiştir. Aşağida değiştirebilirsiniz."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz."
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
msgstr "%s değiştir"
-#: contrib/admin/views/main.py:470
+#: contrib/admin/views/main.py:473
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(name)s'daki bir ya da birden fazla %(fieldname)s: %(obj)s"
+msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s: %(obj)s"
-#: contrib/admin/views/main.py:475
+#: contrib/admin/views/main.py:478
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(name)s'daki bir ya da birden fazla %(fieldname)s:"
+msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s:"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:511
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" başarı ile silinmiştir."
+msgstr "\"%(obj)s\" isimli %(name)s silindi."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:514
msgid "Are you sure?"
msgstr "Emin misiniz?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:536
#, python-format
msgid "Change history: %s"
-msgstr "Değişiklik tarihçesi: %s"
+msgstr "%s için değişiklik geçmişi:"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s"
msgstr "%s seç"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s to change"
-msgstr "Değiştirmek için %s seçiniz"
+msgstr "Değiştirilecek %s nesnesini seçin"
+
+#: contrib/admin/views/main.py:758
+msgid "Database error"
+msgstr "Veritabanı hatası"
+
+#: contrib/admin/views/decorators.py:24
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "Giriş yap"
+
+#: contrib/admin/views/decorators.py:62
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Oturumunuzun süresi geçti. Lütfen tekrar giriş yapın. Endişe etmeyin, "
+"gönderiniz kayıt edildi."
+
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Görünüşe göre tarayıcınız çerezleri kabul etmiyor. Çerez kullanımını aktif "
+"hale getirin ve sayfayı yeniden yükleyin."
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Kullanıcı isminde '@' karakteri bulunamaz."
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "E-posta adresiniz kullanıcı adınız değil. '%s' kullanın."
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "etiket:"
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "filtre:"
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "view:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "%r uygulaması bulunamadı"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr "%r modeli %r uygulamasında bulunamadı"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "ilgili `%s.%s` nesnesi"
+
+#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
+#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+msgid "model:"
+msgstr "model:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "ilgili `%s.%s` nesneleri"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "tüm %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "%s sayısı"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "%s nesnesindeki alanlar"
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
msgid "Integer"
msgstr "Tamsayı"
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
-msgstr "Boolean (True ya da False)"
+msgstr "Mantıksal (True ya da False)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
-msgstr "String (en fazla %(maxlength)s karakter)"
+msgstr "Karakter disizi (en fazla %(maxlength)s)"
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
-msgstr "Virgül ile ayrılmış tamsayılar"
+msgstr "Virgülle ayrılmış tamsayılar"
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr "Tarih (saat yok)"
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
-msgstr "Tarih (saat ile)"
+msgstr "Tarih (saat var)"
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr "E-posta adresi"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Dosya yolu"
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
-msgstr "Ondalık sayı"
+msgstr "Ondalık sayı:"
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False, ya da None)"
+msgstr "Mantıksal (True, False, ya da None)"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
-msgstr "Ana model ile ilişki"
+msgstr "Ana modelle ilişki"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr "Telefon numarası"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr "Metin"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
msgstr "Saat"
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
-msgstr "ABD eyaleti (iki büyük harf)"
+msgstr "Şehir Kodu (iki karakter)"
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:317
msgid "XML text"
msgstr "XML metni"
-#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s geçerli vir adres kalıbı değil"
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Şimdiki:"
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Değiştir:"
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Tarih:"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Saat:"
+
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Documentation"
-msgstr "Dokümantasyon"
+msgstr "Dökümantasyon"
-#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
#: contrib/admin/templates/admin_doc/missing_docutils.html:4
#: contrib/admin/templates/admin_doc/view_index.html:5
#: contrib/admin/templates/admin_doc/model_detail.html:3
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
msgid "Change password"
-msgstr "Şifre değiştirme"
+msgstr "Parola değiştir"
+#: contrib/admin/templates/admin/change_list.html:6
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/base.html:30
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@@ -663,12 +1786,22 @@ msgstr "Şifre değiştirme"
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Home"
-msgstr "Ana sayfa"
+msgstr "Anasayfa"
+
+#: contrib/admin/templates/admin/change_list.html:11
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s Ekle"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " %(filter_title)s nesnesine göre "
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:20
msgid "History"
-msgstr "Tarihçe"
+msgstr "Geçmiş"
#: contrib/admin/templates/admin/object_history.html:18
msgid "Date/time"
@@ -680,17 +1813,39 @@ msgstr "Kullanıcı"
#: contrib/admin/templates/admin/object_history.html:20
msgid "Action"
-msgstr "Hareket"
+msgstr "İşlem"
#: contrib/admin/templates/admin/object_history.html:26
msgid "DATE_WITH_TIME_FULL"
-msgstr "j N Y, H:i"
+msgstr "DATE_WITH_TIME_FULL"
#: contrib/admin/templates/admin/object_history.html:36
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
-msgstr "Bu nesne ile ilgili bir tarihçe yoktur. Muhtemelen bu yönetim arayüzü aracılığıyla eklenmemiştir."
+msgstr ""
+"Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir "
+"yerden eklendi."
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Git"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 sonuç"
+msgstr[1] "%(counter)s sonuç"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "toplam %(full_result_count)s"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Tümünü göster"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
@@ -710,28 +1865,36 @@ msgstr "Sunucu hatası (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
-msgstr "Sunucu hatası <em>(500)</em>"
+msgstr "Sunucu Hatası <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 "Bir hata oluştu. Site yöneticilerine e-posta ile gönderildi ve en kısa zamanda düzeltilir. Sabrınız için teşekkür ederiz."
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Sayfa bulunamamıştır"
+msgstr ""
+"Bir hata oluştu. Hata, e-psota ile site yöneticisine bildirildi ve kısa süre "
+"içinde çözülecktir. Sabrınız için teşekkürler."
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Özür dileriz, sayfa bulunamamıştır."
+#: contrib/admin/templates/admin/invalid_setup.html:8
+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 ""
+"Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı "
+"tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından "
+"okunabilir olduğundan emin olun."
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
msgstr "%(name)s uygulamasındaki modeller."
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
msgid "Add"
@@ -743,32 +1906,54 @@ msgstr "Değiştir"
#: contrib/admin/templates/admin/index.html:44
msgid "You don't have permission to edit anything."
-msgstr "Değiştirme yetkiniz yoktur."
+msgstr "İşlem yapmaya yetkiniz yok."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
-msgstr "Son yapılanlar"
+msgstr "Geçmiş İşlemler"
#: contrib/admin/templates/admin/index.html:53
msgid "My Actions"
-msgstr "Hareketlerim"
+msgstr "İşlemlerim"
#: contrib/admin/templates/admin/index.html:57
msgid "None available"
-msgstr "Yok"
+msgstr "Hiç yok"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s ekle"
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Sayfa bulunamadı"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Üzgünüm, aradığınız sayfa bulunamadı."
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtrele"
+
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "View on site"
+msgstr "Sitede görüntüle"
+
+#: contrib/admin/templates/admin/change_form.html:30
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Lütfen aşağıdaki hatayı düzeltin."
+msgstr[1] "Lütfen aşağıdaki hataları düzeltin."
+
+#: contrib/admin/templates/admin/change_form.html:48
+msgid "Ordering"
+msgstr "Sıralama:"
+
+#: contrib/admin/templates/admin/change_form.html:51
+msgid "Order:"
+msgstr "Sıra:"
#: contrib/admin/templates/admin/login.html:22
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "<a href=\"/password_reset/\">Şifremi unuttum</a>"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Hoş geldiniz,"
+msgstr "<a href=\"/password_reset/\">Şifrenizi mi unuttunuz?</a>"
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
@@ -778,48 +1963,30 @@ msgstr "Sil"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
msgid ""
-"Deleting the %(object_name)s '%(object)s' would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr "%(object_name)s '%(object)s' silinmesi, ilgili nesnelerin silinmesini gerektirir, ancak şu nesneleri silmeye yetkiniz yoktur:"
+"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 ""
+"'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı "
+"nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme "
+"yetkiniz yok."
#: contrib/admin/templates/admin/delete_confirmation.html:21
#, python-format
msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
-"the following related items will be deleted:"
-msgstr "%(object_name)s \"%(object)s\" silmek istediğinizden emin misiniz? Şunların tamamı silinecektir:"
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"\"%(escaped_object)s\" isimli %(object_name)s nesnesini silmek "
+"istediğinizdenemin misiniz? Aşağıdaki bağlantılı öğeler silinecek:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "Evet, eminim"
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " By %(title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Yap"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Görüntüle"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Aşağıdaki hatayı düzeltin."
-msgstr[1] "Aşağıdaki hataları düzeltin."
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Sıralama"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Sırala:"
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Hoşgeldin,"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
@@ -827,7 +1994,7 @@ msgstr "Yeni olarak kaydet"
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save and add another"
-msgstr "Kaydet ve bir tane daha ekle"
+msgstr "Kaydet ve yeni bir tane ekle"
#: contrib/admin/templates/admin/submit_line.html:6
msgid "Save and continue editing"
@@ -837,122 +2004,152 @@ msgstr "Kaydet ve düzenlemeye devam et"
msgid "Save"
msgstr "Kaydet"
+#: 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 "Önce bir kullanıcı adı ve parola girin. Daha sonra daha fazla bilgi girebilirsiniz."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Kullanıcı"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Parola"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Parola (tekrar)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Onaylamak için, yukarıdaki parolanın aynısını girin."
+
#: 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 "Şifre değişikliği"
+msgstr "Parola değişimi"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
-msgstr "Şifre değiştirilmiştir"
+msgstr "Parola değişimi başarılı"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
-msgstr "Şifreniz değiştirilmiştir"
+msgstr "Parolanız değiştirildi."
#: 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
#: contrib/admin/templates/registration/password_reset_done.html:4
msgid "Password reset"
-msgstr "Şifreyi resetle"
+msgstr "Parolayı sıfırla"
#: contrib/admin/templates/registration/password_reset_form.html:12
msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
-msgstr "Şifrenizi unuttuysanız, aşağıdaki alana e-posta adresinizi giriniz. Yeni bir şifre otomatik olarak üretilir ve e-posta ile gönderilir."
+msgstr ""
+"Parolanızı mı unuttunuz? E-posta adresinizi aşağıya girin, parolanızı "
+"sıfırlayalım ve e-posta adresinize gönderelim."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
-msgstr "E-posta:"
+msgstr "E-posta adresi:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
-msgstr "Şifremi resetle"
+msgstr "Parolamı sıfırla"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Sitemizde zaman geçirdiğiniz için teşekkür ederiz."
+msgstr "Web sitesinde zaman geçirdiğiniz için teşekkür ederiz."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
-msgstr "Yeniden giriniz"
+msgstr "Tekrar giriş yap"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
-msgstr "Şifre resetlendi"
+msgstr "Parola sıfırlandı."
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
-msgstr "Yeni şifre, verdiğiniz e-posta adresine gönderilmiştir."
+msgstr ""
+"Yeni şifreniz, e-posta adresinize gönderildi, kısa süre içinde size "
+"ulaşacaktır."
#: 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 "Güvenliğiniz için eski şifrenizi giriniz, daha sonra yeni şifrenizi iki kez giriniz."
+msgstr ""
+"Güvenliğiniz için, lütfen eski parolanızı girin, sonra da yeni şifrenizi iki "
+"kere girin ve böylece doğru yazdığınızdan emin olun."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
-msgstr "Eski şifre:"
+msgstr "Eski parola:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
-msgstr "Yeni şifre:"
+msgstr "Yeni parola:"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
-msgstr "Yeni şifre (tekrar):"
+msgstr "Parolayı onayla:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
-msgstr "Şifremi değiştir"
+msgstr "Parolamı değiştir"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Bu mektubu, %(site_name)s'daki kullanıcı hesabınız için yeni şifrenin"
+msgstr "Bu e-postayı aldınız çünkü "
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
-msgstr "üretilmesini istediğiniz için aldınız"
+msgstr ""
+"%(site_name)s adresindeki kullanıcı hesabınız için parola sıfırlama "
+"talebinde bulundunuz."
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
-msgstr "Yeni şifreniz: %(new_password)s"
+msgstr "Yeni parolanız: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
-msgstr "Şifrenizi şu sayfadan değiştirebilirsiniz:"
+msgstr "Parolanızı değiştirmek için bu adrese gidebilirsiniz:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
-msgstr ""
+msgstr "Unutma ihtimaline karşı, kullanıcı adınız:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
-msgstr ""
+msgstr "Teşekkürler!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
-msgstr ""
+msgstr "%(site_name)s Ekibi"
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
-msgstr ""
+msgstr "Kısayollar"
#: contrib/admin/templates/admin_doc/bookmarklets.html:5
msgid "Documentation bookmarklets"
-msgstr ""
+msgstr "Döküman kısayolları"
#: contrib/admin/templates/admin_doc/bookmarklets.html:9
msgid ""
@@ -964,935 +2161,49 @@ msgid ""
"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\">Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki "
+"araç çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler "
+"listenize ekleyin. Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı "
+"adreste bulunan istemciler tarafından kullanılabilir.</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
-msgstr ""
+msgstr "Bu sayfa için dökümantasyon"
#: contrib/admin/templates/admin_doc/bookmarklets.html:20
msgid ""
"Jumps you from any page to the documentation for the view that generates "
"that page."
-msgstr ""
+msgstr "Sizi, bu sayfayı üreten betiğin dökümantasyonuna yönlendirir."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
-msgstr ""
+msgstr "Nesne numarasını göster"
#: contrib/admin/templates/admin_doc/bookmarklets.html:23
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
-msgstr ""
+msgstr "Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
-msgstr ""
+msgstr "Nesneyi düzenle (aynı pencerede)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
+msgstr "Tek bir nesneyi temsil eden sayfaların yönetim sayfasını gösterir."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)"
-msgstr ""
+msgstr "Nesneyi düzenle (yeni pencerede)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr ""
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr ""
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr ""
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr ""
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr ""
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr ""
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr ""
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr ""
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr ""
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr ""
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr ""
-
-#: contrib/auth/models.py:17
-msgid "permission"
-msgstr ""
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-msgid "permissions"
-msgstr ""
-
-#: contrib/auth/models.py:29
-msgid "group"
-msgstr ""
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-msgid "groups"
-msgstr ""
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr ""
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr ""
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr ""
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr ""
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr ""
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr ""
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr ""
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr ""
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr ""
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr ""
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr ""
-
-#: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-
-#: contrib/auth/models.py:67
-msgid "user permissions"
-msgstr ""
-
-#: contrib/auth/models.py:70
-msgid "user"
-msgstr ""
-
-#: contrib/auth/models.py:71
-msgid "users"
-msgstr ""
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr ""
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr ""
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr ""
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr ""
-
-#: contrib/auth/models.py:219
-msgid "message"
-msgstr ""
-
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/contenttypes/models.py:25
-msgid "python model class name"
-msgstr ""
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr ""
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr ""
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr ""
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr ""
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr ""
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr ""
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr ""
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr ""
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr ""
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr ""
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr ""
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "j N Y"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "j N Y, H:i"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: 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:14
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:14
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr ""
+msgstr "Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar."
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:15
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:15
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:15
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:15
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:16
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr ""
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr ""
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr ""
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr ""
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr ""
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr ""
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr ""
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr ""
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr ""
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr ""
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:61
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-
-#: core/validators.py:64
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr ""
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr ""
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr ""
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr ""
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr ""
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr ""
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr ""
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr ""
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr ""
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr ""
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr ""
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-
-#: core/validators.py:229
-#, 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] ""
-msgstr[1] ""
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr ""
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr ""
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr ""
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr ""
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr ""
-
-#: core/validators.py:349
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:352
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr ""
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr ""
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:466
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:480
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:485
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr ""
-
-#: db/models/fields/__init__.py:337
-msgid "This value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:385
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr ""
-
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr ""
-
-#: db/models/fields/related.py:581
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:625
-#, 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] ""
-msgstr[1] ""
-
-#: forms/__init__.py:380
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr ""
-
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr ""
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:401
msgid "yes,no,maybe"
-msgstr ""
+msgstr "evet,hayır,olabilir"
+
diff --git a/django/conf/locale/tr/LC_MESSAGES/djangojs.mo b/django/conf/locale/tr/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000..1119203925
--- /dev/null
+++ b/django/conf/locale/tr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/tr/LC_MESSAGES/djangojs.po b/django/conf/locale/tr/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000..35928b9c03
--- /dev/null
+++ b/django/conf/locale/tr/LC_MESSAGES/djangojs.po
@@ -0,0 +1,109 @@
+# Django 0.95
+# Copyright (C) 2006 Django
+# This file is distributed under the same license as the Django package.
+# Bahadır Kandemir <bahadir@pardus.org.tr>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django 0.95\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-30 01:31+0300\n"
+"PO-Revision-Date: 2006-09-30 01:31+0300\n"
+"Last-Translator: Bahadır Kandemir <bahadir@pardus.org.tr>\n"
+"Language-Team: Bahadır Kandemir <bahadir@pardus.org.tr>\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 "Mevcut %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "Hepsini seç"
+
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "Ekle"
+
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "Kaldır"
+
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "Seçilen %s"
+
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "Seçiminizi yapın ve tıklayın "
+
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "Hepsini temizle"
+
+#: contrib/admin/media/js/dateparse.js:26
+#: contrib/admin/media/js/calendar.js:24
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr "Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım "
+"Aralık"
+
+#: contrib/admin/media/js/dateparse.js:27
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi"
+
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "P P S Ç P C C"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+msgid "Now"
+msgstr "Şimdi"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+msgid "Clock"
+msgstr "Saat"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+msgid "Choose a time"
+msgstr "Saat seçin"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Midnight"
+msgstr "Geceyarısı"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "6 a.m."
+msgstr "Sabah 6"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "Noon"
+msgstr "Öğle"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
+msgid "Cancel"
+msgstr "İptal"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
+msgid "Today"
+msgstr "Bugün"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+msgid "Calendar"
+msgstr "Takvim"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+msgid "Yesterday"
+msgstr "Dün"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+msgid "Tomorrow"
+msgstr "Yarın"
diff --git a/django/contrib/admin/templates/admin/login.html b/django/contrib/admin/templates/admin/login.html
index e5bda0f0e6..0773132cec 100644
--- a/django/contrib/admin/templates/admin/login.html
+++ b/django/contrib/admin/templates/admin/login.html
@@ -19,7 +19,7 @@
<div class="form-row">
<label for="id_password">{% trans 'Password:' %}</label> <input type="password" name="password" id="id_password" />
<input type="hidden" name="this_is_the_login_form" value="1" />
- <input type="hidden" name="post_data" value="{{ post_data }}" /> {% comment %}<span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>{% endcomment %}
+ <input type="hidden" name="post_data" value="{{ post_data }}" /> {#<span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>#}
</div>
<div class="submit-row">
<label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py
index 875e61f959..d09fa28b10 100644
--- a/django/contrib/admin/templatetags/admin_modify.py
+++ b/django/contrib/admin/templatetags/admin_modify.py
@@ -197,8 +197,8 @@ def filter_interface_script_maybe(bound_field):
f = bound_field.field
if f.rel and isinstance(f.rel, models.ManyToManyRel) and f.rel.filter_interface:
return '<script type="text/javascript">addEvent(window, "load", function(e) {' \
- ' SelectFilter.init("id_%s", %r, %s, "%s"); });</script>\n' % (
- f.name, f.verbose_name, f.rel.filter_interface-1, settings.ADMIN_MEDIA_PREFIX)
+ ' SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n' % (
+ f.name, f.verbose_name.replace('"', '\\"'), f.rel.filter_interface-1, settings.ADMIN_MEDIA_PREFIX)
else:
return ''
filter_interface_script_maybe = register.simple_tag(filter_interface_script_maybe)
diff --git a/django/contrib/admin/views/auth.py b/django/contrib/admin/views/auth.py
index 42230050cc..03876bb4ac 100644
--- a/django/contrib/admin/views/auth.py
+++ b/django/contrib/admin/views/auth.py
@@ -1,6 +1,7 @@
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
+from django.core.exceptions import PermissionDenied
from django import forms, template
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 38d64bd73b..324841a669 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -454,7 +454,7 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current
if related.opts.admin and has_related_objs:
p = '%s.%s' % (related.opts.app_label, related.opts.get_delete_permission())
if not user.has_perm(p):
- perms_needed.add(rel_opts_name)
+ perms_needed.add(related.opts.verbose_name)
for related in opts.get_all_related_many_to_many_objects():
if related.opts in opts_seen:
continue
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index b3f1908be4..24c69cb73e 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -81,7 +81,7 @@ class PasswordResetForm(forms.Manipulator):
try:
self.user_cache = User.objects.get(email__iexact=new_data)
except User.DoesNotExist:
- raise validators.ValidationError, _("That e-mail address doesn't have an associated user acount. Are you sure you've registered?")
+ raise validators.ValidationError, _("That e-mail address doesn't have an associated user account. Are you sure you've registered?")
def save(self, domain_override=None, email_template_name='registration/password_reset_email.html'):
"Calculates a new password randomly and sends it to the user"
diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py
index 73bcfe92aa..58cc07efa9 100644
--- a/django/contrib/auth/models.py
+++ b/django/contrib/auth/models.py
@@ -92,9 +92,9 @@ class User(models.Model):
last_name = models.CharField(_('last name'), maxlength=30, blank=True)
email = models.EmailField(_('e-mail address'), blank=True)
password = models.CharField(_('password'), maxlength=128, help_text=_("Use '[algo]$[salt]$[hexdigest]'"))
- is_staff = models.BooleanField(_('staff status'), help_text=_("Designates whether the user can log into this admin site."))
+ is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."))
- is_superuser = models.BooleanField(_('superuser status'), help_text=_("Designates that this user has all permissions without explicitly assigning them."))
+ is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
last_login = models.DateTimeField(_('last login'), default=models.LazyDate())
date_joined = models.DateTimeField(_('date joined'), default=models.LazyDate())
groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,
@@ -126,7 +126,7 @@ class User(models.Model):
def is_anonymous(self):
"Always returns False. This is a way of comparing User objects to anonymous users."
return False
-
+
def is_authenticated(self):
"""Always return True. This is a way to tell if the user has been authenticated in templates.
"""
@@ -270,6 +270,15 @@ class AnonymousUser(object):
def __str__(self):
return 'AnonymousUser'
+ def __eq__(self, other):
+ return isinstance(other, self.__class__)
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ def __hash__(self):
+ return 1 # instances always return the same hash value
+
def save(self):
raise NotImplementedError
@@ -301,6 +310,6 @@ class AnonymousUser(object):
def is_anonymous(self):
return True
-
+
def is_authenticated(self):
return False
diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py
index c19c62fc88..3640da90fe 100644
--- a/django/contrib/comments/views/comments.py
+++ b/django/contrib/comments/views/comments.py
@@ -109,7 +109,7 @@ class PublicCommentManipulator(AuthenticationForm):
# send the comment to the managers.
if self.user_cache.comment_set.count() <= settings.COMMENTS_FIRST_FEW:
message = ngettext('This comment was posted by a user who has posted fewer than %(count)s comment:\n\n%(text)s',
- 'This comment was posted by a user who has posted fewer than %(count)s comments:\n\n%(text)s') % \
+ 'This comment was posted by a user who has posted fewer than %(count)s comments:\n\n%(text)s', settings.COMMENTS_FIRST_FEW) % \
{'count': settings.COMMENTS_FIRST_FEW, 'text': c.get_as_text()}
mail_managers("Comment posted by rookie user", message)
if settings.COMMENTS_SKETCHY_USERS_GROUP and settings.COMMENTS_SKETCHY_USERS_GROUP in [g.id for g in self.user_cache.get_group_list()]:
@@ -217,7 +217,7 @@ def post_comment(request):
errors = manipulator.get_validation_errors(new_data)
# If user gave correct username/password and wasn't already logged in, log them in
# so they don't have to enter a username/password again.
- if manipulator.get_user() and new_data.has_key('password') and manipulator.get_user().check_password(new_data['password']):
+ if manipulator.get_user() and not manipulator.get_user().is_authenticated() and new_data.has_key('password') and manipulator.get_user().check_password(new_data['password']):
from django.contrib.auth import login
login(request, manipulator.get_user())
if errors or request.POST.has_key('preview'):
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index bf759db068..5fc41a048b 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -41,6 +41,7 @@ class ModPythonRequest(http.HttpRequest):
return '%s%s' % (self.path, self._req.args and ('?' + self._req.args) or '')
def is_secure(self):
+ # Note: modpython 3.2.10+ has req.is_https(), but we need to support previous versions
return self._req.subprocess_env.has_key('HTTPS') and self._req.subprocess_env['HTTPS'] == 'on'
def _load_post_and_files(self):
@@ -102,7 +103,7 @@ class ModPythonRequest(http.HttpRequest):
'REQUEST_METHOD': self._req.method,
'SCRIPT_NAME': None, # Not supported
'SERVER_NAME': self._req.server.server_hostname,
- 'SERVER_PORT': str(self._req.connection.local_addr[1]),
+ 'SERVER_PORT': self._req.server.port,
'SERVER_PROTOCOL': self._req.protocol,
'SERVER_SOFTWARE': 'mod_python'
}
diff --git a/django/core/management.py b/django/core/management.py
index 240ca03468..37a7948887 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -32,6 +32,7 @@ class dummy: pass
style = dummy()
style.ERROR = termcolors.make_style(fg='red', opts=('bold',))
style.ERROR_OUTPUT = termcolors.make_style(fg='red', opts=('bold',))
+style.NOTICE = termcolors.make_style(fg='red')
style.SQL_FIELD = termcolors.make_style(fg='green', opts=('bold',))
style.SQL_COLTYPE = termcolors.make_style(fg='green')
style.SQL_KEYWORD = termcolors.make_style(fg='yellow')
@@ -234,8 +235,7 @@ def get_sql_indexes(app):
opts = model._meta
connection_name = model_connection_name(model)
output = connection_output.setdefault(connection_name, [])
- builder = model._default_manager.db.get_creation_module().builder
- output.extend(map(str, builder.get_create_indexes(model, style)))
+ output.extend(map(str, get_sql_indexes_for_model(model)))
return _collate(connection_output)
get_sql_indexes.help_doc = "Prints the CREATE INDEX SQL statements for the given model module name(s)."
@@ -243,21 +243,9 @@ get_sql_indexes.args = APP_ARGS
def get_sql_indexes_for_model(model):
"Returns the CREATE INDEX SQL statements for a single model"
- from django.db import backend
- output = []
-
- for f in model._meta.fields:
- if f.db_index:
- unique = f.unique and 'UNIQUE ' or ''
- output.append(
- style.SQL_KEYWORD('CREATE %sINDEX' % unique) + ' ' + \
- style.SQL_TABLE('%s_%s' % (model._meta.db_table, f.column)) + ' ' + \
- style.SQL_KEYWORD('ON') + ' ' + \
- style.SQL_TABLE(backend.quote_name(model._meta.db_table)) + ' ' + \
- "(%s);" % style.SQL_FIELD(backend.quote_name(f.column))
- )
- return output
-
+ builder = model._default_manager.db.get_creation_module().builder
+ return builder.get_create_indexes(model, style)
+
def get_sql_all(app):
"Returns a list of CREATE TABLE SQL, initial-data inserts, and CREATE INDEX SQL for the given module."
return get_sql_create(app) + get_sql_initial_data(app) + get_sql_indexes(app)
@@ -346,25 +334,6 @@ def syncdb(verbosity=1, interactive=True):
else:
transaction.commit_unless_managed()
- # Install SQL indicies for all newly created models
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- for model in models.get_models(app):
- if model in created_models:
- index_sql = get_sql_indexes_for_model(model)
- if index_sql:
- if verbosity >= 1:
- print "Installing index for %s.%s model" % (app_name, model._meta.object_name)
- try:
- for sql in index_sql:
- cursor.execute(sql)
- except Exception, e:
- sys.stderr.write("Failed to install index for %s.%s model: %s" % \
- (app_name, model._meta.object_name, e))
- transaction.rollback_unless_managed()
- else:
- transaction.commit_unless_managed()
-
syncdb.args = ''
def get_admin_index(app):
@@ -501,6 +470,7 @@ def _post_syncdb(app, created_models, verbosity=1, interactive=True):
def reset(app, interactive=True):
"Executes the equivalent of 'get_sql_reset' in the current database."
from django.db import connection, transaction
+ from django.conf import settings
app_name = app.__name__.split('.')[-2]
disable_termcolors()
@@ -512,13 +482,14 @@ def reset(app, interactive=True):
if interactive:
confirm = raw_input("""
You have requested a database reset.
-This will IRREVERSIBLY DESTROY any data in your database.
+This will IRREVERSIBLY DESTROY any data for
+the "%s" application in the database "%s".
Are you sure you want to do this?
-Type 'yes' to continue, or 'no' to cancel: """)
+Type 'yes' to continue, or 'no' to cancel: """ % (app_name, settings.DATABASE_NAME))
else:
confirm = 'yes'
-
+
if confirm == 'yes':
try:
cursor = connection.cursor()
@@ -568,7 +539,10 @@ def _start_helper(app_or_project, name, directory, other_name=''):
fp_new.write(fp_old.read().replace('{{ %s_name }}' % app_or_project, name).replace('{{ %s_name }}' % other, other_name))
fp_old.close()
fp_new.close()
- shutil.copymode(path_old, path_new)
+ try:
+ shutil.copymode(path_old, path_new)
+ except OSError:
+ sys.stderr.write(style.NOTICE("Notice: Couldn't set permission bits on %s. You're probably using an uncommon filesystem setup. No problem.\n" % path_new))
def startproject(project_name, directory):
"Creates a Django project for the given project_name in the given directory."
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index dc2ae69fa7..7c18f4f3c0 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -2,7 +2,7 @@ from django.db import transaction
from django.db.models import signals, get_model
from django.db.models.fields import AutoField, Field, IntegerField, get_ul_class
from django.db.models.related import RelatedObject
-from django.utils.translation import gettext_lazy, string_concat
+from django.utils.translation import gettext_lazy, string_concat, ngettext
from django.utils.functional import curry
from django.core import validators
from django import forms
diff --git a/django/db/models/manipulators.py b/django/db/models/manipulators.py
index 83ddda844e..9a898e217f 100644
--- a/django/db/models/manipulators.py
+++ b/django/db/models/manipulators.py
@@ -303,7 +303,7 @@ def manipulator_validator_unique_together(field_name_list, opts, self, field_dat
pass
else:
raise validators.ValidationError, _("%(object)s with this %(type)s already exists for the given %(field)s.") % \
- {'object': capfirst(opts.verbose_name), 'type': field_list[0].verbose_name, 'field': get_text_list([f.verbose_name for f in field_list[1:]], 'and')}
+ {'object': capfirst(opts.verbose_name), 'type': field_list[0].verbose_name, 'field': get_text_list([f.verbose_name for f in field_list[1:]], _('and'))}
def manipulator_validator_unique_for_date(from_field, date_field, opts, lookup_type, self, field_data, all_data):
from django.db.models.fields.related import ManyToOneRel
diff --git a/django/db/models/query.py b/django/db/models/query.py
index f16e6869e3..3aa1241d1a 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -727,30 +727,35 @@ def parse_lookup(kwarg_items, opts):
joins, where, params = SortedDict(), [], []
for kwarg, value in kwarg_items:
- if value is not None:
- path = kwarg.split(LOOKUP_SEPARATOR)
- # Extract the last elements of the kwarg.
- # The very-last is the lookup_type (equals, like, etc).
- # The second-last is the table column on which the lookup_type is
- # to be performed. If this name is 'pk', it will be substituted with
- # the name of the primary key.
- # If there is only one part, or the last part is not a query
- # term, assume that the query is an __exact
- lookup_type = path.pop()
- if lookup_type == 'pk':
- lookup_type = 'exact'
- path.append(None)
- elif len(path) == 0 or lookup_type not in QUERY_TERMS:
- path.append(lookup_type)
- lookup_type = 'exact'
+ path = kwarg.split(LOOKUP_SEPARATOR)
+ # Extract the last elements of the kwarg.
+ # The very-last is the lookup_type (equals, like, etc).
+ # The second-last is the table column on which the lookup_type is
+ # to be performed. If this name is 'pk', it will be substituted with
+ # the name of the primary key.
+ # If there is only one part, or the last part is not a query
+ # term, assume that the query is an __exact
+ lookup_type = path.pop()
+ if lookup_type == 'pk':
+ lookup_type = 'exact'
+ path.append(None)
+ elif len(path) == 0 or lookup_type not in QUERY_TERMS:
+ path.append(lookup_type)
+ lookup_type = 'exact'
- if len(path) < 1:
- raise TypeError, "Cannot parse keyword query %r" % kwarg
+ if len(path) < 1:
+ raise TypeError, "Cannot parse keyword query %r" % kwarg
+
+ if value is None:
+ # Interpret '__exact=None' as the sql '= NULL'; otherwise, reject
+ # all uses of None as a query value.
+ if lookup_type != 'exact':
+ raise ValueError, "Cannot use None as a query value"
- joins2, where2, params2 = lookup_inner(path, lookup_type, value, opts, opts.db_table, None)
- joins.update(joins2)
- where.extend(where2)
- params.extend(params2)
+ joins2, where2, params2 = lookup_inner(path, lookup_type, value, opts, opts.db_table, None)
+ joins.update(joins2)
+ where.extend(where2)
+ params.extend(params2)
return joins, where, params
class FieldFound(Exception):
diff --git a/django/newforms/__init__.py b/django/newforms/__init__.py
new file mode 100644
index 0000000000..f0eca9a950
--- /dev/null
+++ b/django/newforms/__init__.py
@@ -0,0 +1,29 @@
+"""
+Django validation and HTML form handling.
+
+TODO:
+ Validation not tied to a particular field
+ <select> and validation of lists
+ Default value for field
+ Field labels
+ Nestable Forms
+ FatalValidationError -- short-circuits all other validators on a form
+ ValidationWarning
+ "This form field requires foo.js" and form.js_includes()
+"""
+
+from widgets import *
+from fields import *
+from forms import Form
+
+##########################
+# DATABASE API SHORTCUTS #
+##########################
+
+def form_for_model(model):
+ "Returns a Form instance for the given Django model class."
+ raise NotImplementedError
+
+def form_for_fields(field_list):
+ "Returns a Form instance for the given list of Django database field instances."
+ raise NotImplementedError
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
new file mode 100644
index 0000000000..ea401fdfab
--- /dev/null
+++ b/django/newforms/fields.py
@@ -0,0 +1,184 @@
+"""
+Field classes
+"""
+
+from util import ValidationError, DEFAULT_ENCODING
+from widgets import TextInput, CheckboxInput
+import datetime
+import re
+import time
+
+__all__ = (
+ 'Field', 'CharField', 'IntegerField',
+ 'DEFAULT_DATE_INPUT_FORMATS', 'DateField',
+ 'DEFAULT_DATETIME_INPUT_FORMATS', 'DateTimeField',
+ 'RegexField', 'EmailField', 'BooleanField',
+)
+
+# These values, if given to to_python(), will trigger the self.required check.
+EMPTY_VALUES = (None, '')
+
+class Field(object):
+ widget = TextInput # Default widget to use when rendering this type of Field.
+
+ def __init__(self, required=True, widget=None):
+ self.required = required
+ widget = widget or self.widget
+ if isinstance(widget, type):
+ widget = widget()
+ self.widget = widget
+
+ def to_python(self, value):
+ """
+ Validates the given value and returns its "normalized" value as an
+ appropriate Python object.
+
+ Raises ValidationError for any errors.
+ """
+ if self.required and value in EMPTY_VALUES:
+ raise ValidationError(u'This field is required.')
+ return value
+
+class CharField(Field):
+ def __init__(self, max_length=None, min_length=None, required=True, widget=None):
+ Field.__init__(self, required, widget)
+ self.max_length, self.min_length = max_length, min_length
+
+ def to_python(self, value):
+ "Validates max_length and min_length. Returns a Unicode object."
+ Field.to_python(self, value)
+ if value in EMPTY_VALUES: value = u''
+ if not isinstance(value, basestring):
+ value = unicode(str(value), DEFAULT_ENCODING)
+ elif not isinstance(value, unicode):
+ value = unicode(value, DEFAULT_ENCODING)
+ if self.max_length is not None and len(value) > self.max_length:
+ raise ValidationError(u'Ensure this value has at most %d characters.' % self.max_length)
+ if self.min_length is not None and len(value) < self.min_length:
+ raise ValidationError(u'Ensure this value has at least %d characters.' % self.min_length)
+ return value
+
+class IntegerField(Field):
+ def to_python(self, value):
+ """
+ Validates that int() can be called on the input. Returns the result
+ of int().
+ """
+ super(IntegerField, self).to_python(value)
+ try:
+ return int(value)
+ except (ValueError, TypeError):
+ raise ValidationError(u'Enter a whole number.')
+
+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):
+ def __init__(self, input_formats=None, required=True, widget=None):
+ Field.__init__(self, required, widget)
+ self.input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS
+
+ def to_python(self, value):
+ """
+ Validates that the input can be converted to a date. Returns a Python
+ datetime.date object.
+ """
+ Field.to_python(self, value)
+ if value in EMPTY_VALUES:
+ return None
+ if isinstance(value, datetime.datetime):
+ return value.date()
+ if isinstance(value, datetime.date):
+ return value
+ for format in self.input_formats:
+ try:
+ return datetime.date(*time.strptime(value, format)[:3])
+ except ValueError:
+ continue
+ raise ValidationError(u'Enter a valid date.')
+
+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):
+ def __init__(self, input_formats=None, required=True, widget=None):
+ Field.__init__(self, required, widget)
+ self.input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS
+
+ def to_python(self, value):
+ """
+ Validates that the input can be converted to a datetime. Returns a
+ Python datetime.datetime object.
+ """
+ Field.to_python(self, value)
+ if value in EMPTY_VALUES:
+ return None
+ if isinstance(value, datetime.datetime):
+ return value
+ if isinstance(value, datetime.date):
+ return datetime.datetime(value.year, value.month, value.day)
+ for format in self.input_formats:
+ try:
+ return datetime.datetime(*time.strptime(value, format)[:6])
+ except ValueError:
+ continue
+ raise ValidationError(u'Enter a valid date/time.')
+
+class RegexField(Field):
+ def __init__(self, regex, error_message=None, required=True, widget=None):
+ """
+ regex can be either a string or a compiled regular expression object.
+ error_message is an optional error message to use, if
+ 'Enter a valid value' is too generic for you.
+ """
+ Field.__init__(self, required, widget)
+ if isinstance(regex, basestring):
+ regex = re.compile(regex)
+ self.regex = regex
+ self.error_message = error_message or u'Enter a valid value.'
+
+ def to_python(self, value):
+ """
+ Validates that the input matches the regular expression. Returns a
+ Unicode object.
+ """
+ Field.to_python(self, value)
+ if value in EMPTY_VALUES: value = u''
+ if not isinstance(value, basestring):
+ value = unicode(str(value), DEFAULT_ENCODING)
+ elif not isinstance(value, unicode):
+ value = unicode(value, DEFAULT_ENCODING)
+ if not self.regex.search(value):
+ raise ValidationError(self.error_message)
+ return value
+
+email_re = re.compile(
+ r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
+ r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
+ r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE) # domain
+
+class EmailField(RegexField):
+ def __init__(self, required=True, widget=None):
+ RegexField.__init__(self, email_re, u'Enter a valid e-mail address.', required, widget)
+
+class BooleanField(Field):
+ widget = CheckboxInput
+
+ def to_python(self, value):
+ "Returns a Python boolean object."
+ Field.to_python(self, value)
+ return bool(value)
diff --git a/django/newforms/forms.py b/django/newforms/forms.py
new file mode 100644
index 0000000000..34e13c6542
--- /dev/null
+++ b/django/newforms/forms.py
@@ -0,0 +1,103 @@
+"""
+Form classes
+"""
+
+from fields import Field
+from widgets import TextInput, Textarea
+from util import ErrorDict, ErrorList, ValidationError
+
+class DeclarativeFieldsMetaclass(type):
+ "Metaclass that converts Field attributes to a dictionary called 'fields'."
+ def __new__(cls, name, bases, attrs):
+ attrs['fields'] = dict([(name, attrs.pop(name)) for name, obj in attrs.items() if isinstance(obj, Field)])
+ return type.__new__(cls, name, bases, attrs)
+
+class Form(object):
+ "A collection of Fields, plus their associated data."
+ __metaclass__ = DeclarativeFieldsMetaclass
+
+ def __init__(self, data=None): # TODO: prefix stuff
+ self.data = data or {}
+ self.__data_python = None # Stores the data after to_python() has been called.
+ self.__errors = None # Stores the errors after to_python() has been called.
+
+ def __iter__(self):
+ for name, field in self.fields.items():
+ yield BoundField(self, field, name)
+
+ def to_python(self):
+ if self.__errors is None:
+ self._validate()
+ return self.__data_python
+
+ def errors(self):
+ "Returns an ErrorDict for self.data"
+ if self.__errors is None:
+ self._validate()
+ return self.__errors
+
+ def is_valid(self):
+ """
+ Returns True if the form has no errors. Otherwise, False. This exists
+ solely for convenience, so client code can use positive logic rather
+ than confusing negative logic ("if not form.errors()").
+ """
+ return not bool(self.errors())
+
+ def __getitem__(self, name):
+ "Returns a BoundField with the given name."
+ try:
+ field = self.fields[name]
+ except KeyError:
+ raise KeyError('Key %r not found in Form' % name)
+ return BoundField(self, field, name)
+
+ def _validate(self):
+ data_python = {}
+ errors = ErrorDict()
+ for name, field in self.fields.items():
+ try:
+ value = field.to_python(self.data.get(name, None))
+ data_python[name] = value
+ except ValidationError, e:
+ errors[name] = e.messages
+ if not errors: # Only set self.data_python if there weren't errors.
+ self.__data_python = data_python
+ self.__errors = errors
+
+class BoundField(object):
+ "A Field plus data"
+ def __init__(self, form, field, name):
+ self._form = form
+ self._field = field
+ self._name = name
+
+ def __str__(self):
+ "Renders this field as an HTML widget."
+ # Use the 'widget' attribute on the field to determine which type
+ # of HTML widget to use.
+ return self.as_widget(self._field.widget)
+
+ def _errors(self):
+ """
+ Returns an ErrorList for this field. Returns an empty ErrorList
+ if there are none.
+ """
+ try:
+ return self._form.errors()[self._name]
+ except KeyError:
+ return ErrorList()
+ errors = property(_errors)
+
+ def as_widget(self, widget, attrs=None):
+ return widget.render(self._name, self._form.data.get(self._name, None), attrs=attrs)
+
+ def as_text(self, attrs=None):
+ """
+ Returns a string of HTML for representing this as an <input type="text">.
+ """
+ return self.as_widget(TextInput(), attrs)
+
+ def as_textarea(self, attrs=None):
+ "Returns a string of HTML for representing this as a <textarea>."
+ return self.as_widget(Textarea(), attrs)
diff --git a/django/newforms/util.py b/django/newforms/util.py
new file mode 100644
index 0000000000..3887010c85
--- /dev/null
+++ b/django/newforms/util.py
@@ -0,0 +1,55 @@
+# Default encoding for input byte strings.
+DEFAULT_ENCODING = 'utf-8' # TODO: First look at django.conf.settings, then fall back to this.
+
+def smart_unicode(s):
+ if not isinstance(s, unicode):
+ s = unicode(s, DEFAULT_ENCODING)
+ return s
+
+class ErrorDict(dict):
+ """
+ A collection of errors that knows how to display itself in various formats.
+
+ The dictionary keys are the field names, and the values are the errors.
+ """
+ def __str__(self):
+ return self.as_ul()
+
+ def as_ul(self):
+ if not self: return u''
+ return u'<ul class="errorlist">%s</ul>' % ''.join([u'<li>%s%s</li>' % (k, v) for k, v in self.items()])
+
+ def as_text(self):
+ return u'\n'.join([u'* %s\n%s' % (k, u'\n'.join([u' * %s' % i for i in v])) for k, v in self.items()])
+
+class ErrorList(list):
+ """
+ A collection of errors that knows how to display itself in various formats.
+ """
+ def __str__(self):
+ return self.as_ul()
+
+ def as_ul(self):
+ if not self: return u''
+ return u'<ul class="errorlist">%s</ul>' % ''.join([u'<li>%s</li>' % e for e in self])
+
+ def as_text(self):
+ if not self: return u''
+ return u'\n'.join([u'* %s' % e for e in self])
+
+class ValidationError(Exception):
+ def __init__(self, message):
+ "ValidationError can be passed a string or a list."
+ if isinstance(message, list):
+ self.messages = ErrorList([smart_unicode(msg) for msg in message])
+ else:
+ assert isinstance(message, basestring), ("%s should be a basestring" % repr(message))
+ message = smart_unicode(message)
+ self.messages = ErrorList([message])
+
+ def __str__(self):
+ # This is needed because, without a __str__(), printing an exception
+ # instance would result in this:
+ # AttributeError: ValidationError instance has no attribute 'args'
+ # See http://www.python.org/doc/current/tut/node10.html#handling
+ return repr(self.messages)
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py
new file mode 100644
index 0000000000..2241a54c07
--- /dev/null
+++ b/django/newforms/widgets.py
@@ -0,0 +1,43 @@
+"""
+HTML Widget classes
+"""
+
+__all__ = ('Widget', 'TextInput', 'Textarea', 'CheckboxInput')
+
+from django.utils.html import escape
+
+# Converts a dictionary to a single string with key="value", XML-style.
+# Assumes keys do not need to be XML-escaped.
+flatatt = lambda attrs: ' '.join(['%s="%s"' % (k, escape(v)) for k, v in attrs.items()])
+
+class Widget(object):
+ def __init__(self, attrs=None):
+ self.attrs = attrs or {}
+
+ def render(self, name, value):
+ raise NotImplementedError
+
+class TextInput(Widget):
+ def render(self, name, value, attrs=None):
+ if value is None: value = ''
+ final_attrs = dict(self.attrs, type='text', name=name)
+ if attrs:
+ final_attrs.update(attrs)
+ if value != '': final_attrs['value'] = value # Only add the 'value' attribute if a value is non-empty.
+ return u'<input %s />' % flatatt(final_attrs)
+
+class Textarea(Widget):
+ def render(self, name, value, attrs=None):
+ if value is None: value = ''
+ final_attrs = dict(self.attrs, name=name)
+ if attrs:
+ final_attrs.update(attrs)
+ return u'<textarea %s>%s</textarea>' % (flatatt(final_attrs), escape(value))
+
+class CheckboxInput(Widget):
+ def render(self, name, value, attrs=None):
+ final_attrs = dict(self.attrs, type='checkbox', name=name)
+ if attrs:
+ final_attrs.update(attrs)
+ if value: final_attrs['checked'] = 'checked'
+ return u'<input %s />' % flatatt(final_attrs)
diff --git a/django/template/__init__.py b/django/template/__init__.py
index af8f37a474..60526b663d 100644
--- a/django/template/__init__.py
+++ b/django/template/__init__.py
@@ -66,6 +66,7 @@ __all__ = ('Template', 'Context', 'RequestContext', 'compile_string')
TOKEN_TEXT = 0
TOKEN_VAR = 1
TOKEN_BLOCK = 2
+TOKEN_COMMENT = 3
# template syntax constants
FILTER_SEPARATOR = '|'
@@ -75,6 +76,8 @@ BLOCK_TAG_START = '{%'
BLOCK_TAG_END = '%}'
VARIABLE_TAG_START = '{{'
VARIABLE_TAG_END = '}}'
+COMMENT_TAG_START = '{#'
+COMMENT_TAG_END = '#}'
SINGLE_BRACE_START = '{'
SINGLE_BRACE_END = '}'
@@ -85,8 +88,9 @@ ALLOWED_VARIABLE_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01
UNKNOWN_SOURCE="&lt;unknown source&gt;"
# match a variable or block tag and capture the entire tag, including start/end delimiters
-tag_re = re.compile('(%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),
- re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END)))
+tag_re = re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),
+ re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END),
+ re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END)))
# global dictionary of libraries that have been loaded using get_library
libraries = {}
@@ -163,12 +167,12 @@ def compile_string(template_string, origin):
class Token(object):
def __init__(self, token_type, contents):
- "The token_type must be TOKEN_TEXT, TOKEN_VAR or TOKEN_BLOCK"
+ "The token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or TOKEN_COMMENT"
self.token_type, self.contents = token_type, contents
def __str__(self):
return '<%s token: "%s...">' % \
- ({TOKEN_TEXT: 'Text', TOKEN_VAR: 'Var', TOKEN_BLOCK: 'Block'}[self.token_type],
+ ({TOKEN_TEXT: 'Text', TOKEN_VAR: 'Var', TOKEN_BLOCK: 'Block', TOKEN_COMMENT: 'Comment'}[self.token_type],
self.contents[:20].replace('\n', ''))
def split_contents(self):
@@ -191,6 +195,8 @@ class Lexer(object):
token = Token(TOKEN_VAR, token_string[len(VARIABLE_TAG_START):-len(VARIABLE_TAG_END)].strip())
elif token_string.startswith(BLOCK_TAG_START):
token = Token(TOKEN_BLOCK, token_string[len(BLOCK_TAG_START):-len(BLOCK_TAG_END)].strip())
+ elif token_string.startswith(COMMENT_TAG_START):
+ token = Token(TOKEN_COMMENT, '')
else:
token = Token(TOKEN_TEXT, token_string)
return token
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index f7585368d1..02266dfa5c 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -1,7 +1,7 @@
"Default tags used by the template system, available to all templates."
from django.template import Node, NodeList, Template, Context, resolve_variable
-from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END
+from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
from django.template import get_library, Library, InvalidTemplateLibrary
from django.conf import settings
import sys
@@ -295,6 +295,8 @@ class TemplateTagNode(Node):
'closevariable': VARIABLE_TAG_END,
'openbrace': SINGLE_BRACE_START,
'closebrace': SINGLE_BRACE_END,
+ 'opencomment': COMMENT_TAG_START,
+ 'closecomment': COMMENT_TAG_END,
}
def __init__(self, tagtype):
@@ -831,6 +833,8 @@ def templatetag(parser, token):
``closevariable`` ``}}``
``openbrace`` ``{``
``closebrace`` ``}``
+ ``opencomment`` ``{#``
+ ``closecomment`` ``#}``
================== =======
"""
bits = token.contents.split()
diff --git a/django/views/generic/simple.py b/django/views/generic/simple.py
index 4571ef8605..355bd25ef8 100644
--- a/django/views/generic/simple.py
+++ b/django/views/generic/simple.py
@@ -2,12 +2,18 @@ from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone
-def direct_to_template(request, template, **kwargs):
+def direct_to_template(request, template, extra_context={}, **kwargs):
"""
Render a given template with any extra URL parameters in the context as
``{{ params }}``.
"""
- return render_to_response(template, {'params' : kwargs}, context_instance=RequestContext(request))
+ dictionary = {'params': kwargs}
+ for key, value in extra_context.items():
+ if callable(value):
+ dictionary[key] = value()
+ else:
+ dictionary[key] = value
+ return render_to_response(template, dictionary, context_instance=RequestContext(request))
def redirect_to(request, url, **kwargs):
"""
@@ -18,7 +24,7 @@ def redirect_to(request, url, **kwargs):
``/foo/<id>/`` to ``/bar/<id>/``, you could use the following URLconf::
urlpatterns = patterns('',
- ('^foo/(?p<id>\d+)/$', 'django.views.generic.simple.redirect_to', {'url' : '/bar/%(id)s/'}),
+ ('^foo/(?P<id>\d+)/$', 'django.views.generic.simple.redirect_to', {'url' : '/bar/%(id)s/'}),
)
If the given url is ``None``, a HttpResponseGone (410) will be issued.