| www.delorie.com/gnu/docs/smalltalk/gst_22.html | search |
![]() Buy GNU books! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Different countries and cultures have varying conventions for how to
communicate. These conventions range from very simple ones, such as the
format for representing dates and times, to very complex ones, such as
the language spoken. Provided the programs are written to obey the
choice of conventions, they will follow the conventions preferred by the
user. GNU Smalltalk provides the I18N package to ease you in doing so.
Internationalizing software means programming it to be able to adapt to the user's favorite conventions. These conventions can get pretty complex; for example, the user might specify the locale `espana-castellano' for most purposes, but specify the locale `usa-english' for currency formatting: this might make sense if the user is a Spanish-speaking American, working in Spanish, but representing monetary amounts in US dollars. You can see that this system is simple but, at the same time, very complete. This manual, however, is not the right place for a thorough discussion of how an user would set up his system for these conventions; for more information, refer to your operating system's manual or to the GNU C library's manual.
GNU Smalltalk inherits from ISO C the concept of a locale, that is, a
collection of conventions, one convention for each purpose, and maps each of
these purposes to a Smalltalk class defined by the I18N package, and
these classes form a small hierarchy with class Locale(7) as its roots:
LcNumeric formats numbers; LcMonetary and LcMonetaryISO
format currency amounts.
LcTime formats dates and times.
LcMessages translates your program's output. Of course, the
package can't automatically translate your program's output messages
into other languages; the only way you can support output in the user's
favorite language is to translate these messages by hand. The package
does, though, provide methods to easily handle translations into
multiple languages.
Basic usage of the I18N package involves a single selector, the
question mark (?), which is a rarely used yet valid character for
a Smalltalk binary message. The meaning of the question mark selector
is "Hey, how do you say ... under your convention?". You can send
? to either a specific instance of a subclass of Locale,
or to the class itself; in this case, rules for the default locale
(which is specified via environment variables) apply. You might say,
for example, LcTime ? Date today or, for example,
germanMonetaryLocale ? account balance. This syntax can be at
first confusing, but turns out to be convenient because of its
consistency and overall simplicity.
Here is how ? works for different classes:
DateTime
object).
LcMessagesDomain that retrieves translations
from the specified file.
The package provides much more functionality, including more advanced formatting options support for Unicode, and conversion to and from several character sets. For more information, refer to section `I18N' in the GNU Smalltalk Library Reference.
As an aside, the representation of locales that the package uses is exactly the same as the C library, which has many advantages: the burden of mantaining locale data is removed from GNU Smalltalk's mantainers; the need of having two copies of the same data is removed from GNU Smalltalk's users; and finally, uniformity of the conventions assumed by different internationalized programs is guaranteed to the end user.
In addition, the representation of translated strings is the standard
MO file format adopted by the GNU gettext library.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |