[sisyphus] [necropost] gnucash, ru_RU.UTF-8 и запятая
Dmitry Chistikov
dd1email на gmail.com
Сб Июл 23 09:04:09 UTC 2011
"Vasyĺ V. Vercynśkyj", Jul. 22, 2011, 12:43 +0300:
> Тогда они зашевелились и вынесли вердикт, что у нас кривая локаль (и,
> походу, в Убунту 11.04 тоже). Я немного сомневаюсь в правильности их
> выводов. Чем крыть?
Кое в чем разработчики Gnucash правы:
$ locale | fgrep -v ru_RU.UTF-8
LC_ALL=
$ locale -k decimal_point mon_decimal_point
decimal_point=","
mon_decimal_point="."
Иными словами, в ru_RU для чисел десятичный разделитель - запятая,
а для денежных сумм - точка.
Насколько это правильно, хорошо, удобно - вопрос отдельный,
но Gnucash тут все-таки не виноват.
Причем дело и не в нашей сборке. Поглядите в исходные определения:
http://git.altlinux.org/gears/g/glibc.git?p=glibc.git;a=blob;f=localedata/locales/ru_RU;h=c4f8158343c5a54f5ee0a85d537a0d7372cefc5d;hb=7372b19962badff7e2b400385f8800b3d389f9eb
Это исходники glibc без ALT-специфичных изменений (тег glibc-2.11.3).
Цитирую:
80 LC_MONETARY
81 int_curr_symbol "<U0052><U0055><U0042><U0020>"
82 currency_symbol "<U0440><U0443><U0431>"
83 mon_decimal_point "<U002E>"
84 mon_thousands_sep "<U00A0>"
И, обратите внимание:
98 LC_NUMERIC
99 decimal_point "<U002C>"
100 thousands_sep "<U00A0>"
<U002C> - это запятая, а <U002E> - это точка
(см., например, echo -n ,. | hexdump -C).
--
Дмитрий Чистиков
Подробная информация о списке рассылки Sisyphus