Date Format with month names in genitive case - your opinions?



Hello,

I was told that GNOME i18n is the right place to discuss this issue
because it gathers translators from more languages than any other
place in this part of the net. The problem has been reported to GNOME
bugzilla as bug 749206 [1] but in fact it's not a GNOME bug but glibc
bug. [2]

What is the issue: in many languages, mostly from eastern Europe,
including my native language, a correct grammatical form of the month
name when used in the full date context is genitive. A literal
translation to English applying the same rule would be "18 of April".
Also we still need the nominative case when the month name appears
standalone (for example sometimes we just want to say "April").

The proposed solution is to change strftime() function and anything
that is backed by or compatible with strftime(): in glib2 the
functions are g_date_time_format() and g_date_strftime(). These
functions besides "%B" (full month name) should start supporting
"%OB" (alternative month name). Also nl_langinfo() function would
be modified: as now MON_1, MON_2, ..., MON_12 return the data to
be used as the result of "%B" format specifiers the new set of
constants ALTMON_1, ALTMON_2, ..., ALTMON_12 would be introduced
to provide the data for "%OB" format specifier.

This exact solution:

- has been implemented in *BSD systems (FreeBSD, OpenBSD etc.) in
  1990s;
- is also supported in Apple systems (OS X and iOS) except exposing
  ALTMON_n constants in nl_langinfo();
- has been accepted by POSIX as the future change of the
  specification but has not yet released it. [3]

Now the controversial part: in all those solutions nl_langinfo(MON_n)
and strftime("%B") return the genitive case of the month name and
the newly introduced nl_langinfo(ALTMON_n) and strftime("%OB") return
the nominative form. It's controversial because now in Linux
nl_langinfo(MON_n) and strftime("%B") return the nominative case
while the other case is simply not supported. This would require
somehow incompatible change. (Note: the backward compatibility feature
can be introduced.)

Also it should be emphasized that "genitive and nominative" is
a little unprecise misleading. Correctly it should be named "the
correct form when using the month in the full date context, together
with the day number" vs. "standalone, without the day number".
For example, the languages which have the genitive form but don't
use it in the full date context would use their own proper form
instead.

Why did BSD, Apple, and POSIX choose that counterintuitive approach?
One should make a bigger survey before answering this question but
I believe that it's because the date formats are more often used to
format the date with the day of the month number than to format the
month name standalone. This change would fix all applications which
display the dates without any change in their source code so I think
it is good even if it would break those few applications which
display the month names standalone. By "break" I mean "they would
start displaying the month names in an incorrect form (similarly
as all other applications display the month names incorrectly now)".

Note that a similar approach has been chosen by ICU and CLDR with
their own date formats: MMMM represents the month name in a genitive
case while LLLL is used when they need a nominative case explicitly.

glibc maintainers hesitate to accept this solution. I believe they
need some feedback from the people who actually are going to use this
feature. So far they agreed [4] to accept this solution but only if
it is documented as the new experimental feature and if it is not
yet documented which of "%B" and "%OB" is genitive (full date format)
and which is nominative (standalone). The idea was that it should
be decided by the language communities which is which. Also sometimes
they suggest that BSD implementation is wrong and should be switched.

So, language communities, what is your opinion about it?

GNOME is a multiplatform project, it is intended to work correctly
on Linux but also Windows, OS X, BSD and many other platforms. I think
it will be easier for the application developers if Linux follows
other platforms as well as the future POSIX specification.

You may be also interested in seeing my slides about the issue: [5]

Best regards,

Rafal


[1] https://bugzilla.gnome.org/show_bug.cgi?id=749206
[2] https://sourceware.org/bugzilla/show_bug.cgi?id=10871
[3] http://austingroupbugs.net/view.php?id=258
[4] https://sourceware.org/ml/libc-alpha/2016-12/msg01103.html
[5]
https://rluzynski.fedorapeople.org/slides/2017-01-27-DevConf.cz/GenitiveMonths-updated.pdf


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]