Message ID | 20190621185051.77354-1-dimitriy.ryazantcev@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | l10n: localizable upload progress messages | expand |
Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com> writes: > Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com> > --- > progress.c | 3 ++- > strbuf.c | 8 ++++---- > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/progress.c b/progress.c > index a2e8cf64a8..3d47c06495 100644 > --- a/progress.c > +++ b/progress.c > @@ -151,7 +151,8 @@ static void throughput_string(struct strbuf *buf, uint64_t total, > strbuf_humanise_bytes(buf, total); > strbuf_addstr(buf, " | "); > strbuf_humanise_bytes(buf, rate * 1024); > - strbuf_addstr(buf, "/s"); > + /* TRANSLATORS: per second */ > + strbuf_addstr(buf, _("/s")); > } Hpmh, if it is OK to assume that in all human languages it is OK to express the reate as <number> followed by translated "per second", without allowing the order from getting changed, then ... > if (bytes > 1 << 30) { > - strbuf_addf(buf, "%u.%2.2u GiB", > + strbuf_addf(buf, _("%u.%2.2u GiB"), > (unsigned)(bytes >> 30), > (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); wouldn't it make more sense to split GiB, MiB, KiB and "bytes" units out of these messages, and ask only these unit names, without the %u.%2.2u number formats, to get translated by the localization team? > } else if (bytes > 1 << 20) { > unsigned x = bytes + 5243; /* for rounding */ > - strbuf_addf(buf, "%u.%2.2u MiB", > + strbuf_addf(buf, _("%u.%2.2u MiB"), > x >> 20, ((x & ((1 << 20) - 1)) * 100) >> 20); > } else if (bytes > 1 << 10) { > unsigned x = bytes + 5; /* for rounding */ > - strbuf_addf(buf, "%u.%2.2u KiB", > + strbuf_addf(buf, _("%u.%2.2u KiB"), > x >> 10, ((x & ((1 << 10) - 1)) * 100) >> 10); > } else { > - strbuf_addf(buf, "%u bytes", (unsigned)bytes); > + strbuf_addf(buf, _("%u bytes"), (unsigned)bytes); This needs the Q_() to deal with plural (i.e. in en, between "byte" and "bytes"). > } > }
On Sat, Jun 22, 2019 at 2:18 AM Junio C Hamano <gitster@pobox.com> wrote: > > Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com> writes: > > > Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com> > > --- > > progress.c | 3 ++- > > strbuf.c | 8 ++++---- > > 2 files changed, 6 insertions(+), 5 deletions(-) > > > > diff --git a/progress.c b/progress.c > > index a2e8cf64a8..3d47c06495 100644 > > --- a/progress.c > > +++ b/progress.c > > @@ -151,7 +151,8 @@ static void throughput_string(struct strbuf *buf, uint64_t total, > > strbuf_humanise_bytes(buf, total); > > strbuf_addstr(buf, " | "); > > strbuf_humanise_bytes(buf, rate * 1024); > > - strbuf_addstr(buf, "/s"); > > + /* TRANSLATORS: per second */ > > + strbuf_addstr(buf, _("/s")); > > } > > Hpmh, if it is OK to assume that in all human languages it is OK to > express the reate as <number> followed by translated "per second", > without allowing the order from getting changed, then ... Probably not (but I don't know any language that is not ok with this). I would just add strbuf_humanise_rate() that prints "GiB/s", "MiB/s"... Then we probably should print "bytes/second". This will print "bytes/s" which looks just weird. > > if (bytes > 1 << 30) { > > - strbuf_addf(buf, "%u.%2.2u GiB", > > + strbuf_addf(buf, _("%u.%2.2u GiB"), > > (unsigned)(bytes >> 30), > > (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); > > wouldn't it make more sense to split GiB, MiB, KiB and "bytes" units > out of these messages, and ask only these unit names, without the > %u.%2.2u number formats, to get translated by the localization team? That assumes all languages will print the unit after the number. I guess that is ok and it helps share code if we add strbuf_humanise_rate() above because only the unit part changes.
Duy Nguyen <pclouds@gmail.com> writes: >> Hpmh, if it is OK to assume that in all human languages it is OK to >> express the reate as <number> followed by translated "per second", >> without allowing the order from getting changed, then ... > > Probably not (but I don't know any language that is not ok with this). > I would just add strbuf_humanise_rate() that prints "GiB/s", > "MiB/s"... Then we probably should print "bytes/second". This will > print "bytes/s" which looks just weird. > >> > if (bytes > 1 << 30) { >> > - strbuf_addf(buf, "%u.%2.2u GiB", >> > + strbuf_addf(buf, _("%u.%2.2u GiB"), >> > (unsigned)(bytes >> 30), >> > (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); >> >> wouldn't it make more sense to split GiB, MiB, KiB and "bytes" units >> out of these messages, and ask only these unit names, without the >> %u.%2.2u number formats, to get translated by the localization team? > > That assumes all languages will print the unit after the number. I > guess that is ok and it helps share code if we add > strbuf_humanise_rate() above because only the unit part changes. I think this is the direction I expected the discussion to go in. It seems that the other subthread went the other way, though.
diff --git a/progress.c b/progress.c index a2e8cf64a8..3d47c06495 100644 --- a/progress.c +++ b/progress.c @@ -151,7 +151,8 @@ static void throughput_string(struct strbuf *buf, uint64_t total, strbuf_humanise_bytes(buf, total); strbuf_addstr(buf, " | "); strbuf_humanise_bytes(buf, rate * 1024); - strbuf_addstr(buf, "/s"); + /* TRANSLATORS: per second */ + strbuf_addstr(buf, _("/s")); } void display_throughput(struct progress *progress, uint64_t total) diff --git a/strbuf.c b/strbuf.c index 0e18b259ce..c309df1f5e 100644 --- a/strbuf.c +++ b/strbuf.c @@ -814,19 +814,19 @@ 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 GiB"), (unsigned)(bytes >> 30), (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); } else if (bytes > 1 << 20) { unsigned x = bytes + 5243; /* for rounding */ - strbuf_addf(buf, "%u.%2.2u MiB", + strbuf_addf(buf, _("%u.%2.2u MiB"), x >> 20, ((x & ((1 << 20) - 1)) * 100) >> 20); } else if (bytes > 1 << 10) { unsigned x = bytes + 5; /* for rounding */ - strbuf_addf(buf, "%u.%2.2u KiB", + strbuf_addf(buf, _("%u.%2.2u KiB"), x >> 10, ((x & ((1 << 10) - 1)) * 100) >> 10); } else { - strbuf_addf(buf, "%u bytes", (unsigned)bytes); + strbuf_addf(buf, _("%u bytes"), (unsigned)bytes); } }
Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com> --- progress.c | 3 ++- strbuf.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-)