From c0a2388a1c4ead1afaec98e4ebc953a772ca3849 Mon Sep 17 00:00:00 2001 From: Bouke Haarsma 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 19d70eeb3e3..68459cc76da 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 7ff004d6ca2..32201488c85 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 ac4a4b2022b..8c14ac2f957 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 , 2011. # Kevin Shi , 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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 p;)X6~bNh5{cMh+o`}xh0%DA}5>feVotLzX8_, 2011. +# Kevin Shi , 2012. +# Lele Long , 2011. +# slene , 2011. +# Ziang Song , 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: 磊 施 \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 00000000000..e69de29bb2d diff --git a/django/conf/locale/zh_Hans/formats.py b/django/conf/locale/zh_Hans/formats.py new file mode 100644 index 00000000000..330c2f296e0 --- /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 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 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 00000000000..b011954e755 --- /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: +# , 2012. +# Jannis Leidel , 2011. +# ming hsien tzang , 2011. +# tcc , 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: yyc1217 \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 00000000000..e69de29bb2d diff --git a/django/conf/locale/zh_Hant/formats.py b/django/conf/locale/zh_Hant/formats.py new file mode 100644 index 00000000000..330c2f296e0 --- /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 b011954e755..a8ced6d4fe5 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: # , 2012. # Jannis Leidel , 2011. diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index bf75ef17e23..54c5f73d15e 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 42b81419eca..c63724f4bb7 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 2e596b3dc82..802d16cc5c6 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 f949bea24e0..7d9ed166367 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 76f59bf9198..f68a7361f6e 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.