From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.haj.ipfire.org (localhost [IPv6:::1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4fHS5Q0jWsz345t for ; Fri, 20 Feb 2026 11:02:50 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [IPv6:2001:678:b28::25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R12" (not verified)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4fHS5L1GlMz2xMD for ; Fri, 20 Feb 2026 11:02:46 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4fHS521R8Rz3gx; Fri, 20 Feb 2026 11:02:30 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1771585360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w/iPYxnVhXTR79yCNRSc7UUaTXLFq1UE9I6FHFswiC0=; b=kaoJRF+Wl/weLczYbkxGuuj2SpxMhEcCu7I0RfRts+SKfnXtLRPHGGdcYvk6fPv93BTpge 3ADpsKtBR8gvKVDg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1771585360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w/iPYxnVhXTR79yCNRSc7UUaTXLFq1UE9I6FHFswiC0=; b=O8+wmija8xky41BpJEUeROvoOkp+r6SrjpsC30hlslcwLJS1kfMVko+tVmDqXqxNWKDQt/ 5rx/qvTLjrpktB4OyZP1BE/UIfpNbS/GPeLxkJp72AO4/8Dwj4moIOj2gL2FFQF2ZC/S87 7AIXQ7qJej1DkA3hF644K/iH/6W2+m0BrqSwQldmzGSW54MeIEMkMw+EZtkHrRkAODIY+x X1pTmOQG5PiA8e3Ye9T7HITWohEFVxvemghVTlLS4fOqUItxcl91js7+g/yPlcvTTrTM8S /JGWwY64QjISe5L9T4DFArFUsGtrQa7IHxyA0mZ3+WjaGcYgUx98UGCeNAc2UA== Content-Type: text/plain; charset=utf-8 Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: Mime-Version: 1.0 Subject: Re: [PATCH] Translated using Weblate (German) From: Michael Tremer In-Reply-To: <27b80383-1942-4199-803a-67280b9437a8@ipfire.org> Date: Fri, 20 Feb 2026 11:02:29 +0000 Cc: Bernhard Bitsch , "IPFire: Development-List" Content-Transfer-Encoding: quoted-printable Message-Id: References: <20260218074010.2248158-1-translate@ipfire.org> <20260218074010.2248158-2-translate@ipfire.org> <2F7A516F-3EF5-4D1E-ACA5-20AD038CA95D@ipfire.org> <69620bad-d2be-42b4-87eb-d38553e2f838@ipfire.org> <0A773C0D-D759-4930-9449-76AA62187AAF@ipfire.org> <27b80383-1942-4199-803a-67280b9437a8@ipfire.org> To: Adolf Belka Hello, Okay, I am now lost :) I don=E2=80=99t even understand any more what I was suggesting = yesterday. On top of that comes that Weblate went ahead and used some automatic = translation which made things worse: diff --git a/po/de.po b/po/de.po index a6c180f..6c817a9 100644 --- a/po/de.po +++ b/po/de.po @@ -107,10 +107,10 @@ msgid "B" msgstr "B" msgid "Bytes Read" -msgstr "gelesene Bytes" +msgstr "Gelesene Byte" msgid "Bytes Written" -msgstr "geschriebene Bytes" +msgstr "Geschriebene Byte" msgid "Incoming Traffic" msgstr "Eingehender Verkehr=E2=80=9D I asked Claude about what it should be and I got this: The plural form is used in axis labels: "Bytes" and "Bits per Second" are both correct for axis labels. The grammatical concept is straightforward: axis labels describe a = unit of measurement as a quantity, and since the values on the axis = represent varying amounts (not exactly one), the plural is used as the = default. You're essentially saying "this axis represents some number of bytes" = =E2=80=94 and that number is rarely exactly 1. However, there's a nuance worth knowing: in formal scientific and SI = (International System of Units) notation, unit symbols are never = pluralized =E2=80=94 so you'd write "B" not "Bs", and "bps" not = "bpss=E2=80=9D. But when you spell out the full word, standard English grammar applies = and you use the plural. So in practice: =E2=80=A2 Abbreviated: "Memory Usage (MB)" =E2=80=94 no plural on = the symbol =E2=80=A2 Written out: "Memory Usage (Megabytes)" =E2=80=94 plural = on the word So far so good, but then I asked what we do in German: In German, you actually use the singular form for units of = measurement, even when the quantity is more than one. This is a = grammatical rule in German where units of measurement after a number = remain in the singular: =E2=80=A2 "5 Byte" =E2=80=94 not "5 Bytes" =E2=80=A2 "100 Megabyte" =E2=80=94 not "100 Megabytes" This follows the broader German rule where certain masculine and = neuter nouns (which most units of measurement are) don't take a plural = ending after a numeral. You see the same pattern with "5 Kilometer", "3 Liter", "10 Meter" =E2=80= =94 all stay in the singular. That said, in colloquial and informal German, you'll often hear and = see "Bytes", "Megabytes" etc. because English has heavily influenced = tech vocabulary in German. But formally and grammatically, the singular is correct. So for a German graph axis you'd write "Speichernutzung (Byte)" rather = than "Speichernutzung (Bytes)=E2=80=9D. So, we will have to make a decision here. English is absolutely clear. = Which means that my former rule of singular -> singular, plural -> = plural is wrong. It sadly isn=E2=80=99t that simple. But that might bring us to the limits of what the translation system can = do. Sadly there is no context that comes with the strings. So = =E2=80=9CBytes=E2=80=9D could just be a headline somewhere where it = would be translated as =E2=80=9CBytes=E2=80=9D, but it could be used in = the legend of a graph where =E2=80=9CBytes=E2=80=9D would be translated = as =E2=80=9CByte=E2=80=9D. This is what Bernhard suggested in the = beginning. Weblate is using Amazon for the automatic translation, but it does not = have any context. It simple sends a string and will receive the = response. That means that Amazon is inferring from somewhere that = =E2=80=9CBytes Written=E2=80=9D is a label for a graph and went to = singular in German. So let=E2=80=99s follow this precedent and keep = those things then. Let=E2=80=99s do it right. But if we are hitting too many issues, I am really not afraid to follow = Claudes suggestion to just use Denglish and follow English grammar = rules. It is becoming too hard to translate things anyways. Amazon for = example got a couple of things wrong: = https://patchwork.ipfire.org/project/ipfire/patch/20260219191359.2495613-1= -translate@ipfire.org/ =E2=80=9CRate Information=E2=80=9D was translated as =E2=80=9CPricing = Information=E2=80=9D. Close, but wrong. This is about the wireless = bandwidth that was negotiated between the AP and the client. = =E2=80=9CUptime=E2=80=9D has been translated to =E2=80=9CBetriebszeit=E2=80= =9D. This is technically a valid translation, but who says this. Don=E2=80= =99t we just use =E2=80=9CUptime=E2=80=9D in German, too? I would like to take this as an opportunity to talk about our = translation policy in a wider sense. Before we allow people to start = translating things, there should be some clear rules in place so that = the translation becomes coherent and not all over the place. For = example, German (and I believe Dutch as well) are using a lot of English = words in IT as they are. Documentation is rarely translated these days = and so this is simply what things are called. Translating =E2=80=9CLogs=E2= =80=9D to =E2=80=9CProtokolle=E2=80=9D seems alien to me. A log is a = log. I would prefer to rather use the English words instead of trying to = be very pure and translate everything so that people will have to think = twice when they read something. It is easy to figure out, but an = =E2=80=9CIntrusion Prevention System=E2=80=9D isn=E2=80=99t really an = =E2=80=9CEinbruchsverhinderungssystem=E2=80=9D in my brain. Can I have some more thoughts on this? As well from people who are = native speakers of other languages than German? I know that French is = much more pure and does not easily use English loanwords. What should = the policies be for these languages? All the best, -Michael > On 19 Feb 2026, at 17:26, Adolf Belka wrote: >=20 > Hi All, >=20 > On 19/02/2026 17:52, Michael Tremer wrote: >> Hello, >>> On 19 Feb 2026, at 16:49, Bernhard Bitsch = wrote: >>>=20 >>> Hello Michael, >>>=20 >>> First a short explanation. I discovered IPFire Translate while = reading a community thread and just tried to discover the purpose and = using. >>>=20 >>> The units for data amount are Bit and Byte, which give the transfer = rates Bit/second an Byte/second. >>> Your example shows the memory usage graph ( measured in Byte ). >>> To be exact, the unit of the graph should read 'Byte'. >>>=20 >>> I know, that the terminology isn't that exactly in IPFire. But = couldn't change this step by step? ;) >> This is why we are having this conversation. >> It should then, however, be changed in the code first. >> Strictly the word =E2=80=9CBytes=E2=80=9D should be =E2=80=9CBytes=E2=80= =9D in German, too. Plural to plural. There should be a singular string = as well which should have been used in the first place. >> So, I will change the code. Do we all agree it should be Byte and = =E2=80=9CBit Per Second=E2=80=9D? >=20 > No I don't agree with that. >=20 > With the full word Byte would only apply when it is one byte. More = than One Byte becomes Bytes. Same with Bit and Bits. >=20 > Now if you are using the abbreviation of MBps then for 1 MBps it is = One Mega Byte per second but for 10 MBps it means Ten Mega Bytes per = second. >=20 > The same occurs with 1 Mbps and 10 Mbps for the bits situation. >=20 > If you want the German language one to show Byte and Bit for both = singular and plural then that is your language and I don't know it well = enough to comment but for English it should be Bytes and Bits or KBytes = and KBits or MBytes and MBits. >=20 > Quick search for multiple Bytes or Bits always calls them Bytes and = Bits and bot Byte and Bit. >=20 > Regards, >=20 > Adolf. >=20 >> -Michael >>> BR >>> Bernhard >>>=20 >>> Am 19.02.2026 um 17:11 schrieb Michael Tremer: >>>> Hello Bernhard, >>>> Thank you for helping to improve the translation of telemetry. >>>> I think you are intending to change any units to singular which = grammatically would be correct. >>>> However, the =E2=80=9CBytes=E2=80=9D thing is potentially = confusing: >>>> = https://git.ipfire.org/?p=3Dtelemetry.git;a=3Dblob;f=3Dsrc/daemon/graph.c;= hb=3D00b4fd6e254508cf958fa0144d2e2722a93b479d#l567 >>>> So this is being used on the left hand side of the graphs in the = legend. Screenshot attached. >>>> Intuitively I would have chosen =E2=80=9CBytes=E2=80=9D. This is = just a feeling. >>>> However, if we want to change all those units to singular, we = should not only do this in German, but in English, too. I assume that = these parts of the grammar are the same. >>>> -Michael >>>>> On 18 Feb 2026, at 07:40, IPFire Translate = wrote: >>>>>=20 >>>>> From: Bernhard Bitsch >>>>>=20 >>>>> Currently translated at 83.3% (70 of 84 strings) >>>>>=20 >>>>> Translation: Telemetry/Telemetry >>>>> Translate-URL: = https://translate.ipfire.org/projects/telemetry/telemetry/de/ >>>>> --- >>>>> po/de.po | 6 +++--- >>>>> 1 file changed, 3 insertions(+), 3 deletions(-) >>>>>=20 >>>>> diff --git a/po/de.po b/po/de.po >>>>> index cb36fd0..a6c180f 100644 >>>>> --- a/po/de.po >>>>> +++ b/po/de.po >>>>> @@ -11,7 +11,7 @@ msgstr "" >>>>> "Report-Msgid-Bugs-To: \n" >>>>> "POT-Creation-Date: 2025-11-11 21:26+0000\n" >>>>> "PO-Revision-Date: 2026-02-17 17:45+0000\n" >>>>> -"Last-Translator: Amazon Translate = \n" >>>>> +"Last-Translator: Bernhard Bitsch \n" >>>>> "Language-Team: German = >>>> "telemetry/de/>\n" >>>>> "Language: de\n" >>>>> @@ -22,10 +22,10 @@ msgstr "" >>>>> "X-Generator: Weblate 5.15.2\n" >>>>>=20 >>>>> msgid "Bits Per Second" >>>>> -msgstr "Bits pro Sekunde" >>>>> +msgstr "Bit pro Sekunde" >>>>>=20 >>>>> msgid "Bytes" >>>>> -msgstr "Bytes" >>>>> +msgstr "Byte" >>>>>=20 >>>>> msgid "Days" >>>>> msgstr "Tage" >>>>> --=20 >>>>> 2.47.3