Am 23.06.19 um 10:28 schrieb Dimitriy: > brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: >> >> On 2019-06-22 at 21:42:33, Johannes Sixt wrote: >>> Am 22.06.19 um 11:36 schrieb Dimitriy Ryazantcev: >>>> diff --git a/strbuf.c b/strbuf.c >>>> index 0e18b259ce..0a3ebc3749 100644 >>>> --- a/strbuf.c >>>> +++ b/strbuf.c >>>> @@ -814,20 +814,28 @@ void strbuf_addstr_urlencode(struct strbuf *sb, const char *s, >>>> void strbuf_humanise_bytes(struct strbuf *buf, off_t bytes) >>>> { >>>> if (bytes > 1 << 30) { >>>> - strbuf_addf(buf, "%u.%2.2u GiB", >>>> + strbuf_addf(buf, "%u.%2.2u ", >>>> (unsigned)(bytes >> 30), >>>> (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); >>>> + /* TRANSLATORS: ISO/IEC 80000-13:2008, clause 4: gibi */ >>>> + strbuf_addstr(buf, _("Gi")); >>>> } else if (bytes > 1 << 20) { >>>> unsigned x = bytes + 5243; /* for rounding */ >>>> - strbuf_addf(buf, "%u.%2.2u MiB", >>>> + strbuf_addf(buf, "%u.%2.2u ", >>>> x >> 20, ((x & ((1 << 20) - 1)) * 100) >> 20); >>>> + /* TRANSLATORS: ISO/IEC 80000-13:2008, clause 4: mebi */ >>>> + strbuf_addstr(buf, _("Mi")); >>>> } else if (bytes > 1 << 10) { >>>> unsigned x = bytes + 5; /* for rounding */ >>>> - strbuf_addf(buf, "%u.%2.2u KiB", >>>> + strbuf_addf(buf, "%u.%2.2u ", >>>> x >> 10, ((x & ((1 << 10) - 1)) * 100) >> 10); >>>> + /* TRANSLATORS: ISO/IEC 80000-13:2008, clause 4: kibi */ >>>> + strbuf_addstr(buf, _("Ki")); >>>> } else { >>>> - strbuf_addf(buf, "%u bytes", (unsigned)bytes); >>>> + strbuf_addf(buf, "%u ", (unsigned)bytes); >>>> } >>>> + /* TRANSLATORS: ISO/IEC 80000-13:2008, subclause 13-9.c: byte */ >>>> + strbuf_addstr(buf, _("B")); >>>> } >>>> >>>> void strbuf_add_absolute_path(struct strbuf *sb, const char *path) >>>> >>> >>> All of the prefixes are in ISO/IEC, i.e., standardized. Why do they have >>> to be translated? >>> >>> Isn't the way of presentation of magnitudes with a unit also >>> standardized, and should not need to be translated? >> >> In my view, the translation is less important for the prefixes and more >> important for the unit: at least French prefers the term "octet" over >> "byte"[0], so instead of writing "MB", you'd write "Mo". > > Localization according to local rules is important for every unit part. > There is a Russian adoption of IEC 80000-13:2008 called > GOST R IEC 80000-13-2016[0]. > And in this document there is national translations for these units\prefixes. > So 'KiB' should become 'КиБ' according to this national standard. > Same story with Ukrainian adoption called DSTU IEC 80000-13:2016[1]: > 'KiB' -> 'КіБ'. > Also according to ISO website seems that there is French version of > IEC 80000-13:2008 exist. Not sure about French translation through. Thanks for educating me. Given your explanations, wouldn't it be much more natural to keep the prefix with the unit instead of separating them, as the patch does? -- Hannes