I do use ca_ES.UTF-8 locals since a few months ago. For them to work, when I upgrade my glibc, I do... root@nyu kdeaddons # localedef -f UTF-8 -i ca_ES ca_ES.UTF-8 But, since I installed glibc 2.3.2-r9, even after doing that, locales seem to be broken: root@nyu kdeaddons # locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=ca_ES.UTF-8 LC_CTYPE="ca_ES.UTF-8" LC_NUMERIC="ca_ES.UTF-8" LC_TIME="ca_ES.UTF-8" LC_COLLATE="ca_ES.UTF-8" LC_MONETARY="ca_ES.UTF-8" LC_MESSAGES="ca_ES.UTF-8" LC_PAPER="ca_ES.UTF-8" LC_NAME="ca_ES.UTF-8" LC_ADDRESS="ca_ES.UTF-8" LC_TELEPHONE="ca_ES.UTF-8" LC_MEASUREMENT="ca_ES.UTF-8" LC_IDENTIFICATION="ca_ES.UTF-8" LC_ALL=ca_ES.UTF-8 root@nyu kdeaddons # perl perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = "ca_ES.UTF-8", LANG = "ca_ES.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). That causes a general brokenness. My uxterms do not longer display accents and CJK characters properly, for example. Reproducible: Always Steps to Reproduce: 1. use the ca_ES UTF-8 locale. 2. locale (everything is working). 3. upgrade glibc to 2.3.2-r9 4. localedef -f UTF-8 -i ca_ES ca_ES.UTF-8 Actual Results: 1. locale (and watch the breakage). 2. accents/CJK characters being shown properly in unicode. Expected Results: 1. locale (no errors being shown). 2. accents/CJK characters being shown properly. Portage 2.0.49-r18 (default-x86-1.4, gcc-3.3.2, glibc-2.3.2-r9, 2.6.0-test11) ================================================================= System uname: 2.6.0-test11 i686 AMD Athlon(tm) Processor Gentoo Base System version 1.4.3.12 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=athlon -O3 -pipe" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.1/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/share/config /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-march=athlon -O3 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs sandbox" GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow X aalib acpi alsa apache2 arts avi berkdb bidi bonobo canna cdr cjk crypt cups dga directfb dvd encode esd ethereal evo faad fbcon fbdev flash foomaticdb freewnn gb gd gdbm ggi gif gnome gnomedb gphoto2 gpm gstreamer gtk gtk2 gtkhtml guile hbci imlib ipv6 jack java joystick jpeg kde ladcca ldap libg++ libwww love lzo mad maildir matroska mbox mikmod mmx motif mozilla moznomail mozsvg mpeg mpi mule music mysql nas ncurses nls oggvorbis opengl oss pam pdflib perl png python qt quicktime readline sdl slang snmp spell ssl svga tcltk tcpd tetex tiff transcode truetype type1 unicode usb v4l videos wmf wxwindows x86 xml2 xmms xosd xv xvid zlib"
Actual Results: 2. accents/CJK characters NOT being shown properly in unicode.
Check that the locale is actully being properly made. locale -a |grep ca_ES Should list ca_ES.utf8 - this is a locale bug. Ocassionally I've had the localedef command exit without errors, but fail to create/install the locale. Running it a second time usually works though. Also, you will probably need to logout and login again to be able to use the new locale - at least that is true for my machine. Stu
root@nyu root # locale -a|grep ca_ES locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_COLLATE to default locale: No such file or directory ca_ES ca_ES.iso88591 ca_ES.iso885915@euro ca_ES.utf8 ca_ES@euro It seems listed as ca_ES.utf8, through it doesn't work. ca_ES.UTF-8 is supposed to be an alias. Anyways, If I set it to ca_ES.utf8 it doesn't work, either.
root@nyu root # localedef -v -f UTF-8 -i ca_ES ca_ES.utf8 /usr/share/i18n/locales/ca_ES:22: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:23: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:26: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:29: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:30: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:31: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:32: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:34: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:35: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:36: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:37: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:38: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:39: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:40: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:41: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:42: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:43: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:44: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1107: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1313: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1345: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1373: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:10: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:11: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:12: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:13: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:14: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:15: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:16: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:17: non-symbolic character value should not be used LC_NAME: field `name_gen' not defined LC_NAME: field `name_mr' not defined LC_NAME: field `name_mrs' not defined LC_NAME: field `name_miss' not defined LC_NAME: field `name_ms' not defined LC_ADDRESS: field `country_name' not defined LC_ADDRESS: field `country_post' not defined LC_ADDRESS: field `country_car' not defined LC_ADDRESS: field `country_isbn' not defined LC_ADDRESS: field `lang_name' not defined LC_ADDRESS: field `lang_term' not defined LC_ADDRESS: field `lang_ab' not defined LC_ADDRESS: field `country_num' not defined LC_ADDRESS: field `country_ab2' not defined LC_ADDRESS: field `country_ab3' not defined LC_TELEPHONE: field `int_select' not defined LC_IDENTIFICATION: field `audience' not defined LC_IDENTIFICATION: field `application' not defined LC_IDENTIFICATION: field `abbreviation' not defined LC_IDENTIFICATION: no identification for category `LC_MEASUREMENT' no output file produced because warning were issued There are obviously some problems here, but I could still try with -c to force it to build. I did, but it didn't work, either.
tux@nyu tux $ LC_ALL=ca_ES@euro LANG=ca_ES@euro locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=ca_ES@euro LC_CTYPE="ca_ES@euro" LC_NUMERIC="ca_ES@euro" LC_TIME="ca_ES@euro" LC_COLLATE="ca_ES@euro" LC_MONETARY="ca_ES@euro" LC_MESSAGES="ca_ES@euro" LC_PAPER="ca_ES@euro" LC_NAME="ca_ES@euro" LC_ADDRESS="ca_ES@euro" LC_TELEPHONE="ca_ES@euro" LC_MEASUREMENT="ca_ES@euro" LC_IDENTIFICATION="ca_ES@euro" LC_ALL=ca_ES@euro tux@nyu tux $ LC_ALL=es_ES@euro LANG=es_ES@euro locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=es_ES@euro LC_CTYPE="es_ES@euro" LC_NUMERIC="es_ES@euro" LC_TIME="es_ES@euro" LC_COLLATE="es_ES@euro" LC_MONETARY="es_ES@euro" LC_MESSAGES="es_ES@euro" LC_PAPER="es_ES@euro" LC_NAME="es_ES@euro" LC_ADDRESS="es_ES@euro" LC_TELEPHONE="es_ES@euro" LC_MEASUREMENT="es_ES@euro" LC_IDENTIFICATION="es_ES@euro" LC_ALL=es_ES@euro tux@nyu tux $ Neither the catalan ones, nor the spanish ones (based on 8859-15) work. It's not just UTF-8. This ones are built when glibc is build, automatically.
LC_ALL=ca_ES@euro LANG=ca_ES@euro strace locale mmap2(0x40160000, 9700, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40160000 close(3) = 0 munmap(0x40014000, 142760) = 0 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=25126000, ...}) = 0 mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40163000 mmap2(NULL, 204800, PROT_READ, MAP_PRIVATE, 3, 0x446) = 0x40363000 brk(0) = 0x804f000 brk(0x8070000) = 0x8070000 brk(0) = 0x8070000 mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x479) = 0x40395000 close(3) = 0 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40396000 read(3, "# Locale name alias data base.\n#"..., 4096) = 2586 read(3, "", 4096) = 0 close(3) = 0 munmap(0x40396000, 4096) = 0 open("/usr/lib/locale/ca_ES@euro/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca@euro/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca_ES/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) write(2, "locale: ", 8locale: ) = 8 write(2, "Cannot set LC_CTYPE to default l"..., 37Cannot set LC_CTYPE to default locale) = 37 write(2, ": No such file or directory", 27: No such file or directory) = 27 write(2, "\n", 1 ) = 1 open("/usr/lib/locale/ca_ES@euro/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca@euro/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca_ES/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory) write(2, "locale: ", 8locale: ) = 8 write(2, "Cannot set LC_MESSAGES to defaul"..., 40Cannot set LC_MESSAGES to default locale) = 40 write(2, ": No such file or directory", 27: No such file or directory) = 27 write(2, "\n", 1 ) = 1 open("/usr/lib/locale/ca_ES@euro/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca@euro/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca_ES/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/ca/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) write(2, "locale: ", 8locale: ) = 8 write(2, "Cannot set LC_ALL to default loc"..., 35Cannot set LC_ALL to default locale) = 35 write(2, ": No such file or directory", 27: No such file or directory) = 27 write(2, "\n", 1 ) = 1 fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40396000 write(1, "LANG=ca_ES@euro\nLC_CTYPE=\"ca_ES@"..., 327) = 327 munmap(0x40396000, 4096) = 0 _exit(0) = ? LANG=ca_ES@euro LC_CTYPE="ca_ES@euro" LC_NUMERIC="ca_ES@euro" LC_TIME="ca_ES@euro" LC_COLLATE="ca_ES@euro" LC_MONETARY="ca_ES@euro" LC_MESSAGES="ca_ES@euro" LC_PAPER="ca_ES@euro" LC_NAME="ca_ES@euro" LC_ADDRESS="ca_ES@euro" LC_TELEPHONE="ca_ES@euro" LC_MEASUREMENT="ca_ES@euro" LC_IDENTIFICATION="ca_ES@euro" LC_ALL=ca_ES@euro Those "ca_ES@euro" are the ones I used a long time ago, before moving to UTF8. They don't exist, not even the not @euro and the not _ES versions. Very weird. It seems it does generate only a small subset of the locales for some misterious reason. tux@nyu tux $ ls /usr/lib/locale/ bg cs da de el es et fi fr gl hr hu it ja ko locale-archive ms nl no pl pt ro ru ru_RU sk sv tr zh_CN tux@nyu tux $ ls /usr/lib/locale/es/ LC_MESSAGES tux@nyu tux $ ls /usr/lib/locale/es/* WPrefs.mo WindowMaker.mo So... it does generate no locales at all? I tried rebuilding glibc with safer CFLAGS (-O2 instead of -O3). It rebuilt, but didn't fix anything at all.
Oh, they're on locale-archive. They don't seem to work, anyways. :( Let's see what happen if we build by force the ca_ES.utf8 one: root@nyu tux # localedef -vc -f UTF-8 -i ca_ES ca_ES.utf8 /usr/share/i18n/locales/ca_ES:22: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:23: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:26: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:29: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:30: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:31: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:32: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:34: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:35: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:36: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:37: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:38: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:39: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:40: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:41: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:42: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:43: non-symbolic character value should not be used /usr/share/i18n/locales/ca_ES:44: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1107: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1313: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1345: non-symbolic character value should not be used /usr/share/i18n/locales/i18n:1373: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:10: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:11: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:12: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:13: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:14: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:15: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:16: non-symbolic character value should not be used /usr/share/i18n/locales/translit_neutral:17: non-symbolic character value should not be used LC_NAME: field `name_gen' not defined LC_NAME: field `name_mr' not defined LC_NAME: field `name_mrs' not defined LC_NAME: field `name_miss' not defined LC_NAME: field `name_ms' not defined LC_ADDRESS: field `country_name' not defined LC_ADDRESS: field `country_post' not defined LC_ADDRESS: field `country_car' not defined LC_ADDRESS: field `country_isbn' not defined LC_ADDRESS: field `lang_name' not defined LC_ADDRESS: field `lang_term' not defined LC_ADDRESS: field `lang_ab' not defined LC_ADDRESS: field `country_num' not defined LC_ADDRESS: field `country_ab2' not defined LC_ADDRESS: field `country_ab3' not defined LC_TELEPHONE: field `int_select' not defined LC_IDENTIFICATION: field `audience' not defined LC_IDENTIFICATION: field `application' not defined LC_IDENTIFICATION: field `abbreviation' not defined LC_IDENTIFICATION: no identification for category `LC_MEASUREMENT' LC_CTYPE: table for class "upper": 1564 bytes LC_CTYPE: table for class "lower": 1564 bytes LC_CTYPE: table for class "alpha": 3616 bytes LC_CTYPE: table for class "digit": 600 bytes LC_CTYPE: table for class "xdigit": 600 bytes LC_CTYPE: table for class "space": 792 bytes LC_CTYPE: table for class "print": 5144 bytes LC_CTYPE: table for class "graph": 5144 bytes LC_CTYPE: table for class "blank": 792 bytes LC_CTYPE: table for class "cntrl": 664 bytes LC_CTYPE: table for class "punct": 4120 bytes LC_CTYPE: table for class "alnum": 3616 bytes LC_CTYPE: table for class "combining": 2076 bytes LC_CTYPE: table for class "combining_level3": 2076 bytes LC_CTYPE: table for map "toupper": 14364 bytes LC_CTYPE: table for map "tolower": 12828 bytes LC_CTYPE: table for map "totitle": 14364 bytes LC_CTYPE: table for width: 22744 bytes root@nyu tux # I don't know what to try. Should I go back to glibc-r8? I think I have problems since I use -r9... but some friends are using it without problems. I don't know if bad stuff could happen If I went back to glibc-r8 or if it would fix the problem. But international support is broken now. (and I need it :( )
Returned to the glibc-2.3.2-r8 I had packaged when I built it. Everything is working fine, again. I've quickpkg'd the locale-broken -r9. It's available on request.
is this still valid?
Since it's already working with newer ebuilds, and this ebuild's very obsolete already, I think this can be closed.
i'll close it then.