From 6bc1b19967f79112f7f93daf1689b7c8aa80b010 Mon Sep 17 00:00:00 2001 From: 954 <510485871@qq.com> Date: Sat, 28 Jan 2023 22:57:23 +0800 Subject: [PATCH] chore(locale): provide zh-Hans(Simplified Chinese) translation (#308) * chore(locale): provide zh-Hans(Simplified Chinese) translation * chore(locale/models): append `verbose_name` and `verbose_name_plural` for `eav.models`, to support translation. --- eav/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 0 -> 3609 bytes eav/locale/zh_Hans/LC_MESSAGES/django.po | 223 +++++++++++++++++++++++ eav/models.py | 14 ++ 3 files changed, 237 insertions(+) create mode 100644 eav/locale/zh_Hans/LC_MESSAGES/django.mo create mode 100644 eav/locale/zh_Hans/LC_MESSAGES/django.po diff --git a/eav/locale/zh_Hans/LC_MESSAGES/django.mo b/eav/locale/zh_Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2b7280eb95d9f5ace9e2c95a2d633aa8b007186f GIT binary patch literal 3609 zcmaKte{3AZ6~~7XewhL#kP_OY475&clD*gtKiqRt;rd5#gOezBB7sy@b9dwOhP_>9 zcQ3?LRo(o;kfaI1i4$W?j0g!K{t*(0V<&ctkU&tWYSsTLQ3-DM?*4%M!yo*R5Z|{u zzPp&DBhP(yX5PH_=Dj!LPv*}%#L!lvFG4?e9b;?2C$7g2TIW2*eg^8`GH@68AUF>G z0{ky{3-}FK2F|;Iu^)qXfD6Dy;7wo+NODmSqO1|T6>I@-12-wg!77Zmf~4;?koJwJ z@p(0V59FBthnoK!#2@<#KV8L zCE$6G$ng^ezTz{}PbmSgY1IDLw^8G5-gU;xhn}+zF8UejkKt z_7V6P_%E;-oDb!zz$ZbHKMbx!j?RMjVVp&9C?7W=SWCega54B4Ncy%b{u!h=?g8%x z532d&Ao+7zjV~zvP0fD*Qhxpek{_Rfq~|^amsqK|QgJm%d0(T(zgJ9x&B>z4H@yGs+ zpPz&O1Ig~UAj#d1!z}|BfFxfJlD@SdT>+seL8?n#aRAgX{um^?UxP>syBD3>J?IEk z&}bhusyDJt@^m)RUyV+859wwV=;SN;NsR};;Sc3(IXcCL>flG{)F=kj%F)UH+tD9H zr!!TeqfCNEzQVUL?USY+yV5L(y+_VA#lGS5rS8`LNB#DN* zA-hc&kkv`l<$`0VCwRQm(&LhMSawmgo;O&jl+fB_m#~E^6WV5Bq#;DcBdmVbMDfdE z4WXVjww3N;SKZDUY)Q&kqi_Xp@9vWHg&*m}ZN1CYEt56sPM0CNxn(D$%^J4|GimYl zu`M$0vL@4&Hjf9MIR(#finMehTqdL3GG(3nj8*4$+EPZaA)VsMz#;k!T`PP!!Fq78 z;+Kk~%VScS+!5Ol!EQ;m)2TqzVaTQ;$OxTZgh^8|ButZsW9VotEwL zL`jOn8AxwMMHQ>n5HV@6HY1&6?Q*-z+B+pLcaZKh>YWM}Aqw*mlW~!DBzGZ!V~K>G zFqgVvIpdTO)^0=d3f?RXN3uXq5U?UbhLIW%F8ya*EY&+I_=RK5#=basj6A2RaI*>wY>V_ z=tGYztE#Q4DtkgWuGVe~(=mi=*-`%Mhab{fwpn&JUxiPdz8*`aglqpD$s-(L^aA?RLcrH8oF6WVYd;r)tlOz zwc4T_xzm9%Xfjcux`~&fHm18}8;rCq46WI+Q%;ndUBS>N@vnVFa@Jf=K5u**9$BvaW_Nyg3Ng=2^kgPZUF}43 zWy04MG4Xo)y?uw3y}61ec6#HKqPe@n5LeKnTj}>6&h_jLXZ-$m^Zn<7d3ua1=kDX` zKb|^QkOr!s(IEtSu5d9jbKFvanlsDkorW`ohuS;1KYL=Fw0gsDQQc)nd$O;NsJig_ zC|ZT$rG;b9<;M1)GFj=Mf}ZS3<{y5}A3V*neP=S0e+|nG+038XmmB*F>csCq=AS(j zCYPS|ppXmE%fIrPcksn*-$}psJXutZQCz7)cAWGMoXYLI QvTsgik6x+>9@$FvJ$lH+-~a#s literal 0 HcmV?d00001 diff --git a/eav/locale/zh_Hans/LC_MESSAGES/django.po b/eav/locale/zh_Hans/LC_MESSAGES/django.po new file mode 100644 index 0000000..a803717 --- /dev/null +++ b/eav/locale/zh_Hans/LC_MESSAGES/django.po @@ -0,0 +1,223 @@ +# Simplified Chinese translation for django-eav2 +# Copyright (C) 2023 +# This file is distributed under the same license as the django-eav2 package. +# FIRST 954-Ivory <954ivory@gmail.com>, 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 15:46+0800\n" +"PO-Revision-Date: 2023-01-28 19:14+0800\n" +"Last-Translator: 954-Ivory <954ivory@gmail.com>\n" +"Language-Team: \n" +"Language: zh-Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: .\eav\fields.py:30 +msgid "You cannot change the datatype of an attribute that is already in use." +msgstr "您不能更改已使用属性的数据类型。" + +#: .\eav\fields.py:36 +msgid "A Comma-Separated-Value field." +msgstr "字符分隔值(CSV)字段。" + +#: .\eav\forms.py:28 +msgid "Enter comma-separated-values. eg: one;two;three." +msgstr "输入字符分隔值(CSV)字段,例如:one;two;three。" + +#: .\eav\forms.py:137 +#, python-format +msgid "The %s could not be saved because the datadidn't validate." +msgstr "由于数据未验证,无法保存 %s 。" + +#: .\eav\models.py:83 +msgid "EnumValue" +msgstr "枚举值" + +#: .\eav\models.py:84 +msgid "EnumValues" +msgstr "枚举值" + +#: .\eav\models.py:87 .\eav\models.py:423 +msgid "Value" +msgstr "值" + +#: .\eav\models.py:112 +msgid "EnumGroup" +msgstr "枚举组" + +#: .\eav\models.py:113 +msgid "EnumGroups" +msgstr "枚举组" + +#: .\eav\models.py:115 .\eav\models.py:213 +msgid "Name" +msgstr "名称" + +#: .\eav\models.py:116 +msgid "Enum group" +msgstr "枚举组" + +#: .\eav\models.py:181 .\eav\models.py:431 +msgid "Attribute" +msgstr "属性" + +#: .\eav\models.py:182 +msgid "Attributes" +msgstr "属性" + +#: .\eav\models.py:195 +msgid "Text" +msgstr "文本" + +#: .\eav\models.py:196 +msgid "Date" +msgstr "日期" + +#: .\eav\models.py:197 +msgid "Float" +msgstr "浮点数" + +#: .\eav\models.py:198 +msgid "Integer" +msgstr "整数" + +#: .\eav\models.py:199 +msgid "True / False" +msgstr "布尔值" + +#: .\eav\models.py:200 +msgid "Django Object" +msgstr "Django 对象" + +#: .\eav\models.py:201 +msgid "Multiple Choice" +msgstr "多项选择" + +#: .\eav\models.py:202 +msgid "JSON Object" +msgstr "JSON 对象" + +#: .\eav\models.py:203 +msgid "Comma-Separated-Value" +msgstr "字符分隔值(CSV)" + +#: .\eav\models.py:209 +msgid "Data Type" +msgstr "数据类型" + +#: .\eav\models.py:215 +msgid "User-friendly attribute name" +msgstr "面向用户的名称" + +#: .\eav\models.py:224 +msgid "Slug" +msgstr "短标识符(Slug)" + +#: .\eav\models.py:228 +msgid "Short unique attribute label" +msgstr "唯一的属性短标识符" + +#: .\eav\models.py:237 +msgid "Required" +msgstr "必填项" + +#: .\eav\models.py:249 +msgid "Choice Group" +msgstr "选项组" + +#: .\eav\models.py:256 +msgid "Description" +msgstr "描述" + +#: .\eav\models.py:260 +msgid "Short description" +msgstr "简短描述" + +#: .\eav\models.py:266 +msgid "Display order" +msgstr "显示顺序" + +#: .\eav\models.py:269 .\eav\models.py:462 +msgid "Modified" +msgstr "修改" + +#: .\eav\models.py:272 .\eav\models.py:458 +msgid "Created" +msgstr "创建" + +#: .\eav\models.py:316 +#, python-format +msgid "%(val)s is not a valid choice for %(attr)s" +msgstr "%(val)s 不是有效的 %(attr)s 选项" + +#: .\eav\models.py:339 +msgid "You must set the choice group for multiple choice attributes" +msgstr "您必须为多项选择属性设置选项组" + +#: .\eav\models.py:344 +msgid "You can only assign a choice group to multiple choice attributes" +msgstr "您只能将选项组分配给多项选择属性" + +#: .\eav\models.py:424 +msgid "Values" +msgstr "值" + +#: .\eav\models.py:593 +#, python-format +msgid "%(obj)s has no EAV attribute named %(attr)s" +msgstr "%(obj)s 中不存在为 %(attr)s 的属性" + +#: .\eav\models.py:665 +msgid "{} EAV field cannot be blank" +msgstr "{} 字段不能为空白(blank)" + +#: .\eav\models.py:672 +#, python-format +msgid "%(attr)s EAV field %(err)s" +msgstr "%(attr)s 字段错误:%(err)s" + +#: .\eav\validators.py:26 +msgid "Must be str or unicode" +msgstr "必须是一个 str 或 unicode" + +#: .\eav\validators.py:36 +msgid "Must be a float" +msgstr "必须是一个浮点数" + +#: .\eav\validators.py:46 +msgid "Must be an integer" +msgstr "必须是一个整数" + +#: .\eav\validators.py:57 +msgid "Must be a date or datetime" +msgstr "必须是一个日期(date)或者日期时间(datetime)" + +#: .\eav\validators.py:65 +msgid "Must be a boolean" +msgstr "必须是一个布尔值" + +#: .\eav\validators.py:74 +msgid "Must be a django model object instance" +msgstr "必须是一个 Django Model 对象的实例" + +#: .\eav\validators.py:77 +msgid "Model has not been saved yet" +msgstr "Model 尚未保存" + +#: .\eav\validators.py:88 +msgid "EnumValue has not been saved yet" +msgstr "枚举值尚未保存" + +#: .\eav\validators.py:99 .\eav\validators.py:101 +msgid "Must be a JSON Serializable object" +msgstr "必须是一个 JSON 序列化对象" + +#: .\eav\validators.py:111 +msgid "Must be Comma-Separated-Value." +msgstr "必须是一个字符分隔值(CSV)" diff --git a/eav/models.py b/eav/models.py index 345937d..2139a53 100644 --- a/eav/models.py +++ b/eav/models.py @@ -79,6 +79,10 @@ class EnumValue(models.Model): the same *Yes* and *No* *EnumValues* for both *EnumGroups*. """ + class Meta: + verbose_name = _('EnumValue') + verbose_name_plural = _('EnumValues') + value = models.CharField( _('Value'), db_index=True, @@ -104,6 +108,10 @@ class EnumGroup(models.Model): See :class:`EnumValue` for an example. """ + class Meta: + verbose_name = _('EnumGroup') + verbose_name_plural = _('EnumGroups') + name = models.CharField(_('Name'), unique=True, max_length=CHARFIELD_LENGTH) values = models.ManyToManyField(EnumValue, verbose_name=_('Enum group')) @@ -170,6 +178,8 @@ class Attribute(models.Model): class Meta: ordering = ['name'] + verbose_name = _('Attribute') + verbose_name_plural = _('Attributes') TYPE_TEXT = 'text' TYPE_FLOAT = 'float' @@ -409,6 +419,10 @@ class Value(models.Model): # noqa: WPS110 # = """ + class Meta: + verbose_name = _('Value') + verbose_name_plural = _('Values') + # Direct foreign keys attribute = models.ForeignKey( Attribute,