Ondřej Vašík <ova...@redhat.com> writes: > as reported in https://bugzilla.redhat.com/show_bug.cgi?id=525134 by > Daniel Qarras, ls -l shows iso long format for en_* locales.
I just now read that Bugzilla report, and the diagnosis and the patch do not seem correct. The diagnosis says: > In ls.c (case locale_time_style) is dcgettext (NULL, long_time_format[i], > LC_TIME); ... that translates the string, but the translation is THE SAME as > the default - as the format is the same for en_* locales. But that is not what the ls.c source code does. The code does this: char const *locale_format = dcgettext (NULL, long_time_format[i], LC_TIME); if (locale_format == long_time_format[i]) goto case_long_iso_time_style; The "==" test returns true when dcgettext returns the msgid (its 2nd argument) because it finds no translation. If it found a translation, dcgettext would return a different string, so the "==" test would return false, and the code would use the translation. Even if the translation has the same _contents_ as the msgid, it will have a different _address_, so the code is correct as-is and does not need this modification. Also, the proposed patch would use U.S. styles for all English locales, which certainly is not right. I suspect the diagnosis given by Jim Meyering in comment #3 at that bug report is correct, and that something is going wrong at install time.