Re: Определение локали, в которой запущено приложение
On 12.12.2009 23:48, Alexey Pechnikov wrote:
>> On unix the shell must do this initialisation:
>>
>> setlocale(LC_ALL, "");
>
> Why? Yes I know what the call does, but what desirable effect does it have
> on shell input and output? Pretty much all formatted output is done using
> %s. The only float output is for timing commands. No input is done using
> scanf. Except for the disabled by default iotrace, all fopens are in binary
> mode.
>
> Ну не говорить же ему, что в итоге расширения через непонятно какое место работают...
А почему не говорить-то? Библиотека должна пользоваться той локалью, которую
выставило приложение. Если приложение локаль не выставило - библиотека должна
использовать умолчальную "C". Точка.
Локаль должна определять как минимум порядок сортировки, ctype (isprint,
isalpha, toupper/tolower), формат вывода даты, перевод сообщений об ошибках
(perror/strerror), перевод прочих сообщений gettext. Если шелл sqlite ничем этим
не пользуется - это ещё один отдельный баг в нём.
PS впрочем, у меня export LC_MESSAGES=C LC_TIME=C LC_NUMERIC=C ;-)
Reply to: