From c0a2388a1c4ead1afaec98e4ebc953a772ca3849 Mon Sep 17 00:00:00 2001
From: Bouke Haarsma <bouke@webatoom.nl>
Date: Mon, 4 Nov 2013 18:31:34 +0100
Subject: [PATCH] Fixed #18149 -- Changed language codes for Chinese

Language codes for Chinese are zh_Hans (Simplified) and zh_Hant (Traditional).
Added support for browsers that still send the deprecated language codes.

Thanks to Olli Wang for the report.
---
 django/conf/global_settings.py                |    2 +
 django/conf/locale/__init__.py                |   12 +
 .../conf/locale/zh_CN/LC_MESSAGES/django.po   |    3 +
 .../conf/locale/zh_Hans/LC_MESSAGES/django.mo |  Bin 0 -> 17113 bytes
 .../conf/locale/zh_Hans/LC_MESSAGES/django.po | 1224 ++++++++++++++++
 django/conf/locale/zh_Hans/__init__.py        |    0
 django/conf/locale/zh_Hans/formats.py         |   24 +
 .../conf/locale/zh_Hant/LC_MESSAGES/django.mo |  Bin 0 -> 17767 bytes
 .../conf/locale/zh_Hant/LC_MESSAGES/django.po | 1227 +++++++++++++++++
 django/conf/locale/zh_Hant/__init__.py        |    0
 django/conf/locale/zh_Hant/formats.py         |   24 +
 .../conf/locale/zh_TW/LC_MESSAGES/django.po   |    3 +
 django/utils/translation/trans_real.py        |   17 +
 docs/internals/deprecation.txt                |    3 +
 docs/releases/1.7.txt                         |    8 +
 tests/deprecation/tests.py                    |   23 +-
 tests/i18n/tests.py                           |   25 +
 17 files changed, 2593 insertions(+), 2 deletions(-)
 create mode 100644 django/conf/locale/zh_Hans/LC_MESSAGES/django.mo
 create mode 100644 django/conf/locale/zh_Hans/LC_MESSAGES/django.po
 create mode 100644 django/conf/locale/zh_Hans/__init__.py
 create mode 100644 django/conf/locale/zh_Hans/formats.py
 create mode 100644 django/conf/locale/zh_Hant/LC_MESSAGES/django.mo
 create mode 100644 django/conf/locale/zh_Hant/LC_MESSAGES/django.po
 create mode 100644 django/conf/locale/zh_Hant/__init__.py
 create mode 100644 django/conf/locale/zh_Hant/formats.py

diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 19d70eeb3e..68459cc76d 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -127,6 +127,8 @@ LANGUAGES = (
     ('ur', gettext_noop('Urdu')),
     ('vi', gettext_noop('Vietnamese')),
     ('zh-cn', gettext_noop('Simplified Chinese')),
+    ('zh-hans', gettext_noop('Simplified Chinese')),
+    ('zh-hant', gettext_noop('Traditional Chinese')),
     ('zh-tw', gettext_noop('Traditional Chinese')),
 )
 
diff --git a/django/conf/locale/__init__.py b/django/conf/locale/__init__.py
index 7ff004d6ca..32201488c8 100644
--- a/django/conf/locale/__init__.py
+++ b/django/conf/locale/__init__.py
@@ -485,6 +485,18 @@ LANG_INFO = {
         'name': 'Simplified Chinese',
         'name_local': '简体中文',
     },
