Re: lc_time and localized dates - Mailing list pgsql-patches
From | Gevik Babakhani |
---|---|
Subject | Re: lc_time and localized dates |
Date | |
Msg-id | 000f01c87871$7f4699b0$0a01a8c0@gevmus Whole thread Raw |
In response to | lc_time and localized dates (Euler Taveira de Oliveira <euler@timbira.com>) |
List | pgsql-patches |
Magnus, Please look at this patch before you check my last patch about the locale. It seems that Euler's solution also fixes the windows locale bug that I was trying to fix. Replacing the lc_messages with lc_time when using to_char seems to be the correct direction. I have compiled and tested Euler's patch on MSVC and got the correct results. Euler, I think your patch is correct for the most part except you should not force the first letter of day/month names to uppercase hence this is not grammatically correct for some languages. After a quick glimpse of your cache mechanism, I think we can use this to solve some other TO_CHAR/TO_DATE items. Regards, Gevik. Resuts: Gevik=# set lc_time to 'Dutch, Netherlands'; SET Gevik=# select to_char(now() + '8 months'::interval, 'TMDay Day dy, DD TMMon Month TMmonth YYYY'); to_char ----------------------------------------------------- Zondag Sunday sun, 26 Okt October oktober 2008 (1 row) Gevik=# > -----Original Message----- > From: pgsql-patches-owner@postgresql.org > [mailto:pgsql-patches-owner@postgresql.org] On Behalf Of > Euler Taveira de Oliveira > Sent: Monday, February 25, 2008 5:53 AM > To: PostgreSQL-patches > Subject: [PATCHES] lc_time and localized dates > > Hi, > > Attached is a patch that replaces the lc_messages with > lc_time when using to_char in translation mode (TM) [1]. It > doesn't change the output behaviour. Per discussion [2], it's > using some cache mechanism so we don't need to call > setlocale() all the time. > > Some issues: > (i) some locales don't capitalize the first letter. I'm using > pg_toupper() to do the job but I'm afraid it's not > appropriated. I'm using it 'cause i'm too lazy to move > localized_str_toupper(). Any suggestions? > (ii) it didn't address the problem spotted at [3][4]. IMHO, > it's ok for a non-superuser to set lc_time. Opinions? > > euler=# show lc_time; > lc_time > --------- > pt_BR > (1 registro) > > euler=# select to_char(now(), 'TMDay Day dy, DD TMMon Month > TMmonth YYYY'); > to_char > -------------------------------------------------------- > Segunda Monday mon, 25 Fev February fevereiro 2008 > (1 registro) > > euler=# set lc_time to 'es_ES'; > SET > euler=# select to_char(now(), 'TMDay Day dy, DD TMMon Month > TMmonth YYYY'); > to_char > ---------------------------------------------------- > Lunes Monday mon, 25 Feb February febrero 2008 > (1 registro) > > euler=# set lc_time to 'de_DE'; > SET > euler=# select to_char(now(), 'TMDay Day dy, DD TMMon Month > TMmonth YYYY'); > to_char > ----------------------------------------------------- > Montag Monday mon, 25 Feb February februar 2008 > (1 registro) > > euler=# set lc_time to 'fr_FR'; > SET > euler=# select to_char(now(), 'TMDay Day dy, DD TMMon Month > TMmonth YYYY'); > to_char > ---------------------------------------------------- > Lundi Monday mon, 25 Fév February février 2008 > (1 registro) > > euler=# set lc_time to 'C'; > SET > euler=# select to_char(now(), 'TMDay Day dy, DD TMMon Month > TMmonth YYYY'); > to_char > ------------------------------------------------------ > Monday Monday mon, 25 Feb February february 2008 > (1 registro) > > > > > [1] http://archives.postgresql.org/pgsql-hackers/2006-11/msg00539.php > [2] http://archives.postgresql.org/pgsql-hackers/2006-11/msg00693.php > [3] http://archives.postgresql.org/pgsql-hackers/2007-10/msg00214.php > [4] http://archives.postgresql.org/pgsql-hackers/2006-11/msg00692.php > > > -- > Euler Taveira de Oliveira > http://www.timbira.com/ >
Attachment
pgsql-patches by date: