unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v6 0/2] strftime: Improve the width of alternative representation for year [BZ #23758]
@ 2019-01-11  4:47 TAMUKI Shoichi
  2019-01-11  4:49 ` [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 " TAMUKI Shoichi
  2019-01-11  4:52 ` [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" " TAMUKI Shoichi
  0 siblings, 2 replies; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-11  4:47 UTC (permalink / raw)
  To: libc-alpha

Hello,

This is the new set of patches.  I have split the patch into 2 parts.

Changes include:

Patch 1: strftime: Set the default width of "%Ey" to 2
Patch 2: strftime: Pass the additional flags from "%EY" to "%Ey"

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-11  4:47 [PATCH v6 0/2] strftime: Improve the width of alternative representation for year [BZ #23758] TAMUKI Shoichi
@ 2019-01-11  4:49 ` TAMUKI Shoichi
  2019-01-16 16:17   ` Zack Weinberg
  2019-01-11  4:52 ` [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" " TAMUKI Shoichi
  1 sibling, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-11  4:49 UTC (permalink / raw)
  To: libc-alpha

The Japanese era name is scheduled to be changed on May 1, 2019.
Prior to this, change the alternative representation for year in
strftime to pad the number with zero to keep it constant width, so
that prevent the trouble we saw in the past from becoming obvious
again from the year after the era name changes onward.

Since only one Japanese era name is used by each emperor's reign as
lately, it is rare that the year ends in one digit or lasts more than
three digits.  In addition, the default width of month, day, hour,
minute, and second is 2, so adjust the default width of year the same
as them, and then the whole display balance is improved.  Therefore,
it would be reasonable to set the default width padding with zero of
"%Ey" to 2.

ChangeLog:

	[BZ #23758]
	* NEWS: Mention the change.
	* manual/time.texi (strftime): Document the desctiption for "%Ey".
	Also, fix the wording to "alternative" rather than "alternate".
	* time/strftime_l.c (__strftime_internal): Set the default width
	padding with zero of "%Ey" to 2.
---
 NEWS              |  4 ++++
 manual/time.texi  | 11 ++++++++---
 time/strftime_l.c |  2 +-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/NEWS b/NEWS
index cc20102fda4..00fab6e8825 100644
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,10 @@ Major new features:
     - C-SKY ABIV2 soft-float little-endian
     - C-SKY ABIV2 hard-float little-endian
 
+* Improve the width of alternative representation for year in
+  strftime.  For %Ey conversion specifier, the default action is now
+  to pad the number with zero to keep minimum 2 digits, similar to %y.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * The glibc.tune tunable namespace has been renamed to glibc.cpu and the
diff --git a/manual/time.texi b/manual/time.texi
index 9e981314876..ab544e590c8 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -1339,7 +1339,7 @@ POSIX.2-1992 and by @w{ISO C99}, are:
 
 @table @code
 @item E
-Use the locale's alternate representation for date and time.  This
+Use the locale's alternative representation for date and time.  This
 modifier applies to the @code{%c}, @code{%C}, @code{%x}, @code{%X},
 @code{%y} and @code{%Y} format specifiers.  In a Japanese locale, for
 example, @code{%Ex} might yield a date format based on the Japanese
@@ -1347,7 +1347,7 @@ Emperors' reigns.
 
 @item O
 With all format specifiers that produce numbers: use the locale's
-alternate numeric symbols.
+alternative numeric symbols.
 
 With @code{%B}, @code{%b}, and @code{%h}: use the grammatical form for
 month names that is appropriate when the month is named by itself,
@@ -1355,7 +1355,7 @@ rather than the form that is appropriate when the month is used as
 part of a complete date.  This is a GNU extension.
 @end table
 
-If the format supports the modifier but no alternate representation
+If the format supports the modifier but no alternative representation
 is available, it is ignored.
 
 The conversion specifier ends with a format specifier taken from the
@@ -1568,6 +1568,11 @@ The preferred time of day representation for the current locale.
 The year without a century as a decimal number (range @code{00} through
 @code{99}).  This is equivalent to the year modulo 100.
 
+If the @code{E} modifier is specified (@code{%Ey}), the locale's
+alternative representation for year (the era year) is used instead.
+The default action is to pad the number with zero to keep minimum 2
+digits, similar to @code{%y}.
+
 @item %Y
 The year as a decimal number, using the Gregorian calendar.  Years
 before the year @code{1} are numbered @code{0}, @code{-1}, and so on.
diff --git a/time/strftime_l.c b/time/strftime_l.c
index 7ba4179de3e..cbe08e7afb4 100644
--- a/time/strftime_l.c
+++ b/time/strftime_l.c
@@ -1294,7 +1294,7 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
 	      if (era)
 		{
 		  int delta = tp->tm_year - era->start_date[0];
-		  DO_NUMBER (1, (era->offset
+		  DO_NUMBER (2, (era->offset
 				 + delta * era->absolute_direction));
 		}
 #else
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" [BZ #23758]
  2019-01-11  4:47 [PATCH v6 0/2] strftime: Improve the width of alternative representation for year [BZ #23758] TAMUKI Shoichi
  2019-01-11  4:49 ` [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 " TAMUKI Shoichi
@ 2019-01-11  4:52 ` TAMUKI Shoichi
  2019-01-16 16:17   ` Zack Weinberg
  1 sibling, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-11  4:52 UTC (permalink / raw)
  To: libc-alpha

For the output string of the conversion specifier "%EY", an optional
flag is given to the conversion specifier so that it can be also used
the current non-padding format, and the padding format can be
controlled.  To achieve this, when an optional flag is given to the
conversion specifier "%EY", the "%Ey" included in the combined
conversion specifier is interpreted as if decorated with the
appropriate flag.

Currently in glibc, besides ja_JP (Japan) locale, the locales using
the conversion specifier "%Ey" are lo_LA (Laos) and th_TH (Thailand).
In these locales, they use the Buddhist era.  The Buddhist era is a
value obtained by adding 543 to the Christian era, so they are not
affected by the change of the conversion specifier "%Ey".

ChangeLog:

	[BZ #23758]
	* NEWS: Mention the change.
	* manual/time.texi (strftime): Document the desctiption for "%EC" and
	"%EY".
	* time/Makefile: Add tst-strftime2 to tests.  Also add ja_JP.UTF-8,
	lo_LA.UTF-8, and th_TH.UTF-8 to LOCALES.
	* time/strftime_l.c (__strftime_internal): Add argument yr_spec to
	override padding for "%Ey".
	If an optional flag ('_' or '-') is specified to "%EY", the "%Ey" in
	subformat is interpreted as if decorated with the appropriate flag.
	* time/tst-strftime2.c: New file.
---
 NEWS                 |   3 ++
 manual/time.texi     |  10 ++++
 time/Makefile        |   5 +-
 time/strftime_l.c    |  20 +++++---
 time/tst-strftime2.c | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 161 insertions(+), 9 deletions(-)
 create mode 100644 time/tst-strftime2.c

diff --git a/NEWS b/NEWS
index 00fab6e8825..82c1cdf9b3d 100644
--- a/NEWS
+++ b/NEWS
@@ -55,6 +55,9 @@ Major new features:
 * Improve the width of alternative representation for year in
   strftime.  For %Ey conversion specifier, the default action is now
   to pad the number with zero to keep minimum 2 digits, similar to %y.
+  Also, the optional flag (either _ or -) can be used for %EY, so that
+  the internal %Ey is interpreted as if decorated with the appropriate
+  flag.
 
 Deprecated and removed features, and other changes affecting compatibility:
 
diff --git a/manual/time.texi b/manual/time.texi
index ab544e590c8..9dcb35fed14 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -1393,6 +1393,9 @@ The preferred calendar time representation for the current locale.
 The century of the year.  This is equivalent to the greatest integer not
 greater than the year divided by 100.
 
+If the @code{E} modifier is specified (@code{%EC}), the locale's
+alternative representation for year (the era name) is used instead.
+
 This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %d
@@ -1577,6 +1580,13 @@ digits, similar to @code{%y}.
 The year as a decimal number, using the Gregorian calendar.  Years
 before the year @code{1} are numbered @code{0}, @code{-1}, and so on.
 
+If the @code{E} modifier is specified (@code{%EY}), the locale's
+alternative representation for year (generally the combination of
+@code{%EC} and @code{%Ey}) is used instead.  In this case, the
+optional flag (either @code{_} or @code{-}) can be used, so that the
+internal @code{%Ey} is interpreted as if decorated with the
+appropriate flag.
+
 @item %z
 @w{RFC 822}/@w{ISO 8601:1988} style numeric time zone (e.g.,
 @code{-0600} or @code{+0100}), or nothing if no time zone is
diff --git a/time/Makefile b/time/Makefile
index d23ba2dee6e..5c6304ece1d 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -43,13 +43,14 @@ tests	:= test_time clocktest tst-posixtz tst-strptime tst_wcsftime \
 	   tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \
 	   tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \
 	   tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \
-	   tst-tzname tst-y2039 bug-mktime4
+	   tst-tzname tst-y2039 bug-mktime4 tst-strftime2
 
 include ../Rules
 
 ifeq ($(run-built-tests),yes)
 LOCALES := de_DE.ISO-8859-1 en_US.ISO-8859-1 ja_JP.EUC-JP fr_FR.UTF-8 \
-	   es_ES.UTF-8 pl_PL.UTF-8 ru_RU.UTF-8
+	   es_ES.UTF-8 pl_PL.UTF-8 ru_RU.UTF-8 \
+	   ja_JP.UTF-8 lo_LA.UTF-8 th_TH.UTF-8
 include ../gen-locales.mk
 
 $(objpfx)tst-ftime_l.out: $(gen-locales)
diff --git a/time/strftime_l.c b/time/strftime_l.c
index cbe08e7afb4..12d7c0e8744 100644
--- a/time/strftime_l.c
+++ b/time/strftime_l.c
@@ -434,7 +434,7 @@ static CHAR_T const month_name[][10] =
 #endif
 
 static size_t __strftime_internal (CHAR_T *, size_t, const CHAR_T *,
-				   const struct tm *, bool *
+				   const struct tm *, int *, bool *
 				   ut_argument_spec
 				   LOCALE_PARAM) __THROW;
 
@@ -456,8 +456,9 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
   tmcopy = *tp;
   tp = &tmcopy;
 #endif
+  int yr_spec = 0;		/* Override padding for "%Ey".  */
   bool tzset_called = false;
-  return __strftime_internal (s, maxsize, format, tp, &tzset_called
+  return __strftime_internal (s, maxsize, format, tp, &yr_spec, &tzset_called
 			      ut_argument LOCALE_ARG);
 }
 #ifdef _LIBC
@@ -466,7 +467,7 @@ libc_hidden_def (my_strftime)
 
 static size_t
 __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
-		     const struct tm *tp, bool *tzset_called
+		     const struct tm *tp, int *yr_spec, bool *tzset_called
 		     ut_argument_spec LOCALE_PARAM)
 {
 #if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
@@ -838,11 +839,12 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
 	  {
 	    CHAR_T *old_start = p;
 	    size_t len = __strftime_internal (NULL, (size_t) -1, subfmt,
-					      tp, tzset_called ut_argument
-					      LOCALE_ARG);
+					      tp, yr_spec, tzset_called
+					      ut_argument LOCALE_ARG);
 	    add (len, __strftime_internal (p, maxsize - i, subfmt,
-					   tp, tzset_called ut_argument
-					   LOCALE_ARG));
+					   tp, yr_spec, tzset_called
+					   ut_argument LOCALE_ARG));
+	    *yr_spec = 0;
 
 	    if (to_uppcase)
 	      while (old_start < p)
@@ -1273,6 +1275,8 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
 # else
 		  subfmt = era->era_format;
 # endif
+		  if (pad != 0)
+		    *yr_spec = pad;
 		  goto subformat;
 		}
 #else
@@ -1294,6 +1298,8 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
 	      if (era)
 		{
 		  int delta = tp->tm_year - era->start_date[0];
+		  if (*yr_spec != 0)
+		    pad = *yr_spec;
 		  DO_NUMBER (2, (era->offset
 				 + delta * era->absolute_direction));
 		}
diff --git a/time/tst-strftime2.c b/time/tst-strftime2.c
new file mode 100644
index 00000000000..57d2144c83c
--- /dev/null
+++ b/time/tst-strftime2.c
@@ -0,0 +1,132 @@
+/* Verify the behavior of strftime on alternative representation for
+   year.
+
+   Copyright (C) 2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <array_length.h>
+#include <locale.h>
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+
+static const char *locales[] = { "ja_JP.UTF-8", "lo_LA.UTF-8", "th_TH.UTF-8" };
+
+static const char *formats[] = { "%EY", "%_EY", "%-EY" };
+
+static const struct
+{
+  const int d, m, y;
+} dates[] =
+  {
+    { 1, 3, 88 },
+    { 7, 0, 89 },
+    { 8, 0, 89 },
+    { 1, 3, 90 },
+    { 1, 3, 97 },
+    { 1, 3, 98 }
+  };
+
+static char ref[3][3][6][100];
+
+static void
+mkreftable (void)
+{
+  int i, j, k;
+  char era[10];
+  static const int yrj[] = { 63, 64, 1, 2, 9, 10 };
+  static const int yrb[] = { 2531, 2532, 2532, 2533, 2540, 2541 };
+
+  for (i = 0; i < array_length (locales); i++)
+    for (j = 0; j < array_length (formats); j++)
+      for (k = 0; k < array_length (dates); k++)
+	{
+	  if (i == 0)
+	    {
+	      sprintf (era, "%s", (k < 2) ? "\xe6\x98\xad\xe5\x92\x8c"
+					  : "\xe5\xb9\xb3\xe6\x88\x90");
+	      if (yrj[k] == 1)
+		sprintf (ref[i][j][k], "%s\xe5\x85\x83\xe5\xb9\xb4", era);
+	      else
+		{
+		  if (j == 0)
+		    sprintf (ref[i][j][k], "%s%02d\xe5\xb9\xb4", era, yrj[k]);
+		  else if (j == 1)
+		    sprintf (ref[i][j][k], "%s%2d\xe5\xb9\xb4", era, yrj[k]);
+		  else
+		    sprintf (ref[i][j][k], "%s%d\xe5\xb9\xb4", era, yrj[k]);
+		}
+	    }
+	  else if (i == 1)
+	    {
+	      sprintf (era, "\xe0\xba\x9e\x2e\xe0\xba\xaa\x2e ");
+	      sprintf (ref[i][j][k], "%s%d", era, yrb[k]);
+	    }
+	  else
+	    {
+	      sprintf (era, "\xe0\xb8\x9e\x2e\xe0\xb8\xa8\x2e ");
+	      sprintf (ref[i][j][k], "%s%d", era, yrb[k]);
+	    }
+	}
+}
+
+static int
+do_test (void)
+{
+  int i, j, k, result = 0;
+  struct tm ttm;
+  char date[11], buf[100];
+  size_t r, e;
+
+  mkreftable ();
+  for (i = 0; i < array_length (locales); i++)
+    {
+      if (setlocale (LC_ALL, locales[i]) == NULL)
+	{
+	  printf ("locale %s does not exist, skipping...\n", locales[i]);
+	  continue;
+	}
+      printf ("[%s]\n", locales[i]);
+      for (j = 0; j < array_length (formats); j++)
+	{
+	  for (k = 0; k < array_length (dates); k++)
+	    {
+	      ttm.tm_mday = dates[k].d;
+	      ttm.tm_mon  = dates[k].m;
+	      ttm.tm_year = dates[k].y;
+	      strftime (date, sizeof (date), "%F", &ttm);
+	      r = strftime (buf, sizeof (buf), formats[j], &ttm);
+	      e = strlen (ref[i][j][k]);
+	      printf ("%s\t\"%s\"\t\"%s\"", date, formats[j], buf);
+	      if (strcmp (buf, ref[i][j][k]) != 0)
+		{
+		  printf ("\tshould be \"%s\"", ref[i][j][k]);
+		  if (r != e)
+		    printf ("\tgot: %zu, expected: %zu", r, e);
+		  result = 1;
+		}
+	      else
+		printf ("\tOK");
+	      putchar ('\n');
+	    }
+	  putchar ('\n');
+	}
+    }
+  return result;
+}
+
+#include <support/test-driver.c>
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-11  4:49 ` [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 " TAMUKI Shoichi
@ 2019-01-16 16:17   ` Zack Weinberg
  2019-01-17  6:27     ` TAMUKI Shoichi
  0 siblings, 1 reply; 18+ messages in thread
From: Zack Weinberg @ 2019-01-16 16:17 UTC (permalink / raw)
  To: TAMUKI Shoichi; +Cc: GNU C Library

This review covers only the documentation and commit message.

> The Japanese era name is scheduled to be changed on May 1, 2019.
> Prior to this, change the alternative representation for year in
> strftime to pad the number with zero to keep it constant width, so
> that prevent the trouble we saw in the past from becoming obvious
> again from the year after the era name changes onward.
>
> Since only one Japanese era name is used by each emperor's reign as
> lately, it is rare that the year ends in one digit or lasts more than
> three digits.  In addition, the default width of month, day, hour,
> minute, and second is 2, so adjust the default width of year the same
> as them, and then the whole display balance is improved.  Therefore,
> it would be reasonable to set the default width padding with zero of
> "%Ey" to 2.

This commit message will not be clear to readers who are not familiar
with Japanese era dating.  I had to look it up myself.  It also needs
to make clear that %Ey is changed for all locales, not just Japanese
locales, and this is expected to be harmless for locales that use %Ey
for something else.  (I see you mentioned this in the commit message
for the %EY change, but it belongs here.)

Based on what I learned, I suggest this instead:

| In Japanese locales, strftime's alternative year format (%Ey)
| produces the year of the current era (nengō).  A new era typically
| begins when a new emperor is enthroned.  The year of the current
| era is therefore usually a one- or two-digit number.
|
| Many programs that display Japanese era dates assume that the era
| year is two digits wide.  To improve how these programs display
| dates during the first nine years of a new era, change %Ey to pad
| one-digit numbers on the left with a zero.  This change applies to
| all locales.  It is expected to be harmless for other locales that
| use the alternative year format (e.g. lo_LA and th_TH, in which %Ey
| produces the year of the Buddhist calendar) as those calendars'
| year numbers are already more than two digits wide, and this is
| not expected to change.
|
| This change needs to be in place before 2019-05-01 CE, as a new
| era is scheduled to begin on that date.

>       [BZ #23758]
>       * NEWS: Mention the change.

Changes to NEWS are not mentioned in the ChangeLog.

>       * manual/time.texi (strftime): Document the desctiption for "%Ey".
>       Also, fix the wording to "alternative" rather than "alternate".
>       * time/strftime_l.c (__strftime_internal): Set the default width
>       padding with zero of "%Ey" to 2.

The rest of the ChangeLog entry is fine.  However ...

>       Also, fix the wording to "alternative" rather than "alternate".

... this wording change is *correct*, because "alternative" is the
term used by the POSIX specification for strftime, but it should be
committed as a separate patch.

Please remove all of the alternate -> alternative changes in this
patch series.  Please then prepare a separate patch that changes all
uses of "alternate" to "alternative" in the manual's description of
time formatting and makes no other changes.  That patch is
pre-approved: you may post it to the mailing list and immediately push
it to git, without waiting for someone to look at it.  It should be
applied before this patch series.

However, take care not to change uses of "alternate" that refer to
things other than alternative time formats.  For instance, "alternate"
is the correct word to use in the discussion of signal stacks.

(When used as modifiers, "alternate" and "alternative" mean almost
exactly the same thing.  Which one is used in any given context is a
matter of convention.  The manual tries to be consistent with the
POSIX specification, which uses one word for some things and the other
for others.  I regret the confusion this must cause.)

> +* Improve the width of alternative representation for year in
> +  strftime.  For %Ey conversion specifier, the default action is now
> +  to pad the number with zero to keep minimum 2 digits, similar to %y.

It is appropriate to repeat here that this change applies to all
locales, but is for the sake of Japanese era years, and is expected to
be harmless for all other locales.  Taking Paul's comments into
account as well, here is a suggested revision:

| * strftime's default formatting of a locale's alternative year (%Ey)
|   has been changed to zero-pad the year to a minimum of two digits,
|   like %y.  This improves the display of Japanese era years during
|   the first nine years of a new era, and is expected to be harmless
|   for all other locales (only Japanese locales regularly have
|   alternative year numbers less than 10).  Zero-padding can be
|   overridden with the '-' or '_' flags (which are GNU extensions).

> +If the @code{E} modifier is specified (@code{%Ey}), the locale's
> +alternative representation for year (the era year) is used instead.
> +The default action is to pad the number with zero to keep minimum 2
> +digits, similar to @code{%y}.

In addition to Paul's suggestion, this needs to be reworded for
clarity and to avoid using the term "the era year", which is not an
appropriate description of the alternative calendar for all locales.
Also, it should be clarified that %Ey does *not* reduce the result
modulo 100 as %y does.  I suggest

| If the @code{E} modifier is specified (@code{%Ey}), instead produces
| the year number according to a locale-specific alternative calendar.
| Unlike @code{%y}, the number is @emph{not} reduced modulo 100.
| However, by default it is zero-padded to a minimum of two digits
| (this can be overridden by an explicit field width or by the @code{_}
| and @code{-} flags).

zw

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" [BZ #23758]
  2019-01-11  4:52 ` [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" " TAMUKI Shoichi
@ 2019-01-16 16:17   ` Zack Weinberg
  2019-01-17 18:54     ` Rafal Luzynski
  0 siblings, 1 reply; 18+ messages in thread
From: Zack Weinberg @ 2019-01-16 16:17 UTC (permalink / raw)
  To: TAMUKI Shoichi; +Cc: GNU C Library

This review covers only the documentation and commit message.


> For the output string of the conversion specifier "%EY", an optional
> flag is given to the conversion specifier so that it can be also used
> the current non-padding format, and the padding format can be
> controlled.  To achieve this, when an optional flag is given to the
> conversion specifier "%EY", the "%Ey" included in the combined
> conversion specifier is interpreted as if decorated with the
> appropriate flag.

This is unclear.  Suggest instead:

| The full representation of the alternative calendar year (%EY)
| typically includes an internal use of %Ey.  As a GNU extension,
| apply any flags on %EY (e.g. '%-EY', '%_Ey') to the internal %Ey,
| allowing users of %EY to control how the year is padded.

(It seems to me that this extension ought to be generalized to all of
the "macro" formats (%c, %D, %F, %r, %R, %T, %x, %X, %Ec, %Ex, %EX),
and to all format flags and field widths, but that would be a separate
patch and not appropriate for 2.29 at this point.)

> Currently in glibc, besides ja_JP (Japan) locale, the locales using
> the conversion specifier "%Ey" are lo_LA (Laos) and th_TH (Thailand).
> In these locales, they use the Buddhist era.  The Buddhist era is a
> value obtained by adding 543 to the Christian era, so they are not
> affected by the change of the conversion specifier "%Ey".

Drop this paragraph, as it is already covered in the previous patch's
commit message.

>
> ChangeLog:
>
>       [BZ #23758]
>       * NEWS: Mention the change.

Changes to NEWS are not mentioned in the ChangeLog.

>       * manual/time.texi (strftime): Document the desctiption for "%EC" and
>       "%EY".

Typo: "desctiption" -> "description".  But it would be even better written

|    * manual/time.texi (strftime): Document "%EC" and "%EY".

>       If an optional flag ('_' or '-') is specified to "%EY", the "%Ey" in
>       subformat is interpreted as if decorated with the appropriate flag.

Write this sentence with an active main verb.  Also, "subformat" needs
a "the", and "the appropriate" would be better as "that", which makes
clear that it applies the *same* optional flag that was used on the %EY.

|       If an optional flag ('_' or '-') is specified to "%EY", interpret
|       the "%Ey" in the subformat as if decorated with that flag.

>  * Improve the width of alternative representation for year in
>    strftime.  For %Ey conversion specifier, the default action is now
>    to pad the number with zero to keep minimum 2 digits, similar to %y.
> +  Also, the optional flag (either _ or -) can be used for %EY, so that
> +  the internal %Ey is interpreted as if decorated with the appropriate
> +  flag.

Paul's suggested revision of this addition is technically incorrect;
he got confused about which way around the flag propagates.  I would
recommend using a separate bullet point for this change, and I would
also recommend not describing the behavior in terms of implementation
details:

| * As a GNU extension, the '-' and '_' flags can now be applied to '%EY'
|   to control how the year number is formatted; they have the same effect
|   that they would on %Ey.

>  The century of the year.  This is equivalent to the greatest integer not
>  greater than the year divided by 100.
>
> +If the @code{E} modifier is specified (@code{%EC}), the locale's
> +alternative representation for year (the era name) is used instead.

Recommend instead

| If the @code{E} modifier is specified (@code{%EC}), instead produces
| the name of the period for the current year (e.g.@: an era name) in
| the locale's alternative calendar.

> +If the @code{E} modifier is specified (@code{%EY}), the locale's
> +alternative representation for year (generally the combination of
> +@code{%EC} and @code{%Ey}) is used instead.  In this case, the
> +optional flag (either @code{_} or @code{-}) can be used, so that the
> +internal @code{%Ey} is interpreted as if decorated with the
> +appropriate flag.

Recommend instead

| If the @code{E} modifier is specified (@code{%EY}), instead produces
| a complete representation of the year according to the locale's
| alternative calendar.  Generally this will be some combination of
| the information produced by @code{%EC} and @code{Ey}.  As a GNU
| extension, the formatting flags @code{_} or @code{-} may be used
| with this conversion specifier; they affect how the year number is
| printed.

zw

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-16 16:17   ` Zack Weinberg
@ 2019-01-17  6:27     ` TAMUKI Shoichi
  2019-01-17 17:56       ` Rafal Luzynski
  0 siblings, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-17  6:27 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: libc-alpha

Hello Zack,

Thank you for reviewing my patch's documentation and commit messages.
Almost all the things I wanted to say were expressed and I think that
is very nice.

Also, Rafal and Paul, thank you for reviewing my patch's documentation
and commit messages.

I will soon prepare a new version set of patches with these remarks
applied.

From: Zack Weinberg <zackw@panix.com>
Subject: Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
Date: Wed, 16 Jan 2019 11:17:09 -0500

> > The Japanese era name is scheduled to be changed on May 1, 2019.
> > Prior to this, change the alternative representation for year in
> > strftime to pad the number with zero to keep it constant width, so
> > that prevent the trouble we saw in the past from becoming obvious
> > again from the year after the era name changes onward.
> > 
> > Since only one Japanese era name is used by each emperor's reign as
> > lately, it is rare that the year ends in one digit or lasts more than
> > three digits.  In addition, the default width of month, day, hour,
> > minute, and second is 2, so adjust the default width of year the same
> > as them, and then the whole display balance is improved.  Therefore,
> > it would be reasonable to set the default width padding with zero of
> > "%Ey" to 2.
> 
> This commit message will not be clear to readers who are not familiar
> with Japanese era dating.  I had to look it up myself.  It also needs
> to make clear that %Ey is changed for all locales, not just Japanese
> locales, and this is expected to be harmless for locales that use %Ey
> for something else.  (I see you mentioned this in the commit message
> for the %EY change, but it belongs here.)
> 
> Based on what I learned, I suggest this instead:
> 
> | In Japanese locales, strftime's alternative year format (%Ey)
> | produces the year of the current era (neng?).  A new era typically
> | begins when a new emperor is enthroned.  The year of the current
> | era is therefore usually a one- or two-digit number.

I'm sorry, but I did not understand the meaning of (neng?).  I will
rewrite it to (Japanese Calendar) tentatively.

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-17  6:27     ` TAMUKI Shoichi
@ 2019-01-17 17:56       ` Rafal Luzynski
  2019-01-18  2:45         ` Zack Weinberg
  2019-01-18 13:56         ` TAMUKI Shoichi
  0 siblings, 2 replies; 18+ messages in thread
From: Rafal Luzynski @ 2019-01-17 17:56 UTC (permalink / raw)
  To: TAMUKI Shoichi, Zack Weinberg; +Cc: libc-alpha

17.01.2019 07:27 TAMUKI Shoichi <tamuki@linet.gr.jp> wrote:
> [...]
> I'm sorry, but I did not understand the meaning of (neng?).  I will
> rewrite it to (Japanese Calendar) tentatively.

It looks like your email client was unable to handle the letter "ō"
("o" with macron). [1] According to Wikipedia, [2] Zack probably meant
the Japanese era name.  I guess you are the right person to say whether
it should be written as "nengō" or "nengo" or "Japanese era name"
or "Japanese year name" or just drop the parentheses completely.
I think it's not about the Japanese Calendar, as you suggest.

BTW, this Wikipedia article also explained me what you mean by the
"year name".  I confirm that the term is confusing for those unfamiliar
with the Japanese calendar.

Regards,

Rafal


[1] https://www.fileformat.info/info/unicode/char/014d/index.htm
[2] https://en.wikipedia.org/wiki/Japanese_era_name

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" [BZ #23758]
  2019-01-16 16:17   ` Zack Weinberg
@ 2019-01-17 18:54     ` Rafal Luzynski
  2019-01-18  2:32       ` Zack Weinberg
  0 siblings, 1 reply; 18+ messages in thread
From: Rafal Luzynski @ 2019-01-17 18:54 UTC (permalink / raw)
  To: Zack Weinberg, TAMUKI Shoichi; +Cc: GNU C Library

16.01.2019 17:17 Zack Weinberg <zackw@panix.com> wrote:
> 
> This review covers only the documentation and commit message.

Thank you Zack and Paul for your reviews.  They were the most
missing part.  I believe we will help ourselves with the rest
of the patches.

> [...]
> (It seems to me that this extension ought to be generalized to all of
> the "macro" formats (%c, %D, %F, %r, %R, %T, %x, %X, %Ec, %Ex, %EX),
> and to all format flags and field widths, but that would be a separate
> patch and not appropriate for 2.29 at this point.)

This may be too ambiguous and therefore impossible to implement.

> [...]
> Paul's suggested revision of this addition is technically incorrect;
> he got confused about which way around the flag propagates.  I would
> recommend using a separate bullet point for this change, and I would
> also recommend not describing the behavior in terms of implementation
> details:
> 
> | * As a GNU extension, the '-' and '_' flags can now be applied to '%EY'
> |   to control how the year number is formatted; they have the same effect
> |   that they would on %Ey.

"they would" or "they would have"?

Also, shouldn't all format specifiers be consequently quoted, like "%EY"
and "%Ey"?  I don't mind single quotes, especially for the flags, I just
think that %Ey (without any quotes) may not be absolutely clear.

Regards,

Rafal

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" [BZ #23758]
  2019-01-17 18:54     ` Rafal Luzynski
@ 2019-01-18  2:32       ` Zack Weinberg
  0 siblings, 0 replies; 18+ messages in thread
From: Zack Weinberg @ 2019-01-18  2:32 UTC (permalink / raw)
  To: Rafal Luzynski; +Cc: TAMUKI Shoichi, GNU C Library

On Thu, Jan 17, 2019 at 1:55 PM Rafal Luzynski
<digitalfreak@lingonborough.com> wrote:
> 16.01.2019 17:17 Zack Weinberg <zackw@panix.com> wrote:
> > (It seems to me that this extension ought to be generalized to all of
> > the "macro" formats (%c, %D, %F, %r, %R, %T, %x, %X, %Ec, %Ex, %EX),
> > and to all format flags and field widths, but that would be a separate
> > patch and not appropriate for 2.29 at this point.)
>
> This may be too ambiguous and therefore impossible to implement.

Yeah, you may be right there.  It was just an idea.

> > | * As a GNU extension, the '-' and '_' flags can now be applied to '%EY'
> > |   to control how the year number is formatted; they have the same effect
> > |   that they would on %Ey.
>
> "they would" or "they would have"?

My ear says an additional "have" is not necessary, but feel free to
add it if it sounds better to you that way.

> Also, shouldn't all format specifiers be consequently quoted, like "%EY"
> and "%Ey"?  I don't mind single quotes, especially for the flags, I just
> think that %Ey (without any quotes) may not be absolutely clear.

This is NEWS, right?  In the manual it should be @code{} and no quotes
for all of them, IIRC, but yes, let's add quotes around %Ey.  It
doesn't matter to me whether they are single or double quotes.

zw

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-17 17:56       ` Rafal Luzynski
@ 2019-01-18  2:45         ` Zack Weinberg
  2019-01-18 13:59           ` TAMUKI Shoichi
  2019-01-18 13:56         ` TAMUKI Shoichi
  1 sibling, 1 reply; 18+ messages in thread
From: Zack Weinberg @ 2019-01-18  2:45 UTC (permalink / raw)
  To: Rafal Luzynski; +Cc: TAMUKI Shoichi, GNU C Library

On Thu, Jan 17, 2019 at 12:57 PM Rafal Luzynski
<digitalfreak@lingonborough.com> wrote:
>
> 17.01.2019 07:27 TAMUKI Shoichi <tamuki@linet.gr.jp> wrote:
> > [...]
> > I'm sorry, but I did not understand the meaning of (neng?).  I will
> > rewrite it to (Japanese Calendar) tentatively.
>
> It looks like your email client was unable to handle the letter "ō"
> ("o" with macron). [1] According to Wikipedia, [2] Zack probably meant
> the Japanese era name.

Yes, "nengo" with a macron over the "o" was the word I was trying to
write.  I don't speak Japanese myself, I got it from
https://en.wikipedia.org/wiki/Japanese_era_name .  I wanted to mention
the (romaji version of) the Japanese word for an era of this calendar,
since "era" has several meanings in English and not very many native
English speakers are familiar with this calendar.  (I wonder what you
will get if I copy and paste the kanji next to "nengō" on the
Wikipedia page: 年号.)

The thing I was trying to say is that "%Ey" (in the ja_JP locale)
produces the number of a year _within_ an era.  In this context, the
Japanese word I want is not the word for the _name_ of an era, but the
word for an era itself.  What is that word?

zw

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-17 17:56       ` Rafal Luzynski
  2019-01-18  2:45         ` Zack Weinberg
@ 2019-01-18 13:56         ` TAMUKI Shoichi
  2019-01-18 18:44           ` Rafal Luzynski
  1 sibling, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-18 13:56 UTC (permalink / raw)
  To: Rafal Luzynski, Zack Weinberg; +Cc: libc-alpha

Hello Rafal,

From: Rafal Luzynski <digitalfreak@lingonborough.com>
Subject: Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
Date: Thu, 17 Jan 2019 18:56:20 +0100 (CET)

> > I'm sorry, but I did not understand the meaning of (neng?).  I will
> > rewrite it to (Japanese Calendar) tentatively.
> 
> It looks like your email client was unable to handle the letter "?"
> ("o" with macron). [1] According to Wikipedia, [2] Zack probably meant
> the Japanese era name.  I guess you are the right person to say whether
> it should be written as "neng?" or "nengo" or "Japanese era name"
> or "Japanese year name" or just drop the parentheses completely.
> I think it's not about the Japanese Calendar, as you suggest.

OK, I understand.  I think "nengo" and "gengo" are nearly synonymous,
and "gengo" seems to be used more often in Japan.  These mean "era
name" (%EC).  On the other hand, "the year of the (current) era" means
"the numeric era year" (%Ey).

> BTW, this Wikipedia article also explained me what you mean by the
> "year name".  I confirm that the term is confusing for those unfamiliar
> with the Japanese calendar.

I think "year name" and "era name" are also synonymous, and "era name"
seems to be used more often. [1]

[1] https://mainichi.jp/english/articles/20190104/p2a/00m/0na/034000c

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-17 18:11 [PATCH v7 1/2] strftime: Set the default width of "%Ey" to 2 " Rafal Luzynski
@ 2019-01-18 13:58 ` TAMUKI Shoichi
  0 siblings, 0 replies; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-18 13:58 UTC (permalink / raw)
  To: Rafal Luzynski, libc-alpha

Hello Rafal,

From: Rafal Luzynski <digitalfreak@lingonborough.com>
Subject: Re: [PATCH v7 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
Date: Thu, 17 Jan 2019 19:11:53 +0100 (CET)

> > In Japanese locales, strftime's alternative year format (%Ey) produces
> > the year of the current era (Japanese calendar).
> 
> As I wrote in my previous email, the term "Japanese calendar" may be
> incorrect here.

I think that (Japanese numeric era year) would be more appropriate.

> Now I can see that neither of our comments may be correct.  "%Ey" produces
> the number of the year within the current era.  It says which (numbered)
> year of the current era is now.  Is "nengo" a correct name for this?
> Should we maybe drop this parentheses completely, including its content?

Not correct, "nengo" (or "gengo") means "era name" (%EC).  So, We may
rather drop this parentheses completely.

> I don't quote the rest of your patch here as it looks correct to me,
> looking at previous comments from Zack and Paul.  Please rethink this
> minor issue in the commit message and/or maybe let's wait for Zack's
> or Paul's comment about it and it will be OK for me to commit this.

OK, I am going to rethink the minor issue including the quote issue.
I will try to match existing sentences as much as possible.

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-18  2:45         ` Zack Weinberg
@ 2019-01-18 13:59           ` TAMUKI Shoichi
  2019-01-18 18:35             ` Rafal Luzynski
  0 siblings, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-18 13:59 UTC (permalink / raw)
  To: Zack Weinberg, Rafal Luzynski; +Cc: libc-alpha

Hello Zack,

From: Zack Weinberg <zackw@panix.com>
Subject: Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
Date: Thu, 17 Jan 2019 21:45:37 -0500

> The thing I was trying to say is that "%Ey" (in the ja_JP locale)
> produces the number of a year _within_ an era.  In this context, the
> Japanese word I want is not the word for the _name_ of an era, but the
> word for an era itself.  What is that word?

Hmm, I cannot think of the word for an era itself.

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-18 13:59           ` TAMUKI Shoichi
@ 2019-01-18 18:35             ` Rafal Luzynski
  0 siblings, 0 replies; 18+ messages in thread
From: Rafal Luzynski @ 2019-01-18 18:35 UTC (permalink / raw)
  To: TAMUKI Shoichi, Zack Weinberg; +Cc: libc-alpha

18.01.2019 14:59 TAMUKI Shoichi <tamuki@linet.gr.jp> wrote:
> [...]
> From: Zack Weinberg <zackw@panix.com>
> Subject: Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2
> [BZ #23758]
> Date: Thu, 17 Jan 2019 21:45:37 -0500
> 
> > The thing I was trying to say is that "%Ey" (in the ja_JP locale)
> > produces the number of a year _within_ an era.  In this context, the
> > Japanese word I want is not the word for the _name_ of an era, but the
> > word for an era itself.  What is that word?
> 
> Hmm, I cannot think of the word for an era itself.

I think we can skip the parentheses and their contents completely
if the English text outside is sufficient and the Japanese term is
only bringing confusion.

Regards,

Rafal

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-18 13:56         ` TAMUKI Shoichi
@ 2019-01-18 18:44           ` Rafal Luzynski
  2019-01-19  3:51             ` TAMUKI Shoichi
  0 siblings, 1 reply; 18+ messages in thread
From: Rafal Luzynski @ 2019-01-18 18:44 UTC (permalink / raw)
  To: TAMUKI Shoichi, Zack Weinberg; +Cc: libc-alpha

18.01.2019 14:56 TAMUKI Shoichi <tamuki@linet.gr.jp> wrote:
> 
> Hello Rafal,
> 
> > [...]
> > It looks like your email client was unable to handle the letter "?"
> > ("o" with macron). [1] According to Wikipedia, [2] Zack probably meant
> > the Japanese era name.  I guess you are the right person to say whether
> > it should be written as "neng?" or "nengo" or "Japanese era name"
> > or "Japanese year name" or just drop the parentheses completely.
> > I think it's not about the Japanese Calendar, as you suggest.
> 
> OK, I understand.  I think "nengo" and "gengo" are nearly synonymous,
> and "gengo" seems to be used more often in Japan.  These mean "era
> name" (%EC).  On the other hand, "the year of the (current) era" means
> "the numeric era year" (%Ey).

"The numeric era year" sounds unclear for me.  I think you mean
"the number of the year" or "the number of the year in the current era"
or anything like that.

> [...]
> I think "year name" and "era name" are also synonymous, and "era name"
> seems to be used more often. [1]
> 
> [1] https://mainichi.jp/english/articles/20190104/p2a/00m/0na/034000c

That's probably because, again, the term "year name" is confusing:
at first I thought that each year has its own name (same as it has
its own number).  Only after having read I understand that each year
has its name *and* a number, and the name of the year is also the name
of the era, shared with other years of the same era.  I hope I understand
this correctly and also I explain my confusion correctly. :-)

Regards,

Rafal

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-18 18:44           ` Rafal Luzynski
@ 2019-01-19  3:51             ` TAMUKI Shoichi
  2019-01-19 17:08               ` Zack Weinberg
  0 siblings, 1 reply; 18+ messages in thread
From: TAMUKI Shoichi @ 2019-01-19  3:51 UTC (permalink / raw)
  To: Rafal Luzynski, Zack Weinberg; +Cc: libc-alpha

Hello Rafal and Zack,

From: Rafal Luzynski <digitalfreak@lingonborough.com>
Subject: Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
Date: Fri, 18 Jan 2019 19:44:39 +0100 (CET)

> > OK, I understand.  I think "nengo" and "gengo" are nearly synonymous,
> > and "gengo" seems to be used more often in Japan.  These mean "era
> > name" (%EC).  On the other hand, "the year of the (current) era" means
> > "the numeric era year" (%Ey).
> 
> "The numeric era year" sounds unclear for me.  I think you mean
> "the number of the year" or "the number of the year in the current era"
> or anything like that.

I was concerned about the word "current" from a while ago.  "%Ey" does
not necessarily indicate the year of the current era.  For example:

$ LANG=ja_JP.UTF-8 date -d "2018-04-01" +"%Ey"
30
$ LANG=ja_JP.UTF-8 date -d "1955-04-01" +"%Ey"
30

The former era name is "Heisei", the latter era name is "Showa".

I think that the same thing can be said in the Christian era:

$ date -d "2018-04-01" +"%y"
18
$ date -d "1918-04-01" +"%y"
18

The former is the 21st century, the latter is the 20th century.

Therefore, I think that the word "current" should not be used here.

Based on this, can we drop the word "current" about the commit message
in the first patch?

| In Japanese locales, strftime's alternative year format (%Ey) produces
| the year of the current era.  A new era typically begins when a new
| emperor is enthroned.  The year of the current era is therefore
| usually a one- or two-digit number.

In addition, is "In Japanese locales," correct?

Perhaps, is "In Japanese locale," better?

The manual in the second patch also had the word "current".  Can we
similarly drop the word "current"?

| If the @code{E} modifier is specified (@code{%EC}), instead produces
| the name of the period for the current year (e.g. an era name) in the
| locale's alternative calendar.

Regards,
TAMUKI Shoichi

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-19  3:51             ` TAMUKI Shoichi
@ 2019-01-19 17:08               ` Zack Weinberg
  2019-01-19 21:42                 ` Rafal Luzynski
  0 siblings, 1 reply; 18+ messages in thread
From: Zack Weinberg @ 2019-01-19 17:08 UTC (permalink / raw)
  To: TAMUKI Shoichi; +Cc: Rafal Luzynski, GNU C Library

On Fri, Jan 18, 2019 at 10:52 PM TAMUKI Shoichi <tamuki@linet.gr.jp> wrote:
> Hello Rafal and Zack,
> >
> > "The numeric era year" sounds unclear for me.  I think you mean
> > "the number of the year" or "the number of the year in the current era"
> > or anything like that.
>
> I was concerned about the word "current" from a while ago.  "%Ey" does
> not necessarily indicate the year of the current era.  For example:
>
> $ LANG=ja_JP.UTF-8 date -d "2018-04-01" +"%Ey"
> 30
> $ LANG=ja_JP.UTF-8 date -d "1955-04-01" +"%Ey"
> 30

Yes, you are right, "current" should not be used.  This occurred to me
when I was writing a later part of my suggestions but I did not
remember to go back and fix this commit message.

> In addition, is "In Japanese locales," correct?
> Perhaps, is "In Japanese locale," better?

There is only one Japanese locale right now, ja_JP, but there could be
others in the future.  There are many native speakers of Japanese in
other countries; I don't know if they would want to use this calendar,
but it's not out of the question.  So it seems more natural to me to
say "In Japanese locales."

(Also, it would have to be "In _the_ Japanese locale" if we were going
to make "locale" singular.)

So maybe something like this:

| In Japanese locales, strftime's alternative year format (%Ey) produces
| a year numbered within a time period called an _era_.  A new era typically
| begins when a new emperor is enthroned.  The result of %Ey is therefore
| usually a one-or two-digit number.

> The manual in the second patch also had the word "current".  Can we
> similarly drop the word "current"?
>
> | If the @code{E} modifier is specified (@code{%EC}), instead produces
> | the name of the period for the current year (e.g. an era name) in the
> | locale's alternative calendar.

Yes, same problem and I think here we can just say "the period for the year".

zw

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 [BZ #23758]
  2019-01-19 17:08               ` Zack Weinberg
@ 2019-01-19 21:42                 ` Rafal Luzynski
  0 siblings, 0 replies; 18+ messages in thread
From: Rafal Luzynski @ 2019-01-19 21:42 UTC (permalink / raw)
  To: Zack Weinberg, TAMUKI Shoichi; +Cc: GNU C Library

19.01.2019 18:08 Zack Weinberg <zackw@panix.com> wrote:
> On Fri, Jan 18, 2019 at 10:52 PM TAMUKI Shoichi <tamuki@linet.gr.jp>
> wrote:
> > [...]
> > I was concerned about the word "current" from a while ago.  "%Ey" does
> > not necessarily indicate the year of the current era.  For example:
> >
> > $ LANG=ja_JP.UTF-8 date -d "2018-04-01" +"%Ey"
> > 30
> > $ LANG=ja_JP.UTF-8 date -d "1955-04-01" +"%Ey"
> > 30
> 
> Yes, you are right, "current" should not be used.  [...]

I absolutely agree.

> > In addition, is "In Japanese locales," correct?
> > Perhaps, is "In Japanese locale," better?
> 
> There is only one Japanese locale right now, ja_JP, but there could be
> others in the future.  There are many native speakers of Japanese in
> other countries; I don't know if they would want to use this calendar,
> but it's not out of the question.  So it seems more natural to me to
> say "In Japanese locales."
> [...]

I thought you meant that we already had multiple Japanese locales
which differ in the charset: ja_JP.UTF-8, ja_JP.EUC-JP, etc.

Regards,

Rafal

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2019-01-19 21:42 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-11  4:47 [PATCH v6 0/2] strftime: Improve the width of alternative representation for year [BZ #23758] TAMUKI Shoichi
2019-01-11  4:49 ` [PATCH v6 1/2] strftime: Set the default width of "%Ey" to 2 " TAMUKI Shoichi
2019-01-16 16:17   ` Zack Weinberg
2019-01-17  6:27     ` TAMUKI Shoichi
2019-01-17 17:56       ` Rafal Luzynski
2019-01-18  2:45         ` Zack Weinberg
2019-01-18 13:59           ` TAMUKI Shoichi
2019-01-18 18:35             ` Rafal Luzynski
2019-01-18 13:56         ` TAMUKI Shoichi
2019-01-18 18:44           ` Rafal Luzynski
2019-01-19  3:51             ` TAMUKI Shoichi
2019-01-19 17:08               ` Zack Weinberg
2019-01-19 21:42                 ` Rafal Luzynski
2019-01-11  4:52 ` [PATCH v6 2/2] strftime: Pass the additional flags from "%EY" to "%Ey" " TAMUKI Shoichi
2019-01-16 16:17   ` Zack Weinberg
2019-01-17 18:54     ` Rafal Luzynski
2019-01-18  2:32       ` Zack Weinberg
  -- strict thread matches above, loose matches on Subject: below --
2019-01-17 18:11 [PATCH v7 1/2] strftime: Set the default width of "%Ey" to 2 " Rafal Luzynski
2019-01-18 13:58 ` [PATCH v6 " TAMUKI Shoichi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).