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: <[EMAIL PROTECTED]>


Reply via email to