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 CVS web for XFree86 and X.org
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:
http://www.inference.phy.cam.ac.uk/dasher/download/alphabets/ALPHABETS.html http://www.eki.ee/letter/
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
iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1
and also
en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8
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.