Re: WIN32 pg_import_system_collations
| От | Dmitry Koval |
|---|---|
| Тема | Re: WIN32 pg_import_system_collations |
| Дата | |
| Msg-id | 0050ec23-34d9-2765-9015-98c04f0e18ac@postgrespro.ru обсуждение исходный текст |
| Ответ на | WIN32 pg_import_system_collations (Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>) |
| Ответы |
Re: WIN32 pg_import_system_collations
|
| Список | pgsql-hackers |
Hi Juan José,
I a bit tested this feature and have small doubts about block:
+/*
+ * Windows will use hyphens between language and territory, where POSIX
+ * uses an underscore. Simply make it POSIX looking.
+ */
+ hyphen = strchr(localebuf, '-');
+ if (hyphen)
+ *hyphen = '_';
After this block modified collation name is used in function
GetNLSVersionEx(COMPARE_STRING, wide_collcollate, &version)
(see win32_read_locale() -> CollationFromLocale() -> CollationCreate()
call). Is it correct to use (wide_collcollate = "en_NZ") instead of
(wide_collcollate = "en-NZ") in GetNLSVersionEx() function?
1) Documentation [1], [2], quote:
If it is a neutral locale for which the script is significant,
the pattern is <language>-<Script>.
2) Conversation [3], David Rowley, quote:
Then, since GetNLSVersionEx()
wants yet another variant with a - rather than an _, I've just added a
couple of lines to swap the _ for a -.
On my computer (Windows 10 Pro 21H2 19044.1466, MSVC2019 version
16.11.9) work correctly both variants ("en_NZ", "en-NZ").
But David Rowley (MSVC2010 and MSVC2017) replaced "_" to "-"
for the same function. Maybe he had a problem with "_" on MSVC2010 or
MSVC2017?
[1]
https://docs.microsoft.com/en-us/windows/win32/api/winnls/nf-winnls-getnlsversionex
[2] https://docs.microsoft.com/en-us/windows/win32/intl/locale-names
[3]
https://www.postgresql.org/message-id/flat/CAApHDvq3FXpH268rt-6sD_Uhe7Ekv9RKXHFvpv%3D%3Duh4c9OeHHQ%40mail.gmail.com
With best regards,
Dmitry Koval.
В списке pgsql-hackers по дате отправления: