From: | Mike Toews <mwtoews(at)gmail(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: initdb.exe changes --locale option |
Date: | 2012-09-12 20:53:08 |
Message-ID: | CAM2FmMq=Nr7uHvP=wzq4bmxDHPPgpOnSR=QRx=5ZMC2Rfu5+1g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
I've found a general solution: with the locale string, replace the
first ", " (comma space) with "_".
Around line 33 of initcluster.vbs, add:
strLocale = Replace(strLocale,", ","_",1,1)
I think it is fine to show "English, New Zealand" in the drop-down
menu for the GUI installer, but initcluster.vbs needs to do the
replacement to "English_New Zealand" in order to fulfil the correct
initialisation.
My testing was conducted using a Python script http://pastebin.com/9epyWz7x
which produces a tab delimited table of input locales, and the locale
chosen by initdb.exe, as well as the default language for text search
configuration.
The results from 200 locales shows some significant problems with
locale detection, such that most "Language, Country" are substituted
with only one country (you will pick up the pattern if you look at the
data). Secondly, there are cases that are completely off: "Tamazight
(Latin), Algeria" : "English_United Kingdom.1252", which is corrected
to "Tamazight (Latin)_Algeria.1252" with the proper substitution.
However, there are three corner cases (of 200) that either sort-of
breaks things, or doesn't resolve anything:
Original: Chinese (Traditional), Macao S.A.R. : Chinese (Traditional)_Taiwan.950
Replaced: Chinese (Traditional)_Macao S.A.R. : English_United Kingdom.1252
Original: Lao, Lao P.D.R. : Lao_Lao P.D.R..1252
Replaced: Lao_Lao P.D.R. : English_United Kingdom.1252
Original: Norwegian (Bokmål), Norway : English_United Kingdom.1252
Replaced: Norwegian (Bokmål)_Norway : English_United Kingdom.1252
(Note: I'm testing on a Windows Vista computer from the UK)
Lastly, I had a look at the source code initdb.c, which appears to
assume only POSIX locale of the format:
[language[_territory][(dot)codeset][(at)modifier]]
E.g., see find_matching_ts_config, which assumes this locale format:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/bin/initdb/initdb.c;h=824c7fa7e4c76e0a3b8204ce0cdd21564f23d5df;hb=HEAD#l886
It should probably handle the WIN32 logic separately from POSIX
locales, but that's a deeper matter.
-Mike
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2012-09-12 23:19:29 | Re: Probable bug with CreateFakeRelcacheEntry (now with reproducible test case) |
Previous Message | Fujii Masao | 2012-09-12 19:03:56 | Re: BUG #7533: Client is not able to connect cascade standby incase basebackup is taken from hot standby |