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.
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.
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
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:
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
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.
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.