[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: