[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