I've got a question I asked about on a couple of other lists, but didn't
get much response, so I thought I'd try here.
One of our developers has asked me for input on a certain problem: "Do I
need to be able to work with numbers represented using digits/numbering
systems other than the European ("Arabic") decimal-based system, and if so
how to I know what to do with things like U+0BF1 TAMIL NUMBER ONE
HUNDRED?"
I could easily answer the first part: Yes. At least, I know that some
users of the software will want to work with Thai or Arabic ("Indic")
digits, and I'm pretty sure I know of users who will want to work with the
Ethiopic numbering system. Things like Thai aren't hard to deal with since
the numbering system works the same way as our decimal numbering system;
it's just that different characters are used for the digits. But things
like Ethiopic (or Tamil) are more involved since the numbering system
works on different principles.
How are people dealing with presenting or interpreting numeric strings
using systems such as Tamil, Ethiopic or even Thai, etc. digits, not all
of which use numbering systems that work the same as the decimal system
used in the west? (Note, this is *not* primarily about formatting issues
such as decimal or group separators, though those are obviously also
involved.)
I'm not a C programmer so I don't know -- do C or C++ libraries provide
functions for converting integer or other numeric data types into strings
that allow one to select what script / numbering system to use?
I'm pretty sure VB functions like Format$ or CLng only handle issues like
decimal separators but not this; have I missed something?
I've looked in MSDN Win32 documentation, and I see that GetLocaleInfo can
tell you the locale-specific equivalents for digits 0 to 9, but that
doesn't give you a way to present integers using them or to interpret a
string of these as a numeric value, and I haven't seen anything else in
Win32 that does that. Is there anything that perhaps I've just not found?
Does COM provide anything?
(I got one response from the other two lists I mentioned which did tell me
what I suspected: the .Net framework doesn't provide any support for this
kind of thing.)
If the answers to all the above are negative (i.e. this functionality is
neither built into compilers / libraries or into Windows), are there any
open source implementations that deal with this? Does ICU handle this?
If people are resorting to writing their own algorithms, where are you
getting information about how different numbering systems work?
Maybe my question should be to ask whether this *is* an issue for anyone
else. The one response I got from the two other lists was from Michael
Kaplan, who suggested that since software hasn't done this in the past,
people have used decimal digits 0-9, with the result that there isn't
really a current need for things like Tamil digits, and systems like
Arabic are trivial do deal with. Are others finding there isn't much need
for dealing with numbering systems that work differently from the Arabic
decimal numbers?
- Peter
---------------------------------------------------------------------------
Peter Constable
Non-Roman Script Initiative, SIL International
7500 W. Camp Wisdom Rd., Dallas, TX 75236, USA
Tel: +1 972 708 7485
E-mail: <peter_constable@sil.org>
This archive was generated by hypermail 2.1.2 : Fri Mar 15 2002 - 11:39:37 EST