[Bug localedata/10871] ru_RU: 'mon' array should contain both nominative and genitive cases

digitalfreak at lingonborough dot com sourceware-bugzilla@sourceware.org
Thu Jan 21 23:16:00 GMT 2016


https://sourceware.org/bugzilla/show_bug.cgi?id=10871

--- Comment #40 from Rafal Luzynski <digitalfreak at lingonborough dot com> ---
Thank you for all your comments and I'm sorry for not being able to reply
immediately.

(In reply to Kalle Olavi Niemitalo from comment #39)
> [...]
> The Final Accepted Text in Austin Group bug 258 contains:
> "alt_mon Define the full month names, corresponding to the %OB conversion
> specification. [...] For languages having both a genitive (when used with a
> day number) and a nominative (no day number) case, this operand shall be
> used to denote the nominative case."
> 
> The FreeBSD strftime(3) page says: "Additionally %OB implemented to
> represent alternative months names (used standalone, without day
> mentioned)." I believe this means the nominative case.
> 
> So %OB retrieves the nominative case in both of them; I don't see any
> conflict. The same could be implemented in glibc.

Oops, somehow I must have read it backwards. :-) Having read this again
carefully now I lean into the solution which is common to *BSD and POSIX which
means that:

- nl_langinfo(ALT_MON_...) and strftime("%OB") both retrieve the nominative
case,
- nl_langinfo(MON_...) and strftime("%B") both retrieve the genitive case
(which is different than now!),
- for the locales which do not support genitive cases the nominative case is
returned instead.

Will you agree for this solution?

Pros:
- full compatibility with *BSD and POSIX,
- simple and deterministic implementation,
- full programmer's control on whether they want a nominative or genitive case,
- will automagically fix all dates using %B conversion specifiers and
displaying the nominative case which is incorrect (full dates).

Cons:
- at the same time will break formatting of all dates using %B conversion
specifiers where the nominative case is required and is correctly provided now
(e.g., calendar headers), the application developer may not even be aware that
the application became broken in some languages,
- therefore will require urgent intervention from some application developers,
- it will be difficult or even impossible to provide a backward compatible
solution which would detect if the current runtime version of glibc requires
%OB or %B for the month name in nominative case.

This also means that the comment 7 does not make sense. The solution 3 should
be merged into 2 because they actually should be the same, and solution 1 is no
longer needed since 2 is common for *BSD and POSIX.

Some answers:


(In reply to keld@keldix.com from comment #29)
> [...]
> Well, can we see what is the extent of the problem?
> Russian, Polish, possibly all of the Slavian languages, Finnish,
> Hungarian, Estonian?

Comment 6 says that all Slavonic languages except Bulgarian and Macedonian,
plus Finnish, https://bugzilla.gnome.org/show_bug.cgi?id=749206#c6 mentions
Greek, I have accidentally found in CLDR that Baltic languages are injured,
too. Roughly whole Eastern half of Europe with some exceptions plus some
Western European languages (Icelandic?) Plus unknown number of non-European
languages. For a full list you should browse the CLDR database.


(In reply to van.de.bugger from comment #31)
> [...]
> BTW, I found a dirty hack in glibc: uk_UA locale has *month names* in
> genitive case in alt_digits table. Now they can get month name in genitive
> case by %Om, but applying modifier O to another format specifier (like %Od,
> %Of, %OH) is meaningless: %OI converts hour to a months name in genitive
> case... 

Please see my patch for Ukrainian.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Libc-locales mailing list