From 0b25389d39756fb5cbc0ed39ae874933257c8065 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Thu, 8 May 2025 17:45:00 +0300 Subject: [PATCH] Features: 1) Add fallback to use `msgid` when user input is empty during translation prompt. Fixes: 1) Fix alignment and indentation issues in API request data formatting. Extra: 1) Minor formatting and whitespace cleanup in placeholder regex and related functions; 2) Regenerate `.mo` file for `cs_CZ` locale. --- core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 42470 -> 45914 bytes core/locale/ar_AR/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 37065 -> 39910 bytes core/locale/cs_CZ/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/da_DK/LC_MESSAGES/django.mo | Bin 35968 -> 38688 bytes core/locale/da_DK/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/de_DE/LC_MESSAGES/django.mo | Bin 38098 -> 40863 bytes core/locale/de_DE/LC_MESSAGES/django.po | 103 +++++++++++++++++--- core/locale/en_GB/LC_MESSAGES/django.mo | Bin 34662 -> 37280 bytes core/locale/en_GB/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/en_US/LC_MESSAGES/django.mo | Bin 34669 -> 37279 bytes core/locale/en_US/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/es_ES/LC_MESSAGES/django.mo | Bin 37162 -> 39999 bytes core/locale/es_ES/LC_MESSAGES/django.po | 103 +++++++++++++++++--- core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 38186 -> 41019 bytes core/locale/fr_FR/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/hi_IN/LC_MESSAGES/django.po | 95 +++++++++++++++--- core/locale/it_IT/LC_MESSAGES/django.mo | Bin 37622 -> 40410 bytes core/locale/it_IT/LC_MESSAGES/django.po | 102 ++++++++++++++++--- core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 38468 -> 41368 bytes core/locale/ja_JP/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/kk_KZ/LC_MESSAGES/django.po | 95 +++++++++++++++--- core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 37038 -> 39741 bytes core/locale/nl_NL/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 37101 -> 39886 bytes core/locale/pl_PL/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 37123 -> 39961 bytes core/locale/pt_BR/LC_MESSAGES/django.po | 102 ++++++++++++++++--- core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 37576 -> 40428 bytes core/locale/ro_RO/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 48096 -> 51601 bytes core/locale/ru_RU/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 33090 -> 35716 bytes core/locale/zh_Hans/LC_MESSAGES/django.po | 101 ++++++++++++++++--- core/management/commands/deepl_translate.py | 19 ++-- 35 files changed, 1611 insertions(+), 220 deletions(-) diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index 3b496f8d06a67b30e11843559c914f20c6621408..a9482dacd40c4412b4533d7c05bb22682ef385a0 100644 GIT binary patch delta 12056 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 Sy^goj|Nm?IWUt8w$Nw)p4>Z~U delta 8700 zcmY+}30#*|zQ^%{E1;qvxB-d+f(kAOh%2B7h$f(^iG=%tx#p7lUnJK`%-!mmI#_09 zlQvFyO=iZlQm^TxQ#qrSxs*0)%GFl8pYQ)1=hb~){&@e+d7l4y&U2RM4|VQpm8-|A zcrFB0+h91J_c106%WE4GUd5QW#;P@DTXSRhXSVYr7!PAB{2W_il@`YMVk=aA0>)t> z#^6d<|28(E{7($WdsdGLjQTnj#~cj8BAk!YF&h7k z)v-Q>I@lOPFa~vfcMQZl^fMk~Mv>H|ViM}c3$PxpLv^U!oj>U6PdLw`Kj&|vI`kv9 z#ySj(>QgWQdtnEhjXJ*zb-z!sCigdAlQ0_Q23E%a#!VLlqk0;JYB1TA)3FBSfv6`e zKz)7!GJED3)Rb&SKirPB@O4xN{_M_QLXR50;VSN-=J+=Zz~ERrWRa*FC8Opr10!%a z*2KlA4zEBB^=8!ddr%!Zh-&v^RL3v4^H*XS|7uj+r9w~o18V5~SxFkwP}DkX=j?;J z(P-3M&Omiw8R|x>QH$?IY=a-6rnJ(PYw`HHz7wWkYHP;7Gszq()PcRI4t#*>z*$rW zzI9fmRdpa7)q!~Q!!-2A9Mqf-LUm{bCgBEDd&g1jUqp@2Z4XH;k_X6+GX8Ym7voTi zCJA+e@u)eTj%m0a)seHPj$c8RkGYQ;;->MoJ{r|tCs$5GwKo766yqr*=|r*&cj6(` z2gbCub2%9kDVL%a=eww(JA_^FKC0s#+u05bLbbO5wR_${jnoO$8n}oNSc$A9j|pjS zylbF6>PeFD5zN8@+<^Ib8`XiH3`+oJV; z+GC*he+r3uoP*4QS%P%V>_N@h1=J$CgQ4ix(U=|>jk@s|)D%u}&ch(e%P<+YAcJa7 zA^*$+epJN-hBa3EKbfQs4oBT!vMaB|7|NTR6{w-U=JeyS^eSzG&9DzfU@>Y}twN1J z8EV^ZcOJwn%AcV}bKQ(?%2?FUc0e_dh7GVc>WK=mK2F6(Sc>ZSORj!5Y6=b^%fcMN zp;(FhGyNH6ExM(s^KW%x{57W+sL%~Aqvq~Ds^OZfG<7HhYhx7ZOR59viTa~%Sd0yD z8tU`Qk$+|rKZ5ZT>ho7nQ*{T`&Vv-jUyC7>mw=2!Jz*Q94<;2gcTZsk?!T9W^ySyK*)5Ttmts zsKpwOYH%p(1vCyra5}2J<*1QahmCMI>bk?I#p^jqq7QtI>gi2)!LP`UGrryIqUwy= zJ_X3=nNrl^I*3|)CvgnkL|&F=V0Syji%<{nBI^2b)ZFh!rp{xokZ5syhiW*Iy`|Mz zi0W85>IMf;Z@_cTUoo0;M5?XN#Kx41F$_y_AZ|lVT_yIx&T006N->1p5nT~XyJsCHgOJ@FUFpc>y^wmt*1xWAcA zLL26gDp1``gKT6_%t}}O5UWx4?QLJlbx@0}C$_*m)Pu~xLVOxErC*^I6bE>giu&4e;R(U^x?M6)p*x1$=aKwetr8pdIG4(|laLDrp_ih9B~ zP^*70YE2x%Ncc>(`g@*SkKZuiXwqP;)mD{qY6lUS=n@!ds{gHtuITn2LI$ ziKrLP^QbA>j(YM}P%pMK7>d_W9j^L_{ambvgoSK!Q9WOcy779ffiGhtdH)sPni$rf&SMm6(JjN~_$SQ3&(Igca_!piM3ZRoB%Rg@sHvHSTAXjA z7UNxv!wz|NM2b*Tw*qzkeJsVFk!4{#`F7}!qSn}TOu+a7-fizOBS_TXCTxu#pyv7( zHo=B$Vm)yJ>U=h83TEJAJ}gG;P5I8F_LZG7h+nxWPeZMVcd#~okL~aQCScpa8hPe_ zBuN`8wxJq6;k<*4mT5G^){l2ShnmZMI2}L1F_`|CF$?h()QCn6wW~Y}>(S9^*opd* z0{6bbaP9wNB<8J3645a*bRJ)h48Ger% znLu6+p*RRV>^w7_M00fjQ_<&fyE@ZR4NSmfoP}!W4eW>~P^;e*Sz}O7*dLqYGE~QQ zp|;;aSN_sjS;Y8jRr(IMYv2(~r#uh!!Gov{oIqAkyB_6wD zChBufV?!*%0DKkO;{FjHd!s8VgI%txXsm9 zI8URl{~FbS`zw>mgyin6=mqZ=gC5JK9c3CuAL(MOX*VVqN^&mG7cD?!yXf zfK5@?B{_ScI*^ZQcP#e6nW%O=`$+nc97bJOZ>;TU6gH>a4MVU9d*e*hkRCwZIpzpz zgzAs8+p{IEr<{*n@hV1Pi}Ci!v#fp<|~3ddc!5_?guIl=b0FaAJz z6{MJ1ay@#r(#+76dcejK$ZzeIJY67{OC%6R)@J8XnqP@f-&da@F1g)dXJj};q z$c{8&3++fPL4AG?>dD_jjp$L-19{H5irc6cNwr1xg660Tl2AA9>l}@G;`ykCHefw` z4dd_tYKpGm0IbgltDSKeiVM&?GT2NzwSuG@CoZDqFl@2?lF300-9%IabDd?#2hC2@ zB0GZG1wUabMwHn1#t2k>IY#0!d>(IN5-w(eMQi`>C(+RS3nTDb)ZF-&+9%Jzk(3Lu z5Dy^>+k`%CJG=%XRqwon>R64Xw!W)#xU&=!IR7dx;{N6w$tWDkUSnF#L2QdD%NceY zk3Dc7CgUCKg{@ZDC!UO|f75x{8M@Ne55RGpUx`ETHjcpTRg8Zz$!jFC{xkf_jSEp1 zR=RS(XYKFzhj9Y+ZJx7>Y`ya*98dj-)poIcgn5)dMJ?v2GW)k=GHNQv;{jY)#`x=k zlr{G2GY11G7h^ciK~2p@d>#LQTFtpkq%RhrMrJf>@$Nv~paQjx&tf^YUTc3v`vm(^ zPF!dIHe9@p@$XH=87kCJll6A)hGG}Wt5N4a#&oQ^!Tu7Nk1Cg78$9gFw@@R|VWXYW zEjXC+FIa*DH`(2C7PT9$dPv%lRM~95ToSMz<%!q?=i^x1h}w3);6!Y&#r_9~64aX6 zh}jtQf?XTKur1}6F%eH<99DhNw%;D}D0|XLnvtwUJ?UQO57>orkC*J5aV}~q&ZGAI zbyt3Xtti*}FI%64(UkjO1WrXQ)-|XHJA;$(3g&A657=t|9NvLiTxU>E+WlqwH97=S zDbK@ZcmPB39A@G@oR8hN*#~$JRsS3I#LVsXzay^1(UdRa|6ukGEqV__`3E}%i%}Q+ z5%uK3teiB=MGfH^jK?FW{d*TRbuD+=H82?Uxg{8j@1qYsJjRl&qC$VPd`SK%-r@e< zzw1sQyUom}GM!LII$;+=M{nGPx}h(T=jvyZr;!H`$H{e+k&huJ60-;$5ze}(tsO+P zC-+n%SxB%`Odl%x5?_!fqmF*q)#bUkhdS1*`9>!>p0s#>AyFE_HGjhlVxIe)>UGp0 z0==32(b9+UU(7`VDQiwEh|a`hLdSHXIp_UwkSaKM1(+winf>t?{F$iAb;U$`^2_$r ze||ne{ZvYScQv2jv((+y{4XV8EqGV8w#X?$)AAW{j%daCe4LCrh7!McGyYUV{hu=( zPvZ|*!<9Yws`rdtkkKv|ahxl{-nx;Fwp1*}+NgIm?-B2@n(`n*2RqXHt8`<^N6BNb z5RVaU$ZHbpD(^9a+$cEoLSmQxzaxv%yTrr$d$+`Ccgds9AR1^vo`RLw$<=>^H3?q( z-lMv^(Ir>zfUmiHB{o!W%~jM^{hSy^aCppb{A9;@-^=y6=za1}i2_331!Jk3i{BBy zKi;6gTiXR^)m_z;*v7Wf^>K}JL&mTszoC>|ilZZ*g!y}bMf4e_C zvPouA9)bIaW#kVq9!KF)qJ_J@9p0kcn9z|++#^=H^G#H#@z+Zu$5l>ICC9TC@6Q?h ztiySI^XceL%y!pLa{h_BM3?KD?Zic*7j^0QJrPXk&=*nzZ^r$vxrCRM_jvMmjrfr- zapku;n?PR0l_$9Cn^K-f{tS*J-Xhl*Pk(n^3Hd1UBRCrCVk4q8QTuo6&upeb#|Za9 zOe>r3*7M>KWI|8ozv5h=db>uq!o9Ig95ksj\n" "Language-Team: BRITISH ENGLISH \n" @@ -459,35 +459,112 @@ msgid "" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"تصفية حسب زوج واحد أو أكثر من أسماء/قيم السمات. \n" +"- **صيغة**: `attr_name=الطريقة-القيمة[ ؛ attr2=الطريقة2-القيمة2]...`\n" +"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، \"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، \"lte\"، \"gt\"، \"gte\"، \"in\n" +"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم التعامل معها كسلسلة. \n" +"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- لتشفير القيمة الخام. \n" +"أمثلة: \n" +"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، 'fatures=in-[\"wifi\",\"bluetooth\"],\n" +"\"b64-description=icontains-aGVhdC1jb2xk" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(بالضبط) UUID المنتج" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(أيقونات) اسم المنتج" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(بالضبط) معرّف الفئة UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) الحد الأدنى لسعر السهم" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) الحد الأقصى لسعر السهم" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(بالضبط) المنتجات النشطة فقط" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(أيكساكت) اسم العلامة التجارية" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(زط) الحد الأدنى لكمية المخزون" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(بالضبط) سبيكة المنتج" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(بالضبط) الرقمية مقابل المادية" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n" +"**مسموح بها:** uuid، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "حذف منتج" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "حذف منتج" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." @@ -544,7 +621,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 2a4f7c5257238312a0d9f4fe9e7b9cf3c7e865da..93cc5940e6afa19b1903524fc4fb0c9ea17a460e 100644 GIT binary patch delta 11565 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 delta 8699 zcmYk>34D)NzQ^%{L^gtKvIrqblaPpnB-D~1h_qsFh*Xr=weWtrgX!XC=vdk+qk6lb3)2OyDu!I9x2pH^{hyP$eO`Y5_wRR}?L6n4=biAi=|9mpz??b~48uX<9LJfT&D@j8dgIb5_&cUb~ zO+wA(d{hUjQ8!wTT728E6TXL<(t1}1@%TDE2fJf#N5;Pg$-^|L1G`ZjIE?DRC#Vj5 z?`*{F%`9F zvQRgeikjnjn1`ED9r*;+@$<;?F}F}d+&0a&C!(&GzFlm>;cy zF4#)%e|Hk~xDc5IvjXXyc@;HhXHkpjI>ul?S7Z8MBI?HFs41M|T!bOi)tHUXB7_d0Jm+pW|sHyqc)jqs)t*OIN zi!}{(!Lg_h&=d^Ed8q5HLXFHOjKp22;|`$~ujd4bPB@L~=@oatFUT8b{Cn9&)dThV zlpv#Ls!)ro4z>7BU^!kvK9*)=Z#%?GQ4g>Ub^LbJ+`o=YoyVLf(c-v_x^O)2mR4se zs$<(xH`s^z0)FQF1rw>`a&7xSjG~^7ZLkVQ;tQy$tH;6EBhNli6^7~k-%g^rcndY8 z?_&nubSC$;PgH_Qw68?1;y=6gQ>czN?q|RKJyG=>)OB{Ep7;zhsK&p)ZO_L++}~7^ za1FCx4XEzsK>;!-W{s=gMIUPa0rr#J9JR>$VFw(BdXV{8ijSeD^efb&yoSE$GtizF zh#uy^M3T@s(+*WnL@ko(s1p~UF1#8wm(QZ!ia+90coL`LBzmtAI)-_819e=t0{hqU zM7)c71196^1&qIjMM~u?BVF1IS0qT*Oq2E##Ykg~+-yb5T$D z3TpN5My-kc7>}n>Z_91ebp!5U{PnF*y2ri_#i+S^00Z%N$i2)COu?(D4o2N;JD7`l zq8X?U&qmY~)u5jIMbwAwV~oLzs17$7V$VzVkg$-=P*l&?qi(zzo8t2ri7#Rh9zeYn z$56+8g?fO?=!b2J=sYH%7F{*A$G>1coS-~-D=eSzhV{sj4TV|8E%LE9n>1TgqfH&!u#5L%mfl$a4UAi!>GBw ziqY7bmsn4niP~R)nu7T_rV)z~_5HX$$_{DDX!{xuLyf=^)DypqI)5)}D$ikiz5fCC z*%9dEEOO36U0}1T4>>PjE7}8!nKq2U0XP#GT~mu%bY_hGJ0cpNrcB2!_zr4~+`+Xg6ah?n8Cp1Zqk?b@d(81)7etACedhrcOb1ygTZ=p%{Y2sMl|X ztJh<5>Y8zkzk2o>4fUkueF^x=nXD8H?WuY!Sz_pJ-jle|I_2#4I`U$uH zP1FM&M7>3yy87!<#$P*b($EeA@3#kZbY`Po!+xlt9*lbOGUoz}rCx(=aHnfO>^y^k zv|m9@;ZK-}LF4WBp^t||H=c!>f_11Tehd5HAByC z8Ei)TRaf6ebs%Jd9YN0k65VJFY7V!eM&w1*lkRi%2bfL$4XT6Dd}RtT0W~FaQFH7; zUVZZ?jKg}=l!Q;TuU$H7?#Chz;xSW6bmK>z>zvzAugfk}2S3MJjGknN^f;=cr%+Gy z1Nvgya{G_Y1Z1?$Qq-dU0y|^l$;OPr3~a6UznVlBdJZ*5yD<(Aqk4WGeehS*aXwS{ zn+_w9SKTaeevDeQsZ;HBvQXcLL8$Y#qV~UxTC969g!`K#Bw2VGb1`_D9ik%CT$kb? zd=QgyAL_OJ23upR>Gr#jg4*8?3vecCweLlZ@Y|@x_yOuQ{R}<5Nd8Hp*QN6eMgzxU zQ~U?2V;4~uik)faI0ZF_Lof%&IX9uE>=T;d}%&MJrGp+>CmXZK&()cJ;fMN_`dsF=&n*sR-10ov{aI&0+i>CYkFR zzQeB69p>7_avug!uSDHwBWf;RLd{_vszZNw^*PiOTtj^iqAKk9*{IjEA8JY`-~g=j zkf`T%&JVFU^##<3)T4SFHqXAtF{tB{aWMAA6kLT`BeggRf5Hw}^q?K;dFV%7iNUxO zTcPI(k`R*TQBSxVTi{XDlb&(@h&rLsd~2vP5&db;!4S+t-FPHw?Np+!_X_I#I*i8? z$nhR?og{_^-vxGP+M_O%g8^8Gy1*#ZRFtDGRDqpw1?me}iY8@`WPY`gtU;}nI_!op%F=Vq&#@ofo2B^CcdVb|h<29odC?!cQ;^&tV?c zqed!gm7U9c)CHc#a@>x(QNU_@ou1f*dWx&JVhr^`)b-C|9(ukb(W*~bV^7FMjYI`z z;~(&D{22YP#acV`t^ zXA3N*))%%5xyOfu*V}9)2Gej4afUn_wcU$7T|N|FrEM$mop!Q4Xz~7Kq%@pk4q`sB z$epKlZB2<*-pu~o)rj$5#z7;gwK@+FdTnMC+U61M*&l$T)xgH6nwj3r{)~Y)h$b92 zo#;aTt=;wS-rBHkY=%>C3!!a2^=LxdHX?zD zqJ9UHP@moRiB9Bx#2?7D%_lbswyDJLz1jc&3?hA#Xt=-mJH>}?|0rh&7wACV9qTd2 zwZDgc1aFde^L01++SM8OA1>#!;r&NyYmT`oj3d}Q=2w3IMBGD!a?oG#Bcg-| zCMMJN2wol(yxxs?{x&45Xy`;_5wnPf zEtjMv`x~|bk_FTga1T*Ueh1TVBCaGlxZ~6DDs>d0Z76Y*SmX9bt5M^xk4&L!oTEmz zbr$dMe14m=KhU-H#!7emEazWn>*jJDRzsX4`qS1I|4D=q+Vqc?2ye#yFS=xh^TFR- zB!GN{t83YxN#5Ai)7y8k?Sj2^JMrJVS%F z3GPJY9}_pqd3N{}O{2R{2OzcX$NW@V4qCdtG+CH~Uf7T5LH;oD0(r99$hG|!(UTZPjHNA?_%r!Dw?CVFipyUn z-$m>rwDr>a-;te{C=zf3o*;&h2NI=39`yo3+fkx1F@qS%zWa$Q<+(A>R)5ssuE76EpK`{ac5>3d@6ZaA&)NOG%YWsp{N3\n" "Language-Team: BRITISH ENGLISH \n" @@ -479,38 +479,115 @@ msgid "" msgstr "" "Odebere mnoho produktů ze seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrování podle jedné nebo více dvojic název/hodnota atributu. \n" +"- **Syntaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" +"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi zachází jako s řetězci. \n" +"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL base64. \n" +"Příklady: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(přesně) UUID produktu" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Název produktu" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(přesně) Kategorie UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimální cena akcií" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximální cena akcií" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(přesně) Pouze aktivní produkty" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Obchodní značka" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimální skladové množství" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(přesně) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(přesně) Digitální vs. fyzické" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné řazení použijte předponu `-`. \n" +"**Povolené:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Odstranění produktu" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Přepsání existujícího produktu se zachováním polí, která nelze editovat" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizace některých polí existujícího produktu se zachováním polí, která " "nelze upravovat." +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Odstranění produktu" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." @@ -566,7 +643,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index d61cddce81db1b5556a45ad0b029469996336a59..6a155182bf42f2af55c1283d30b3ebd2875ceda3 100644 GIT binary patch delta 11439 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 diff --git a/core/locale/da_DK/LC_MESSAGES/django.po b/core/locale/da_DK/LC_MESSAGES/django.po index cfcaf924..15f19423 100644 --- a/core/locale/da_DK/LC_MESSAGES/django.po +++ b/core/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -487,37 +487,114 @@ msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrer efter et eller flere attributnavn/værdipar. \n" +"- **Syntaks**: `attr_name=method-value[;attr2=method2-value2]...`.\n" +"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), `true`/`false` for booleans, heltal, floats; ellers behandles de som strenge. \n" +"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå værdi. \n" +"Eksempler på dette: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(præcis) Produkt-UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Produktnavn" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(præcis) UUID for kategori" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum aktiekurs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maksimal aktiekurs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(præcis) Kun aktive produkter" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Mærkenavn" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum lagermængde" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(nøjagtig) Produktsug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(præcis) Digital vs. fysisk" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` for faldende. \n" +"**Tilladt:** uuid, vurdering, navn, slug, oprettet, ændret, pris, tilfældig" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Slet et produkt" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Opdater nogle felter i et eksisterende produkt og bevar ikke-redigerbare " "felter" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Slet et produkt" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." @@ -573,7 +650,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index 3a2b7f3e0ff9a0e96c8da43445fe44fe2ba01702..9725bff365e772f5500b4c7b2f7bb0332b027fab 100644 GIT binary patch delta 11484 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 diff --git a/core/locale/de_DE/LC_MESSAGES/django.po b/core/locale/de_DE/LC_MESSAGES/django.po index 060a6064..aea5bcef 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -498,39 +498,118 @@ msgstr "" "Entfernt viele Produkte aus einer Wunschliste unter Verwendung der " "angegebenen `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtern Sie nach einem oder mehreren Attributnamen/Wertpaaren. \n" +"- **Syntax**: `attr_name=Methode-Wert[;attr2=Methode2-Wert2]...`\n" +"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten als String behandelt. \n" +"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des Rohwertes. \n" +"Beispiele: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(genaue) Produkt-UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Produktname" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(genau) Kategorie UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "" +"(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Mindestaktienkurs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximaler Aktienkurs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(genau) Nur aktive Produkte" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Markenname" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Mindestlagermenge" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(genau) Produktausschnitt" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(genau) Digital vs. physisch" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. Präfix mit \"-\" für absteigend. \n" +"**Erlaubt:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Ein Produkt löschen" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" " Felder" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Einige Felder eines bestehenden Produkts aktualisieren, nicht editierbare " "Felder beibehalten" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Ein Produkt löschen" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." @@ -588,7 +667,7 @@ msgstr "" "sich gegenseitig aus!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index b0338edd739732636314eaea9c9da5b38c56ef4b..2015c242b0086a9388d986bf41c2c661705f3971 100644 GIT binary patch delta 11337 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -465,36 +465,113 @@ msgid "" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) Product UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Product name" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(list) Category names, case-insensitive" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) Category UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(list) Tag names, case-insensitive" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum stock price" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximum stock price" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Only active products" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Brand name" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum stock quantity" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. physical" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Delete a product" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Delete a product" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No search term provided." @@ -550,7 +627,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index afb944dc702824cdaf0131099f55aa9a57519160..fc54d5856476a037ffc8d1be7846b2229c395abb 100644 GIT binary patch delta 11329 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 V+ci6}eaE#M;#=\n" "Language-Team: BRITISH ENGLISH \n" @@ -465,36 +465,113 @@ msgid "" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…`\n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) Product UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Product name" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(list) Category names, case-insensitive" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) Category UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(list) Tag names, case-insensitive" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimum stock price" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximum stock price" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Only active products" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Brand name" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimum stock quantity" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Product slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. physical" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Delete a product" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Delete a product" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No search term provided." @@ -550,7 +627,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index 1bdadd96c2ff45609e223e3ce27f6811a21b89eb..48c00c20dc7dfbe83897baf46a768569ebdaa606 100644 GIT binary patch delta 11578 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 delta 8700 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 wjxUK8L`x!`_??I)!a3gym*c\n" "Language-Team: BRITISH ENGLISH \n" @@ -489,37 +489,116 @@ msgstr "" "Elimina varios productos de una lista de deseos utilizando los " "`product_uuids` proporcionados." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrar por uno o varios pares nombre/valor de atributo. \n" +"- Sintaxis**: `nombre_attr=método-valor[;attr2=método2-valor2]...`.\n" +"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Tipificación de valores**: Se intenta primero JSON (para poder pasar listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso contrario se trata como cadena. \n" +"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin procesar. \n" +"Ejemplos: \n" +"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exacto) del producto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nombre del producto" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(lista) Nombres de categoría, sin distinción entre mayúsculas y minúsculas" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exacto) Categoría UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "" +"(lista) Nombres de etiquetas, sin distinción entre mayúsculas y minúsculas" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Precio mínimo de las acciones" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Precio máximo de las acciones" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exacto) Sólo productos activos" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Marca" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Cantidad mínima de existencias" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exacto) Babosa del producto" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exacto) Digital frente a físico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` para que sea descendente. \n" +"**Permitido:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Eliminar un producto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizar algunos campos de un producto existente, conservando los campos " "no editables" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Eliminar un producto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." @@ -575,7 +654,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index 28568e9e6795a4185181933e7b6b2d2fc0c6b0db..0a1f885a7012a4f34625baf7a7708d057082829f 100644 GIT binary patch delta 11537 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -495,37 +495,114 @@ msgstr "" "Supprime plusieurs produits d'une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtre sur une ou plusieurs paires nom/valeur d'attribut. \n" +"- **Syntaxe** : `nom_attr=méthode-valeur[;attr2=méthode2-valeur2]...`\n" +"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les flottants ; sinon traité comme une chaîne de caractères. \n" +"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de manière sûre pour l'URL. \n" +"Exemples : \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exact) du produit" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nom du produit" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(liste) Noms de catégories, insensibles à la casse" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "UUID (exact) de la catégorie" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(liste) Noms d'étiquettes, insensibles à la casse" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prix minimum de l'action" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prix maximum de l'action" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Uniquement les produits actifs" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nom de marque" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantité minimale en stock" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "UUID ou Slug du produit" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Numérique ou physique" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un tri descendant. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Supprimer un produit" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Réécrire un produit existant en préservant les champs non modifiables" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Mettre à jour certains champs d'un produit existant, en préservant les " "champs non modifiables" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Supprimer un produit" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." @@ -583,7 +660,7 @@ msgstr "" "mutuellement !" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Le mauvais type provient de la méthode order.buy() : {type(instance)!s}" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index 31571f62..5aed5588 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -450,35 +450,108 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," +"\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:268 -msgid "retrieve a single product (detailed view)" +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:272 -msgid "Product UUID or slug" +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" msgstr "" #: core/docs/drf/viewsets.py:284 -msgid "create a product" +msgid "(gte) Minimum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" msgstr "" #: core/docs/drf/viewsets.py:291 -msgid "delete a product" +msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for " +"descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" + +#: core/docs/drf/viewsets.py:310 +msgid "retrieve a single product (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 +msgid "Product UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:315 +msgid "create a product" +msgstr "" + +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "" @@ -534,7 +607,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index 6d9f056ac915d4f344356b64b202a48cc12d6443..53da0f432b26b3eb60aeb0ebf1e47dd1fae7ef4a 100644 GIT binary patch delta 11508 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 delta 8700 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 lLTT@grT7zGBr*vd>o>;7y)v_To3!\n" "Language-Team: BRITISH ENGLISH \n" @@ -495,38 +495,116 @@ msgstr "" "Rimuove molti prodotti da una lista di desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrare in base a una o più coppie nome/valore dell'attributo. \n" +"- **Sintassi**: `nome_attraverso=metodo-valore[;attr2=metodo2-valore2]...`\n" +"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene trattato come stringa. \n" +"- **Base64**: prefisso con `b64-` per codificare in base64 il valore grezzo. \n" +"Esempi: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(esatto) UUID del prodotto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nome del prodotto" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(esatto) UUID della categoria" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prezzo minimo delle azioni" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prezzo massimo del titolo" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(esatto) Solo prodotti attivi" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nome del marchio" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantità minima di scorte" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(esatto) Prodotto slug" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(esatto) Digitale e fisico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per l'ordinamento discendente. \n" +"**Consentito:** uuid, rating, nome, slug, creato, modificato, prezzo, casuale" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Eliminare un prodotto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Riscrivere un prodotto esistente, preservando i campi non modificabili" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aggiornare alcuni campi di un prodotto esistente, preservando i campi non " "modificabili" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Eliminare un prodotto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." @@ -583,7 +661,7 @@ msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index b4bdcbc212a670b1a6eefba0b3f7d34c196c597c..ec450840fdf7b19b5d3d525e93763ef30de5c587 100644 GIT binary patch delta 11618 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 diff --git a/core/locale/ja_JP/LC_MESSAGES/django.po b/core/locale/ja_JP/LC_MESSAGES/django.po index 0718e973..b64f396e 100644 --- a/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/core/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -453,35 +453,112 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"1つまたは複数の属性名/値のペアでフィルタリングします。 \n" +"- シンタックス**:attr_name=method-value[;attr2=method2-value2]...`。\n" +"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場合は文字列として扱う。 \n" +"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとしてつけると、生の値を URL-safe base64-encode することができる。 \n" +"例 \n" +"color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" +"b64-description=icontains-aGVhdC1jb2xk`。" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(正確には)製品UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(アイコン) 製品名" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(正確には)カテゴリーUUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(リスト) タグ名、大文字と小文字は区別されない" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(最低株価" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(最大株価" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(正確には)アクティブ製品のみ" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(商品名" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(最低在庫量" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(正確には)製品スラッグ" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(正確には)デジタルとフィジカル" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" +"**許可:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "製品を削除する" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "製品を削除する" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "検索語はありません。" @@ -537,7 +614,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index 31571f62..5aed5588 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -450,35 +450,108 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," +"\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:268 -msgid "retrieve a single product (detailed view)" +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:272 -msgid "Product UUID or slug" +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" msgstr "" #: core/docs/drf/viewsets.py:284 -msgid "create a product" +msgid "(gte) Minimum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" msgstr "" #: core/docs/drf/viewsets.py:291 -msgid "delete a product" +msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for " +"descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" + +#: core/docs/drf/viewsets.py:310 +msgid "retrieve a single product (detailed view)" +msgstr "" + +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 +msgid "Product UUID or slug" +msgstr "" + +#: core/docs/drf/viewsets.py:315 +msgid "create a product" +msgstr "" + +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "" @@ -534,7 +607,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index 4de06905168c187e3953196a583d1cfc3fadbc73..1dfe01d77f817b6e2bc9f19b129fc136e8ea2e01 100644 GIT binary patch delta 11422 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 diff --git a/core/locale/nl_NL/LC_MESSAGES/django.po b/core/locale/nl_NL/LC_MESSAGES/django.po index bd706bb5..bcecdea5 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -495,38 +495,115 @@ msgstr "" "Verwijdert een groot aantal producten uit een verlanglijstje met behulp van " "de opgegeven `product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filter op een of meer attribuutnaam-/waardeparen. \n" +"- **Syntaxis**: `attr_name=methode-waarde[;attr2=methode2-waarde2]...`\n" +"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld als string. \n" +"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe waarde. \n" +"Voorbeelden: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exacte) UUID van product" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(pictogrammen) Productnaam" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(lijst) Categorienamen, hoofdlettergevoelig" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exacte) UUID van categorie" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(lijst) Labelnamen, hoofdlettergevoelig" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimale aandelenprijs" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maximale aandelenprijs" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Alleen actieve producten" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Merknaam" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimumvoorraad" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exacte) productnaam" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digitaal vs. fysiek" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met `-` voor aflopend. \n" +"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, willekeurig" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Een product verwijderen" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Een bestaand product herschrijven met behoud van niet-wijzigbare velden" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Enkele velden van een bestaand product bijwerken, met behoud van niet-" "wijzigbare velden" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Een product verwijderen" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." @@ -582,7 +659,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index e662e08f2574302d6e2e7873db56bbe011b4fe3a..ec775811d150ba6c1ac43188b1a9d8854d335bc7 100644 GIT binary patch delta 11506 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 delta 8700 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 diff --git a/core/locale/pl_PL/LC_MESSAGES/django.po b/core/locale/pl_PL/LC_MESSAGES/django.po index 15bfd4a5..19799561 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -490,37 +490,114 @@ msgid "" msgstr "" "Usuwa wiele produktów z listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrowanie według jednej lub więcej par atrybut/wartość. \n" +"- Składnia**: `attr_name=method-value[;attr2=method2-value2]...`\n" +"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w przeciwnym razie traktowane jako string. \n" +"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania base64 surowej wartości. \n" +"Przykłady: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(dokładny) UUID produktu" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(ikony) Nazwa produktu" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(dokładny) UUID kategorii" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Minimalna cena akcji" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Maksymalna cena akcji" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(dokładnie) Tylko aktywne produkty" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nazwa marki" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Minimalna ilość zapasów" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(dokładny) Ślimak produktu" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(dokładnie) Cyfrowe vs. fizyczne" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla sortowania malejącego. \n" +"**Dozwolone:** uuid, rating, name, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Usuń produkt" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizacja niektórych pól istniejącego produktu z zachowaniem pól " "nieedytowalnych" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Usuń produkt" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." @@ -576,7 +653,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 757fe02c3735d7c21e094e4192ac20cec56f15c9..6dc0c7700f379b490402589b529901491064364e 100644 GIT binary patch delta 11572 zcmb{233wIN-N*4^-**VBIILMnLLlrR$`Uq7g6s+|xyhY`D>s>N?+qj>TvQNcaX}OT zQ4zHjrD_FK+P)QIeUa*0v|6ie!M(M0s~c^pZNI-cCxQ0$-Ja*2$A3QOoS8Xu_M|+$ z?!Klwo@$yr(Y5*Q4%aFukZ~yX zC7*}AaWVG771#|oVk+K^yy`rUJePDnB(aTxW`iAP0N#lQn>x;6)Ca10D;?M4P<#|y z<1cLaNz5eQCe3_c4C?vIP<^-o&%wRcBdB^$Vo$#Bd`TjOg7&;sjDzrej9~$OAJv0X z*cIDlIL=krABW&hY=O@pgXcVt8nIVV&;K5~;5XO?I}IbSH>U7?C!IuRoP<4bu6-b4 z%j>Kgu`Ty^p&IlcQm1p+mcNf9$$y3;a1g_y`wLMYT#K#n7St5niAlBm2ljy@sFuEr z`p~;J{|UAv?_`-CwnA0V1KZ;`Y>m@UJuJp{coC`rVSE2(RK0iF{N60aUvu#Y1s(AS zYRHab2YeSbhkryD+h>~|WTARA8a33@P|q(#H7J6rcO|Ofo9z9q*qr>msE$66&G>8R zpQJ!TdK9&Ke{KC5^`XwgO~YK&5ayyjl!pwCGZPtgrv|l__SpPWsOR6qarhCA$00eU z0hcF9r~xZb4Y(H7fIF;@VJGs(P$TmuYKT8Z4dp4+oHu2{)u7Qh8mFM@tHsW^88t$? zQB(6UYPThyB%!%`1NqN+hadVtcWTuf_s2;%8P$+$u?ucRZO8jjL;O=){tBwT_iX-S zRDFNPbZnFBIAbvvAJG0^PC_qq8D-|O5AvUr!w)S^4>felF%R!Ywfrqq1DeuZRhW+2 zJt6Fhb=Vy@qltt^=LM# z=L=CIa|vo>qDWQF8cf3js5S5#d;fjpKj#!bhH3u~r+cgmXDMpVHem|hgE~?V;d%H9 z>cd@FL7Kz9)>KrFbCEVW(~%A1tVRacc^I4FNmPU0MXiPQ6BvJepbrTZjKNeautrfs zz0GH!|PczXUa|xqdu6ze5j%4pxz&a%#KrlT6C*X?{7s-)jg?YVqyH7Wg>oy(h6H{sfsd=f&BKzY01PnnjX=dT{`%;?dX| zr(+h*!L7I&E3k8s8KGL7ME+jXb8llNb}BZ%BPL=R`7+dqY({nHXfg9Ygv2)#WZ@l|Yt&68|y z&1FYyi!+c}aOPn;-i2!5^QZ=XghR3CJah1zhnk{dRL|#QSG)%M;x<%+A49$O8gj%q ze??7AGLI#z4^Ku-MImb6&PVkqirTNWsON4%^qE_c+sKt0MYUod(Mx@;$Gk2p=_piX~@Vhu2GZ&ko zkE0gZb{vUs;u!33k*Ti$GqnF#kkDM;g*xM(!yb4tcz|7jngW;KEEhH5Bd9sPXNei& zr%~s{YuFRNvUXT%dO8GM%4cF!YjUU>A-&@<1nl+GyjJh)! z3vs*6zlZ(EPbf1k##_iIPz`7iHVqnq%&{{LwRQ@z3ogd)7zs1}S{!RA=!zS#5AH<0 zc+fuh0_w#RHvbuRCf~v{YbOOY1ukl>OhOHDB~HV2)?=s<>s)SsNtHAHYQSO&hGGe} zzzz0+EvS~>j~(!7)D-+Xw#1XDhJAn8V9am>b7u@yGE zBKT#LblQvmm*qZWOY>N|d1kOP9ybj0W zji{+Rf*RpBu%q_>=OonfCQ-B9I-zdB{ZZR)3~CKk z+VVK6ftyet-iE4gKj!d#=SdRz_&fX_4y`ghc@4FS-$IShDQt&hee*ZrRAfOrx8o2z zjl*z2wb`yksKvVzHIk27>+xLjuVYdt*(nm5lP)VvPkN&&9)U}6JI=+=Q6p0jGizct z7L%{Q4tNMv&vV!XUqpTQ1P;f~Q4JgzH_sKv8Gp_BA_`_<6i4DAoQxl$8aOOrR_`=S zBOk_TxCJ#LKgW)E64j7Tusi-0HL_i5?B5S~Gx^on0z0f^{8LGETWMOHhl9u$p(Xl|nl1oYGg-zHK zw_+#UhnmB~s0O`=o$(}Ugg!$ZDBZ6zbD4`NiIFUo086P z650-5phn;uRF7L;ZT=qUgBsdJHh%-oCjT62J9b`eI*^N6d=pR&nS$!T#i#}?$G*4* z)u5f&L;HUp3BB+P>cg+2hVl=n7o9bxVck#__CtL*8?$gOs=_4d{hLuI-(J+>K8hN# z6F2~y@=cWw#@z*#5+pjhIegUdMSE9DhnHYBR%22S5>{91k^;#fQfZ^nMO-+Bzyqu<(myX(yTH0v}R z%KcJYfH$J1?1ar{tTPQuu4DX1bK?ODdf~5dEPjcTF>}57yS@swdLOlZh-1hPy52m$ z1gDeVih1}37GRGJrk*9%yHL-aKs`6)28MDGiO>z^$b1SHl5cUNIoXz4_hBLBf5w(L zeWR(M2sQUN;xOEST01{M)~E9(YRxR(WdHWVR^->C*2Mv73|rvh`a7I)wysQ0IDF>B;8oJ9UD%)|jVnZ;U+gUMfQ^T|CVG~_=+4QZ>J z&D@=bT6`XA+uV)XhKEr@_YoFi+AStugUiT2jxDgyt)>Gms^M8U6lY*NtTN?E=SmWq z>uuN`e}Na{yVw!)x0)#`#EInhqSnk?s0OCoX7Y2eKl%088t=z^+>d?m515WEx0#X4 z!7cs2(iE*|-De{>&T!JjghzS;Mu|U@zL1zgB*`~i<)rm}CxyfaqPx8__pFCPluP9BrYV)m2|G)XN}1OC2dJxM`V-x zB{4BoZ{|GN)Q+jI-c9}1~9-I51ekUnnn4J0VPm&{P?PW+bic|->3jo6h~Ok@(- zlwCo*L0VTmF;nyZ5Q(M4mqdRaD90NKonX0yu5Faxj~@~a(`>+%F%W*SKB{nrl@-N#IEFsf_Xt)kFB&=J{x;L7#cZepGJ%_(17LtAi z>j+)965WCnzmV*^lW?p}>sFjN!uNw~j&(e8d(oq@N)MlMdMr=HdmEeM4MB%p(7NZ1}#@kAib4c$Cn!fVi77UF+~O{2g&S>1jl7 zVn6wp2wm3_izw68p4dUU(&lf*Rg_&q%qBh3mOroWKSH6dSBa6t4cyc}v)yDLT20wG zq=#b(v6ILoKM=nl?jm%R*ypb%y(K6yf4nxQ{2=)e#8UgrY|^KQ_L~3c6b`XBno@Wx z>7KaSmh~ciJ@IYVFrK-X8$T!RBHfCpvhSs0KIJ+1GS0N+*W*6&ZxiQh{|_UvoLED8 z6zYl*P04S^9}#~dbQMvSM|?zj1t#zS(VF!8sB0qW6kLusVJBid=?8Ho>beTgC6agA z0u@do{)6x+yAuCM=yJ(_inD^8`C~=N*N6?aOpM~WJBTvkJLKmPlXb&h7f`ONE3Prg zWbl7Hxs1#;_U8HKM(}ejWf$4}XwvC6U1c4lGU8$KV^CMv5d8cZKc^D4!~*XB0{lHr||5 z6|Hl5IkM7ot7Cq+rYsR}ym_H1_~+^x3ggil{{1hlg6|eZsv?y&m2N!Ymo0Z!)P$-M zkwl&DdH;H|Iu(<9M@ z7vsyWU*)-cs?v{nZYYt6MM`TDUQprim7!=2GZ>1*m}R%^J8SQAGcxAaG03$U857(R zJ$|`HF2B-CEc3%z!3#_CR6f#{jWmTLFMVh2gC&iXB#VL<;&db}?3IUVqKRNQN*d>| z#Eq1@eq|&Z+L)4bcVj=M=kgCNZfN1X7b%ooQ)H+3&%{{lu+CoGfJ(hjwS74(^@MXGm7QL zT3k4tI@KsIofh#V3$v+@pRhKbVuOm=|V1 z81=}NUVcR)YeY_vEoVK}#JqTZq$+Faz*VftffF(Zma?`IJ}n=3sh(;Zv_lI%7O74| z{HpxM>CFnwShOrWb;K2=BWstJJn`&+oZO^Nr-Yv#oFZ;G#5e}0R3sFfGrDv32~}Rd zpA*V&yf@#k^cX~QI3;||Ph_PZcXY(L4ONHzhWlsUV}rRWPwEg$P@zt$xxv{K4l!1h z_4_%sLatZodK_FUYB)fG1B>ll{~h1n_h~WTtp85^L63v6v7_m3F%1ho&`^KF(PeIg z+{#d_j6NoHl7!6jagK>I{byCg`Ffc9kt)8h*LUeEd%H3esXrVqtBLYya@@2zbHtrp zSt3;NKU9Jon=9~I+(glH^lZ!)ISl6_)hU{Uo03MoT0H$ENDN!sMyVnaa=9)f;myeIzxkl zoFx_RPKR82KlA&-+lU@JN*#{$o92}yI z!2kOpnly*%+2>~D>`dd)8EH)Yw}&WwGJDpnS{8LMb{-wH2Pu6^Ft^N#exoHTy-3V= z(}I=2PIFiKW%c`*jd+|j#rk1tf^8BUtD$c>R)aU~x$4`4l`4aSwI-om?QyvBH-XQ( zV-wZyVe&II#0h@!Ce;qsBfrEOPueW^>{C{UZ170KA!`G~ZfT6OBv{(! zT)m)|8(KlxuB!2f*ymVC?co9X`Z@%z6%e9Z~TN}nIC Lc_Me=@w|TkG;Ope delta 8700 zcmYk>33ye-8He!!0$Cu0tOP=Ukc0%1kOi^P35e`Y%$VR#5T;3;g6_1hWahaFJu8JLU} zn1HKY`z~xr{d0`Q8&;1Ai?t`tz~*%H!3Z3Mr8o!k@m(y!hH=J(VhM)eNL+w3F&-~r zLky)7h%GQ26Hv$JVK5Ftf8#M`EJ+XzQ&1OPh|O?4YCtuvf4^&g-}xm5(0>^id(B)iY~QOY$`O<92L}FQW$Vy6gW2Jv#9P*Kh;1#y?|I3`?|A7K^%27HSQPuq}>4 zUtEkD@G8_)KaDzmCu%_ZQRh8^8u%I4Uz^DM`_OQW2HokuQBxnlPSTV{q4r^_vmfe0 z<4|i^g&M#L)P>ffHs2OZ!o#Q~z3%FbxqTgLup2dicTfX3ff~R+ zoeemv1`v%JKnnU}0R~_RYR!kB2DAz@@k!MAj-k%~6>5gAdPo|R+(Diw6TtBOFd4OJ zGEo4hEvI4^>eZ;t`37q04q!LDi5ht4R6BqnsPipEJw1C+Gxa`d4}67f@j9}XJSIHN zc=tdW>P|B8F6@KD@kuPhtEd6=WLlbHU+j(Ls5{zMJk{HzAX1 zjwAof9X=Xh2Gg3T=Rb=i5J#adFxAypV*>S!&V#6_KIio3w)84Z!Zz3s+hQf^sd@x8 z1M5(a?RMvW>_hz|dbHMU7^X}_O>H{r1O*s@#i%=~z)+lykywoy_^)02OQNAG{k&iGuj{1HrYN@_Qo###t^RLYi#Y;fOqV6yW8H343t=(KK!soFJ&!bM< zy{p}nWvK6$qrN{1bputX8(8AnA4d(O2Akn7k2~PcsF8i-4*1d?a2~ZZw_M$aXRbN* zaMWf^L7i|I>IF0b!*M3+d@E5ivmPVyCDd_;P@C8D0g1kF3N_Np?tt6K6KDLo+f9{= zdVGc>vuCPNn`=L6^L>Eh@iOwVG=uZ(6fZ*Ez!uc;HK?`Ui!7bT)RJg(TtuBXmS;=5 zvjR1+8q@{$q27R}owqTbdfR;4-Wyv`uf$eZje~I;YU!?HKg=z#H&l&bdj4xjv=(oo zrt~PL;|*tGp}nKwm_Yk-)GmI-wVy-{ynavn?(c@GPeYyO1=JmXhD@sQ>t)-Eun*Ta zb4WOcIiLpAa0{R>GAU-YtN#UksQVS$S8^a~ll8=QI0$tkRak+`P)m9iwJEP+L-grw zzZZZW*1$xPFgVi&RUeDmB$cQy&O)7d6>2Rvp`MCo@mF{pC*n9puNgXq1$Yg0T$jG~ zXL&5Pr@jsoac^JdUsLiG4ZPG$6blrOgHW4j4o2g4)QJxwFD-KplQFu4cLJ6m`_4>9 z-Qn+0yMH%oPaMElJcW8%{)0NNe}Cp*@A`!P_Higjt=$+5z|F|D%=6d*ub>9lVt^fB zKI)Dpqh35upq6Mm>dtqdUTmLW6rMv3xWQfadx;(rHnJIr8u?n(g*RX$d>bSG08@PzR*s7GlV;pMJt-u)k0~X;)^utyI?cVUjlW6mFL9KN;`r`wrrJ0S| zoV!q)@fs#$`XDR^u&XTNqE7o%;7sd+a=BV9MRz$KGQ`ljwvSu_L~N zTI(y=5}Wf7>y9%}{e4kOP=!P5u^CZ&;`@8-n=x^S{h2MmRN7~uX0is8@MYBd=A^gI z`ZvATu2olTO~)kXO4q)_)jx4wLoG>2Ie+J260)pjiK~BrdI7}^wHD&z)JLKQa0NA> zsA0^wp8s|vTFWd9#zG9k!Kk&GgdsQ+H6zO~6rVvI_ZsSZhh6Oyb1{tr=m z=pU}X*$6w(DAaY*P{-$wVE#3dG8(k@W849Yo$FA~^H$UapF>UU>*$?wjG}%TTjCAZ z9z4?a$D(E;6E#EKQG1{S^&XhxA<^Tv1v}vZ)N_0Z``{0lk9ni)Q}8fqFRVumXa`2) zK5T`jT>B4B|Iu~{qfs;29@8-$b>p6KB-tcYsI_|;HN}TeQ}qREA^{9&1rk-q}lt)klIfZ&`|BfC_?JbfN z%$>|{Gfu>YcoP%wHfqH257>8kHtK};VRxL2I?oHJ0oGz?jGST}fZBA6QT@BoPsdGR z{dEVIY0&QVn`({6zSMhS0IorO;VBHkXV3?Cqn7S<48&uo{?AYYzla)W*fe{`v8W}= z!5qw==Hb0eGLME_Jc$~4@N~N*#i%dLMy>rq48jel8L2^Ca4+h;a0FxVG`7Y&=!?-a z>}HKe9p4@G^bGWn1d%*~O>r|e!{1^%+=u@7C29uFq3-x9c0-?;c4`Yy^#`#(?nHh6 zC)5o@KWGOMhk9y~F&I6)NJ2=4px$JYPyb@Cov#u@aX!Z3W61eEW;cnZ>@ddQMcZMT&a!JChuR~ls0;SP##n(`!%3(U zZpT!75BuN^jK?0c?SRH3Pq0~uYQN-_^$(q6FO-YnbQEDH9F7sV8t=kwn1PqE9AoC% zSMPk(=H2MrgSw%QT>S@U$UJ*oDz>M80N%s(O%;jO?64XzY`z^~C1z4zhmrU$X5$&u z^B?h${WE(g=2G9}{1~&S2QIM37h!Me3$Ys>!Xo?`Jvvd*LVLm$r~?n94h(vjmk##F z0r)Hq!7Esb#fz*PQ2pPcHd`8ZrSE5>*1igpuo}bgRpb)p9S`fTO;fnoZoa{&$7MQ( z;#^l>gS?~6dejAOV-xgQVrMECTTsu&W>|)uaV&1ar%>NdTWa^nW-Oq7bSWcACTU!4 zcWVx6Gfi;yHK-|n6E&s(!uFWB%x=Dc7)5;*reh82&Ob%XNXT+qABB^sZ^4G>v%=m$ zfQLjQZ;m=~I%;r*Q#b~G5s%svcShYoG4{u59E=~L?mYG} zyL1(({tegZS9=5hPuG7$BOor_w+ z&6tFHT>IBpk9u9XpX3o5^dBvMA-@N|=lb6Dejm9(vw+4zVjOukb|qAb@kP`C{D?uW zop+HbAa6<>BUf2RKAxCN%qCRYI)kvBx|S-9+~Y&S<7}QF`q9vz_>4RYRR&-;mk-39 zv~48*p-#$!7Vp$54d<9YV-fL?`<~iWv|qF*>Pq{1%>QBz(z@v}I!I`$rxGeNi5U9* zQ7;}9X4O34&Fsfec%5j#ag{_G`FFPKf1eM~KAqa%T+4^}C~eoY{>w?8r6H6^CXN$Y zmXpM3q67V9I2Bcf5&!XK{CST0f6i2v;lHtwt9$STZ;ySe#=Bf3(>D@}bs?2bG%Us@ zI02s|RMt`-La1yZ;)oX1-@^o~z@tPGxi9e>a+NA_qo7PAe(lZv|Dh-C4WjP)=C4#f za{c-dQVHP%+Tl5P9kbO)IZXHxJW1Zt&|T;oS5L>^x}4X7_b;dB9P@Yb1;i=hK7!&g zKlAw<(VqzAptta2VmP5U-2Jr8$BV=-%kQYHCq~l$<1aeqk)I_t5I0@>2xlE9Napgr zyn5V!E0UEoBoUd!6r!%=lQg5huJk3DMSV2BMyw#egDE%`mlN&W@u_%)dJ95jAaR3O z?fUiB_0E4+EOCv~)JS>M;{B}RGm!oO*OrHK-0@SKf1s_4%XQdx;wz#TZH4$RB8*Vc zPkMwmIE{w|Kg zAdDnB5>0-w|IE`gsEl@BRQ?HZfmopmWg+p7H?x0|JwyI`R~J2q&U}9@eoF+qbA3%- zSK?_~`M+zh{(Y!q5_>qJ1F_p3$q$tGKO*|l7f4>?+Dq_0+M3}gOe9n`6OGA>T>W8Z zOT0y2H4#ljxOP(WC$4YyDx<6-S`n41P<%M>ZJdr7*qPWtL{V>uei%)td~Wf6&UX1K z*Qe^I#J#TmlQc`9+Z4nH97A`c)chyv=f2$ds5ePS{(n7$Fj zW%9d;y7EtwblTexqsSk_MZ{e4U%7)OQcoeDuScRDv6RZ)*qdlTUP}xhhEs2iWvKE6 u(T0d2+7q{lSR#!6UbqB*!ZSn;p|XBsTh*_51NwoT9476cl$2{NZ3>W diff --git a/core/locale/pt_BR/LC_MESSAGES/django.po b/core/locale/pt_BR/LC_MESSAGES/django.po index 466ffe76..335ea00d 100644 --- a/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/core/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -482,37 +482,115 @@ msgstr "" "Remove vários produtos de uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrar por um ou mais pares de nome/valor de atributo. \n" +"- **Sintaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" +"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Digitação de valores**: JSON é tentado primeiro (para que você possa passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; caso contrário, é tratado como string. \n" +"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de forma segura para a URL. \n" +"Exemplos: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "UUID (exato) do produto" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Nome do produto" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "" +"(lista) Nomes de categorias, sem distinção entre maiúsculas e minúsculas" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exato) UUID da categoria" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(lista) Nomes de tags, sem distinção entre maiúsculas e minúsculas" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Preço mínimo das ações" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Preço máximo da ação" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exato) Somente produtos ativos" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Nome da marca" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Quantidade mínima em estoque" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exato) Slug do produto" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exato) Digital vs. físico" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Lista de campos separada por vírgulas para classificação. Prefixe com `-` para classificação decrescente. \n" +"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, aleatório" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Excluir um produto" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescrever um produto existente, preservando os campos não editáveis" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Atualizar alguns campos de um produto existente, preservando os campos não " "editáveis" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Excluir um produto" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." @@ -568,7 +646,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index b80d695bcdcda2b567dae454e73c9b6f12852cb0..170b5996bcd0821692854c03a52d871befe430b2 100644 GIT binary patch delta 11573 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 diff --git a/core/locale/ro_RO/LC_MESSAGES/django.po b/core/locale/ro_RO/LC_MESSAGES/django.po index 109fc888..c6b031e6 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -491,38 +491,115 @@ msgstr "" "Îndepărtează mai multe produse dintr-o listă de dorințe folosind " "`product_uuids` furnizat" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Filtrați după una sau mai multe perechi nume de atribut/valoare. \n" +"- **Sintaxa**: `attr_name=method-value[;attr2=method2-value2]...`\n" +"- **Metode** (valoarea implicită este `icontains` dacă este omisă): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Value typing**: JSON este încercat în primul rând (astfel încât să puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; în caz contrar tratat ca string. \n" +"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în condiții de siguranță URL. \n" +"Exemple: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`" + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(exact) UUID al produsului" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(icontains) Denumirea produsului" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(exact) UUID al categoriei" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Prețul minim al acțiunilor" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Prețul maxim al acțiunilor" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(exact) Numai produse active" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Denumire comercială" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Cantitatea minimă de stoc" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(exact) Limbajul produsului" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(exact) Digital vs. fizic" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați cu `-` pentru descrescător. \n" +"**Autorizate:** uuid, rating, nume, slug, creat, modificat, preț, aleatoriu" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Ștergeți un produs" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Rescrierea unui produs existent, păstrând câmpurile care nu pot fi editate" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizarea unor câmpuri ale unui produs existent, păstrând câmpurile " "needitabile" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Ștergeți un produs" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." @@ -579,7 +656,7 @@ msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index f3b8bee1595db9b753379d51081b107756fc92f9..931039796c78ec432330220149b7f987730232f2 100644 GIT binary patch delta 12009 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 WXPW!-&*#7M@x07@J^M}ClmB1KqZ_#Z delta 8700 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -493,37 +493,114 @@ msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"Фильтр по одной или нескольким парам имя/значение атрибута. \n" +"- **Синтаксис**: `attr_name=method-value[;attr2=method2-value2]...`.\n" +"- **Методы** (по умолчанию используется `icontains`, если опущено): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Типизация значений**: JSON сначала пытается принять значение (так что вы можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, плавающих; в противном случае обрабатывается как строка. \n" +"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования исходного значения. \n" +"Примеры: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(точный) UUID продукта" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(иконки) Название продукта" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(список) Названия категорий, без учета регистра" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(точный) UUID категории" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(список) Имена тегов, нечувствительные к регистру" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) Минимальная цена акции" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) Максимальная цена акции" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(точно) Только активные продукты" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) Торговое название" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) Минимальное количество на складе" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(точный) Артикул" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(точно) Цифровые и физические" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n" +"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "Удалить продукт" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "Удалить продукт" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." @@ -581,7 +658,7 @@ msgstr "" "варианты!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index a751bcd59564076dccf6e28a165547d99745c5ff..52373b7f2718be41775855f1f4075adebb406faf 100644 GIT binary patch delta 11345 zcmb8#d3;pW-N*53K#_f4lD5RZ9m_8P7rm_uO;OcF$N}eQ`;` z(k%(G^9`zQa=0G3%5hp?quP#>lHfSCu2-q!ywKKh8siz%{Xbg2!barlw=>>=&B^!0 z>u@qQ!#UUxAHa^d6M58m8L1a@Do7MjP^G=&w85=-G{JFBqF#{4Q=M=b-hhYjTKt18 ze;<>{S5GuA=!L3(7itVEu_ZocJ%eiZeQe76ov%nVp`aE|jm36&Glp>p{t`8UZ?OT^ zOmdtB*a|z~cDx#2Kqk+588u^Xq3Zt)>*Eht9qV=`@H%Y5`<+fC>fu0aisNmCfGsbu zK7cj2zXR2wJxH6*Nn0MrH1eNeH*CkW=>8WfT{GXj})Cm*$!cG>)KRQ*!yjUVAn*rBWGz}+zt z>cAXS2bQ2Zu-SST>ym#BH8by`rubvjRDO$E^8^-L9qNfaaS*D#`B)Fvpl0Y{)Y9xn zeQmL0B(!$#ApbZY@JBCbM5|ikRyYuEL3Lya*2fK~&v7?uieIeLiGp!2ND>r8tjDndVJUb z3$PKcK^J$S_R@=}J@6jZ*Z2Pci7^y>h0}0QFFrwh7}bGKu?~KX!>}rE(}+f)Mm`BO zGk2n9CWtiUEW$*58np-Bv-ji3KhC%O>8$U+3&UeyIMY#Uwi=t@Bd8Mnw{}F0xI5BEXBhIqI17=_@Ji>SR&s}J+97hF$51--B%4zUJNQ(a_z z26dGF30vbg=wcJrMN@hsY6kk@^*GiVz~SVVqL%s%>)U;qe@*Rq3e>>IsF8nx8d3Fr zW=2|IGxA+g9UW=QC!>~NHu9x9VVsJ)P&4s8YSX3lH}~&EE$M1h`w#VJ{T^1aE$}>QMBk%c*o5^^M_Zzv?}4n2GX%Bi7NVZtfLf|YQ0?qT?S)sYZ^lSy z&Hsej6dz#Q<5B0pU8wsZ zRL5eANT|XCs0v$9YqZbik6=^sFJfnW7ghh7Tg(B}5F3+kg=(+|YGwwamTWTWpvpsS z-UX=o%aD%5oE^5plgMG_97Pw)P`kC-ATzaHQJX7(t#JWn;totgXRw*#&Zq&5K-C|Q zshELUx(%qku?>6c`+t*!c4ze=rf1_(FUZEWxWf7*b|C*7oBtB8Bj04Gd2v^qKzea3N-6y)kBn=Ho!}C8&CT#bm5I*8E2F!$k5Ks2N#<8qh0aS^o|sexM);+l@0P z+*s^LK8QNYi%<=|hVAiN?1wFGGb5aeHOb$N+7q*}9WKLK_yo4ZXRr&th1IcYjE`Gu zSqE$2aAXyn+p!ZCqdNF9s)HZl4cPQ{bMOp6Ezwxi$R}U}T#U`J2-V@ksOR2Bju_{k zsHKVZWy|Wtx1g3{H0ryZfErN{^}WtV)mw)e!8WXhuc8mnVk&l@Xnr$h;t=vnQA_wL z*1>bAz4KRWsPDh(Br_GwP;1i`wL9-ZZN?JR)SpMqNX{^v__Suq1wL{lX<_BPC`?%78~GU+=;(Jt=&w%t=}hb5TP2J zemBQ0=3yILkJ?N}Py;z-?_b2`R$x7Za&%rtwc0M$;R&9AljBCJdKu9^1xKSF^~HNYvLd)t0BDUYuj|%dH!cUG9|F{L`qf=L~AVpT|h3q3^8;e)GcWSex=DsQc}0 zd1utr_eOPil)dk>_h;FBKC0e*wtT(K7u)-Xtg&Zo;#t&4U$UOHo=45Zht}_HdCe?S zzZt579c(@sbx_@eZ7>tH374Zb=cA~Rzh?3==PeRCx&DdjKvK5xM(Yq%2gX}{wtS9t z5vsw}cnxksy|CEcKaOhu*Qj>Bv{sp==UD%SUV`%(+f$(i)3H1GJXHB^ zI!pf!#n-v!y1 z&H|i)7f|&E{zU72s0MdiU$uT>Z8*o=?~QuF46KWp)~IzU>c^-kMnV-|x1O^V z-m&=#)W|eucJcE<}i92@1EnYk17T*x{XHIRkY2drDL0p+`G{+K80|B@{@YdvrM z(E1(f1y|2C4c9_7bRDW=$+moybqY47+;8&>P)oJamhZCV$E3dhmu$gV>v`*ks44so z)j+#><|ON9y$4mk74`ie!F2o$YK>FpoBI<`0|=sKCW6`vg&0%8qa=plA@sfm>_xr> zKk6Fk1Z;*`));E!TW$WB^-XJqy`ONeIY-){{#7jp^`8Bx=Rdob^-m^IcY%3PKUB}h zp*j+^7TfZdtQFQe_nG?LQ8P6KQ}BM&-Z^6PA6V-xH1`KsgA1AeK~&sM!Oi#{>PT(5 z$ee5$))MsYqo%SY yBQ8PFao8uieAI7odV>bU=)J*;v_53Hc{A*QEK|-N>gHo@krO-IvEBc6g+p)S=+w3(r#uP6O5 zen@;xsKcz7^A|#2hAsxJ@pIEYSlgON*=xjP@-uKWzJi;H%Igyn`)sD3eQpf-qRI-$ z$~sJn!vX44v32yu5b0~NhTh-Y-XQNxC7pwX%5e214tpu{XBcEs=SI|K(p8-Z5W{Ud zAFI$_n{cKr&$eZ!&?TBtuK)ev{F_K3))2aeaN|y*s>wPhtwNs=|0>`-%za%ma0M}h z^bVp6>9K^LbRP^7e-|m>65WVK_Rjb#D)}heMN}i^QLcS5lUP8U zCbm=72iszMyccT{kCCoT^dp**zXJpKFFZ!vMw%<;+{52|lkrMwkiMTtCHE&{knRyr zL3O3=b-PWM+5G!>jZKfn6GV_Gpxy(--Nd{0zCKS~*V+B&W&Y^><=ds=T0&Qd=ui5H zmvfx|!S8MQYRV(THu7%}t4P-;QixvU^K3majxt^KiGL7zv}E@eNVORys(! zl$b?SUXR-Zr>FA>v5~sj#22=F3F+r-dL!l&8;A?UgT(WMt{v37i+GTjPsHA%untj0 zce!3Scn48Oo4$sMSCf9z<|~O(UP9&uY($ik9zZ0K=E(4VH}s>FOr%nF5AhCZUB4nm zX#JlcF`f8|XhnrArJ?o7*8~$atfX&biGP&;(FI{{?@Z;af40w=9!wLUm)6( z_SqM9$6G1;fmlq8B>zjSe81Czg4PrqB6Lk8c2cHmDSn2Rh)tx264wz2$p41WwS>5X zGF`QZZKQK-em%~k>`r17=`>sZvflp-3U$3jq!BB*IfYnfD=nm~CFw4hPHZQV$+yKX ziDE)mx~+d7>9t-7&tX-{k774sx~(&c^tVJUt^Y6zJJ=fu6h1_{DK4~S%}6gN{@c}= zI#apvd!m?hH6qtO*Ae?u-WAW{2wT1!pCtcR;%0sSok`3l7Lo3Oy23;P`7QV?@g1RS z3}t}O1%wl`) zTS(ayo9{`wlTGJZ+o_D$PreuG$~1U?f5+d!#C&2R_y2(R;Vj~M(%$~RMGq$W=le3E zo!r5`s6RUtE^sGJ8ad>0>5xEnAnFUcb0ev4-mHR1Aj22Dd~;lGu)yWvz+AtZ7Y=3S zXG9~HZ{B7Ke%f4RVI-Iz%XSj8dGDA&ZXhQ=$Bjfo8MECv`M%s}AX=b%{-58>3kNd% zPGTSyBWSn%%4IN{@h4F{dW>g z#fiRb??F@N=T*Ee`Q~5IU(=<*p`09FO2nV%3p0zEuG(@#S#DOqAIyxn(U2Png`@7w zf>e6!&kD?U=LOQEv)uHQbT=y$b~F8v41aEBAU8YJb!#Lg-4YCj=J_-GBqh1|`GL%2 zmu9({>~$^KW%fvCg#CJ1vYQji4DcpWUT;)8H#3y8v7}AA*swq_>JRf~H@wFE%x49CfiSD=*7%_CQ8y`RLIIOJKPjn?o3842Yv%gr_@lEz znJL}_)BCDC&6cH^!n7G56z)mC+(>MU_dtY!Bxd@veEGqsHy!Dh*D&1;WVxZ7K$M|$ z;$3D9)05qFZ!wklu`Zd)wfAmBa`S^hr6N&ZI2xH3h|V(QmD!k=XKH`EcV#B*&-Tyv zp17O}MwMsMM7EbH@>ms3(XA84jdcSNO{_mBPg@|1$&9+O#7M|3 z2<5Zka+%;r#M>H?E|~#7l}@}N8qW8pcS+Ck1tWg57iNY+LBB7T4H(Gfi}Z&{Wd%dN zXr!+jiq7(f=LI5uH)bL{J9ySOq!hKXXngwy~Wi&7&_mVlNaSr6Rn z@1Gq_>DJZDX0adh!~RJBKyJ$Pw)5DNZTlp*oyp#chUj_Q8LCyo>xVXcIFJ_&gmU{| zUfvYn@H=K@4(@i(%(VHl)1P{=OC%@s<1SDH30?ynNTePfxEZ+jKa7U`y%o zb@78c%U3<&BwoG~U;kuT@v5??Pn8w!Ej_t6zHzaWX#9B_t|=}nSyA!mR&y4W6&IF1 zyDolmWBkC@iWTdf#F%#qnc_=Jc9otw#;bNbSHAlsov;nWA6#3$_wbLW53ej=wWhK( zzH-Z@UHeqqjKq|GdU{Ri@wM?aC*v!Z$9M0IA6_3{zRgLbFXacGyP`_$f7fAac5>-a z#s00fN99HPDhjv6*B_&?itR<^+m~M2v$$;ChWN?#q?xC(gGWs_E*36{uUcDvy0G;4 zN$>EXYmB90+gj>!ljTWDiZ5Gy>EQ8CPjBa=9jxQ$V&URThnCVf3DY+crmHGhxg&n+ zB#F}J50(|3P~z0FvXavzDz>jLD?YigbjA&_vXT>JYY&zl=gm)+t=t^ny`4n-$WB&? zCcDH7Psb0Pxb*yvOS{&TAJ|b*xXSb<#l3XsK-p89l9K4p|L+`1O-)U&k>ZwZKEd-b zHLxxK5Hx-xnU^*+stL!Pn80;~m)Q^>vyL=FNx6DbT z~U|Z zD)wxSFIyQu{P3kin@XR3zC2d6&pV?u2|G&44(yJvKU8|^@zT>J6@?qj-soaBiZ}i> z@#FW$4;S&GvQ1C(ttoNzVEK|0q}3d){q*EwHscTOiLcytY436-l%~pmv8VL-FDqA( z`L8^dm|fmnc^s8KTdextrc@(`PQ=$e65qR;;h5c^)5?t>ToqrokIih4EVumh=JJxo trgb)O>2s^ux<5anG*9-3nxZpG`Tuf8QT&rbiv0iikV<{3*`%c8{{TgYD3SmG delta 8700 zcmYk>3w+OY-^cN<;||Ok#+dUqo7v1Z=i@NukmDRjo0hPgPeaKME2o4~_d2*;xo#!Z zrHe}Ga-q}ZD&?Y+O1RYJRwAx)A>_JW@BjDXy8AtR_WYiH-{1H2`;B^_yyDx-Dh4NN zR({-ZJyOBB2DqiVa}6sxmsU@u&OOuAIsUlK{HTrZU<>>Ln`6ah&V^$ORCyMr;W$jj zRaU+O>ytl*4e_!!aJ3VB$5~jHiae}?MK}mcu{*wpxmYF9xmwsCYhoeZhqEvV&tny= zMJ5XCVJs%2+IPhm9D)%paITm{GzC*p4_<_~;Re)zwpjfhEC0|uj*-;=h#Jr@n2J#> zi^@A-7WTqSEJf8nk9yuG7{>G6wA!gYH7@ zHGp?f1NaOzfbY#p z^r`_gL=7MvBQOUeu|I0hN1z6@65HbAsQwP3`ag+Up^E{DY9wwVZlg8pq98%x-U;c_1E6=IjH`IA&cUIaU|N4SdP!)UepZ} zTKT=4hHc1~p$_L8sHNMBo$(54;Mo~|03%TSEkeCLucB7!L(~~KiB0ela+U%Y+uDWB zKx@=Y+TuXW!vcI9hvG%l0D7`4HLx%C!BMCgZ9>ibd5p%FF$VXcw%`bIyj&RjqchMN zWAy%aAfXZWM|Qz2Lk8!zqxS3s>Ja^e@feZqTsKTYJ$M3Y3#Xg+VombPu^m2%EUG(< z{Bbw=Q3-I!s@6x7mYqB_XII@lXEqj6XZXJ8zbp$5Lu%3nZj!CvH8xc6`j zUPAu3K`gTl-Giw5m)o=c+S3yh=mGyg?cEhr$6=f_4Ja0?VUhgHR7F!8$k- zb^i+Fk1OX#Z9I&+|1@f=enRzgvjgj|!w}C$KqjDO*b*6o>yFyH`Iw8(;!r$`>bOfM ze<+8d?jMD^zX&yfIj9LNwet0-fo#Fsa7SPb-bRh=h&4EF4bGyr=DOu8^Ul>JAB#Gy z>8K9JpguqoF&1Z``dfionGG0+FQD4JgF3vyAriXb3)Dz|vWL;E%}1(&cycOS~90fu~XJx1jcZ7qWGMJ554|;~c8v1l}#3&T*)L zZ9zTYP1G0gEAv-OBHyIDFYkl($d_OPEW>L; zU=Lgz2?pmHqw>Y5LsEjeaW1Okm8iXZ67^R69v{WSI0^4!^je{Vn1er~+O_HHe=Qed zbMosj1$Xsj{k0?~Dd3~#;@O}i9D+JTrPvTRqdMM)e6-vdOv8r#`6gh0zV*oi{Od3ZwRd-7BtC^a%RP%N@B(Up^=|hA?2ekz zJ*W@QBd9IfjGFm#s1Mtx7>{RA1FkgC-yq$@R*1?bjz_RzJ|GY6vMH>V1G7(BoaD2ZBTnX3L|g|YHQ}94(ATk zVf-1>Fms4skwVngtwh!T8O!iGax7dh)Gz&CP-pBcW?}lU&}$#K@g&q?Ii}*fsJ*^` z^|3B5v1Xiws_%>1f;m`Ffy0Pe(o4hrC%N7T{`Nz@6>8=KQ4^Yh>UW{lZ^n4N|NBD; z=e|ZQ^;I)wr0+NtRX*69jMd36MOM?T#T-12dDv)_-}8y)LR?7s8f=YKNBga9kJa`5 zce8>4Dj+`$qp`@!XP{+hI;TWjK%$^4nIc?@Hnd7dGnf;hZXpCby4+=P!Dct`CM~o0qb9jib5-x zjTz(v)Pr9}J#e?VAJyRjjKWW?{2MF(9&1v588zUDvHt$XsQa2*J{#4p(^%GD6$7oH zz#2?5=bHDS+ATBJnHy0nvCZ6VjLjwg|eI-TQDGhb=> zM=_oJo2UVNXa38qc!wWAwAmQdF2n4C>aQPaAo-~06xNe^^ zYSc&{!-n_L}Z4G*dTer)w8Q8S3-sjV;rRbPl&;wh*lUyOQ<%dPw))bEbJquQTCy&b<` zkVqo>ZvWsm$XC>jL=E6Y)Y9)n-S`!1Mb22h%0ypZ)9i%muh?8+zGNOTFJo2O#ZO}W zwWQ4^`K8S=dty7vhoKs-GS^#ux#hQ_X1*OYz_+aa5Nah(pzgn7^*1eFZL6fF@l0?malw|pFs?2W~r!-+M@>04K=_)*a!pETd)c9@MF}<)Su$-OE=q~`s-{4 zeJwEpbwjb`=b6jQb>>EMo4E@$uy-u~0ji&)sDYie@`$Pa!F5n8li>4#>qtU-)yFD| ze1)55E;HAe8_jK)%6+>~_n$(2$gY_w(|q|z)cZdJ$Kyk&Ej|~jXa8fS`x&HSbt*DZ zXQ7+r$73$}X_$;VQHS#@)J$V$_y;ALT~RY1Y595PT63$_???Up)14&I6WEI^enGq;)_n*T(tRGry=g?eCX@-r|H5AmuCs7@| zWDQ@j{C?B}4xrwWuu|VH2DP_wsQcTX`pZMjcsMS{0QuXOt2*DWY$0kZ@1M{5EAcD^ z+VhW49bT}8)fV`fq@vml##o$>ariLm!Ox-Y-;LRL%<|C-{R1;m6BvS;;Ciz>AfXX& zLOu9Jt2lt__z>#Br%*GGxYz&Vu@)-d8`be()Bx6@&dv_=uz3NaDX(##A3!72)(1%> zG=O~6jpH#+6{rV4VeUtb{5w?p3#b9yK((*B$UmSlYK1Z|3VUNq%ty5kFdtVTTNJqC zBsB8y`~8SgQ4bi6T7kPU2^XL`-emQ!Vn_0Cq4xSZYDUc$`~HTb%1cq@n=Su0EFpgl zJL>oU1VS^|glhOY>hzvABbWHU4`g5#<@wkamtzCmgLUvr)IcwyW?W~fa~1H`#V<{_ znu5{90n)?qC!P`d-TWawMBGPV4}xFyu03`lboIvPF@p#vhFCcV+vSk1K^!ElYaQtc z#6843LRS+r8b^`W%C;sQR3^d7xkre86bvA~B;5{m-Hx3tJs7uBR!)4UO0Lj;c`u>*TET~0pr%Uzu_9ne%Ag!NaFVt)FRS|!-TfwDDf51g8HF2 z4RwtnZiG_K{R{Pf&U8J1SFx()1Kb*_@&6Lm*|>G3QCCQ&w;rUc6$MMMI!?sL30-T+ zk05kCO(YWa$o~bCaU6a?v?Luy{5NS`b4WV{*Cb+NDE0q8@<_fx+a zRybXSTx&d`pL6&bMSY}|b;VL^Kh=DVvNo1hv(3awq8DX7@Sj9&Lf1$_A1qzL8E@$S z{U|y6H=RU~US|0n)Mb&bX!*%@UnBDOl70y9Bwi-niWp?=mXa26;aWtz8%p{ANAx?=f3&>lMr3pUTKtxXvA+IJ`qq_1*^2)> zgZ0lN)0TLZ7A=UK)^ar_6Md(rGI4T(Bd zPSWky{_j$XYbDWuC{c#1G7aCt8JLCH#B)SE`6?KW4GCSxJfWZSEWOg|l>M9-Y5D)M zdJ#Oyk5N?c+c0!ZCw-pOdTYGf$`@IFkLBCoAYv2Igt&Eequoq07p-72`QxNxiM_;3 z>qpfI`u^*h5c@-+)n7fa5loBsOxK@G0~K0 pPW(zF5VfiAg-h`oo*+69x;B(2CcH8;IWv1h@wlW{#ul|m`#(DwyvhIo diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.po b/core/locale/zh_Hans/LC_MESSAGES/django.po index 831c1498..1c5d01dc 100644 --- a/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-08 14:48+0100\n" +"POT-Creation-Date: 2025-05-08 15:33+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -451,35 +451,112 @@ msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:260 +msgid "" +"Filter by one or more attribute name/value pairs. \n" +"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" +"Examples: \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`b64-description=icontains-aGVhdC1jb2xk`" +msgstr "" +"根据一个或多个属性名/值对进行筛选。 \n" +"- 语法**:`attr_name=method-value[;attr2=method2-value2]...`\n" +"- 方法**(如果省略,默认为 `icontains`):iexact`、`exact`、`icontains`、`contains`、`isnull`、`startswith`、`istartswith`、`endswith`、`iendswith`、`regex`、`iregex`、`lt`、`lte`、`gt`、`gte`、`in`。\n" +"- 值键入**:首先尝试使用 JSON(因此可以传递列表/字段),布尔、整数、浮点数使用 `true`/`false`,否则视为字符串。 \n" +"- **Base64**:以 `b64-` 作为前缀,对原始值进行 URL 安全的 base64 编码。 \n" +"示例 \n" +"color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" +"`b64-description=icontains-aGVhdC1jb2xk`." + +#: core/docs/drf/viewsets.py:276 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:268 +#: core/docs/drf/viewsets.py:278 +msgid "(exact) Product UUID" +msgstr "(产品 UUID" + +#: core/docs/drf/viewsets.py:279 +msgid "(icontains) Product name" +msgstr "(图示) 产品名称" + +#: core/docs/drf/viewsets.py:280 +msgid "(list) Category names, case-insensitive" +msgstr "(列表) 类别名称,不区分大小写" + +#: core/docs/drf/viewsets.py:282 +msgid "(exact) Category UUID" +msgstr "(类别 UUID" + +#: core/docs/drf/viewsets.py:283 +msgid "(list) Tag names, case-insensitive" +msgstr "(标签名称,不区分大小写" + +#: core/docs/drf/viewsets.py:284 +msgid "(gte) Minimum stock price" +msgstr "(gte) 最低股价" + +#: core/docs/drf/viewsets.py:285 +msgid "(lte) Maximum stock price" +msgstr "(lte) 最高股价" + +#: core/docs/drf/viewsets.py:286 +msgid "(exact) Only active products" +msgstr "(准确)只有活性产品" + +#: core/docs/drf/viewsets.py:287 +msgid "(iexact) Brand name" +msgstr "(iexact) 品牌名称" + +#: core/docs/drf/viewsets.py:289 +msgid "(gt) Minimum stock quantity" +msgstr "(gt) 最低库存量" + +#: core/docs/drf/viewsets.py:290 +msgid "(exact) Product slug" +msgstr "(准确) 产品标题" + +#: core/docs/drf/viewsets.py:291 +msgid "(exact) Digital vs. physical" +msgstr "(准确)数字与实物" + +#: core/docs/drf/viewsets.py:295 +msgid "" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"**Allowed:** uuid, rating, name, slug, created, modified, price, random" +msgstr "" +"用逗号分隔的要排序的字段列表。前缀为 `-` 表示降序。 \n" +"**允许:** uuid、评分、名称、标签、创建、修改、价格、随机" + +#: core/docs/drf/viewsets.py:310 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:272 +#: core/docs/drf/viewsets.py:311 core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:325 core/docs/drf/viewsets.py:330 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:315 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:291 -msgid "delete a product" -msgstr "删除产品" - -#: core/docs/drf/viewsets.py:298 +#: core/docs/drf/viewsets.py:319 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:305 +#: core/docs/drf/viewsets.py:324 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" +#: core/docs/drf/viewsets.py:329 +msgid "delete a product" +msgstr "删除产品" + #: core/elasticsearch/__init__.py:39 msgid "no search term provided." msgstr "未提供搜索条件。" @@ -535,7 +612,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" #: core/graphene/mutations.py:201 core/graphene/mutations.py:355 -#: core/graphene/mutations.py:389 core/viewsets.py:240 +#: core/graphene/mutations.py:389 core/viewsets.py:248 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" diff --git a/core/management/commands/deepl_translate.py b/core/management/commands/deepl_translate.py index 445b6eb7..43216d6f 100644 --- a/core/management/commands/deepl_translate.py +++ b/core/management/commands/deepl_translate.py @@ -31,20 +31,23 @@ DEEPL_TARGET_LANGUAGES_MAPPING = { # Patterns to identify placeholders PLACEHOLDER_REGEXES = [ - re.compile(r"\{[^}]+"), # {name}, {product_uuid} - re.compile(r"%\([^)]+\)[sd]"), # %(name)s, %(count)d + re.compile(r"\{[^}]+"), # {name}, {product_uuid} + re.compile(r"%\([^)]+\)[sd]"), # %(name)s, %(count)d ] + def placeholderize(text: str) -> tuple[str, list[str]]: """ Replace placeholders with tokens and collect originals. Returns (protected_text, placeholders_list). """ placeholders: list[str] = [] + def _repl(match: re.Match) -> str: idx = len(placeholders) placeholders.append(match.group(0)) return f"__PH_{idx}__" + for rx in PLACEHOLDER_REGEXES: text = rx.sub(_repl, text) return text, placeholders @@ -148,7 +151,11 @@ class Command(BaseCommand): if missing: self.stdout.write(self.style.NOTICE(f"⚠️ {len(missing)} missing in en_GB")) for e in missing: - e.msgstr = input(f"Enter translation for '{e.msgid}': ").strip() + input_msgstr = input(f"Enter translation for '{e.msgid}': ").strip() + if input_msgstr: + e.msgstr = input_msgstr + else: + e.msgstr = e.msgid en_po.save(en_path) self.stdout.write(self.style.SUCCESS("Updated en_GB PO")) @@ -197,9 +204,9 @@ class Command(BaseCommand): maps.append(p_map) data = [ - ('auth_key', auth_key), - ('target_lang', api_code), - ] + [('text', t) for t in protected] + ('auth_key', auth_key), + ('target_lang', api_code), + ] + [('text', t) for t in protected] resp = requests.post('https://api-free.deepl.com/v2/translate', data=data) try: resp.raise_for_status()