View previous topic :: View next topic |
Author |
Message |
Guenther Brunthaler Apprentice
Joined: 22 Jul 2006 Posts: 219 Location: Vienna
|
Posted: Tue Aug 08, 2006 1:00 am Post subject: Wo sucht sich X11 seine Locale-Infos zusammen? |
|
|
Da es unter Linux ja so einfach ist sich eine Locale nach eigenen Wünschen zu erstellen, habe ich mir eine Definitionsdatei für eine neue Locale "de_AT.utf8@vienna" erstellt.
Dazu habe ich zuerst die Locale "de_AT@euro" geklont:
Code: | # mkdir -p /usr/local/share/i18n/locales
# cp /usr/share/i18n/locales/de_AT@euro \
/usr/local/share/i18n/locales/de_AT@vienna
|
dann die neue datei Datei entsprechend meinen Wünschen angepasst und schließlich mittels
Code: | # localedef -f UTF-8 \
-i /usr/local/share/i18n/locales/de_AT@vienna \
--no-archive \
de_AT.utf8@vienna
|
die neue Locale als Unterverzeichnis "/usr/lib/locale/de_AT.utf8@vienna/" erzeugt. (Das --no-archive habe ich verwendet um zu verhindern, dass er mir nur einen Eintrag in "/usr/lib/locale/locale-archive" erzeugt, statt ein schönes Unterverzeichnis. So wie ich es verstehe ist das locale-Archive ohnehin nur als Cache gedacht, und nicht erforderlich. Jedenfalls funktionierte bislang alles auch ohne locale-Archive bestens. Zumindest in der Konsole.)
$LANG ist nun auf "de_AT.utf8@vienna" gesetzt, und auch $LANGUAGE und $NLSPATH sind OK.
Ausserhalb von X11 funktioniert nun alles prima - alles funktioniert, wie es soll.
Aber sobald ich irgend ein X-Programm starte welches Locale-Infos verwendet, etwa xclock, kommt immer die Meldung:
Code: | # xclock
Warning: locale not supported by Xlib, locale set to C
|
Ich habe bereits die Datei /usr/lib/X11/locale/locale.alias editiert und die folgenden Einträge hinzu gefügt:
Code: | de_AT.utf8@vienna de_AT.UTF-8
de_AT.UTF-8@vienna de_AT.UTF-8
|
Die Datei /usr/lib/X11/locale/locale.dir enthält bereits gültige Einträge für "de_AT.UTF-8", welche alle Verweise auf die Datei "/usr/lib/X11/locale/en_US.UTF-8/XLC_LOCALE" darstellen, die ebenfalls existiert.
Somit scheint zwar alles da zu sein was benötigt wird, aber trotzdem kommen immer noch diese dämlichen Meldungen und die X-Programme verwenden die Default-Locales C oder POSIX, genau als würden sie meine Locale nicht finden.
Dabei verrät strace, dass sie sehr wohl auf die Locale-Dateien zugreifen - nur scheint dies nicht zu reichen:
Code: | open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
...
open("/usr/lib/locale/de_AT.utf8@vienna/LC_IDENTIFICATION", O_RDONLY) = 3
open("/usr/lib/locale/de_AT.utf8@vienna/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
...
open("/usr/lib/X11/locale/locale.dir", O_RDONLY) = 4
open("/usr/lib/X11/locale/locale.alias", O_RDONLY) = 4
open("/usr/lib/X11/locale/locale.dir", O_RDONLY) = 4
open("/usr/lib/X11/locale/locale.alias", O_RDONLY) = 4
open("/usr/lib/X11/locale/locale.dir", O_RDONLY) = 4
Warning: locale not supported by Xlib, locale set to C
open("/usr/lib/X11/locale/locale.alias", O_RDONLY) = 4
open("/usr/lib/X11/locale/locale.dir", O_RDONLY) = 4
open("/usr/lib/X11/locale/C/XLC_LOCALE", O_RDONLY) = 4
|
Man sieht: Er findet zuerst die Locale und auch Dinge wie LC_MESSAGES, aber dann liest er mehrfach das locale.alias und locale.dir File von X11, und findet dort scheinbar nicht was er sucht.
Obwohl es drin steht - zumindest das, was ich weiter oben schrieb.
Hat irgend jemand einen Tipp, was wo man bei X noch etwas umstellen muss, wenn man eine eigene Locale installiert hat?
Ich bin inzwischen ziemlich ratlos, und durch die länglichen Quelltexte von X möchte ich mich eher ungerne durchackern... |
|
Back to top |
|
|
spirou Apprentice
Joined: 26 Apr 2004 Posts: 157 Location: Landshut
|
Posted: Tue Aug 08, 2006 1:05 pm Post subject: |
|
|
Ich hab zwar keine Ahnung, aber könnte es helfen, X nochmal zu kompilieren?
Grüßle
Spirou _________________ Ich mache keine Voraussagen und werde das niemals tun. |
|
Back to top |
|
|
Guenther Brunthaler Apprentice
Joined: 22 Jul 2006 Posts: 219 Location: Vienna
|
Posted: Wed Aug 09, 2006 7:30 pm Post subject: Ich habe das Problem jetzt eingegrenzt |
|
|
Im Source-Code der Xt-Library fand ich schließlich die Stelle, wo die komische Meldung ausgegeben wird.
Und zwar geschieht dies immer dann, wenn die Funktion XSupportsLocale() zurück gibt, dass X11 die aktuelle Locale nicht unterstützen würde.
Ich habe mir inzwischen auch das Xlib Manual und X11 Development Tutorial besorgt, und da steht es auch genau so drin: Eine internationalisierte X-Anwendung soll zuerst mit setlocale die Locale für normale (nicht-X) Programme setzen; das funktioniert in meinem Fall auch noch.
Doch dann soll das X-Programm die eben erwähnte Funktion XSupportsLocale aufrufen und prüfen ob Xlib die soeben gesetzte Locale auch unterstüzt.
Soweit, so schön.
Aber kein Wort, was man machen soll, wenn XSupportsLocale behauptet dass es eine Locale nicht unterstützt!
Da muss man doch etwas dagegen machen können! |
|
Back to top |
|
|
Guenther Brunthaler Apprentice
Joined: 22 Jul 2006 Posts: 219 Location: Vienna
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|