Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: c.buhtz@posteo.jp Newsgroups: de.comp.lang.python Subject: =?utf-8?q?=5BPython-de=5D_Re=3A_Muss_ich_=25_immer_escapen=3F?= Date: Thu, 22 Jun 2023 12:52:02 +0000 Lines: 43 Message-ID: <7801e735e8824948771ff5a4a0239904@posteo.de> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de SqCYXKHyRh4J+ay9Bbzk6QogS2lMdaoxXYkknTNySY5g== Authentication-Results: mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=posteo.jp header.i=@posteo.jp header.b=LNoZZgZF; dkim-adsp=pass; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.jp; s=2017; t=1687438323; bh=hhF23RN+SfL385idSaOR/SJxkUdee90NyZyY+QB5VLg=; h=MIME-Version:Content-Transfer-Encoding:Date:From:To:Subject: Message-ID:From; b=LNoZZgZFAToTOcgm2kx7kKnNaOGN88tn26cAU+IOv+4JtqUMH+0/uUvdFkIY3hoG+ Dwz+oPBC9X7WW/FWWbm+NBEIJ3BtdJAm1hS4sl7KKcJ06x7BZVQGPVhvTxHkuxzGrY myB/Osiv6oivwahdAVLSWxzvd6TFm6oMji5vGSD59nAB+HP+zWVyDrfYxW+EtdEfQG FaZbzJYyj1BXN7u6gLuiphP8vKL8Wu0ixeuwiVXFMp1RViXXB7hhU1KFLi0Yxkt7vx qFUTwA+XUwvrz1V2zaiWIT2D6WyWFnWEqoc6t0a8mjMRiw0LBYobzBgv+RjxOE0+mC pV9jKw+QPWIQw== In-Reply-To: Message-ID-Hash: OOS4S47CDAYEIKADTJPQBXEC5NT3IN4O X-Message-ID-Hash: OOS4S47CDAYEIKADTJPQBXEC5NT3IN4O X-MailFrom: c.buhtz@posteo.jp X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9b1 Precedence: list List-Id: Die Deutsche Python Mailingliste Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Xref: csiph.com de.comp.lang.python:5994 Hallo Petter, danke f=C3=BCr die R=C3=BCckmeldung und entschuldige meinen Bullshit-Code= =2E Das=20 ging daneben. OK, vielleicht ist das reale Beispiel einfacher. So habe ich print nie=20 verwendet, aber das scheint valider Code zu sein. print(_('Trying to keep min %d%% free inodes') % minFreeInodes) Nun wollte ich das "modernisieren", auch weil die =C3=9Cbersetzer mit "%d%%= "=20 oft nichts anfangen k=C3=B6nnen. print(_('Trying to keep min {perc}% free=20 inodes').format(perc=3DminFreeInodes)) Das geht auch. Aber meine =C3=9Cbersetzungsplatform (Weblate 4.17) moniert= =20 hier ein Problem: Nach dem % ist ein Leerzeichen und danach kommt ein f=20 =2E Weblate denkt, es m=C3=BCsste dort %f hei=C3=9Fen und moniert es. W=C3= =BCrde ich das=20 % an der Stelle escapen meckert Weblate nicht. Liegt Weblate hier falsch bzw. ist einfach zu umodern/unflexibel? Muss=20 ich bei dem zweiten Beispiel das % eigentlich escapen und der Python=20 Interpreter ist hier einfach nur gn=C3=A4dig mit mir und l=C3=A4sst es mir= =20 durchgehen, obwohl es nicht Standard/PEP-konform ist? Nat=C3=BCrlich kann ich einen einfachen Workaround machen, um Weblate=20 zufrieden zu stellen. print(_('Trying to keep min {perc} free=20 inodes').format(perc=3Df'{minFreeInodes}%')) Abgesehen von Weblate, ist die Frage hier eigentlich nur, ob ich ein %=20 escapen muss, wenn ich die moderne Form von Format-Strings mit den=20 geschweiften Klammern nutze? Sch=C3=B6ne Gr=C3=BC=C3=9Fe Christian