From 141ab8e585006e215f01ad8ac7a7e00210d69b7f Mon Sep 17 00:00:00 2001 From: Stefan <96178532+stefan6419846@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:24:28 +0200 Subject: [PATCH 1/3] Add missing & fix German translations (#9676) --- .../locale/de/LC_MESSAGES/django.mo | Bin 10490 -> 13177 bytes .../locale/de/LC_MESSAGES/django.po | 87 +++++++++--------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/rest_framework/locale/de/LC_MESSAGES/django.mo b/rest_framework/locale/de/LC_MESSAGES/django.mo index 98688039789f0300dd6aed554c84050365f9991c..99bdec2c05139c0c0927ccd2c38719685a40f447 100644 GIT binary patch delta 4789 zcma);du&|A6^Ca-NF3Xc#39DSi5Z(bjcr084@@AjaS}`t$6#zHreLnUv%5Fhy=(5n zj%}PpsHI5#1JSDlDx@I9Lv1L6)D^8nBxo(DT9pcD%cCuzszqu60j;X0DNyx0ckiY~ zWt;qryW`Tek${(W!{`>Xe8T*APH zMM_n{J}3^@P{!|xc>>A?zk;%1`C>MO+o339Aik(?K@sme@%ST99QYaB0_U*FHh49> zj{VgnjTZPk#98$bl!>3i%iyLZO09({SP$=mjqoIt`G0`2@dt1{JOgFD#tW3{ga_a? z@KGr9{|J}CPhdd?DwY;cx(v$6uZ0qlTjKul`2BP69LC>;_@@2@>)=13EV#59gX^K> z#7-zVFbMfm-{eEX;}9R!^VR52zNufw18+h}mJgvwdK!uXD=t*34DOBD2YICi;XF7B z`BPJTY=%dnDDg790{#ce!8YKPdFq{rh1v{U_lD_!e9MD>;rNT{RR1>mY@r)_`y=SQI=*K1J9XAWL) zr>JVU5w3+%lENPP$DnNVK9qSI8wm^C1*Lxw79^SOq=EYC1l$RK5%(7pNPJP3!*X~4 zN-UEQ_0>2e|I|Zp1^f}@km|Rv34R7;!*z6|zlRUfLyg0E@WCeZmpXo!frao{C?|di z%1O^a*?1jZmcc8bY;+Ag7v2IzdJ9UOkHKrK zekHq?dSp%)KlX1Tr%9Y+8 z_az_XslmP$wfJEF=!eIKOR%|^JV%O%%1fGk7&#hUormB~Yz`(lGl)rSH6|ApxflI| zu^-BFQxV0|qb+&W6ps}osqTzBC2(J;8{^L2(je@?CNN1bc_gvqk&=^VJ4S&-rPc@~ zQP*N}?=QyE*lk!ItH*fSqyN=*(OQ8m#H5Vm>BNSx0qMj~4&ENO&x5_#Xt=6uZ|jJa zHrfetL&nu(wx6*b?PrW;*mf-6B(-b2AnR+-_${gpSnhB}`^L?MPFe3NJvnM+12gE4 zkC-WKCynFVsd3v$vx@EMNyo~WsqlrePnWTnZ|97T=Ieam>wHSPmXkKqKVC4F2v3(+ zmzk`|v4R)ATV4}hR&izcad{bBHa~t5-c<44{9eZ%&L>T{sj{xJN#|Xi86U|Q$D6LI zyfv|Z$Keq(EPh*~mYubRvPN^H$uZ0Jr|^C_?<8B)SD565rE7q*pVdcKQ_EvhT;>r_4vue*v-64|1dc-qg?^aIz?BZN;v8Fp4pZ0ZSI zH=o8;J)E&z3prd*TP|^CF)N$RkC|kv?!9zUbQ~PX+m7G5e=7V*)#lx{WBaz1MYE(i ztW$12r^hn3MEvYla_rcF7IpLgas`$2aNv3<6U8|EdsTL6(vIY_+;N?=#v=!Y%=C>* z-b|Dug)W{lT(k7krv7M~lx?y}*(~r3I~#`pCyhuE$sO+->gsI;Lg|w%Drvl7<0P4) zau%^JjXT!pkmV}Z+z}Y`CStj>9otFe>3AbVRuY6>;Mh#0?VB`WMn@bDcu8r@@T+?cR3BAUk6V(r+*WmxZU(`LxAJ<>XDNGYcD1jCsjlXmS? zD(tRt8)a;E6*WbR6f37xQTBwaH~m6QRbpj_nY~wMwQzXp=o~LsXRu8|ZOxlB4yz(-u4oPL=>XEw5iRSRxy6t?Pu4|g#Zh7{wzCL`q zerdSv;tjLs@kBU>A&7bXbcw%jBqA7fF zZDXO+kwQ{!L)055aFXhJD;U8=JFB{^QJedj>?JNKmwUT;C)ZPu<-RHnbaE-VxoDD+ kY5o|VG=FiF&?ikG$>Zu>mNOx@P;)=|q0FLLucDFv0(8LP#Q*>R delta 2482 zcmYk-3rv+|9LMqJC^vynM7fCRdr*OcfM8;X8i=1?oA#Q9Fp7%xUeoyj7d6 z^~^0db?fFT?V=~QYSvO)waT_`Q&)3lbG2F1Ra>b!`~J>(wVv@mpXYh6&*lFHefqGg?HnRI2H5KjA_I+tik6|=YPN^9F}g(7+irvaXYGm z&$-8sx}HTn?*>+xh%r;{i1)A;HNrXGHuml$)k1&s81wMo2cpMvezqvwXI@Sz{KX4H)h@ zY4Q^0;6bdwlc**A6V>5qJY46OqS}3^oOwEn`JYVXH4enq8r9Al7Vq%_)P-x%!JViM zy@Hy7Gnk0^!{Z(C;&|G{Sc!{pDegcG>^$b-Mbv<94rl&#Acf&f!~!HAO&e+kI&iHK zJdfNTG1<(c9^8z2@Ltq~KO=wUs@u*lh;J-q$UDq(RL3{F?Gvc%zJOYSRMtsLFdX%q z5>zfVVJY@tfxiFU?tyoZL7I!GnMhzk2V)v)1o@~3H=>fK9hp4Sfl9*1P&2m`@4-E| z7|)swLnb&~g+XQ|A_w_UH{EZTL2@vPsDy5RsaIP)oL3NN8@$IGx2aRVmd zqo}W7D^ABZu?K&{SjWj&hjs@>*agiNDjNANRJI;Mc2)BeYQ&e(g98aAjn?~CnM*~Z zR?#k}uScDlN~jYmQwTj@`O-;r5PA-%qs1j>LcHbS$GMp*rIbD$5AX zS_`2}XVPNR-H0k0fXYH5C02{iD!X*7=xZp|`v1Sopt00Fa2GPevCmNJsbo^o4#$L; z2Z#ishET?56G~(iPc-m%D8r&Ufotcea37ndd6>k7p*KL{u(SvoXc?W{4Ff61(v2vVdBx+ZurN zL^5H&N*!T8ORccgX)X3}+TYQS)59LSE@P5Cm+@^hWk|Irx+n8xk9{{Q-EPWS9sMJ# zet`97Z%pj!eK_Q|`8k{HshldiFt;oEeeUNTdt}5_dp3W1sz1=bDiHDqL*3CGBY*YS zqoW>*Hjf_SiEeZDdF*MgVt@ice4Esd!cI)*u zB!_#~1VY@^=c`Rxq<>pXClm~b)>isFc?*L9r#~3-JE7QZD+B8T X+#c)>+Ycv}q|I2_9}X~xkl*|ZGe11{ diff --git a/rest_framework/locale/de/LC_MESSAGES/django.po b/rest_framework/locale/de/LC_MESSAGES/django.po index 12ae5ba18..48e59e879 100644 --- a/rest_framework/locale/de/LC_MESSAGES/django.po +++ b/rest_framework/locale/de/LC_MESSAGES/django.po @@ -11,6 +11,7 @@ # Thomas Tanner, 2015 # Tom Jaster , 2015 # Xavier Ordoquy , 2015 +# stefan6419846, 2025 msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" @@ -27,19 +28,19 @@ msgstr "" #: authentication.py:70 msgid "Invalid basic header. No credentials provided." -msgstr "Ungültiger basic header. Keine Zugangsdaten angegeben." +msgstr "Ungültiger Basic Header. Keine Zugangsdaten angegeben." #: authentication.py:73 msgid "Invalid basic header. Credentials string should not contain spaces." -msgstr "Ungültiger basic header. Zugangsdaten sollen keine Leerzeichen enthalten." +msgstr "Ungültiger Basic Header. Zugangsdaten sollen keine Leerzeichen enthalten." #: authentication.py:83 msgid "Invalid basic header. Credentials not correctly base64 encoded." -msgstr "Ungültiger basic header. Zugangsdaten sind nicht korrekt mit base64 kodiert." +msgstr "Ungültiger Basic Header. Zugangsdaten sind nicht korrekt mit base64 kodiert." #: authentication.py:101 msgid "Invalid username/password." -msgstr "Ungültiger Benutzername/Passwort" +msgstr "Ungültiger Benutzername/Passwort." #: authentication.py:104 authentication.py:206 msgid "User inactive or deleted." @@ -47,16 +48,16 @@ msgstr "Benutzer inaktiv oder gelöscht." #: authentication.py:184 msgid "Invalid token header. No credentials provided." -msgstr "Ungültiger token header. Keine Zugangsdaten angegeben." +msgstr "Ungültiger Token Header. Keine Zugangsdaten angegeben." #: authentication.py:187 msgid "Invalid token header. Token string should not contain spaces." -msgstr "Ungültiger token header. Zugangsdaten sollen keine Leerzeichen enthalten." +msgstr "Ungültiger Token Header. Zugangsdaten sollen keine Leerzeichen enthalten." #: authentication.py:193 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "Ungültiger Token Header. Tokens dürfen keine ungültigen Zeichen enthalten." +msgstr "Ungültiger Token Header. Zugangsdaten dürfen keine ungültigen Zeichen enthalten." #: authentication.py:203 msgid "Invalid token." @@ -108,7 +109,7 @@ msgstr "Ein Serverfehler ist aufgetreten." #: exceptions.py:142 msgid "Invalid input." -msgstr "" +msgstr "Ungültige Eingabe." #: exceptions.py:161 msgid "Malformed request." @@ -124,7 +125,7 @@ msgstr "Anmeldedaten fehlen." #: exceptions.py:179 msgid "You do not have permission to perform this action." -msgstr "Sie sind nicht berechtigt diese Aktion durchzuführen." +msgstr "Sie sind nicht berechtigt, diese Aktion durchzuführen." #: exceptions.py:185 msgid "Not found." @@ -151,17 +152,17 @@ msgstr "Die Anfrage wurde gedrosselt." #: exceptions.py:224 #, python-brace-format msgid "Expected available in {wait} second." -msgstr "" +msgstr "Erwarte Verfügbarkeit in {wait} Sekunde." #: exceptions.py:225 #, python-brace-format msgid "Expected available in {wait} seconds." -msgstr "" +msgstr "Erwarte Verfügbarkeit in {wait} Sekunden." #: fields.py:316 relations.py:245 relations.py:279 validators.py:90 #: validators.py:183 msgid "This field is required." -msgstr "Dieses Feld ist erforderlich." +msgstr "Dieses Feld ist zwingend erforderlich." #: fields.py:317 msgid "This field may not be null." @@ -169,11 +170,11 @@ msgstr "Dieses Feld darf nicht null sein." #: fields.py:701 msgid "Must be a valid boolean." -msgstr "" +msgstr "Muss ein gültiger Wahrheitswert sein." #: fields.py:766 msgid "Not a valid string." -msgstr "" +msgstr "Kein gültiger String." #: fields.py:767 msgid "This field may not be blank." @@ -207,7 +208,7 @@ msgstr "Gib ein gültiges \"slug\" aus Buchstaben, Ziffern, Unterstrichen und Mi msgid "" "Enter a valid \"slug\" consisting of Unicode letters, numbers, underscores, " "or hyphens." -msgstr "" +msgstr "Gib ein gültiges \"slug\" aus Unicode-Buchstaben, Ziffern, Unterstrichen und Minuszeichen ein." #: fields.py:854 msgid "Enter a valid URL." @@ -215,11 +216,11 @@ msgstr "Gib eine gültige URL ein." #: fields.py:867 msgid "Must be a valid UUID." -msgstr "" +msgstr "Muss eine gültige UUID sein." #: fields.py:903 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "Geben Sie eine gültige IPv4 oder IPv6 Adresse an" +msgstr "Geben Sie eine gültige IPv4 oder IPv6 Adresse an." #: fields.py:931 msgid "A valid integer is required." @@ -273,11 +274,11 @@ msgstr "Erwarte eine Datums- und Zeitangabe, erhielt aber ein Datum." #: fields.py:1150 #, python-brace-format msgid "Invalid datetime for the timezone \"{timezone}\"." -msgstr "" +msgstr "Ungültige Datumsangabe für die Zeitzone \"{timezone}\"." #: fields.py:1151 msgid "Datetime value out of range." -msgstr "" +msgstr "Datumsangabe außerhalb des Bereichs." #: fields.py:1236 #, python-brace-format @@ -358,12 +359,12 @@ msgstr "Diese Liste darf nicht leer sein." #: fields.py:1605 #, python-brace-format msgid "Ensure this field has at least {min_length} elements." -msgstr "" +msgstr "Dieses Feld muss mindestens {min_length} Einträge enthalten." #: fields.py:1606 #, python-brace-format msgid "Ensure this field has no more than {max_length} elements." -msgstr "" +msgstr "Dieses Feld darf nicht mehr als {max_length} Einträge enthalten." #: fields.py:1682 #, python-brace-format @@ -372,7 +373,7 @@ msgstr "Erwartete ein Dictionary mit Elementen, erhielt aber den Typ \"{input_ty #: fields.py:1683 msgid "This dictionary may not be empty." -msgstr "" +msgstr "Dieses Dictionary darf nicht leer sein." #: fields.py:1755 msgid "Value must be valid JSON." @@ -384,7 +385,7 @@ msgstr "Suche" #: filters.py:50 msgid "A search term." -msgstr "" +msgstr "Ein Suchbegriff." #: filters.py:180 templates/rest_framework/filters/ordering.html:3 msgid "Ordering" @@ -392,7 +393,7 @@ msgstr "Sortierung" #: filters.py:181 msgid "Which field to use when ordering the results." -msgstr "" +msgstr "Feld, das zum Sortieren der Ergebnisse verwendet werden soll." #: filters.py:287 msgid "ascending" @@ -404,11 +405,11 @@ msgstr "Absteigend" #: pagination.py:174 msgid "A page number within the paginated result set." -msgstr "" +msgstr "Eine Seitenzahl in der paginierten Ergebnismenge." #: pagination.py:179 pagination.py:372 pagination.py:590 msgid "Number of results to return per page." -msgstr "" +msgstr "Anzahl der pro Seite zurückzugebenden Ergebnisse." #: pagination.py:189 msgid "Invalid page." @@ -416,11 +417,11 @@ msgstr "Ungültige Seite." #: pagination.py:374 msgid "The initial index from which to return the results." -msgstr "" +msgstr "Der initiale Index, von dem die Ergebnisse zurückgegeben werden sollen." #: pagination.py:581 msgid "The pagination cursor value." -msgstr "" +msgstr "Der Zeigerwert für die Paginierung" #: pagination.py:583 msgid "Invalid cursor" @@ -434,7 +435,7 @@ msgstr "Ungültiger pk \"{pk_value}\" - Object existiert nicht." #: relations.py:247 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." -msgstr "Falscher Typ. Erwarte pk Wert, erhielt aber {data_type}." +msgstr "Falscher Typ. Erwarte pk-Wert, erhielt aber {data_type}." #: relations.py:280 msgid "Invalid hyperlink - No URL match." @@ -451,7 +452,7 @@ msgstr "Ungültiger Hyperlink - Objekt existiert nicht." #: relations.py:283 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." -msgstr "Falscher Typ. Erwarte URL Zeichenkette, erhielt aber {data_type}." +msgstr "Falscher Typ. Erwarte URL-Zeichenkette, erhielt aber {data_type}." #: relations.py:448 #, python-brace-format @@ -464,20 +465,20 @@ msgstr "Ungültiger Wert." #: schemas/utils.py:32 msgid "unique integer value" -msgstr "" +msgstr "eindeutiger Ganzzahl-Wert" #: schemas/utils.py:34 msgid "UUID string" -msgstr "" +msgstr "UUID-String" #: schemas/utils.py:36 msgid "unique value" -msgstr "" +msgstr "eindeutiger Wert" #: schemas/utils.py:38 #, python-brace-format msgid "A {value_type} identifying this {name}." -msgstr "" +msgstr "Ein {value_type}, der {name} identifiziert." #: serializers.py:337 #, python-brace-format @@ -487,7 +488,7 @@ msgstr "Ungültige Daten. Dictionary erwartet, aber {datatype} erhalten." #: templates/rest_framework/admin.html:116 #: templates/rest_framework/base.html:136 msgid "Extra Actions" -msgstr "" +msgstr "Zusätzliche Aktionen" #: templates/rest_framework/admin.html:130 #: templates/rest_framework/base.html:150 @@ -496,27 +497,27 @@ msgstr "Filter" #: templates/rest_framework/base.html:37 msgid "navbar" -msgstr "" +msgstr "Navigation" #: templates/rest_framework/base.html:75 msgid "content" -msgstr "" +msgstr "Inhalt" #: templates/rest_framework/base.html:78 msgid "request form" -msgstr "" +msgstr "Anfrage-Formular" #: templates/rest_framework/base.html:157 msgid "main content" -msgstr "" +msgstr "Hauptteil" #: templates/rest_framework/base.html:173 msgid "request info" -msgstr "" +msgstr "Anfrage-Informationen" #: templates/rest_framework/base.html:177 msgid "response info" -msgstr "" +msgstr "Antwort-Informationen" #: templates/rest_framework/horizontal/radio.html:4 #: templates/rest_framework/inline/radio.html:3 @@ -542,7 +543,7 @@ msgstr "Die Felder {field_names} müssen eine eindeutige Menge bilden." #: validators.py:171 #, python-brace-format msgid "Surrogate characters are not allowed: U+{code_point:X}." -msgstr "" +msgstr "Ersatzzeichen sind nicht erlaubt: U+{code_point:X}." #: validators.py:243 #, python-brace-format @@ -565,7 +566,7 @@ msgstr "Ungültige Version in der \"Accept\" Kopfzeile." #: versioning.py:71 msgid "Invalid version in URL path." -msgstr "Ungültige Version im URL Pfad." +msgstr "Ungültige Version im URL-Pfad." #: versioning.py:116 msgid "Invalid version in URL path. Does not match any version namespace." From 5c21fa757c8cc41b3af66d682f92ccd6a52a60ce Mon Sep 17 00:00:00 2001 From: JAEGYUN JUNG Date: Fri, 4 Apr 2025 19:39:11 +0900 Subject: [PATCH 2/3] Update test matrix to use Django 5.2 stable version (#9679) --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 032d4a18e..0adcee3a4 100644 --- a/tox.ini +++ b/tox.ini @@ -19,7 +19,7 @@ deps = django42: Django>=4.2,<5.0 django50: Django>=5.0,<5.1 django51: Django>=5.1,<5.2 - django52: Django>=5.2b1,<6.0 + django52: Django>=5.2,<6.0 djangomain: https://github.com/django/django/archive/main.tar.gz -rrequirements/requirements-testing.txt -rrequirements/requirements-optionals.txt From c41314f1fc898490f27e1015cc859e28afe6f7b9 Mon Sep 17 00:00:00 2001 From: ren000thomas Date: Sat, 5 Apr 2025 18:02:59 +0800 Subject: [PATCH 3/3] Update Chinese translations (#9675) --- .../locale/zh_Hans/LC_MESSAGES/django.mo | Bin 9938 -> 12348 bytes .../locale/zh_Hans/LC_MESSAGES/django.po | 62 +++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/rest_framework/locale/zh_Hans/LC_MESSAGES/django.mo b/rest_framework/locale/zh_Hans/LC_MESSAGES/django.mo index 670228a8346076571906d56e43817d7e8354163c..b30686c1f94058bcd9dc64c164bc7a3faba4294e 100644 GIT binary patch delta 4458 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 S+>uPwrdr&7SGJ?$z4{N5)-neG delta 2330 zcmYk-e@s?Y9LMqVfDj<@Q{|V*Bcu-s$diFS0xE(U{-8ufLo02fCN$J(>0s+IO^`Os zdFB>YbD6c$TG>->QKPh`%^$6zny%)oi4)gmOaIWhe!M^TUR!5;@9UiV+j@DARC z1@XpIV-RQKCfBg(rScFbeB51yb8rd1h?DVGtiY_H#>~S8EXUVTzyE^saaf`;`S>KJ z;ZD>5U-r&_?0Esz-(Of}!p2Ow*B#+{)EjO=J>WGA;dz{nsY%AvU_DO2eaN5rii57} z#{x`DHfA)I;doq%bYZq*5cl8&JdSgCzWIa7R4h+%JKT!dv^%}_LDZWaMZM9FsHyzZ zYnP?Ezc0jS&OeKqfi@h4-KhTF#Q>hd5qKTLek!qCosIz-R=fdm}1mcBeD{lc*f#gtOMDcGfU=#0yXtwxAz7 zQ3HA#H3R1{26KkH0~w8lvU=rYW24tTg7?!tjoJm*k^D0^Py>j~ zbCu?r6 zkGk%Z=OxeEn9cJ|8pGC97JIHj?{|b z2vbL>DAN}b4Ft<~5!MXH^l2dOiv2tQR=TpzWv<>*5?k97~AVM6Pqj-OtL0 zCh@|CI&QrhBa@tR|H0_Pc~^ zdpaR#LqqHB(V@2@ClfdO?1rRLdok&UNL)(D7wJiT(`P?PPqc06&5;}F)ls%-#MYQK z>z`?DvN;)T_FP7pU6i>d@^j`HpZzfVw!M%uHKA$srd6w3o7T0ijdYCs+h>oBT52ce z{uY_!5Bcn&(d9NN@3=jiA0H{rf5R8?kKxvuK&mYav_#$sbVS*8