+    'zh-hans': {
+        'bidi': False,
+        'code': 'zh-hans',
+        'name': 'Simplified Chinese',
+        'name_local': '简体中文',
+    },
+    'zh-hant': {
+        'bidi': False,
+        'code': 'zh-hant',
+        'name': 'Traditional Chinese',
+        'name_local': '繁體中文',
+    },
     'zh-tw': {
         'bidi': False,
         'code': 'zh-tw',
diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/django/conf/locale/zh_CN/LC_MESSAGES/django.po
index ac4a4b2022..8c14ac2f95 100644
--- a/django/conf/locale/zh_CN/LC_MESSAGES/django.po
+++ b/django/conf/locale/zh_CN/LC_MESSAGES/django.po
@@ -1,5 +1,8 @@
 # This file is distributed under the same license as the Django package.
 #
+# This is the *old* Simplified Chinese translation of Django
+# For future updates please use the translation in the "zh_Hans" directory.
+#
 # Translators:
 # Jannis Leidel <jannis@leidel.info>, 2011.
 # Kevin Shi <leiarix@gmail.com>, 2012.
diff --git a/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo b/django/conf/locale/zh_Hans/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..7148fa22d89c6a932d0cfb2ed98d7fd7a79183f1
GIT binary patch
literal 17113
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

literal 0
HcmV?d00001

diff --git a/django/conf/locale/zh_Hans/LC_MESSAGES/django.po b/django/conf/locale/zh_Hans/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..ac4a4b2022
--- /dev/null
+++ b/django/conf/locale/zh_Hans/LC_MESSAGES/django.po
@@ -0,0 +1,1224 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011.
+# Kevin Shi <leiarix@gmail.com>, 2012.
+# Lele Long <schemacs@gmail.com>, 2011.
+# slene <vslene@gmail.com>, 2011.
+# Ziang Song <songziang@gmail.com>, 2011, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-01-01 16:10+0100\n"
+"PO-Revision-Date: 2013-01-02 08:47+0000\n"
+"Last-Translator: 磊 施 <leiarix@gmail.com>\n"
+"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
+"language/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: conf/global_settings.py:48
+msgid "Afrikaans"
+msgstr ""
+
+#: conf/global_settings.py:49
+msgid "Arabic"
+msgstr "阿拉伯语"
+
+#: conf/global_settings.py:50
+msgid "Azerbaijani"
+msgstr "阿塞拜疆"
+
+#: conf/global_settings.py:51
+msgid "Bulgarian"
+msgstr "保加利亚语"
+
+#: conf/global_settings.py:52
+msgid "Belarusian"
+msgstr ""
+
+#: conf/global_settings.py:53
+msgid "Bengali"
+msgstr "孟加拉语"
+
+#: conf/global_settings.py:54
+msgid "Breton"
+msgstr ""
+
+#: conf/global_settings.py:55
+msgid "Bosnian"
+msgstr "波斯尼亚语"
+
+#: conf/global_settings.py:56
+msgid "Catalan"
+msgstr "加泰罗尼亚语"
+
+#: conf/global_settings.py:57
+msgid "Czech"
+msgstr "捷克语"
+
+#: conf/global_settings.py:58
+msgid "Welsh"
+msgstr "威尔士语"
+
+#: conf/global_settings.py:59
+msgid "Danish"
+msgstr "丹麦语"
+
+#: conf/global_settings.py:60
+msgid "German"
+msgstr "德语"
+
+#: conf/global_settings.py:61
+msgid "Greek"
+msgstr "希腊语"
+
+#: conf/global_settings.py:62
+msgid "English"
+msgstr "英语"
+
+#: conf/global_settings.py:63
+msgid "British English"
+msgstr "英国英语"
+
+#: conf/global_settings.py:64
+msgid "Esperanto"
+msgstr "世界语"
+
+#: conf/global_settings.py:65
+msgid "Spanish"
+msgstr "西班牙语"
+
+#: conf/global_settings.py:66
+msgid "Argentinian Spanish"
+msgstr "阿根廷西班牙语"
+
+#: conf/global_settings.py:67
+msgid "Mexican Spanish"
+msgstr "墨西哥西班牙语"
+
+#: conf/global_settings.py:68
+msgid "Nicaraguan Spanish"
+msgstr "尼加拉瓜西班牙语"
+
+#: conf/global_settings.py:69
+msgid "Venezuelan Spanish"
+msgstr ""
+
+#: conf/global_settings.py:70
+msgid "Estonian"
+msgstr "爱沙尼亚语"
+
+#: conf/global_settings.py:71
+msgid "Basque"
+msgstr "巴斯克语"
+
+#: conf/global_settings.py:72
+msgid "Persian"
+msgstr "波斯语"
+
+#: conf/global_settings.py:73
+msgid "Finnish"
+msgstr "芬兰语"
+
+#: conf/global_settings.py:74
+msgid "French"
+msgstr "法语"
+
+#: conf/global_settings.py:75
+msgid "Frisian"
+msgstr "夫里斯兰语"
+
+#: conf/global_settings.py:76
+msgid "Irish"
+msgstr "爱尔兰语"
+
+#: conf/global_settings.py:77
+msgid "Galician"
+msgstr "加利西亚语"
+
+#: conf/global_settings.py:78
+msgid "Hebrew"
+msgstr "希伯来语"
+
+#: conf/global_settings.py:79
+msgid "Hindi"
+msgstr "北印度语"
+
+#: conf/global_settings.py:80
+msgid "Croatian"
+msgstr "克罗地亚语"
+
+#: conf/global_settings.py:81
+msgid "Hungarian"
+msgstr "匈牙利语"
+
+#: conf/global_settings.py:82
+msgid "Interlingua"
+msgstr ""
+
+#: conf/global_settings.py:83
+msgid "Indonesian"
+msgstr "印尼语"
+
+#: conf/global_settings.py:84
+msgid "Icelandic"
+msgstr "冰岛语"
+
+#: conf/global_settings.py:85
+msgid "Italian"
+msgstr "意大利语"
+
+#: conf/global_settings.py:86
+msgid "Japanese"
+msgstr "日语"
+
+#: conf/global_settings.py:87
+msgid "Georgian"
+msgstr "格鲁吉亚语"
+
+#: conf/global_settings.py:88
+msgid "Kazakh"
+msgstr "哈萨克语"
+
+#: conf/global_settings.py:89
+msgid "Khmer"
+msgstr "高棉语"
+
+#: conf/global_settings.py:90
+msgid "Kannada"
+msgstr "埃纳德语"
+
+#: conf/global_settings.py:91
+msgid "Korean"
+msgstr "韩语"
+
+#: conf/global_settings.py:92
+msgid "Luxembourgish"
+msgstr ""
+
+#: conf/global_settings.py:93
+msgid "Lithuanian"
+msgstr "立陶宛语"
+
+#: conf/global_settings.py:94
+msgid "Latvian"
+msgstr "拉脱维亚语"
+
+#: conf/global_settings.py:95
+msgid "Macedonian"
+msgstr "马其顿语"
+
+#: conf/global_settings.py:96
+msgid "Malayalam"
+msgstr "马来亚拉姆语"
+
+#: conf/global_settings.py:97
+msgid "Mongolian"
+msgstr "蒙古语"
+
+#: conf/global_settings.py:98
+msgid "Norwegian Bokmal"
+msgstr "挪威博克马尔"
+
+#: conf/global_settings.py:99
+msgid "Nepali"
+msgstr "尼泊尔语"
+
+#: conf/global_settings.py:100
+msgid "Dutch"
+msgstr "荷兰语"
+
+#: conf/global_settings.py:101
+msgid "Norwegian Nynorsk"
+msgstr "新挪威语"
+
+#: conf/global_settings.py:102
+msgid "Punjabi"
+msgstr "旁遮普语 "
+
+#: conf/global_settings.py:103
+msgid "Polish"
+msgstr "波兰语"
+
+#: conf/global_settings.py:104
+msgid "Portuguese"
+msgstr "葡萄牙语"
+
+#: conf/global_settings.py:105
+msgid "Brazilian Portuguese"
+msgstr "巴西葡萄牙语"
+
+#: conf/global_settings.py:106
+msgid "Romanian"
+msgstr "罗马尼亚语"
+
+#: conf/global_settings.py:107
+msgid "Russian"
+msgstr "俄语"
+
+#: conf/global_settings.py:108
+msgid "Slovak"
+msgstr "斯洛伐克语"
+
+#: conf/global_settings.py:109
+msgid "Slovenian"
+msgstr "斯洛文尼亚语"
+
+#: conf/global_settings.py:110
+msgid "Albanian"
+msgstr "阿尔巴尼亚语"
+
+#: conf/global_settings.py:111
+msgid "Serbian"
+msgstr "塞尔维亚语"
+
+#: conf/global_settings.py:112
+msgid "Serbian Latin"
+msgstr "塞尔维亚拉丁语"
+
+#: conf/global_settings.py:113
+msgid "Swedish"
+msgstr "瑞典语"
+
+#: conf/global_settings.py:114
+msgid "Swahili"
+msgstr "斯瓦西里语"
+
+#: conf/global_settings.py:115
+msgid "Tamil"
+msgstr "泰米尔语"
+
+#: conf/global_settings.py:116
+msgid "Telugu"
+msgstr "泰卢固语"
+
+#: conf/global_settings.py:117
+msgid "Thai"
+msgstr "泰语"
+
+#: conf/global_settings.py:118
+msgid "Turkish"
+msgstr "土耳其语"
+
+#: conf/global_settings.py:119
+msgid "Tatar"
+msgstr "鞑靼语"
+
+#: conf/global_settings.py:120
+msgid "Udmurt"
+msgstr ""
+
+#: conf/global_settings.py:121
+msgid "Ukrainian"
+msgstr "乌克兰语"
+
+#: conf/global_settings.py:122
+msgid "Urdu"
+msgstr "乌尔都语"
+
+#: conf/global_settings.py:123
+msgid "Vietnamese"
+msgstr "越南语"
+
+#: conf/global_settings.py:124
+msgid "Simplified Chinese"
+msgstr "简体中文"
+
+#: conf/global_settings.py:125
+msgid "Traditional Chinese"
+msgstr "繁体中文"
+
+#: core/validators.py:21 forms/fields.py:52
+msgid "Enter a valid value."
+msgstr "输入一个有效的值。"
+
+#: core/validators.py:104 forms/fields.py:464
+msgid "Enter a valid email address."
+msgstr ""
+
+#: core/validators.py:107 forms/fields.py:1013
+msgid ""
+"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
+msgstr "输入一个有效的 'slug',由字母、数字、下划线或横线组成。"
+
+#: core/validators.py:110 core/validators.py:129 forms/fields.py:987
+msgid "Enter a valid IPv4 address."
+msgstr "输入一个有效的 IPv4 地址。"
+
+#: core/validators.py:115 core/validators.py:130
+msgid "Enter a valid IPv6 address."
+msgstr "填写合法的IPv6地址。"
+
+#: core/validators.py:125 core/validators.py:128
+msgid "Enter a valid IPv4 or IPv6 address."
+msgstr "输入可用的IPv4 或 IPv6 地址."
+
+#: core/validators.py:151 db/models/fields/__init__.py:655
+msgid "Enter only digits separated by commas."
+msgstr "只能输入用逗号分隔的数字。"
+
+#: core/validators.py:157
+#, python-format
+msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
+msgstr "确保该值为 %(limit_value)s (现在为 %(show_value)s)。"
+
+#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263
+#, python-format
+msgid "Ensure this value is less than or equal to %(limit_value)s."
+msgstr "确保该值小于或等于%(limit_value)s。"
+
+#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264
+#, python-format
+msgid "Ensure this value is greater than or equal to %(limit_value)s."
+msgstr "确保该值大于或等于%(limit_value)s。"
+
+#: core/validators.py:189
+#, python-format
+msgid ""
+"Ensure this value has at least %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr "确保该值不少于 %(limit_value)d 个字符 (现在有 %(show_value)d 个)。"
+
+#: core/validators.py:196
+#, python-format
+msgid ""
+"Ensure this value has at most %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr "确保该值不多于 %(limit_value)d 个字符 (现在有 %(show_value)d 个)。"
+
+#: db/models/base.py:857
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "在%(date_field)s %(lookup)s 需要唯一的 %(field_name)s"
+
+#: db/models/base.py:880 forms/models.py:573
+msgid "and"
+msgstr "和"
+
+#: db/models/base.py:881 db/models/fields/__init__.py:70
+#, python-format
+msgid "%(model_name)s with this %(field_label)s already exists."
+msgstr "具有 %(field_label)s 的 %(model_name)s 已存在。"
+
+#: db/models/fields/__init__.py:67
+#, python-format
+msgid "Value %r is not a valid choice."
+msgstr "值 %r 不是有效选项。"
+
+#: db/models/fields/__init__.py:68
+msgid "This field cannot be null."
+msgstr "这个值不能为 null。"
+
+#: db/models/fields/__init__.py:69
+msgid "This field cannot be blank."
+msgstr "此字段不能为空。"
+
+#: db/models/fields/__init__.py:76
+#, python-format
+msgid "Field of type: %(field_type)s"
+msgstr "字段类型:%(field_type)s"
+
+#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985
+msgid "Integer"
+msgstr "整数"
+
+#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983
+#, python-format
+msgid "'%s' value must be an integer."
+msgstr "'%s' 值必须为一个整数(integer)类型。"
+
+#: db/models/fields/__init__.py:569
+#, python-format
+msgid "'%s' value must be either True or False."
+msgstr "'%s' 值必须为 True 或 False."
+
+#: db/models/fields/__init__.py:571
+msgid "Boolean (Either True or False)"
+msgstr "布尔值(真或假)"
+
+#: db/models/fields/__init__.py:622
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "字符串(最长 %(max_length)s 位)"
+
+#: db/models/fields/__init__.py:650
+msgid "Comma-separated integers"
+msgstr "逗号分隔的整数"
+
+#: db/models/fields/__init__.py:664
+#, python-format
+msgid "'%s' value has an invalid date format. It must be in YYYY-MM-DD format."
+msgstr "'%s' 值的日期格式无效. 必须为 YYYY-MM-DD 格式."
+
+#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date."
+msgstr "'%s' 值的格式 (YYYY-MM-DD)正确, 但日期无效."
+
+#: db/models/fields/__init__.py:669
+msgid "Date (without time)"
+msgstr "日期(无时间)"
+
+#: db/models/fields/__init__.py:752
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
+"uuuuuu]][TZ] format."
+msgstr "'%s' 值格式无效. 必须为 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 格式."
+
+#: db/models/fields/__init__.py:756
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but "
+"it is an invalid date/time."
+msgstr ""
+"'%s' 值格式正确 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但是日期/时间无效."
+
+#: db/models/fields/__init__.py:760
+msgid "Date (with time)"
+msgstr "日期(带时间)"
+
+#: db/models/fields/__init__.py:849
+#, python-format
+msgid "'%s' value must be a decimal number."
+msgstr "'%s' 值必须为十进制小数."
+
+#: db/models/fields/__init__.py:851
+msgid "Decimal number"
+msgstr "小数"
+
+#: db/models/fields/__init__.py:908
+msgid "Email address"
+msgstr "Email 地址"
+
+#: db/models/fields/__init__.py:927
+msgid "File path"
+msgstr "文件路径"
+
+#: db/models/fields/__init__.py:954
+#, python-format
+msgid "'%s' value must be a float."
+msgstr "'%s' 值必须为浮点数."
+
+#: db/models/fields/__init__.py:956
+msgid "Floating point number"
+msgstr "浮点数"
+
+#: db/models/fields/__init__.py:1017
+msgid "Big (8 byte) integer"
+msgstr "大整数(8字节)"
+
+#: db/models/fields/__init__.py:1031
+msgid "IPv4 address"
+msgstr "IPv4 地址"
+
+#: db/models/fields/__init__.py:1047
+msgid "IP address"
+msgstr "IP 地址"
+
+#: db/models/fields/__init__.py:1090
+#, python-format
+msgid "'%s' value must be either None, True or False."
+msgstr "'%s' 值必须为 None, True 或者 False."
+
+#: db/models/fields/__init__.py:1092
+msgid "Boolean (Either True, False or None)"
+msgstr "布尔值(真、假或无)"
+
+#: db/models/fields/__init__.py:1141
+msgid "Positive integer"
+msgstr "正整数"
+
+#: db/models/fields/__init__.py:1152
+msgid "Positive small integer"
+msgstr "正小整数"
+
+#: db/models/fields/__init__.py:1163
+#, python-format
+msgid "Slug (up to %(max_length)s)"
+msgstr "Slug (多达 %(max_length)s)"
+
+#: db/models/fields/__init__.py:1181
+msgid "Small integer"
+msgstr "小整数"
+
+#: db/models/fields/__init__.py:1187
+msgid "Text"
+msgstr "文本"
+
+#: db/models/fields/__init__.py:1205
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format."
+msgstr "'%s' 值格式无效. 必须为HH:MM[:ss[.uuuuuu]] 格式."
+
+#: db/models/fields/__init__.py:1207
+#, python-format
+msgid ""
+"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid "
+"time."
+msgstr "'%s' 值格式正确 (HH:MM[:ss[.uuuuuu]]) 但是时间无效."
+
+#: db/models/fields/__init__.py:1210
+msgid "Time"
+msgstr "时间"
+
+#: db/models/fields/__init__.py:1272
+msgid "URL"
+msgstr "URL"
+
+#: db/models/fields/files.py:216
+msgid "File"
+msgstr "文件"
+
+#: db/models/fields/files.py:323
+msgid "Image"
+msgstr "图像"
+
+#: db/models/fields/related.py:979
+#, python-format
+msgid "Model %(model)s with pk %(pk)r does not exist."
+msgstr "模型 %(model)s 的外键 %(pk)r 不存在。"
+
+#: db/models/fields/related.py:981
+msgid "Foreign Key (type determined by related field)"
+msgstr "外键(由相关字段确定)"
+
+#: db/models/fields/related.py:1111
+msgid "One-to-one relationship"
+msgstr "一对一关系"
+
+#: db/models/fields/related.py:1178
+msgid "Many-to-many relationship"
+msgstr "多对多关系"
+
+#: db/models/fields/related.py:1203
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "按下 \"Control\",或者在Mac上按 \"Command\" 来选择多个值。"
+
+#: forms/fields.py:51
+msgid "This field is required."
+msgstr "这个字段是必填项。"
+
+#: forms/fields.py:209
+msgid "Enter a whole number."
+msgstr "输入整数。"
+
+#: forms/fields.py:241 forms/fields.py:262
+msgid "Enter a number."
+msgstr "输入一个数字。"
+
+#: forms/fields.py:265
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "确认数字全长不超过 %s 位。"
+
+#: forms/fields.py:266
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "确认小数不超过 %s 位。"
+
+#: forms/fields.py:267
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "确认小数点前不超过 %s 位。"
+
+#: forms/fields.py:355 forms/fields.py:953
+msgid "Enter a valid date."
+msgstr "输入一个有效的日期。"
+
+#: forms/fields.py:378 forms/fields.py:954
+msgid "Enter a valid time."
+msgstr "输入一个有效的时间。"
+
+#: forms/fields.py:399
+msgid "Enter a valid date/time."
+msgstr "输入一个有效的日期/时间。"
+
+#: forms/fields.py:475
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "未提交文件。请检查表单的编码类型。"
+
+#: forms/fields.py:476
+msgid "No file was submitted."
+msgstr "没有提交文件。"
+
+#: forms/fields.py:477
+msgid "The submitted file is empty."
+msgstr "所提交的是空文件。"
+
+#: forms/fields.py:478
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr "确保文件名不多于 %(max)d 个字符 (现在有 %(length)d 个)。"
+
+#: forms/fields.py:479
+msgid "Please either submit a file or check the clear checkbox, not both."
+msgstr "请提交文件或勾选清除复选框,两者其一即可。"
+
+#: forms/fields.py:534
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr "请上传一张有效的图片。您所上传的文件不是图片或者是已损坏的图片。"
+
+#: forms/fields.py:580
+msgid "Enter a valid URL."
+msgstr "输入一个有效的 URL。"
+
+#: forms/fields.py:666 forms/fields.py:746
+#, python-format
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "选择一个有效的选项。 %(value)s 不在可用的选项中。"
+
+#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002
+msgid "Enter a list of values."
+msgstr "输入一系列值。"
+
+#: forms/formsets.py:324 forms/formsets.py:326
+msgid "Order"
+msgstr "排序"
+
+#: forms/formsets.py:328
+msgid "Delete"
+msgstr "删除"
+
+#: forms/models.py:567
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "请修改%(field)s的重复数据"
+
+#: forms/models.py:571
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr "请修改%(field)s的重复数据.这个字段必须唯一"
+
+#: forms/models.py:577
+#, python-format
+msgid ""
+"Please correct the duplicate data for %(field_name)s which must be unique "
+"for the %(lookup)s in %(date_field)s."
+msgstr ""
+"请修正%(field_name)s的重复数据。%(date_field)s %(lookup)s 在 %(field_name)s "
+"必须保证唯一."
+
+#: forms/models.py:585
+msgid "Please correct the duplicate values below."
+msgstr "请修正重复的数据."
+
+#: forms/models.py:852
+msgid "The inline foreign key did not match the parent instance primary key."
+msgstr "内联外键与父实例的主键不匹配。"
+
+#: forms/models.py:913
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "选择一个有效的选项: 该选择不在可用的选项中。"
+
+#: forms/models.py:1003
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "选择一个有效的选项: '%s' 不在可用的选项中。"
+
+#: forms/models.py:1005
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "\"%s\" 不是"
+
+#: forms/util.py:81
+#, python-format
+msgid ""
+"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
+"may be ambiguous or it may not exist."
+msgstr ""
+"%(datetime)s 不能在时区 %(current_timezone)s正确解读; 可能时间有歧义或者不存"
+"在."
+
+#: forms/widgets.py:336
+msgid "Currently"
+msgstr "目前"
+
+#: forms/widgets.py:337
+msgid "Change"
+msgstr "修改"
+
+#: forms/widgets.py:338
+msgid "Clear"
+msgstr "清除"
+
+#: forms/widgets.py:594
+msgid "Unknown"
+msgstr "未知"
+
+#: forms/widgets.py:595
+msgid "Yes"
+msgstr "是"
+
+#: forms/widgets.py:596
+msgid "No"
+msgstr "否"
+
+#: template/defaultfilters.py:794
+msgid "yes,no,maybe"
+msgstr "是、否、也许"
+
+#: template/defaultfilters.py:822 template/defaultfilters.py:833
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d 字节"
+
+#: template/defaultfilters.py:835
+#, python-format
+msgid "%s KB"
+msgstr "%s KB"
+
+#: template/defaultfilters.py:837
+#, python-format
+msgid "%s MB"
+msgstr "%s MB"
+
+#: template/defaultfilters.py:839
+#, python-format
+msgid "%s GB"
+msgstr "%s GB"
+
+#: template/defaultfilters.py:841
+#, python-format
+msgid "%s TB"
+msgstr "%s TB"
+
+#: template/defaultfilters.py:842
+#, python-format
+msgid "%s PB"
+msgstr "%s PB"
+
+#: utils/dateformat.py:47
+msgid "p.m."
+msgstr "p.m."
+
+#: utils/dateformat.py:48
+msgid "a.m."
+msgstr "a.m."
+
+#: utils/dateformat.py:53
+msgid "PM"
+msgstr "PM"
+
+#: utils/dateformat.py:54
+msgid "AM"
+msgstr "AM"
+
+#: utils/dateformat.py:103
+msgid "midnight"
+msgstr "午夜"
+
+#: utils/dateformat.py:105
+msgid "noon"
+msgstr "中午"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "星期一"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "星期二"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "星期三"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "星期四"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "星期五"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "星期六"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "星期日"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "星期一"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "星期二"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "星期三"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "星期四"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "星期五"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "星期六"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "星期日"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "一月"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "二月"
+
+#: utils/dates.py:18
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:18
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:18
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:18
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:19
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "八月"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "九月"
+
+#: utils/dates.py:19
+msgid "October"
+msgstr "十月"
+
+#: utils/dates.py:19
+msgid "November"
+msgstr "十一月"
+
+#: utils/dates.py:20
+msgid "December"
+msgstr "十二月"
+
+#: utils/dates.py:23
+msgid "jan"
+msgstr "一月"
+
+#: utils/dates.py:23
+msgid "feb"
+msgstr "二月"
+
+#: utils/dates.py:23
+msgid "mar"
+msgstr "三月"
+
+#: utils/dates.py:23
+msgid "apr"
+msgstr "四月"
+
+#: utils/dates.py:23
+msgid "may"
+msgstr "五月"
+
+#: utils/dates.py:23
+msgid "jun"
+msgstr "六月"
+
+#: utils/dates.py:24
+msgid "jul"
+msgstr "七月"
+
+#: utils/dates.py:24
+msgid "aug"
+msgstr "八月"
+
+#: utils/dates.py:24
+msgid "sep"
+msgstr "九月"
+
+#: utils/dates.py:24
+msgid "oct"
+msgstr "十月"
+
+#: utils/dates.py:24
+msgid "nov"
+msgstr "十一月"
+
+#: utils/dates.py:24
+msgid "dec"
+msgstr "十二月"
+
+#: utils/dates.py:31
+msgctxt "abbrev. month"
+msgid "Jan."
+msgstr "一月"
+
+#: utils/dates.py:32
+msgctxt "abbrev. month"
+msgid "Feb."
+msgstr "二月"
+
+#: utils/dates.py:33
+msgctxt "abbrev. month"
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:34
+msgctxt "abbrev. month"
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:35
+msgctxt "abbrev. month"
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:36
+msgctxt "abbrev. month"
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:37
+msgctxt "abbrev. month"
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:38
+msgctxt "abbrev. month"
+msgid "Aug."
+msgstr "八月"
+
+#: utils/dates.py:39
+msgctxt "abbrev. month"
+msgid "Sept."
+msgstr "九月"
+
+#: utils/dates.py:40
+msgctxt "abbrev. month"
+msgid "Oct."
+msgstr "十月"
+
+#: utils/dates.py:41
+msgctxt "abbrev. month"
+msgid "Nov."
+msgstr "十一月"
+
+#: utils/dates.py:42
+msgctxt "abbrev. month"
+msgid "Dec."
+msgstr "十二月"
+
+#: utils/dates.py:45
+msgctxt "alt. month"
+msgid "January"
+msgstr "一月"
+
+#: utils/dates.py:46
+msgctxt "alt. month"
+msgid "February"
+msgstr "二月"
+
+#: utils/dates.py:47
+msgctxt "alt. month"
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:48
+msgctxt "alt. month"
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:49
+msgctxt "alt. month"
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:50
+msgctxt "alt. month"
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:51
+msgctxt "alt. month"
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:52
+msgctxt "alt. month"
+msgid "August"
+msgstr "八月"
+
+#: utils/dates.py:53
+msgctxt "alt. month"
+msgid "September"
+msgstr "九月"
+
+#: utils/dates.py:54
+msgctxt "alt. month"
+msgid "October"
+msgstr "十月"
+
+#: utils/dates.py:55
+msgctxt "alt. month"
+msgid "November"
+msgstr "十一月"
+
+#: utils/dates.py:56
+msgctxt "alt. month"
+msgid "December"
+msgstr "十二月"
+
+#: utils/text.py:70
+#, python-format
+msgctxt "String to return when truncating text"
+msgid "%(truncated_text)s..."
+msgstr "%(truncated_text)s..."
+
+#: utils/text.py:239
+msgid "or"
+msgstr "或"
+
+#. Translators: This string is used as a separator between list elements
+#: utils/text.py:256
+msgid ", "
+msgstr ","
+
+#: utils/timesince.py:22
+msgid "year"
+msgid_plural "years"
+msgstr[0] "年"
+
+#: utils/timesince.py:23
+msgid "month"
+msgid_plural "months"
+msgstr[0] "月"
+
+#: utils/timesince.py:24
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "周"
+
+#: utils/timesince.py:25
+msgid "day"
+msgid_plural "days"
+msgstr[0] "天"
+
+#: utils/timesince.py:26
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "小时"
+
+#: utils/timesince.py:27
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "分钟"
+
+#: utils/timesince.py:43
+msgid "minutes"
+msgstr "分钟"
+
+#: utils/timesince.py:48
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:54
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: views/static.py:56
+msgid "Directory indexes are not allowed here."
+msgstr "这里不允许目录索引"
+
+#: views/static.py:58
+#, python-format
+msgid "\"%(path)s\" does not exist"
+msgstr "\"%(path)s\" 不存在"
+
+#: views/static.py:98
+#, python-format
+msgid "Index of %(directory)s"
+msgstr "%(directory)s的索引"
+
+#: views/generic/dates.py:42
+msgid "No year specified"
+msgstr "没有指定年"
+
+#: views/generic/dates.py:98
+msgid "No month specified"
+msgstr "没有指定月"
+
+#: views/generic/dates.py:157
+msgid "No day specified"
+msgstr "没有指定天"
+
+#: views/generic/dates.py:213
+msgid "No week specified"
+msgstr "没有指定周"
+
+#: views/generic/dates.py:368 views/generic/dates.py:393
+#, python-format
+msgid "No %(verbose_name_plural)s available"
+msgstr "%(verbose_name_plural)s 不存在"
+
+#: views/generic/dates.py:646
+#, python-format
+msgid ""
+"Future %(verbose_name_plural)s not available because %(class_name)s."
+"allow_future is False."
+msgstr ""
+"因为 %(class_name)s.allow_future 设置为 False,所以特性 "
+"%(verbose_name_plural)s 不可用。"
+
+#: views/generic/dates.py:678
+#, python-format
+msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
+msgstr "日期文字 '%(datestr)s' 不匹配格式 '%(format)s'"
+
+#: views/generic/detail.py:54
+#, python-format
+msgid "No %(verbose_name)s found matching the query"
+msgstr "没有找到符合查询的 %(verbose_name)s"
+
+#: views/generic/list.py:51
+msgid "Page is not 'last', nor can it be converted to an int."
+msgstr "page 不等于 'last',或者它不能被转为数字。"
+
+#: views/generic/list.py:56
+#, python-format
+msgid "Invalid page (%(page_number)s): %(message)s"
+msgstr ""
+
+#: views/generic/list.py:137
+#, python-format
+msgid "Empty list and '%(class_name)s.allow_empty' is False."
+msgstr "列表是空的并且'%(class_name)s.allow_empty 设置为 False'"
diff --git a/django/conf/locale/zh_Hans/__init__.py b/django/conf/locale/zh_Hans/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/django/conf/locale/zh_Hans/formats.py b/django/conf/locale/zh_Hans/formats.py
new file mode 100644
index 0000000000..330c2f296e
--- /dev/null
+++ b/django/conf/locale/zh_Hans/formats.py
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+from __future__ import unicode_literals
+
+# The *_FORMAT strings use the Django date format syntax,
+# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+# DATE_FORMAT =
+# TIME_FORMAT =
+# DATETIME_FORMAT =
+# YEAR_MONTH_FORMAT =
+# MONTH_DAY_FORMAT =
+# SHORT_DATE_FORMAT =
+# SHORT_DATETIME_FORMAT =
+# FIRST_DAY_OF_WEEK =
+
+# The *_INPUT_FORMATS strings use the Python strftime format syntax,
+# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
+# DATE_INPUT_FORMATS =
+# TIME_INPUT_FORMATS =
+# DATETIME_INPUT_FORMATS =
+# DECIMAL_SEPARATOR =
+# THOUSAND_SEPARATOR =
+# NUMBER_GROUPING =
diff --git a/django/conf/locale/zh_Hant/LC_MESSAGES/django.mo b/django/conf/locale/zh_Hant/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..6b77703b852874e9ff4647a5f59986062afd04e4
GIT binary patch
literal 17767
zcmcJV3w%}8ndp~_kD}GqskK&Hcd1BHNqAH(6SS4^5QJz3qE<T&vy-z)jyX9eJr6>-
z?KBYrfe;e~!Xtt3mN$VQgb-k+)zO*TPCJgBsnt5u&e`YDdVTaxd#!iuz5j2obxuw~
zP&>W%{P^<UYwh)3-}=69@6GGij#{tyU3HOCH^FaRp;RT;uYE#tm0I#?rEY-ra6DWK
zYvEtRyWphjm6`&B@K4|~P}(^SFNHrbeBCf^_)EjL;k}gmEu0I#`WdAjg{$Fw=)y&C
z3WJyfyWuS`4R3^3e^#l_!!N-?I0xpzCGcXn9bN}_nRGv7is}rM@%=5l41OQV`2WeI
zlkiH?Z<_Rba5U+Q==5@U75o(Z6qNq+p^R&`xnE=M$KW;OuZACko6Y@QQ2IRxWgNYb
zsj5>@#`hAG@~@ivE|l`Wg0eNghBDquSZpbOJ-ixPP|8h!<KUf8+W!mqap;40z%Z0~
z>^12gIE!=w-U$mn$6TNf%03)|e+Ff;cY*ovtFR4Dh5rEALN)qkJ>M~K9_h)Dp{nn|
zFTzffJ_oNQ{VJ4sya{Fg7h76?ZiJFQ1<E?lgR+k{ycO0#S)Z*?=D*kQC}gOrAC7`Q
zfl}^gQ0AM2(#~5@^ySho==HiCUP5}RNq-GW`C0H$ct4bW_8A_7vd*WWtnYVC`bCre
zA)G<}kD>Jc*)dvwZh=>ko&Y8PE-3Y9L5`G~2Sv{+p!6Svvc8MqZSWYB@~@lwal<#D
zjPF07%=>-Ai&=DO=W;0Hy#`ACPn+~j=KdF<^n07(olwR%4RX}fTqyM%cnPeAqSqlP
z>-Zg$e;7(X$Dq_dWzye+vfqCXFNQyZVo&}J%DMSCe?+e*Ls^IEQ0Dz8lzJWTlW?Em
zX(;7?VA8Kcng82R=KDJ+`gqY;J?<Nz^m{WD{T>6Q+#_%nwBba!7lz;~@Jn#ctx6Tc
zD3p1fgtAU&q4fWEP{#XHDDAxiWgNdV>5Iqd^%@N&|7tiBUJvE`JO=NDT~O954ljpq
zLOHL$g);w9dAk4Wp_KbPlyj8_rQ8fC_2xs-|3{&$-x7EUJPt2|eNf7sGkgJFO8SR}
zKZa87RX7U%!Y~PC+;2ckgqobM`+opp8dWuv^<Dv`zpd~JxC2T%2cVqi9&`UWDC2n1
z@JA;9C-7tBzh?3i@Db8)LTP6<n}VrOB~aF-2FiXkK<T#yO8qt{^V($cyP?$I31u96
zq0}ER{Gs7541Z&I1&2<`-3X;#Arw6<Hu+_SmFE6ZD0=ZElycoB|ES^fP}+M1%K3T2
z@IRr{yNW|0cKmZt`Wp|W{5??Y-~uS~tTGH3)<RkDs7Zg@un~?XzsaQA4c8fNH0(0m
z2Bn={P{wfx%03OitKf4`*6|;qjN_jTe+uP%y>9OR+~g;q^#4o4-@vO#s{(w%Md&UR
z{n>{RVT;vsuoAurXTgUiDD|gs3zYTv7bxrTD=7Q>d&5y2UP+HO{Dk4BVF~#+!BY4*
zTnJA?Y5&GaTEEKS-J}N~LsaiU3yzzt{nl*AkW>KP3Ok|9_q$O1$@3=tD!i8T>rl?o
zJ5c8PE|hYYep%<=2*s|BfpY&YcnzFm(vLtXzX;0ud<$A|1C(-oQ2KchO8r+&e#+#(
z3#I=nZ`ZsQN_#gzsW-vo7ehHOa|{<iDfbu@e;hISYoMI(4k+y&hPZt7thxU(ly+Z-
z{8R7nN6OuL2Xll45YwSb;aFG?#jke5$KZRg0)8FiJPi)OBKUj5KmCdxPZUZ&t?&W3
z4azv)h8$US%@n1+0E?iM`*V053_-D5P4E`D!{omJrQFY;tmE5I>c0;^1#d?AWW8^P
zGM^bx`kQOgk3*^VO(^U5SBA|{`gs~ky^|*Ytl^7L+I<Or9sa_kr!r}2Z!VO2Ux(7}
zLX+<|>BVpc`3)xjd6WMVypsIaOgaUnonOQ2;qOfTCvgsve<QpHj)9`z6;S$r+OQi+
zxr2tihW&<r1Eu_n@RRVzP{x}y_uqjs&v&7eyMo|Rcpa2=9|Pt79Z>q2X*dtwN_qj5
zaV>???moj_!!uC&eF2V#uRyU&mvNZK!O>9mVKS6{9){9yC1lCfQj>q&@HxYm;f>sn
z8;Y}*{%?XZ&Re0hS76e2L$L=lptO50l=6)b)l@C;i|~8!QJ93Ehs9sh`)ETczX!_t
z^qBM+lYYVQWhnjr9LhM}fl}{X!;A0H@yb<@EcF0n3aSlC`5!>3|1y+w5r@*>dr<N(
z=kUq;To2_ueF;kY4?-!o5Xw0YK&ijp+&^IWtjRxT(m#e$?_c4^;TtCX9+dH1UaWaF
zWb4#*P}Y4u{0t1j&%%`^e+QKDoHcwAN;@w>>E{)bpD=ve<i7_+FD{?1%Uubj-e=%r
z@Mb9U{x+2PwL|Iu6qNp6GJMT20j0mU;U(~WI0|0Gp_FznGyFJ|`kylC&l`?49B=q#
z!y?0JQ0mP#>G_6_82+VUC6sbOlU`!@9m5rdt%mCiJE7FuVbTW;d!fvy-=xnPK5z2B
z52fCZO#V*|e{PsEe9Q2+hVL7WnyJ_4O2canZ-COTWzx4m>E||+zQf$V3yvcH9+N-Q
z<j*rKg|d%j@FI8#e>$N2q~2uYPmmPyGepjy{G{*o$oC{+ezV{m$PLI-Chtu{*?Z~d
zS)>NZN8~pKp=<Rn@)wBwM6cy1da=d3!cIcb^Z$ulj8q_tk&iLnx1jvKi%j>fh#O=w
z=64a-tGSkQ{b$HZWGxaw?m^}tO^Ahj5$Qu7LE^~k$nTN2k<9Nj7jnjMwQ3u(A1Oh8
zfXGkY4MpMm2w|%FS47UT{2oJ|M81x^gJgb}Q)fAe_mB|MZEiS*Vp|p>3FNrRyBUtA
z-o=Rc-iMH{AwJ{`B5~pU$U#JGZ0_%IllTYtABZ3Mk;%Ib{x77?q<>?$8BRco5gYk7
z@;l^dWDg?0e?iV7Uq#xHRmeFcjqFC`_X@HR2_xS`<oAynY7}#Mf$KMr7L)gq;S{(R
z5kDorA0lIsPe>x?_pO}kQm$V`wwk=3!&>COnY6$~Rv>?k<o^CQiJd0n8u%dc&n7MS
z46*_FH4;D;AU7d9kX^_c<QYVMRmi1C4Eb9`ezP^yzr$Xn4EYIiJ5qqi@9&Xy-W4$<
z+-I)a3>U$VnQOssk$aKvBR$9=M1Fsc{1SOU68!Rz6W$fJ%WxhXk2IU~Yp~T^KL?K>
z(@c6h{O{&ku*qCcGW-Qxip)U%)8uu+W5{12-$9lkw<5W}qa+?irXur^e?zWECL;2C
z8TmV;2)P_7L`Ea>t46Lsf1Zb*L=GS?BAMT#T>Onmbisc@zJi=YE~B3O?nAzeG$Q{4
z`390i<o7G29{Dsf7kL8tKggAc{DK<lO4_=@T$jVYM1G3gg5>@hOyX)Gbq2uaOx_m^
zm%vkUJ!WiPtsSk(kBqT=Atz!5Ls83F;*UhRL!Mvf*w$h@;P=Vjm}4ypg)Q5v4f|{C
zaJ^OS)EBC;c|JSpMEx~Re#EK>#R9(IxTsa`SpHzt3D<_5sN>_>k`mU^P|&f)=2gVP
zVJ8?}D0z~VADL?TqgIVwFBR>Ya(`tk6pL8&X0o$`lMWa8oq%s)(Du5liAB8bVnP2m
z%?S077J9`P)Y!a0C{!J*&5uasnvl;4WGdJBqg7V4in(T54cO&QfJ$~C?AX3~y&_)4
zV63Lx3FrGL8m+Ho%rqA9FLlT%ua7!IQ{0SL_ZG|Fx!&Ir?{BI1x2#x=8ygvC*0jo|
zw;)TT7g|<R*15)x7Fu&y6f-}T@DY9mB_#zjW@HL{KszHhF?)7VNy#^gB9U(t#=PHS
zkNub1${EfG&3>co(F-;mt#VKmbf6+?dbjdMXd>S#k3~fT*q@vg60Ip5KJ$^9{O|!@
zpa<E53IBy|KA^cF1J3NJZTXxE&QieA%5{N4ivl5(A$P{v21IY7PNfqb@wS6{J7Md7
zj@WpsEX?uXM9s1Tk)i9CY0VTLR&czf#-sD+tN*kTH7!tX2mN+XO~WPx)U>c&?ymrq
zoNm9|uol!(AX25K#VS!`HEpRAF1P)Ulc|dB2q#t*I{`Z!i%2WQPOuVdql*2NR^Alv
zSmkFXsER|OfJ2LUGxe;73^RYk+vD|QW!AC=QYhjLw>WGs^#^2prJ-<?p*ax-681+K
zsx>oM8IU0t#{!jhSjIKoj@kiXl^v{f)O5xXR?|Z@HFiP7skOtXi`Y1CBO+>gnC<ea
zX)_n7SJRg|6;*16UWyrV!t=E05wl5tCL@Hti{6pvR5)U9<RV8yNCvQ|YKC79PY5II
z5Bi)Xm~T7mcqZHq1VVKThmB{KXT+j(JhR632Q1s?3p<ersoH40#T28QDxWnDdmOMM
z5n~ezy#^LKQfQo<Jfkm}Rhb!##ONwoWiwRi#Pn>{gmiY$!suo6x;9`}IGE3mSj%7O
zk4EqT7%%C<8EhxS^8SI%h|>wNaXHnP&LV%n5!YdPb{G2^VjXY`_7V(vMHQP_f!~T)
zdDtB(g7-ix@sqy%p$%z|Xj(xdyk-La8h>=5ck4pUMXEw|nGzq=q#4-%ix!zS)5sZ`
zo}QPTGn~kX!=Y3qzK}(cO%KXpa=sbEW<^88TODbEs2)J;K2lxj!`7M^TBO~hr#m`7
zV<TruU_m+UFULg!vC46{lVAjm_6I91s&Yms6B%#pDi<-1NjQSj;ixc!s`}b0Cz#W?
zZfs8J;@dOlL?)Blk#~=(@Xik?bHRHL&Yw5DN%1oy<r&{Iw0|e}5D%}Voz>6^o)!)k
ztgFI)W*v<#8VUyLEuTJhgO;qkp5?^2$?`;Mov<B@hPaA`Jli?TDG$d8|I{oA!(_E3
z94bN=bX;bFqgk9YiqNG*nOp@uKQK#tne0-noM<x~HH&@mR|c)QPQB$tR~&rSzQ!NK
zk};exK0<7)4(Ze^qDRcytgv6iXET<t-}4}|Vo|Y9WAhf{XF?IjGinQK1F^6zQJsX5
z_F{~oUCzMDoeDb^@dDEG4d5c(66$LV;JtXJ3Nh>VI-zi-z932?9d?{*HJfE|>eOuP
zv0u#&u`<3;UC<gcJrs<FLxC~lMeRtju0h`zD-=Y7OYDmAa*QGvbwZ&*3yQNURI_7v
zL(l)rDa|OH%GFRcr-F5%zX~;{#>O$t5nmuXLIj*~5X7lu)1bFLbF`BpODnu+pcRRR
zWk+xXk|dQ+a9ZhK>;yB>8Mkyi$(?N7TDr9I<SC+(b=J{wBwrMvh67Kgbj`k0sX16-
zS+M);pr<+a*+d26a_@`b9Pf(-9W~bu25p}Wm)g};YHn2xzHcsSLA7~ybg@*QhvSdo
zL%C$-944hN19m;`xrWSOeL*x-zzQ3c@naRL{I%Q(qc0^WN(qlR6*+N9i98O-kcDW7
z=ay@$$*HZ*4-b1XDpVyQ`VIv}<v?Y~o7Vlr07NbK({R|XWQ5tM=l+noU#w)VHqyzW
z5ax)-9elGayf``{A&%5}g$GqPtF}^z{w+>sg`WfAlML}{Rvqpt5-Z08aaIa1kZnz`
zaw@95J~>1opEm#wuxO+VME2RMTZ7_O4eg~4MIV||Pb4%XCtT;q*|3U3)x@=oA(L@`
zeJ~V`RFkt<2R087zes@dK+us*Lqqj3&+OR)VJx;PEm5VSXPiShyyG~i(Q(*y4wGyn
zPMRl1j6W+Z27<#Rxe_asV(&#iO2s!1K5uwYMXZ*yEUJ&f+cIVLNZS@%MO~G@qAL5`
zrJpNl?hk9`53G=VARVD^Z+tTB!3SApNJ>s?<|+3>`ty8&L{<cc*`g-i*D8ZK@{~vx
zHme~O66xx6d1#3&JL?^aR?!5i&&kdSpG!j#;^)Qs!Jj7*?wO1Tnh?mu$Eq|Ie4NJw
zH9y2Tl?|F7i+CHgz>X>;7M9bsK%2yjm#?S_`74}4IZE;(f-__kLexfF5X+N2Aq-eb
z<GwD`${$y~Ok!W%$44DTZB#4$0^E|!+0eqY`APX}P)Iq;oKAcmmT^HKwAilp;CQRF
zfH23(i`D9|i*R+JiAy8-YQc~N&OCB0&}RKYb@W{h46kTn;UH>{y^n@tK@Nsz6r3f|
zQM~KWIgW2(lnmaX6tb)_#*7J*eX6soc#?vSPZXleuHiwjjAIp6We#JGfhAGJn)&%7
z+7V!eqSKzo=N%FOh|kk3&mekR$upHhbl?w0qIR%?5F+=DleCgGb6ROp2JeBTkS@6P
zj<VPXPhWBLc**Ju+zZA6fg!i3A11)Xe_}(+su+J&EF6)!mhoh!%EGn}Jr4zmfHRv_
z#$zm^3&q0KvJixO>cQ%;?L7vo2ZPl?!U6SQE%A>p8@%#lSBX~3jJ(5FABtJnCW@d6
zV$RJG_2L%nniQ8f!uDRD#Lz09JH0m4gJEAxJ><Qm8_R36p>OZZ@lg*sL1$@9f`+V%
zddTlY<#`C5dl+AWpno#khn)b^c*Kb)yAY3HmlNMCE+k07EsWC7`@`~LmBWki@H#w;
z@Nsw+VZnJ>5*Q3^-U}0kW@)!RJa2eKJkIdu@jb({7C5z%7vQbikSXS5=vNpyMY0d+
zIeFReI43U?_vB`I6C7+@&u%bnrk0z*yatn5H=2`|@u)djGAnI)h!d4v8&-C#Qpxrr
z5yfM=TI7_gs!%NK{fVf@u}+W20!UERaEN&+t7`ndpue&z%0)27+Xs!vAVnvXw`>s=
z3=ty*LyJ|YBC0}RRV&)V!-bOQ!TS?Y5;k~$<T5fo7#dGE<&G*1haM*qE|}vhcu3rL
zC|G38U__On(es^JUey$oL@NEhg5p?Zq@XNRWQ{I;psZlJJf2dvU<MAc$eKKH(w7S+
zPU4?6>CU1_6K|V1Y2ri*7R+}R^OSIYxyjbVDMhz`<+h3ZM$aR_DBzF>BRq11!bMhn
zeZ{27lfGizWiIZiln1dwo{+vu;UMu|rBhJm*fm8Ndtl|2+5S2^m~Z7(MWeMv6DHKv
z)fGmiP5&ZiiBz3Xt7jUSP&>irO>hE-(ratN(yE1J4^PM+T{5R+=HN0+Dx5f4o+Yr0
z1!dj?m)PS8ykPMMr{az5aKwq;{b1Rwf+>ULq{~H4xL~G<^op!0<^E`P*hQAt*XUC3
z`KVwPp<krP3hKwD$la5sTKe+tiBm`CelJL!JmQ{xD&E)X9@^-3?bRO)NG3KOiT5?Q
z4K4A$)9Kb{lbe?(x>hCDH>Y}6COS6#d&3h-2QA(!u85UfzCF>qKDFaO>ddM{TW6xV
z9shp*w*f1$=?S;BA+c@19cY_sxot;M%g%URwI&bl(b<XSj_hy-`^f}H79*kQ%x3_L
zF_ZMXL?-ZZ&o!mDHPfoQPUb)bX(rvUiP>b!W<Cz+`a`}XxF?S#PpsAJp$BmO3)AfP
zg7}$Mw`p1O+2tSQD*;1s8wQe3^viOsZ<a;fushM!ttU=jZqo^Ut>-|=+%E<0nH?;f
z49WZEFhXnIx{ln=2ruQWKdQkGe<gpx_O&X>^t}OJ;EO^0%nH;c-LaP9sr|dopSNx%
z)5eF7C*P7Ly%nGEQCiL!;9%o9jf^<1?9S=q<F+=Y8;+qRiS>Q%p$)?(ku98f_Hg?2
zR?1wcfNm|Z{`d!!N$%@^YhaD{GMz)j0nqO|F4Uy{j6li3VjuK@AieQiviYog^0?bG
z5bxib+P_t~ot=rUX2qRE%c}Um5y_Lpwo~ruld0Y3l5K~Qt2TKhn+}+g?)I&Tmab&S
zioBc;2>FV36CFp~rWPrk+;k>>Zh7)-6It>8e&rtOc2{qs53i|R&*){yo02_z)bCrC
z*t&t!g~gVyBiU)4cPsNHK}zUP35nhv?#=@_(>i&a!Ka?uo@!ri#-D0A>UOp8S4I#&
zw}s)j&HFOTuyIwQw};^lHjz5KI?;JtCHk7un|5J)Hl#LnyUi=oo7ag_dAq2XtkmgV
zMrWp_WanXbRjW$0o-`{F?>m+5-z}YLy|wb(HBE_@gIay_v$<k1hulE#;{9u6&2u#{
z&+TawMQl65vNZ44W80M4xn1fvHKz6+Wd!Lp%ag~kH0woiQmrRb8xP3<(w(Q>L+$Bh
z&&E%maJzckEe%R6*}i`H{1ES3_rYHuC~985nMF+Q=uho$O)TrxLt+4_6HV#HC*_j^
z`zn18E5ZR`aXz4+cf#DJz3KHQM=F&%(4t$^t{}00o!j1;=xT6xZFbxCizDh<g@4eW
z5AYQnS4=xAet223?JSN$PSoHx1WOmm_f~0W({9r<?%`9ZmCWs_)SgDEl=H^kXKH$l
z>mAoU=e)nql(}&0=MVgk>SM^t;5ys)i1Qgba6UDd;d%>^GhF%HFr)>xqG3Q>aQhyY
z^V%`MX-ghj#l`S82RGVmOKw%P^+T$r2KwBl-Nx27Z%A$5tKFi?y`gRI&@3;Sp{%99
zI$$`H>yEPJi6iJ<qprb)+rK_}a&xMAWx8P}cR9xRdcqrT*S)^A7m}8|7rJ7Twlo-}
z(1RFOLJW`h<>AAM-YEwm)7a3y<dJk(<Jv%soNL_O@SEo!=@F)-P0jGCY;Pt@TQjrX
zr+1%c>@t2Y-q(>_zXns1m;Drh0bAagIJRlfa2lhPIJjKqzO^OM)biHAW|T&Uc;<@)
zXE(9ES!w7HR;5-SG?pssOqIK<gW#1T>@~y&r#E!5k-GK7(SG;vW`;oEDh76AH=$U(
ze_hU%JFp?Wat&T6({k7T_}LY**F#?f55C(KL)vyExo$5C<#ukP+z4M}%?AlNVa6!p
zPv~gS5x5-(6UR<x{L9&sGC;R)O={&vbA`8MBwnJm$L-(a&0x){_?foc?-Zz7s-a0@
zT;8%<@xIlGHLC`{T#UEkY*!=hpaW+mW{^#F*EHkvaBk8fUn{f<>W>x1?7J&^+};yj
z-)D}x%i7eCZxj-tYyW}k>0xKRp=l)<7WZ<X;(f=4eXU^m5>M`S+cucMZpa6VYy;_S
zjp;2rKJ1$X+C|J_HZOU0AGXNM42vPokwYWHixWMFt86;tVat>0Cw8VA*LhQ1+nnmy
zhda*G-!t-6`oPA-PA?Qmcdzv(M_{u2K=Q<)j2A!9lHPQ}J=`fb(|ZmQ)u*?4B}uSr
z6eE^#pV8aLviG#I_*yj?$|@NHdgu*h$6l1eUAvpV*=Q<n*q4udRXW$w=GyzxA^JJ|
zV~FUb_k<@W+^BkAL(Wy|=}m6iE^o#?1Bu?%tXrP`8bYYhGoa(I<l3$w13CXY35DDD
zD7I<X3CZUf@!%e}y*bf!FmZ5uqP@%QX+d#vKc@_yBH8BN_3<<3I7qBWYhukxj;gV6
ziDOTTMfFTT8VkL$U*%@;5UO*TDK0;;e@CKwH-5qGI4qiZa&L0SKzjRDOoA-MVB=lQ
z@zZAp)9HqzIDx^md+NB{PpsMR?rmh5-Wq6@xUs1veR?Bn_13_uA@@Y@51iE@t=yA%
zOsgDM-Ujn@-9t3fVD>%n<kN0{n|vhEsx1TCctpJX*)>vXTO$@FeyUq9P4-EfZ6ACn
zU_fH4&^jg_KX*8BXeZm?Sx#C1&CAm(TT^>h=x6xxR`%&bKPY=9{ln{>-*)D~TUy_>
zGSm9dj~eGaw-0?tr*F^oWV(;{wIn)D>ESYNamV6t*v_{0c>gXIgy>7FfJ7ELmh^({
z#5M_U)7zS`Zp4(!&bUqcuz_hV8aI2&-@5~Y;GUql+z6kwGI2RqUQ8;FS{R7NbmQT~
zro*zTgzIvgv(G;~q)4_tP8g4zD~5_?O{`s+b^Z*A=t=(nRpz^g-eNr$?KEVIyjn6)
zePyPa30KIZA#sV`I{=!%y60BrZoKc%VEw`Vvo#Zkc4gYWaP9c1EuI0|z7_2rv~4`T
zWz+J|*C%H|C407~53Hl#M8`^n3MP(s#s}KXGmK8t#Nfg);MC!U<cVWMH&!0;Ivz|1
zv@Fli4<dtGk!yK)B=lTI9<`);bI-7fndn@N{Mkcq83x5{nRnH3B)N8vc-fuX^UTMP
ze3g7^tJ~BklXSQ2NgnNG_L4|<FH3J3;O!t^M<j&kNp?QtcJfGrI&`dLbdu-Q;#r{m
z02`}g5q*3m2EoTQ;~rZRD_3zB-|QaU<sRANt)skh^S014Z*l-UYllJLd5fgJCoi;g
zD5Et!xqcH*&gM-Q=SAnrQ;U2V8D2-CbMFwE_KX&Hc4o9#uDtgzDtW3gXM0VYw8oSp
zVpDEccdDTmKPNMm*fhDUO?F>DIVQUHC%boJN>{s2^bXT!x2uD>F}C=bZMr~qwwSi`
zmaP;>u39O!udg+^{Dj+cRLo*~tGjb6C9~C~N4ADz&JgnC3ktj9Sq+PCDDl2MG)2W>
zz3XG3+-KJD$i_~~D~61tl@|}G6RX|U4c?~eS@&V(vsX9*x-=G-#`V_~^HRjsZ#)K{
z!%bw%2(<anjW~um{quZ<Ig9#r%m0s-pJoq-w!Ukh=d<)Xgv_f1p2s$c&-@5eXm)pX
y@s43dx_x5?dftcJR_~>RX~nohthoNXVC)X=SK)G5?IZFO*1m_oct74ysQ(Mpe9^`L

literal 0
HcmV?d00001

diff --git a/django/conf/locale/zh_Hant/LC_MESSAGES/django.po b/django/conf/locale/zh_Hant/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..b011954e75
--- /dev/null
+++ b/django/conf/locale/zh_Hant/LC_MESSAGES/django.po
@@ -0,0 +1,1227 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+#   <ilay@ilay.tw>, 2012.
+# Jannis Leidel <jannis@leidel.info>, 2011.
+# ming hsien tzang <tzangms@gmail.com>, 2011.
+# tcc <tcchou@tcchou.org>, 2011.
+#   <yyc1217@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-01-01 16:10+0100\n"
+"PO-Revision-Date: 2013-01-02 08:47+0000\n"
+"Last-Translator: yyc1217 <yyc1217@gmail.com>\n"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
+"language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: conf/global_settings.py:48
+msgid "Afrikaans"
+msgstr ""
+
+#: conf/global_settings.py:49
+msgid "Arabic"
+msgstr "阿拉伯語"
+
+#: conf/global_settings.py:50
+msgid "Azerbaijani"
+msgstr "阿塞拜疆(Azerbaijani)"
+
+#: conf/global_settings.py:51
+msgid "Bulgarian"
+msgstr "保加利亞語"
+
+#: conf/global_settings.py:52
+msgid "Belarusian"
+msgstr "白俄羅斯人"
+
+#: conf/global_settings.py:53
+msgid "Bengali"
+msgstr "孟加拉語"
+
+#: conf/global_settings.py:54
+msgid "Breton"
+msgstr ""
+
+#: conf/global_settings.py:55
+msgid "Bosnian"
+msgstr "波士尼亞語"
+
+#: conf/global_settings.py:56
+msgid "Catalan"
+msgstr "嘉泰羅尼亞語"
+
+#: conf/global_settings.py:57
+msgid "Czech"
+msgstr "捷克語"
+
+#: conf/global_settings.py:58
+msgid "Welsh"
+msgstr "威爾斯語"
+
+#: conf/global_settings.py:59
+msgid "Danish"
+msgstr "丹麥語"
+
+#: conf/global_settings.py:60
+msgid "German"
+msgstr "德語"
+
+#: conf/global_settings.py:61
+msgid "Greek"
+msgstr "希臘語"
+
+#: conf/global_settings.py:62
+msgid "English"
+msgstr "英語"
+
+#: conf/global_settings.py:63
+msgid "British English"
+msgstr "英國英語"
+
+#: conf/global_settings.py:64
+msgid "Esperanto"
+msgstr "世界語(Esperanto)"
+
+#: conf/global_settings.py:65
+msgid "Spanish"
+msgstr "西班牙語"
+
+#: conf/global_settings.py:66
+msgid "Argentinian Spanish"
+msgstr "阿根廷西班牙語"
+
+#: conf/global_settings.py:67
+msgid "Mexican Spanish"
+msgstr "墨西哥西班牙語(Mexican Spanish)"
+
+#: conf/global_settings.py:68
+msgid "Nicaraguan Spanish"
+msgstr "尼加拉瓜西班牙語(Nicaraguan Spanish)"
+
+#: conf/global_settings.py:69
+msgid "Venezuelan Spanish"
+msgstr "委內瑞拉西班牙人"
+
+#: conf/global_settings.py:70
+msgid "Estonian"
+msgstr "愛沙尼亞語"
+
+#: conf/global_settings.py:71
+msgid "Basque"
+msgstr "巴斯克語"
+
+#: conf/global_settings.py:72
+msgid "Persian"
+msgstr "波斯語"
+
+#: conf/global_settings.py:73
+msgid "Finnish"
+msgstr "芬蘭語"
+
+#: conf/global_settings.py:74
+msgid "French"
+msgstr "法語"
+
+#: conf/global_settings.py:75
+msgid "Frisian"
+msgstr "弗里斯蘭語"
+
+#: conf/global_settings.py:76
+msgid "Irish"
+msgstr "愛爾蘭語"
+
+#: conf/global_settings.py:77
+msgid "Galician"
+msgstr "加里西亞語"
+
+#: conf/global_settings.py:78
+msgid "Hebrew"
+msgstr "希伯來語"
+
+#: conf/global_settings.py:79
+msgid "Hindi"
+msgstr "印度語"
+
+#: conf/global_settings.py:80
+msgid "Croatian"
+msgstr "克羅埃西亞語"
+
+#: conf/global_settings.py:81
+msgid "Hungarian"
+msgstr "匈牙利語"
+
+#: conf/global_settings.py:82
+msgid "Interlingua"
+msgstr ""
+
+#: conf/global_settings.py:83
+msgid "Indonesian"
+msgstr "印尼語"
+
+#: conf/global_settings.py:84
+msgid "Icelandic"
+msgstr "冰島語"
+
+#: conf/global_settings.py:85
+msgid "Italian"
+msgstr "義大利語"
+
+#: conf/global_settings.py:86
+msgid "Japanese"
+msgstr "日語"
+
+#: conf/global_settings.py:87
+msgid "Georgian"
+msgstr "喬治亞語"
+
+#: conf/global_settings.py:88
+msgid "Kazakh"
+msgstr "哈薩克(Kazakh)"
+
+#: conf/global_settings.py:89
+msgid "Khmer"
+msgstr "高棉語"
+
+#: conf/global_settings.py:90
+msgid "Kannada"
+msgstr "坎那達語"
+
+#: conf/global_settings.py:91
+msgid "Korean"
+msgstr "韓語"
+
+#: conf/global_settings.py:92
+msgid "Luxembourgish"
+msgstr ""
+
+#: conf/global_settings.py:93
+msgid "Lithuanian"
+msgstr "立陶宛語"
+
+#: conf/global_settings.py:94
+msgid "Latvian"
+msgstr "拉脫維亞語"
+
+#: conf/global_settings.py:95
+msgid "Macedonian"
+msgstr "馬其頓語"
+
+#: conf/global_settings.py:96
+msgid "Malayalam"
+msgstr "馬來亞拉姆語"
+
+#: conf/global_settings.py:97
+msgid "Mongolian"
+msgstr "蒙古語"
+
+#: conf/global_settings.py:98
+msgid "Norwegian Bokmal"
+msgstr "挪威語(波克默爾)"
+
+#: conf/global_settings.py:99
+msgid "Nepali"
+msgstr "尼泊爾(Nepali)"
+
+#: conf/global_settings.py:100
+msgid "Dutch"
+msgstr "荷蘭語"
+
+#: conf/global_settings.py:101
+msgid "Norwegian Nynorsk"
+msgstr "挪威語(尼諾斯克)"
+
+#: conf/global_settings.py:102
+msgid "Punjabi"
+msgstr "旁遮普語"
+
+#: conf/global_settings.py:103
+msgid "Polish"
+msgstr "波蘭嶼"
+
+#: conf/global_settings.py:104
+msgid "Portuguese"
+msgstr "葡萄牙語"
+
+#: conf/global_settings.py:105
+msgid "Brazilian Portuguese"
+msgstr "巴西葡萄牙語"
+
+#: conf/global_settings.py:106
+msgid "Romanian"
+msgstr "羅馬尼亞語"
+
+#: conf/global_settings.py:107
+msgid "Russian"
+msgstr "俄語"
+
+#: conf/global_settings.py:108
+msgid "Slovak"
+msgstr "斯洛伐克語"
+
+#: conf/global_settings.py:109
+msgid "Slovenian"
+msgstr "斯洛維尼亞語"
+
+#: conf/global_settings.py:110
+msgid "Albanian"
+msgstr "阿爾巴尼亞語"
+
+#: conf/global_settings.py:111
+msgid "Serbian"
+msgstr "塞爾維亞語"
+
+#: conf/global_settings.py:112
+msgid "Serbian Latin"
+msgstr "塞爾維亞拉丁語"
+
+#: conf/global_settings.py:113
+msgid "Swedish"
+msgstr "瑞典語"
+
+#: conf/global_settings.py:114
+msgid "Swahili"
+msgstr "斯瓦希裡(Swahili)"
+
+#: conf/global_settings.py:115
+msgid "Tamil"
+msgstr "坦米爾語"
+
+#: conf/global_settings.py:116
+msgid "Telugu"
+msgstr "泰盧固語"
+
+#: conf/global_settings.py:117
+msgid "Thai"
+msgstr "泰語"
+
+#: conf/global_settings.py:118
+msgid "Turkish"
+msgstr "土耳其語"
+
+#: conf/global_settings.py:119
+msgid "Tatar"
+msgstr "韃靼(Tatar)"
+
+#: conf/global_settings.py:120
+msgid "Udmurt"
+msgstr ""
+
+#: conf/global_settings.py:121
+msgid "Ukrainian"
+msgstr "烏克蘭語"
+
+#: conf/global_settings.py:122
+msgid "Urdu"
+msgstr "烏爾都語(Urdu)"
+
+#: conf/global_settings.py:123
+msgid "Vietnamese"
+msgstr "越南語"
+
+#: conf/global_settings.py:124
+msgid "Simplified Chinese"
+msgstr "簡體中文"
+
+#: conf/global_settings.py:125
+msgid "Traditional Chinese"
+msgstr "繁體中文"
+
+#: core/validators.py:21 forms/fields.py:52
+msgid "Enter a valid value."
+msgstr "輸入有效的值"
+
+#: core/validators.py:104 forms/fields.py:464
+msgid "Enter a valid email address."
+msgstr "輸入有效的電子郵件地址。"
+
+#: core/validators.py:107 forms/fields.py:1013
+msgid ""
+"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
+msgstr "輸入一個有效的 'slug',由字母、數字、底線與連字號組成。"
+
+#: core/validators.py:110 core/validators.py:129 forms/fields.py:987
+msgid "Enter a valid IPv4 address."
+msgstr "輸入有效的 IPv4 位址。"
+
+#: core/validators.py:115 core/validators.py:130
+msgid "Enter a valid IPv6 address."
+msgstr "請輸入有效的 IPv6 位址。"
+
+#: core/validators.py:125 core/validators.py:128
+msgid "Enter a valid IPv4 or IPv6 address."
+msgstr "請輸入有效的 IPv4 或 IPv6 位址。"
+
+#: core/validators.py:151 db/models/fields/__init__.py:655
+msgid "Enter only digits separated by commas."
+msgstr "輸入以逗號分隔的數字。"
+
+#: core/validators.py:157
+#, python-format
+msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
+msgstr "確認這個是否為 %(limit_value)s (目前是 %(show_value)s)."
+
+#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263
+#, python-format
+msgid "Ensure this value is less than or equal to %(limit_value)s."
+msgstr "確認這個數值是否小於或等於 %(limit_value)s。"
+
+#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264
+#, python-format
+msgid "Ensure this value is greater than or equal to %(limit_value)s."
+msgstr "確認這個數值是否大於或等於 %(limit_value)s。"
+
+#: core/validators.py:189
+#, python-format
+msgid ""
+"Ensure this value has at least %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr ""
+"請確認這個內容至少要 %(limit_value)d 個字元 (目前有 %(show_value)d 個字)。"
+
+#: core/validators.py:196
+#, python-format
+msgid ""
+"Ensure this value has at most %(limit_value)d characters (it has "
+"%(show_value)d)."
+msgstr ""
+"請確認這個內容最多只能有 %(limit_value)d 個字元 (目前有 %(show_value)d 個"
+"字)。"
+
+#: db/models/base.py:857
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "%(date_field)s 的 %(lookup)s 在 %(field_name)s 必須是唯一的。"
+
+#: db/models/base.py:880 forms/models.py:573
+msgid "and"
+msgstr "和"
+
+#: db/models/base.py:881 db/models/fields/__init__.py:70
+#, python-format
+msgid "%(model_name)s with this %(field_label)s already exists."
+msgstr "這個 %(field_label)s 在 %(model_name)s 已經存在。"
+
+#: db/models/fields/__init__.py:67
+#, python-format
+msgid "Value %r is not a valid choice."
+msgstr "數值 %r 並非是一個有效的選擇"
+
+#: db/models/fields/__init__.py:68
+msgid "This field cannot be null."
+msgstr "這個值不能是 null。"
+
+#: db/models/fields/__init__.py:69
+msgid "This field cannot be blank."
+msgstr "這個欄位不能留白"
+
+#: db/models/fields/__init__.py:76
+#, python-format
+msgid "Field of type: %(field_type)s"
+msgstr "欄位型態: %(field_type)s"
+
+#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985
+msgid "Integer"
+msgstr "整數"
+
+#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983
+#, python-format
+msgid "'%s' value must be an integer."
+msgstr "'%s' 的值必須為一個整數。"
+
+#: db/models/fields/__init__.py:569
+#, python-format
+msgid "'%s' value must be either True or False."
+msgstr "'%s' 的值必須為 True 或 False。"
+
+#: db/models/fields/__init__.py:571
+msgid "Boolean (Either True or False)"
+msgstr "布林值 (True 或 False)"
+
+#: db/models/fields/__init__.py:622
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "字串 (最長到 %(max_length)s 個字)"
+
+#: db/models/fields/__init__.py:650
+msgid "Comma-separated integers"
+msgstr "逗號分隔的整數"
+
+#: db/models/fields/__init__.py:664
+#, python-format
+msgid "'%s' value has an invalid date format. It must be in YYYY-MM-DD format."
+msgstr "'%s' 的值為無效的日期格式。其格式必須為 YYYY-MM-DD 形式。"
+
+#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date."
+msgstr "'%s' 的值為有效的格式 (YYYY-MM-DD) 但日期有誤。"
+
+#: db/models/fields/__init__.py:669
+msgid "Date (without time)"
+msgstr "日期 (不包括時間)"
+
+#: db/models/fields/__init__.py:752
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
+"uuuuuu]][TZ] format."
+msgstr ""
+"'%s' 的值為無效的格式。其格式必須為 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 形式。"
+
+#: db/models/fields/__init__.py:756
+#, python-format
+msgid ""
+"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but "
+"it is an invalid date/time."
+msgstr ""
+"'%s' 的值為有效格式 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但日期/時間有誤。"
+
+#: db/models/fields/__init__.py:760
+msgid "Date (with time)"
+msgstr "日期 (包括時間)"
+
+#: db/models/fields/__init__.py:849
+#, python-format
+msgid "'%s' value must be a decimal number."
+msgstr "'%s' 的值必須為一個十進位數字。"
+
+#: db/models/fields/__init__.py:851
+msgid "Decimal number"
+msgstr "十進位數(小數可)"
+
+#: db/models/fields/__init__.py:908
+msgid "Email address"
+msgstr "電子郵件地址"
+
+#: db/models/fields/__init__.py:927
+msgid "File path"
+msgstr "檔案路徑"
+
+#: db/models/fields/__init__.py:954
+#, python-format
+msgid "'%s' value must be a float."
+msgstr "'%s' 的值必須為浮點數。"
+
+#: db/models/fields/__init__.py:956
+msgid "Floating point number"
+msgstr "浮點數"
+
+#: db/models/fields/__init__.py:1017
+msgid "Big (8 byte) integer"
+msgstr "大整數(8位元組)"
+
+#: db/models/fields/__init__.py:1031
+msgid "IPv4 address"
+msgstr "IPv4 地址"
+
+#: db/models/fields/__init__.py:1047
+msgid "IP address"
+msgstr "IP 位址"
+
+#: db/models/fields/__init__.py:1090
+#, python-format
+msgid "'%s' value must be either None, True or False."
+msgstr "'%s' 的值必須為空,True 或是 False。"
+
+#: db/models/fields/__init__.py:1092
+msgid "Boolean (Either True, False or None)"
+msgstr "布林值 (True, False 或 None)"
+
+#: db/models/fields/__init__.py:1141
+msgid "Positive integer"
+msgstr "正整數"
+
+#: db/models/fields/__init__.py:1152
+msgid "Positive small integer"
+msgstr "正小整數"
+
+#: db/models/fields/__init__.py:1163
+#, python-format
+msgid "Slug (up to %(max_length)s)"
+msgstr "可讀網址 (長度最多 %(max_length)s)"
+
+#: db/models/fields/__init__.py:1181
+msgid "Small integer"
+msgstr "小整數"
+
+#: db/models/fields/__init__.py:1187
+msgid "Text"
+msgstr "文字"
+
+#: db/models/fields/__init__.py:1205
+#, python-format
+msgid ""
+"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format."
+msgstr "'%s' 的值為無效的格式。其格式必須為 HH:MM[:ss[.uuuuuu]] 形式。"
+
+#: db/models/fields/__init__.py:1207
+#, python-format
+msgid ""
+"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid "
+"time."
+msgstr "'%s' 的值為有效的格式 (HH:MM[:ss[.uuuuuu]]) 但時間有誤。"
+
+#: db/models/fields/__init__.py:1210
+msgid "Time"
+msgstr "時間"
+
+#: db/models/fields/__init__.py:1272
+msgid "URL"
+msgstr "URL"
+
+#: db/models/fields/files.py:216
+msgid "File"
+msgstr "檔案"
+
+#: db/models/fields/files.py:323
+msgid "Image"
+msgstr "影像"
+
+#: db/models/fields/related.py:979
+#, python-format
+msgid "Model %(model)s with pk %(pk)r does not exist."
+msgstr "PK 為 %(pk)r 的 Model %(model)s 不存在。"
+
+#: db/models/fields/related.py:981
+msgid "Foreign Key (type determined by related field)"
+msgstr "外鍵 (型態由關連欄位決定)"
+
+#: db/models/fields/related.py:1111
+msgid "One-to-one relationship"
+msgstr "一對一關連"
+
+#: db/models/fields/related.py:1178
+msgid "Many-to-many relationship"
+msgstr "多對多關連"
+
+#: db/models/fields/related.py:1203
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "按住 \"Control\", 或者在 Mac 上按 \"Command\", 以選取更多值"
+
+#: forms/fields.py:51
+msgid "This field is required."
+msgstr "這個欄位是必須的。"
+
+#: forms/fields.py:209
+msgid "Enter a whole number."
+msgstr "輸入整數"
+
+#: forms/fields.py:241 forms/fields.py:262
+msgid "Enter a number."
+msgstr "輸入一個數字"
+
+#: forms/fields.py:265
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "確認數字全長不超過 %s 位。"
+
+#: forms/fields.py:266
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "確認想小數不超過 %s 位。"
+
+#: forms/fields.py:267
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "確認想小數點前不超過 %s 位。"
+
+#: forms/fields.py:355 forms/fields.py:953
+msgid "Enter a valid date."
+msgstr "輸入有效的日期"
+
+#: forms/fields.py:378 forms/fields.py:954
+msgid "Enter a valid time."
+msgstr "輸入有效的時間"
+
+#: forms/fields.py:399
+msgid "Enter a valid date/time."
+msgstr "輸入有效的日期/時間"
+
+#: forms/fields.py:475
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "沒有檔案被送出。請檢查表單的編碼類型。"
+
+#: forms/fields.py:476
+msgid "No file was submitted."
+msgstr "沒有檔案送出"
+
+#: forms/fields.py:477
+msgid "The submitted file is empty."
+msgstr "送出的檔案是空的。"
+
+#: forms/fields.py:478
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr "請確認這個檔名最多只能有 %(max)d 個字元 (它現在是 %(length)d 個字)。"
+
+#: forms/fields.py:479
+msgid "Please either submit a file or check the clear checkbox, not both."
+msgstr "請提交一個檔案或確認清除核可項, 不能兩者都做。"
+
+#: forms/fields.py:534
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr "上傳一個有效的圖檔。你上傳的檔案為非圖片,不然就是損壞的圖檔。"
+
+#: forms/fields.py:580
+msgid "Enter a valid URL."
+msgstr "輸入有效的URL"
+
+#: forms/fields.py:666 forms/fields.py:746
+#, python-format
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "請選擇有效的項目, %(value)s 不是一個可用的選擇。"
+
+#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002
+msgid "Enter a list of values."
+msgstr "輸入一個列表的值"
+
+#: forms/formsets.py:324 forms/formsets.py:326
+msgid "Order"
+msgstr "排序"
+
+#: forms/formsets.py:328
+msgid "Delete"
+msgstr "刪除"
+
+#: forms/models.py:567
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "請修正 %(field)s 的重覆資料"
+
+#: forms/models.py:571
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr "請修正 %(field)s 的重覆資料, 必須為唯一值"
+
+#: forms/models.py:577
+#, python-format
+msgid ""
+"Please correct the duplicate data for %(field_name)s which must be unique "
+"for the %(lookup)s in %(date_field)s."
+msgstr ""
+"請修正 %(field_name)s 重複資料, %(date_field)s 的 %(lookup)s 必須是唯一值。"
+
+#: forms/models.py:585
+msgid "Please correct the duplicate values below."
+msgstr "請修正下方重覆的數值"
+
+#: forms/models.py:852
+msgid "The inline foreign key did not match the parent instance primary key."
+msgstr "內含的外鍵無法連接到對應的上層實體主鍵。"
+
+#: forms/models.py:913
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "選擇有效的選項: 此選擇不在可用的選項中。"
+
+#: forms/models.py:1003
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "選擇一個有效的選項: '%s' 不在可用的選項中。"
+
+#: forms/models.py:1005
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "\"%s\" 不是一個主鍵的有效資料。"
+
+#: forms/util.py:81
+#, python-format
+msgid ""
+"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
+"may be ambiguous or it may not exist."
+msgstr ""
+"%(datetime)s 無法被轉換成 %(current_timezone)s 時區格式; 可能是不符格式或不存"
+"在。"
+
+#: forms/widgets.py:336
+msgid "Currently"
+msgstr "目前"
+
+#: forms/widgets.py:337
+msgid "Change"
+msgstr "變更"
+
+#: forms/widgets.py:338
+msgid "Clear"
+msgstr "清除"
+
+#: forms/widgets.py:594
+msgid "Unknown"
+msgstr "未知"
+
+#: forms/widgets.py:595
+msgid "Yes"
+msgstr "是"
+
+#: forms/widgets.py:596
+msgid "No"
+msgstr "否"
+
+#: template/defaultfilters.py:794
+msgid "yes,no,maybe"
+msgstr "是、否、也許"
+
+#: template/defaultfilters.py:822 template/defaultfilters.py:833
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d 位元組"
+
+#: template/defaultfilters.py:835
+#, python-format
+msgid "%s KB"
+msgstr "%s KB"
+
+#: template/defaultfilters.py:837
+#, python-format
+msgid "%s MB"
+msgstr "%s MB"
+
+#: template/defaultfilters.py:839
+#, python-format
+msgid "%s GB"
+msgstr "%s GB"
+
+#: template/defaultfilters.py:841
+#, python-format
+msgid "%s TB"
+msgstr "%s TB"
+
+#: template/defaultfilters.py:842
+#, python-format
+msgid "%s PB"
+msgstr "%s PB"
+
+#: utils/dateformat.py:47
+msgid "p.m."
+msgstr "p.m."
+
+#: utils/dateformat.py:48
+msgid "a.m."
+msgstr "a.m."
+
+#: utils/dateformat.py:53
+msgid "PM"
+msgstr "PM"
+
+#: utils/dateformat.py:54
+msgid "AM"
+msgstr "AM"
+
+#: utils/dateformat.py:103
+msgid "midnight"
+msgstr "午夜"
+
+#: utils/dateformat.py:105
+msgid "noon"
+msgstr "中午"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "星期一"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "星期二"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "星期三"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "星期四"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "星期五"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "星期六"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "星期日"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "星期一"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "星期二"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "星期三"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "星期四"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "星期五"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "星期六"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "星期日"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "一月"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "二月"
+
+#: utils/dates.py:18
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:18
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:18
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:18
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:19
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "八月"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "九月"
+
+#: utils/dates.py:19
+msgid "October"
+msgstr "十月"
+
+#: utils/dates.py:19
+msgid "November"
+msgstr "十一月"
+
+#: utils/dates.py:20
+msgid "December"
+msgstr "十二月"
+
+#: utils/dates.py:23
+msgid "jan"
+msgstr "一月"
+
+#: utils/dates.py:23
+msgid "feb"
+msgstr "二月"
+
+#: utils/dates.py:23
+msgid "mar"
+msgstr "三月"
+
+#: utils/dates.py:23
+msgid "apr"
+msgstr "四月"
+
+#: utils/dates.py:23
+msgid "may"
+msgstr "五月"
+
+#: utils/dates.py:23
+msgid "jun"
+msgstr "六月"
+
+#: utils/dates.py:24
+msgid "jul"
+msgstr "七月"
+
+#: utils/dates.py:24
+msgid "aug"
+msgstr "八月"
+
+#: utils/dates.py:24
+msgid "sep"
+msgstr "九月"
+
+#: utils/dates.py:24
+msgid "oct"
+msgstr "十月"
+
+#: utils/dates.py:24
+msgid "nov"
+msgstr "十一月"
+
+#: utils/dates.py:24
+msgid "dec"
+msgstr "十二月"
+
+#: utils/dates.py:31
+msgctxt "abbrev. month"
+msgid "Jan."
+msgstr "一月"
+
+#: utils/dates.py:32
+msgctxt "abbrev. month"
+msgid "Feb."
+msgstr "二月"
+
+#: utils/dates.py:33
+msgctxt "abbrev. month"
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:34
+msgctxt "abbrev. month"
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:35
+msgctxt "abbrev. month"
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:36
+msgctxt "abbrev. month"
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:37
+msgctxt "abbrev. month"
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:38
+msgctxt "abbrev. month"
+msgid "Aug."
+msgstr "八月"
+
+#: utils/dates.py:39
+msgctxt "abbrev. month"
+msgid "Sept."
+msgstr "九月"
+
+#: utils/dates.py:40
+msgctxt "abbrev. month"
+msgid "Oct."
+msgstr "十月"
+
+#: utils/dates.py:41
+msgctxt "abbrev. month"
+msgid "Nov."
+msgstr "十一月"
+
+#: utils/dates.py:42
+msgctxt "abbrev. month"
+msgid "Dec."
+msgstr "十二月"
+
+#: utils/dates.py:45
+msgctxt "alt. month"
+msgid "January"
+msgstr "一月"
+
+#: utils/dates.py:46
+msgctxt "alt. month"
+msgid "February"
+msgstr "二月"
+
+#: utils/dates.py:47
+msgctxt "alt. month"
+msgid "March"
+msgstr "三月"
+
+#: utils/dates.py:48
+msgctxt "alt. month"
+msgid "April"
+msgstr "四月"
+
+#: utils/dates.py:49
+msgctxt "alt. month"
+msgid "May"
+msgstr "五月"
+
+#: utils/dates.py:50
+msgctxt "alt. month"
+msgid "June"
+msgstr "六月"
+
+#: utils/dates.py:51
+msgctxt "alt. month"
+msgid "July"
+msgstr "七月"
+
+#: utils/dates.py:52
+msgctxt "alt. month"
+msgid "August"
+msgstr "八月"
+
+#: utils/dates.py:53
+msgctxt "alt. month"
+msgid "September"
+msgstr "九月"
+
+#: utils/dates.py:54
+msgctxt "alt. month"
+msgid "October"
+msgstr "十月"
+
+#: utils/dates.py:55
+msgctxt "alt. month"
+msgid "November"
+msgstr "十一月"
+
+#: utils/dates.py:56
+msgctxt "alt. month"
+msgid "December"
+msgstr "十二月"
+
+#: utils/text.py:70
+#, python-format
+msgctxt "String to return when truncating text"
+msgid "%(truncated_text)s..."
+msgstr "%(truncated_text)s..."
+
+#: utils/text.py:239
+msgid "or"
+msgstr "或"
+
+#. Translators: This string is used as a separator between list elements
+#: utils/text.py:256
+msgid ", "
+msgstr ", "
+
+#: utils/timesince.py:22
+msgid "year"
+msgid_plural "years"
+msgstr[0] "年"
+
+#: utils/timesince.py:23
+msgid "month"
+msgid_plural "months"
+msgstr[0] "月"
+
+#: utils/timesince.py:24
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "週"
+
+#: utils/timesince.py:25
+msgid "day"
+msgid_plural "days"
+msgstr[0] "天"
+
+#: utils/timesince.py:26
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "小時"
+
+#: utils/timesince.py:27
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "分鐘"
+
+#: utils/timesince.py:43
+msgid "minutes"
+msgstr "分鐘"
+
+#: utils/timesince.py:48
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:54
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: views/static.py:56
+msgid "Directory indexes are not allowed here."
+msgstr "這裡不允許目錄索引。"
+
+#: views/static.py:58
+#, python-format
+msgid "\"%(path)s\" does not exist"
+msgstr "\"%(path)s\" 路徑不存在"
+
+#: views/static.py:98
+#, python-format
+msgid "Index of %(directory)s"
+msgstr "%(directory)s 的索引"
+
+#: views/generic/dates.py:42
+msgid "No year specified"
+msgstr "不指定年份"
+
+#: views/generic/dates.py:98
+msgid "No month specified"
+msgstr "不指定月份"
+
+#: views/generic/dates.py:157
+msgid "No day specified"
+msgstr "不指定日期"
+
+#: views/generic/dates.py:213
+msgid "No week specified"
+msgstr "不指定週數"
+
+#: views/generic/dates.py:368 views/generic/dates.py:393
+#, python-format
+msgid "No %(verbose_name_plural)s available"
+msgstr "%(verbose_name_plural)s 無法使用"
+
+#: views/generic/dates.py:646
+#, python-format
+msgid ""
+"Future %(verbose_name_plural)s not available because %(class_name)s."
+"allow_future is False."
+msgstr ""
+"未來的 %(verbose_name_plural)s 不可用,因 %(class_name)s.allow_future 為 "
+"False."
+
+#: views/generic/dates.py:678
+#, python-format
+msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
+msgstr "無效的日期字串 '%(datestr)s' 可接受格式 '%(format)s'"
+
+#: views/generic/detail.py:54
+#, python-format
+msgid "No %(verbose_name)s found matching the query"
+msgstr "無 %(verbose_name)s 符合本次搜尋"
+
+#: views/generic/list.py:51
+msgid "Page is not 'last', nor can it be converted to an int."
+msgstr "頁面不是最後一頁,也無法被轉換為整數。"
+
+#: views/generic/list.py:56
+#, python-format
+msgid "Invalid page (%(page_number)s): %(message)s"
+msgstr "無效的頁面 (%(page_number)s): %(message)s"
+
+#: views/generic/list.py:137
+#, python-format
+msgid "Empty list and '%(class_name)s.allow_empty' is False."
+msgstr "為空list且 '%(class_name)s.allow_empty' 為False."
diff --git a/django/conf/locale/zh_Hant/__init__.py b/django/conf/locale/zh_Hant/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/django/conf/locale/zh_Hant/formats.py b/django/conf/locale/zh_Hant/formats.py
new file mode 100644
index 0000000000..330c2f296e
--- /dev/null
+++ b/django/conf/locale/zh_Hant/formats.py
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+# This file is distributed under the same license as the Django package.
+#
+from __future__ import unicode_literals
+
+# The *_FORMAT strings use the Django date format syntax,
+# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
+# DATE_FORMAT =
+# TIME_FORMAT =
+# DATETIME_FORMAT =
+# YEAR_MONTH_FORMAT =
+# MONTH_DAY_FORMAT =
+# SHORT_DATE_FORMAT =
+# SHORT_DATETIME_FORMAT =
+# FIRST_DAY_OF_WEEK =
+
+# The *_INPUT_FORMATS strings use the Python strftime format syntax,
+# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
+# DATE_INPUT_FORMATS =
+# TIME_INPUT_FORMATS =
+# DATETIME_INPUT_FORMATS =
+# DECIMAL_SEPARATOR =
+# THOUSAND_SEPARATOR =
+# NUMBER_GROUPING =
diff --git a/django/conf/locale/zh_TW/LC_MESSAGES/django.po b/django/conf/locale/zh_TW/LC_MESSAGES/django.po
index b011954e75..a8ced6d4fe 100644
--- a/django/conf/locale/zh_TW/LC_MESSAGES/django.po
+++ b/django/conf/locale/zh_TW/LC_MESSAGES/django.po
@@ -1,5 +1,8 @@
 # This file is distributed under the same license as the Django package.
 #
+# This is the *old* Traditional Chinese translation of Django
+# For future updates please use the translation in the "zh_Hant" directory.
+#
 # Translators:
 #   <ilay@ilay.tw>, 2012.
 # Jannis Leidel <jannis@leidel.info>, 2011.
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index bf75ef17e2..54c5f73d15 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -202,6 +202,17 @@ def activate(language):
     language and installs it as the current translation object for the current
     thread.
     """
+    if isinstance(language, basestring):
+        if language == 'zh-cn':
+            warnings.warn(
+                "The use of the language code 'zh-cn' is deprecated. "
+                "Please use the 'zh-hans' translation instead.",
+                PendingDeprecationWarning, stacklevel=2)
+        elif language == 'zh-tw':
+            warnings.warn(
+                "The use of the language code 'zh-tw' is deprecated. "
+                "Please use the 'zh-hant' translation instead.",
+                PendingDeprecationWarning, stacklevel=2)
     _active.value = translation(language)
 
 
@@ -399,6 +410,12 @@ def get_supported_language_variant(lang_code, supported=None, strict=False):
     If `strict` is False (the default), the function will look for an alternative
     country-specific variant when the currently checked is not found.
     """
+    # some browsers use deprecated language codes -- #18419
+    if lang_code == 'zh-cn' and 'zh-hans' in supported:
+        return 'zh-hans'
+    elif lang_code == 'zh-tw' and 'zh-hant' in supported:
+        return 'zh-hant'
+
     if supported is None:
         from django.conf import settings
         supported = OrderedDict(settings.LANGUAGES)
diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt
index 42b81419ec..c63724f4bb 100644
--- a/docs/internals/deprecation.txt
+++ b/docs/internals/deprecation.txt
@@ -476,6 +476,9 @@ these changes.
 
 * The class ``django.utils.datastructures.MergeDict`` will be removed.
 
+* The ``zh_CN`` and ``zh_TW`` language codes will be removed and have been
+  replaced by the ``zh_Hans`` and ``zh_Hant`` language code respectively.
+
 2.0
 ---
 
diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt
index 2e596b3dc8..802d16cc5c 100644
--- a/docs/releases/1.7.txt
+++ b/docs/releases/1.7.txt
@@ -697,3 +697,11 @@ deprecated and will be removed in Django 1.9.
 arguments into a ``REQUEST`` property on ``WSGIRequest``. To merge
 dictionaries, use ``dict.update()`` instead. The class ``MergeDict`` is
 deprecated and will be removed in Django 1.9.
+
+Language codes ``zh_CN`` and ``zh_TW``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The currently used language codes for Simplified Chinese ``zh_CN`` and
+Traditional Chinese ``zh_TW`` are deprecated and should be replaced by the
+recently introduced language codes ``zh_Hans`` and ``zh_Hant`` respectively.
+The deprecated language codes will be removed in Django 1.9.
diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py
index f949bea24e..7d9ed16636 100644
--- a/tests/deprecation/tests.py
+++ b/tests/deprecation/tests.py
@@ -1,8 +1,8 @@
 from __future__ import unicode_literals
 import warnings
 
-from django.test import SimpleTestCase, RequestFactory
-from django.utils import six
+from django.test import SimpleTestCase, RequestFactory, override_settings
+from django.utils import six, translation
 from django.utils.deprecation import RenameMethodsBase
 
 
@@ -186,3 +186,22 @@ class DeprecatingRequestMergeDictTest(SimpleTestCase):
                 '`request.POST` instead.',
                 '`MergeDict` is deprecated, use `dict.update()` instead.',
             ])
+
+
+@override_settings(USE_I18N=True)
+class DeprecatedChineseLanguageCodes(SimpleTestCase):
+    def test_deprecation_warning(self):
+        warnings.simplefilter('always')
+
+        with warnings.catch_warnings(record=True) as recorded:
+            with translation.override('zh-cn'):
+                pass
+            with translation.override('zh-tw'):
+                pass
+            msgs = [str(warning.message) for warning in recorded]
+            self.assertEqual(msgs, [
+                "The use of the language code 'zh-cn' is deprecated. "
+                "Please use the 'zh-hans' translation instead.",
+                "The use of the language code 'zh-tw' is deprecated. "
+                "Please use the 'zh-hant' translation instead.",
+            ])
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py
index 76f59bf919..f68a7361f6 100644
--- a/tests/i18n/tests.py
+++ b/tests/i18n/tests.py
@@ -871,6 +871,31 @@ class MiscTests(TransRealMixin, TestCase):
         r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,de'}
         self.assertEqual(g(r), 'zh-cn')
 
+    @override_settings(
+        LANGUAGES=(
+            ('en', 'English'),
+            ('zh-hans', 'Simplified Chinese'),
+            ('zh-hant', 'Traditional Chinese'),
+        )
+    )
+    def test_support_for_deprecated_chinese_language_codes(self):
+        """
+        Some browsers (Firefox, IE etc) use deprecated language codes. As these
+        language codes will be removed in Django 1.9, these will be incorrectly
+        matched. For example zh-tw (traditional) will be interpreted as zh-hans
+        (simplified), which is wrong. So we should also accept these deprecated
+        language codes.
+
+        refs #18419 -- this is explicitly for browser compatibility
+        """
+        g = get_language_from_request
+        r = self.rf.get('/')
+        r.COOKIES = {}
+        r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,en'}
+        self.assertEqual(g(r), 'zh-hans')
+        r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-tw,en'}
+        self.assertEqual(g(r), 'zh-hant')
+
     def test_parse_language_cookie(self):
         """
         Now test that we parse language preferences stored in a cookie correctly.