home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
i18nv102.zip
/
READ.ME
Wrap
Text File
|
1995-09-18
|
33KB
|
830 lines
===============================================================================
Internationalization (I18N) For OS/2
===============================================================================
Copyright IBM Corporation -- 1993, 1994, 1995
DISCLAIMER: This I18N package has been made available solely to gauge OS/2
developer interest in the industry standard XPG4 internationalization
programming model. This does not mean that IBM will introduce a product based
on the contents of this package. This package is not a full implementation of
the X/Open* XPG4 specification and does not make any claims of XPG4 branding.
It implements only the portions of the XPG4 specification which deal with
internationalization.
*X/Open is a trademark of the X/Open Company Limited.
===============================================================================
/************************/
/*** Contents ***/
/************************/
1. Overview
2. Locale model
3. About this package
4. Common abbreviations
5. Files in this directory
6. Installing the package
7. Environment variables
8. Setting the LOCALE
9. Linking with the I18N package
10. About wide characters
11. Using the char datatype
12. Command-line programs provided
13. I18N API prototype summary
14. What is new in this version of the package
15. What is not included in this package
16. Recommended reading
1. Overview
============
This package provides an internationalization toolkit for the development of
world-wide applications based on the X/Open Portability Guidelines, Issue 4
(XPG/4). This industry standard was developed to ensure portability,
interoperability, and consistency of user environments across all compliant
systems. The XPG/4 internationalization programming model has the following
features:
o Applications can be written in a language-independent way, so that a single
version of the application can support users throughout the world. This
eliminates the need for multiple language-specific versions and can
dramatically reduce development, manufacturing and distribution costs.
o Applications can "automatically" interact with international users in their
own language, correct cultural conventions, and national data encoding.
o The selection of localization features is user-definable through language
environment variables. This announcement mechanism permits the dynamic
loading of localization objects (locales), which give applications the
correct cultural flavor.
o The language is determined by the user, not the system or application. The
same application can be launched in different languages on the same
workstation, by simply changing the language environment settings.
o New languages, countries and code pages can easily be supported by simply
providing new locale objects, without requiring any change to applications.
o Locale objects contain information to support the following types of
culturally correct processing:
- date and time formatting
- numerical formatting
- monetary formatting
- text sorting
- character classification
- character case conversion
- processing of single or multi-byte character text
- text processing using wide characters
o Utilities are provided to permit the packaging of application-specific
translatable text in external message files. Messaging interfaces are
provided to access the correct message language at run-time, as specified
by the locale environment variables.
2. Locale model
================
The I18N library is based on a locale model, in which the world is divided up
into a collection of locales. A given country may have one or more locales
depending on its cultural diversity. For example, Switzerland has German,
Italian, and French locales. Locales are also not based only on language.
For example, French is used in both France and Canada. However, the numeric
formats in these two countries are different. In addition, locales also
contain a code page character map. For example, English in the US is actually
available in three different locales, which support code pages 437 (default),
850 and 819 (ISO8859-1).
In general, a locale name has the following format:
xx_YY.ZZZZ
where xx is usually a language abbreviation, YY is a country abbreviation,
and .ZZZZ is an optional 3 or 4 digit codepage number. So, to set the locale
to US English, one could type:
set LANG=en_US.437
There are several other ways in which users can name locales (for environment
variables). The codepage number is optional. If it is left off, the currently
active codepage number will be appended to the locale name. So, for example,
one could type:
set LANG=en_US
and ".437" would be appened to the locale name on a typical US installation of
OS/2. The underscore is also optional. So another way of specifying the same
locale is:
set LANG=enus
In addition, case is ignored in locale names. So "EN_US" is yet another way
of specifying the same locale.
The I18N package also provides the ability to define locale aliases.
These are just simple names a user can assign to locale names to make them
easier to remember. The locale alias table is stored in "\i18n\locale\ALIASES".
The table consists of rows of aliases. Each row contains the alias and the
true locale name, separated by a space. The alias file is an ASCII text file,
and can be edited. In addition, a program (LOCALIAS) has been provided to
make adding, deleting, and modifying aliases easier.
Several locale aliases have been provided with this package. So, one could
enter:
set LANG=english
and this would set the locale to: "en_US.437". Locale aliases can be up to
25 characters long, with no spaces included.
The actual locales are stored in dynamic link libraries (in \i18n\locale). The
names of the .DLL files are similar to the full names shown above, but with
the underscore and the period removed. So the default US English locale file
is actually stored as: ENUS437.DLL
The reason for this remapping of names is that OS/2 supports the FAT file
system, which enforces file name lengths of 8.3 Thus, the locale names are
composed of XXYYZZZZ.DLL, which conforms to the rules. The mapping of locale
names (or aliases) to the locale file names is automatic - you do not need to
worry about it.
The following is a list of locales provided in this release:
Locale Locale description
Name
-----------------------------------------------------------------------
C This is the default locale if no environment variables are set.
ARAA864 Arabic in Arabic Area (Primary)
ARAA1046 Arabic in Arabic Area (Alternate)
BGBG915 Bulgarian in Bulgaria
CSCZ852 Czech in Czech Republic
DADK850 Danish in Denmark
DECH850 German in Switzerland
DEDE850 German in Germany (and Austria)
ELGR869 Greek in Greece
ENGB850 English in the U.K.
ENUS437 English in the U.S. (Primary)
ENUS850 English in the U.S. (Alternate)
ENUS819 English in the U.S. (ISO8859-1)
ESES850 Spanish in Spain
FIFI850 Finnish in Finland
FRBE850 French in Belgium
FRCA850 French in Canada
FRCH850 French in Switzerland
FRFR850 French in France
HRHR852 Croatian in Croatia
HUHU852 Hungarian in Hungary
ISIS850 Icelandic in Iceland
ITIT850 Italian in Italy
IWIL862 Hebrew in Israel (Primary)
IWIL856 Hebrew in Israel (Alternate)
JAJP932 Japanese in Japan
KOKR949 Korean in Korea
MKMK915 Macedonian in Macedonia
NLBE850 Flemish in Belgium
NLNL850 Dutch in Netherlands
NONO850 Norwegian in Norway
PLPL852 Polish in Poland
PTBR850 Portuguese in Brazil
PTPT850 Portuguese in Portugal
RORO852 Romanian in Romania
RURU866 Russian in Russia
SHSP852 Latin Serbian in Serbia
SLSI852 Slovenian in Slovenia
SKSK852 Slovak in Slovakia
SRSP915 Cyrillic Serbian in Serbia
SVSE850 Swedish in Sweden
THTH874 Thai in Thailand
TRTR857 Turkish in Turkey
ZHCN1381 Simplified Chinese in China
ZHTW950 Traditional Chinese in Taiwan (Primary)
ZHTW948 Traditional Chinese in Taiwan (Alternate)
Additional locales are being added. If you are using this package, and would
like information about a specific locale, contact us for further information.
In addition to using the 8.3 names (without the underscore or period) for
locale files, I18N also uses those names for message catalog directories.
So, suppose you had the following NLSPATH variable, and LANG variable:
set NLSPATH=E:\I18N\MESSAGES\%L\%N
set LANG=en_US
Further suppose you execute the following catalog open command in your program:
cat_handle = catopen("my.cat", 0);
I18N would then attempt to find the following file:
E:\I18N\MESSAGES\ENUS437\MY.CAT
That is because the locale (english) is remapped to: ENUS437 (without the .DLL).
Look at the \I18N\MESSAGES directory in this package to see some of the locale
message directories provided.
3. About this package
======================
This package is an OS/2 Developers Toolkit for writing programs using the
XPG4 internationalization programming model. It has been made available to
gauge OS/2 developer interest in this model.
Included are the include files, libraries, .dll files, and programs necessary
for developing internationalized programs using the XPG4 model. We have also
included a large number of sample programs to demonstrate the proper use of
the I18N APIs. Also, there is an on-line technical reference (in OS/2 VIEW
format) to describe the APIs provided.
NOTE: In this release of the I18N package, the technical reference is not
completely up to date. If any discrepancies are found between the
descriptions found in this file and the technical reference, this
file should be considered definitive.
4. Common abbreviations
========================
The following are common abbreviations in the NLS programming world:
Abbreviation Meaning
-------------------------------------------------------------------------
NLS National Language Support
ICONV Input Conversion
I18N Internationalization
I14Y Interoperability
L10N Localization
Wide character A character with a fixed, multiple byte representation.
In our implementation, wide characters are all 2 bytes
long.
wchar_t A new data type for wide characters.
5. Files in this directory
===========================
The following files can be found in this directory:
File Purpose
------------------------------------------------------------------------------
read.me This file.
bin .EXE and .CMD files for building message catalogs and setting
environment variables.
dll Required .DLL files.
include Required header files.
locale .DLL files which implement the locales.
lib Required .LIB files.
ref Contains technical reference (in OS/2 VIEW format).
doc Documentation for commands in the bin directory.
sample Sample programs to demonstrate the I18N APIs.
6. Installing the package
==========================
1. The package should already be unzipped in a directory \I18N off of
the root of an HPFS formatted drive.
NOTE: In the instructions below, no drive letters are specified for
environment variables. You should substitute the proper letter
for your installation.
2. Add the \I18N\DLL path to your existing LIBPATH statement in your
CONFIG.SYS file. Before you use I18N make sure to reboot your system
so the change in LIBPATH takes effect.
3. Make sure that the IBM C SET/2 Compiler and OS/2 Toolkit are installed
on your system, as they are prerequisites to compiling and linking the
many examples in the \I18N\SAMPLES directory.
4. Add the following to your CONFIG.SYS file:
SET LANG=<locale>
where <locale> is a locale you prefer, such as en_US.
NOTE: Steps 5-8 below are OPTIONAL. A command file:
\I18N\BIN\NEW_VARS.CMD is provided which sets the variables
described below. If you do not wish to permanently affect your
environment, you may run the command file as needed.
5. Add the \I18N\BIN path to your existing PATH statement in your
CONFIG.SYS file.
6. Add the \I18N\INCLUDE path to your existing INCLUDE statement in your
CONFIG.SYS file.
7. Add the \I18N\LIB path to your existing LIB statement in your
CONFIG.SYS file.
8. Add the following to your CONFIG.SYS file:
SET LOCPATH=\I18N\LOCALE
SET NLSPATH=\I18N\MESSAGES\%L\%N
7. Environment variables
=========================
The following environment variables are used for internationalization to
determine the behavior of the system. The variables are inherited as defaults
by the application at boot time from CONFIG.SYS or set directly via the SET
command.
LOCPATH specifies the search path(s) for the localized .dll's.
different paths are separated by semicolons.
LANG="xxx" where "xxx" is the file name of the locale .dll, e.g. the
value en_US is American English. Values are provided in
the "Locale model" section above.
NLSPATH specifies the search path for locating the message catalog
files. The environment variable is used by the Message
facility component of the NLS subsystem.
Locale values (for the setlocale call - see next section) can also be set by
the LC_* environment variables:
LC_ALL overrides the value of other LC_* environment variables.
LC_COLLATE determines the character-collation or string-collation
rules governing the behavior of ranges, equivalence
classes and multicharacter collating elements.
LC_CTYPE determines character handling rules governing the
interpretation of sequences of bytes of text data
characters (single-byte or multi-byte characters),
the classification of characters (for example, alpha,
digit and so on) and the behavior of character classes.
LC_MESSAGES determines the locale (language) for messages and menus.
It also determines the rules for affirmative and negative
responses according to locale, although such responses are
not recommended by NLS Guidelines or CUA.
LC_MONETARY determines the rules governing monetary formatting.
LC_NUMERIC determines the rules governing numeric formatting
other than monetary.
LC_TIME determines the rules governing date and time formatting.
LANG default setting of Locale overidable by the preceding
environment variables. Similar to LC_ALL above, only LC_ALL
cannot be overriden by the LC_* variables, whereas LANG
can.
The application should use only the LANG, LOCPATH and NLSPATH variables.
A user can override them with the locale environment variables. When a call to
setlocale is made, the settings are queried for priority level as follows:
If the LC_ALL environment variable is set, the value of the LC_ALL
variable is used for all categories.
If the LC_ALL environment variable is not set, the values specified
for medium-priority environment variables (LC_COLLATE, LC_CTYPE,
LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) are used.
If individual LC_* environment variables are not set, the value of
the LANG environment variable specifies the locale for all remaining
categories.
If the LANG environment variable is not set, the locale for all
remaining categories defaults to the C locale.
8. Setting the LOCALE
======================
By design, an application program initially starts up in the default C locale.
Most internationalized programs, however, must then change the locale for the
program to the locale set by the user. This is done with a call to setlocale.
Upon calling the setlocale routine, the program's locale is determined by
either the LANG, and LC_* environment variables, or directly by the 2nd
argument to setlocale.
Usually, the user will set one or more of the LC_* environment variables to
determine the locale of the program. If all facets of a program (date/time/
monetary etc) are to be set to the same locale (which is common), the
LANG or LC_ALL environment variable should be set to that locale. If one
or more features are to be set to a different locale, their environment
variable must also be set.
The following is the typical usage of the setlocale call:
#include <wchar.h>
#include <locale.h>
main() {
/* The LC_ALL and LANG environment variables set the program's locale */
setlocale(LC_ALL, "");
}
If, in the example above, the LC_ALL variable was set to en_US, and the
LC_MONETARY variable was set to fr_FR, all facets of the program would be
set to en_US, except the monetary formatting, which would be set to fr_FR.
Application programmers can also hardcode a locale for a program by setting
the second argument of setlocale to a locale value:
setlocale(LC_NUMERIC, "it_IT");
This is generally *NOT* recommended.
Setlocale can also be used to query what locale is currently active for a given LC_* value, by
providing a NULL 2nd argument. For example:
ret_string = setlocale(LC_MESSAGES, NULL);
will return the setting of the messages locale for the program.
9. Linking with the I18N package
=================================
The I18N library comes packaged in two parts:
1) An import library (setloci.lib), which is linked with your applications.
2) A dynamic link library (setloc.dll), which is placed in the runtime
machine's LIBPATH.
This implementation requires that case-sensitivity (the /NOI switch in
both CSet/2 and CSet++) be turned on whenever the setloci import library is
linked with an application. This allows the lower-case APIs in the library
to be properly found at application load-time.
All of the sample programs illustrate how to use this switch when linking your
program. See the ".mak" file in any of the sample directories for more
information.
*NOTE* The /NOI switch is *required*. If it is not used, your application
will not function correctly.
10. About wide characters
=========================
The XPG4 programming model defines a new character datatype wchar_t for 16-bit
character code elements. The wchar_t datatype extends the range of the
standard char datatype to 16-bit characters. In general programmers only need
to use this datatype when direct character manipulation is needed on multi-byte
character data.
Special functions are provided to convert between multi-byte and wchar strings
(see mbstowcs, wcstombs, mbtowc, and wctomb functions below), and to copy,
compare, or search wchar strings (see wcs* functions below).
The XPG4 programming model doesn't dictate the code page of the wchar_t
variables. Wide characters can be used in any code page.
As a programmer writing internationalized programs, you can not assume
anything about what value a wchar_t variable may contain, because it can vary
from locale to locale, and from vendor to vendor.
Instead, you must use the I18N functions to manipulate and test wchar_t
variables to insure proper operation of your program in an international
environment. These functions are described, in detail, below. Typically,
wide character functions either start with the prefix "wcs" (as in wcscpy -
wide character copy), or have the letter "w" inserted in the function
name (as in "iswalpha" - is the wide character an alphabetic character).
IMPORTANT: Wide characters and strings *can* be represented in your program
as literal values. Place the capital letter 'L' in front of your
literal characters and strings.
Ex: wcscpy(a_wide_var, L"A wide char string!");
if (a_wide_char_var == L'\0') ...
11. Using the char datatype
===========================
The char datatype is still used in most cases but now it may contain multi-byte
characters as defined in the specific locale. A multi-byte character is
composed of one or more bytes, with no imbedded null bytes. The standard C str*
functions are still used to manipulate these kinds of strings, with the
exception of:
strcmp doesn't handle < or > comparisons culturally. However,
strcmp still works for equal/not equal tests. To determine
greater than/less than on strings, use the strcoll and
strxfrm functions.
strchr for character searching its not multi-byte aware
strrchr and so may find a single byte character amid a
multi-byte sequence.
strncpy is not multi-byte aware and may only copy only part
of a multi-byte character.
strstr is not multi-byte aware for single character strings but
will work with strings >1 character as the search key.
12. Command-line programs provided
==================================
Program Purpose
-------------------------------------------------------------------------
gencat Constructs message catalog files.
mkcatdef Constructs message #define .h files to be used in an
application program to reference catalog file entries.
runcat A command file which builds both message catalogs, and
the include files for those catalogs (via mkcatdef and
gencat).
cvtmsg Converts an OS/2 mkmsgf input file into an XPG4 gencat
input file.
locale Displays the currently active locale categories.
See the "cat" sample directory for details.
localias Allows user to add, delete, and modify entries in the locale
alias table.
13. I18N API prototype summary
==============================
***************************************************
** For more technical details on these functions **
** use VIEW on the \I18N\REF\I18N.INF file. **
***************************************************
1. Runtime Locale load and data access functions:
char *setlocale(int, const char *);
2. Character Attribute testing (Uses locale-based methods):
int isalnum(int c);
int isalpha(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int toupper(int c);
int tolower(int c);
int iswalnum(wint_t wc);
int iswalpha(wint_t wc);
int iswcntrl(wint_t wc);
int iswdigit(wint_t wc);
int iswgraph(wint_t wc);
int iswlower(wint_t wc);
int iswprint(wint_t wc);
int iswpunct(wint_t wc);
int iswspace(wint_t wc);
int iswupper(wint_t wc);
int iswxdigit(wint_t wc);
int iswctype(wint_t wc, wctype_t mask);
wint_t towupper(wint_t wc);
wint_t towlower(wint_t wc);
wctype_t wctype(const char *charclass);
3. Date and Time Formatting:
size_t strftime(char *s, size_t maxsize, const char *format,
const struct tm *tm);
size_t strfmon(char *s, size_t maxsize, const char *format, ...);
char *strptime(const char *buf, const char *fmt, struct tm *tm);
size_t wcsftime(wchar_t *wcs, size_t maxsize, const char *format,
const struct tm *tm);
char *nl_langinfo(nl_item item);
struct lconv *localeconv(void);
4. File IO functions which use mbtowc transformations:
wint_t fgetwc(FILE *stream);
wchar_t *fgetws(wchar_t *ws, int n, FILE *stream);
wint_t fputwc(wint_t wc, FILE *stream);
int fputws(const wchar_t *ws, FILE *stream);
wint_t getwc (FILE *stream);
wint_t putwc(wint_t wc, FILE *stream);
wint_t ungetwc(wint_t wc, FILE *stream);
wint_t getwchar(void);
wint_t putwchar(wint_t wc);
5. The basic conversion methods between multibyte <--> wchar_t:
int mblen(const char *s, size_t n);
size_t mbstowcs(wchar_t *ws, const char *s, size_t n);
int mbtowc(wchar_t *wc, const char *s, size_t n);
size_t wcstombs(char *s, const wchar_t *ws, size_t n);
int wcswidth(const wchar_t *ws, size_t n);
int wctomb(char *s, wchar_t wchar);
int wcwidth(wint_t wc);
6. Basic String manipulation API for wchar_t data type:
size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2);
size_t wcslen (const wchar_t *ws);
wchar_t *wcscat (wchar_t *ws1, const wchar_t *ws2);
wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2);
int wcscmp (const wchar_t *ws1, const wchar_t *ws2);
int wcsncmp (const wchar_t *ws1, const wchar_t *ws2, size_t n);
wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2);
wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, size_t n);
size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2);
wchar_t *wcschr (wchar_t *ws1, wint_t wc);
wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, size_t n);
wchar_t *wcsrchr (wchar_t *ws1, wint_t wc);
wchar_t *wcstok (wchar_t *ws1, const wchar_t *ws2);
wchar_t *wcswcs (const wchar_t *ws1, const wchar_t *ws2);
7. Wide character print/scan formatting:
fscanf/scanf/sscanf with %S, %C decoding, and parameter
reordering via the (%n$x) format
fprintf/printf/sprintf with %S, %C encoding, and parameter
reordering via the (%n$x) format
vfprintf/vprintf/vsprintf with %S, %C encoding, and parameter
reordering via the (%n$x) format
8. Collations:
int strcoll(const char *s1, const char *s2);
size_t strxfrm(char *s1, const char *s2, size_t n);
int wcscoll(const wchar_t *ws1, const wchar_t *ws2);
size_t wcsxfrm(wchar_t *ws1, const wchar_t *ws2, size_t n);
9. Conversions:
long wcstol(const wchar_t *nptr,
wchar_t **endptr, int base);
unsigned long wcstoul(const wchar_t *nptr,
wchar_t **endptr, int base);
double wcstod(const wchar_t *nptr, wchar_t **endptr);
double strtod(const char *nptr, char **endptr);
10. Messages:
nl_catd catopen(const char *name, int oflag);
char *catgets(nl_catd catd, int setid, int msgid, const char *s);
int catclose(nl_catd catd);
11. Regular expression functions:
int regcomp(regex_t *preg, const char *pattern, int cflags);
int regexec(const regex_t *preg, const char *string,
size_t nmatch, regmatch_t pmatch[], int eflags);
size_t regerror(int errcode, const regex_t *preg,
char *errbuf, size_t errbuf_size);
void regfree(regex_t *preg);
12. Non-XPG4 case insenstive compare and case conversion functions:
char *strlwr(char *s);
char *strupr(char *s);
int strcmpi(const char *s1, const char *s2);
int stricmp(const char *s1, const char *s2);
int strnicmp(const char *s1, const char *s2, size_t n);
int memicmp(void *s1, void *s2, unsigned int n);
13. Helper functions:
double get_i18n_version(void);
int find_locale_alias(char *in_str, char *out_str);
int add_locale_alias(char *the_alias, char *the_name);
int remove_locale_alias(char *in_str);
int map_string_to_locale(char *in_str, char *out_str);
int get_alias_table_path(char *out_str);
14. What is new in this version of the package
==============================================
Version 1.02 (8/29/95)
----------------------
- iconv conversion support based on ISO10646 UCS-2:
i18n\lib\iconv.lib - static link library for iconv APIs
i18n\include\iconv.h - iconv include file
i18n\locale\iconv\ucstbl.dll - DLL for all table-driven conversions
i18n\locale\iconv\utf-8.dll - DLL for UTF-8 conversions
i18n\locale\iconv\iconv.lst - alias file for UCS-2 conversions
i18n\locale\uconvtab\* - binary form of mapping tables
i18n\locale\uconvtab\uconv.lst - alias file for UCS-2 mapping tables
*Unicode is a trademark of Unicode, Inc.
- Minor bug fixes in:
strfmon()
regcomp()
regexec()
printf() family of APIs
scanf() family of APIs
- Cleaned up version of wchar.h
Version 1.00 (4/18/95)
----------------------
- The setlocale() function will now work with the older locale formats.
- Bug fixes in fscanf().
- Install utility bug fixes.
- Appending a major version number ( only major bug fixes will cause this
to increment ) to setloc.dll.
was setloc.dll --> now setloc1.dll
- Added defines to version.h header file for version number and
module name identification to be used by install programs.
#define I18N_VERSION_NUM 1.00
#define MODULE_NAME "SETLOC1"
Version 0.40 (3/15/95)
----------------------
- Default locale loaded during setloc.dll initialization. This is determined
by mapping the current country code and code page to the set of installed
locales. If no match is found, the "C" locale is still used.
- After the default locale is established a setlocale(LC_ALL, "") call is made
during setloc.dll initialization. This call uses the XPG4 I18N environment
variables to override the default locale setting.
- If setlocale is called with the null string ("") argument, but the
XPG4 I18N environment variables are not set, the locale is left unchanged.
Version 0.35 (3/7/95)
----------------------
Changes:
- Regular expression functions, header and sample program added.
- Case insensitive compare functions enabled for MBCS strings.
- strupr and strlwr functions enabled for MBCS strings.
- Bug fix in wcsxfrm.
- Enhanced version of cvtmsg utility
Version 0.30 (1/30/95)
-----------------------
Changes:
- Fully functional utility for installing and customizing
the I18N run-time environment. This is intended for
products which include the I18N support and must install
it. The program with source code and documentation is in
the sample\install directory.
- cvtmsg utility for converting OS/2 message files to XPG4 message files.
- Completely recompiled with IBM C/C++ Tools Version 2.0
- Miscellaneous bug fixes
- vprintf, vsprintf and vfprintf supported
- New printf and vprintf sample programs
15. What is not included in this package
========================================
XPG4 specifies several commands such as localedef and iconv which
are not a part of this package. In addition, we have not provided any
code page converters for the iconv api calls.
This means that while you can't create custom locales or create custom code
page converters, you can use the I18N API calls to try out the XPG4
programming model. We hope to include these missing functions in a future
release.
16. Recommended reading
=======================
The Library of NLS recommends the following books:
GG24-3850 Intl Tech Supt Center AIX 3.2 Natl Lang Support (IBM publ)
SC23-2431 Internationalization of AIX Software: A Programmer's Guide
XOPEN X/Open CAE Specification, Issue 4 (X/Open Company Ltd)
============================================================================
End of Read.Me File
============================================================================