Locales on X11

X11 it seems does not define its own locales but makes use of the system locale. It may only work for a subset of your systems locales because it needs to know about your locale. You need to make a few additions to ensure that X11 will recognise your glibc locales.

Various Servers

There are currently two Xservers for the Free Software world: XFree86 and X.org. XFree86 is rapidly falling out of favour but in order to cover all of the Linux distributions you will probably want to patch both of these.

Where to find the files to change

You can view these files using XFree86 CVS web and X.org CVS web

We have used the Kinyarawanda example here to illustrate what needs to be changed. You can read the bugzilla report for adding Kinyarawanda to XFree86. Here is another example for X.org

What needs changing

locale.alias

The file locale.alias is usually found here:

/usr/X11R6/lib/X11/locale

This needs to be updated to add all the locale permutations. Look at a language similar to yours and add the various permutations. Here are the lines that were added to get Kinyarawanda working:

rw_RW:                 rw_RW.ISO8859-1
rw_RW.iso8859-1:       rw_RW.ISO8859-1
rw_RW.ISO88591:        rw_RW.ISO8859-1
rw_RW.ISO-8859-1:      rw_RW.ISO8859-1
rw_RW.utf8:            rw_RW.UTF-8

If you are not sure what character sets will be valid then look here to determine what will work:

compose.dir

iso8859-1/Compose:     rw_RW.ISO8859-1

and also

en_US.UTF-8/Compose:                 rw_RW.UTF-8

Although it looks like the UTF-8 ones do not currently work

locale.dir

iso8859-1/XLC_LOCALE:                   rw_RW.ISO8859-1

and also

en_US.UTF-8/XLC_LOCALE:                 rw_RW.UTF-8

xc/programs/Xserver/XpConfig/Imakefile

This only seems to be relevant to X.org – this defines if your should inherit paper size from C or en_US. Add your locale and its permutations to the correct list.

New Locales: known problems

gdm

Your locale works in any terminal you open from the desktop, but won’t be used in the desktop itself. This happens because of a copy of locale.alias that gdm holds in /etc/X11/gdm (at least in gentoo).

Add you locale to this file or it will be ignored by gdm.