This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PING][BZ 10871] Month names in genitive case
- From: Rafal Luzynski <digitalfreak at lingonborough dot com>
- To: libc-alpha at sourceware dot org
- Date: Fri, 19 May 2017 22:26:08 +0200 (CEST)
- Subject: [PING][BZ 10871] Month names in genitive case
- Authentication-results: sourceware.org; auth=none
- Reply-to: Rafal Luzynski <digitalfreak at lingonborough dot com>
Hello,
Recently I started a discussion on gnome-i18n list [1] [2] because
I was told this is a good place to find many translators from
different languages. My aim was to collect their opinions about
planned changes. It seems to me that most of the translators will
accept the idea to make strftime("%B") generate the genitive case
(more precisely: the form correct when using a month with a day
number) and introduce strftime("%OB") which would generate the
nominative case (standalone) which is now generated by strftime("%B").
The reason is that the genitive case is used almost always in the
languages which require it. My favourite explanation is a quote
from Tom who said: "I have a feeling that the use of nominative and
genitive cases on the topic is the main reason for misunderstandings.
We need to focus whether we should use %B for "full date" form or not,
as this is the common factor for all languages now." [3]
Probably Czech, Serbian and maybe Slovak languages are an exception:
they normally use a nominative case when displaying a date (day+month)
but still need a genitive case when whole date is used in a context,
for example "an event on %d %B".
I'd like to remind that Zack agreed to introduce my patches only
if we don't yet define which of MON_x/ALTMON_x and %B/%OB is
nominative and which is genitive. [4]
It seems to be a good idea that all languages which need genitive
and nominative cases introduce MON_x and %B to generate a genitive
case and ALTMON_x and %OB to generate a nominative case while Czech,
Serbian and maybe Slovak would need the reverse.
However, there is one problem. If we let the local communities
define which is genitive (full date) and which is nominative
(standalone) it will work except for nl_langinfo() because we have
no mechanism to let translators decide which base (MON_1 or
ALTMON_1) to use. IMO there are two solutions for this problem:
* Stop using (deprecate) nl_langinfo(MON_x) and nl_langinfo(ALTMON_x)
as the source of month names, use stftime() with translatable
formats instead, even if they are as simple as "%OB". The usage
of nl_langinfo() is complex already: it's correct to use ALTMON_x
when it is supported and MON_x otherwise to retrieve the nominative
case. Retrieving the genitive case is not much useful. I think
that this knowledge is not common because I spot bugs in FreeBSD
and even OS X applications.
* Not to introduce the genitive case in Serbian, Czech, etc.
because the use of it is too rare. One of the translators said
that in 99% cases they use the nominative case. Maybe those
languages should be treated same as all other (Western) languages
which don't use the genitive case in dates.
* Implement the genitive and nominative cases in Serbian, Czech etc.
the same way as they would be implemented in other Slavic languages
and accept that almost every occurrence of %B will be replaced
with %OB. One of the translators has already agreed for this. [5]
My other questions are: [6]
* What else should I do to to make my patches acceptable?
* Should the backward compatibility be provided? My suggestion is
not to provide it because this means maintaining an old bug.
* If the backward compatibility has to be provided should I make
some changes in their implementation? Personally I don't like
the complex code of strftime() and the tricky way to declare
public aliases.
Also I'd like to remind that I've prepared a copr repository [7]
with glibc and some other packages ready to install and test
on Fedora and compatible Linux distributions.
Regards,
Rafal Luzynski
[1] https://mail.gnome.org/archives/gnome-i18n/2017-April/msg00054.html
[2] https://mail.gnome.org/archives/gnome-i18n/2017-May/msg00008.html
[3] https://mail.gnome.org/archives/gnome-i18n/2017-April/msg00064.html
[4] https://sourceware.org/ml/libc-alpha/2016-12/msg01103.html
[5] https://mail.gnome.org/archives/gnome-i18n/2017-May/msg00021.html
[6] https://sourceware.org/ml/libc-alpha/2017-04/msg00141.html
[7] https://copr.fedorainfracloud.org/coprs/rluzynski/genitive/