Solaris Transition Guide

Internationalization

Most of the changes in the Solaris 7 operating environment improve on previous internationalization features. For complete information on internationalization support, see Developer's Guide to Internationalization.

Application developers concerned with internationalizing their programs should follow these guidelines:

Character Support

The Solaris 7 operating environment supports extended UNIX code (EUC), VTF8, PCK, and B165. This allows multibyte and multiple code sets on one system.

The SunOS release 4 software supported single-byte representation of non-ASCII characters. The Solaris 7 operating environment supports multibyte representation. This support is needed for Asian language character sets, which contain thousands of characters.

The multibyte functions are included in libc and provide the following features:

The Solaris 7 operating environment supports multibyte file names; however, login and machine names should be restricted to ASCII characters.

Message Catalogs

SunOS release 4 support for message catalogs is enhanced in the Solaris 7 operating environment to enable the creation of message catalogs using multibyte characters.

Using message catalogs, an application can display messages at run-time in the native language in which an application was run. These message catalogs must first be created for the native language specified by the language locale.

Locale Database

The SunOS release 5.7 locale database (/usr/lib/locale/locale) is completely different from the locale database of SunOS release 5. This is transparent to the user, however.

Commands

Most of the system commands in the Solaris 7 operating environment have been messaged. Many of these commands can pass through multibyte character representations. The increased number of messaged commands makes localization efforts easier.

The installtxt(1) command has been replaced with msgfmt(1). Use the new xgettext(1) command to extract messages.

Changes to strftime(3C) affect date and time formats. Shell programs that rely on the output format of the date(1) command will have to be updated to handle the new format.

chrtbl(8) and catdef(8) are replaced by localedef(1).

Libraries

The /usr/xpg2lib/libxpg2.a archive library is no longer available. These routines have been included in libc.

Table 17-1 shows the new location of these interfaces.

Table 17-1 xpg2lib Library Routine Locations

Routine 

Solaris 7 Location 

bindtextdomain

/usr/lib/libc

chroot

/usr/lib/libc

catgets

/usr/lib/libc

dgettext

/usr/lib/libc

getcwd

/usr/lib/libc

getut

/usr/lib/libc

l3tol

Not supported. 

logname

/usr/lib/libc

malloc

/usr/lib/libc

swab

/usr/lib/libc

langinfo

/usr/lib/libc

gettext

/usr/lib/libc

sbrk

/usr/lib/libc

textdomain

/usr/lib/libc

Programs that use these routines no longer need to pass -lxpg2 to the C compiler although some may need to include libintl.h. (See Table 17-1 for these routines.)

The catgetmsg(3C) routine is no longer available.

The order of locale categories in the string returned by setlocale(3C) differs between the SunOS release 4 and the Solaris 7 software. This string is normally used by a subsequent call to setlocale(3C), and the order should not matter. Applications should not rely on a specific order of locale categories.