Caractères unicode suédois dans xdm / xlogin

J'ai décidé de localiser mon écran de connection XDM mais je suis coincé avec des caractères suédois corrompus.

entrer la description de l'image ici

J'utilise Debian Wheezy avec le /etc/X11/xdm/Xresources

 Xcursor.theme: blanc

 xlogin * login.translations: #override \
         CtrlR: abort-display () \ n \
         F1: set-session-argument (security embeddede) finish-field () \ n \
         Supprimer: delete-character () \ n \
         A gauche: move-backward-character () \ n \
         Droite: move-forward-character () \ n \
         Accueil: move-to-begining () \ n \
         Fin: move-to-end () \ n \
         CtrlKP_Enter: set-session-argument (security embeddede) finish-field () \ n \
         KP_Enter: set-session-argument () finish-champ () \ n \
         CtrlReturn: set-session-argument (security embeddede) finish-field () \ n \
         Retourne: set-session-argument () finish-field ()

 ! xlogin * salut: V \ 303 \ 244lkommen jusqu'à CLIENTHOST
 xlogin * salut: Välkommen jusqu'à CLIENTHOST
 xlogin * nomPrompt: Användare:
 ! xlogin * fail: Fel l \ 303 \ 266senord!
 xlogin * fail: Fel lösenord!

 ! xlogin * greetFace: Inconsolata: taille = 16
 ! xlogin * visage: Inconsolata: taille = 14
 ! xlogin * promptFace: Inconsolata: size = 14
 ! xlogin * failFace: Inconsolata: size = 20
 xlogin * greetFace - * - fixe-moyen-r - * - * - 200 - * - * - * - * - iso8859-15
 xlogin * failFace - * - fixe-moyen-r - * - * - 200 - * - * - * - * - iso8859-15
 xlogin * promptFace - * - fixe-moyen-r - * - * - 200 - * - * - * - * - iso8859-15
 xlogin * face - * - fixe-moyen-r - * - * - 200 - * - * - * - * - iso8859-15

 xlogin * borderWidth: 0
 xlogin * frameWidth: 0
 xlogin * innerFramesWidth: 0
 xlogin * shdCouleur: grey30
 xlogin * hiColor: grey90
 xlogin * fond: gris
 ! xlogin * premier plan: vert foncé
 xlogin * greetColor: noir
 xlogin * failColor: rouge
 * Premier plan: noir
 * Context: # fffff0

 xlogin * logoFileName: /home/stemid/heart.xpm
 xlogin * useShape: true
 xlogin * logoPadding: 10

 XConsole.text.geometry: 480x130
 XConsole.verbose: true
 XConsole * iconique: vrai
 Police XConsole *: fixe

 Sélecteur * geometry: 700x500 + 300 + 200
 Sélecteur * allowShellResize: false
 Sélecteur * viewport.forceBars: true
 Sélecteur * label.font: * -nouveau siècle schoolbook-bold-i-normal - * - 240- *
 Sélecteur * label.label: Menu hôte XDMCP de CLIENTHOST
 Sélecteur * list.font: - * - * - moyen-r-normal - * - * - 230 - * - * - c - * - iso8859-1
 Sélecteur * Command.font: * -nouveau siècle schoolbook-bold-r-normal - * - 180- * 

/etc/X11/xdm/Xsetup

  #! / bin / sh
 #
 # Ce script est exécuté en tant que root avant d'afficher le widget de connection.
 export LANGUAGE = sv_SE
 export LANG = sv_SE
 export LC_ALL = sv_SE

 xsetroot -solid "# 002b36"

 sumil 10 && import -w root /home/stemid/.login_screen.jpg &
 souche stemid: stemid /home/stemid.login_screen.jpg & 

À l'origine, j'essayais avec sv_SE.UTF-8 dans l'environnement, mais ces deux parameters régionaux sont activés dans l'environnement local Debian.

~/.xsession

  export LANGUAGE = sv_SE
 export LANG = sv_SE
 export LC_ALL = sv_SE

 test -f ~ / .Xresources && xrdb ~ / .Xresources

 xsetroot -solid "# 002b36"

 xscreensaver -no-splash &
 exec ratpoison 

J'ai aussi essayé de définir les parameters régionaux dans .profile.

Debian ne requirejs généralement pas xorg.conf mais j'ai créé deux files dans /etc/X11/xorg.conf.d , un pour le touchpad synaptics et un pour les paths de fonts.

  Section "Fichiers"
 ModulePath "/ usr / lib / xorg / modules /"
 FontPath "/ usr / share / fonts / X11 / misc /"
 FontPath "/ usr / share / fonts / X11 / TTF /"
 FontPath "/ usr / partage / fonts / X11 / OTF"
 FontPath "/ usr / share / fonts / X11 / Type1 /"
 FontPath "/ usr / share / fonts / X11 / 100dpi /"
 FontPath "/ usr / share / fonts / X11 / 75dpi /"
 FontPath "/usr/share/fonts/X11/misc/artwiz-aleczapka-se-1.3/"
 EndSection 

J'ai également essayé d'installer une police qui supporte spécifiquement le suédois mais je ne peux pas l'utiliser dans Xresources en utilisant la ligne de xfontsel.

xlsfonts répertorie toutes les fonts que j'attends d'être là, y compris les nouvelles fonts artwiz. Il ne semble pas comme une question de police pour moi, plus comme l'enencoding.

En outre, j'ai essayé dpkg-reconfigure locales et redémarré X avec les trois parameters. Ce sont les trois seuls parameters régionaux que j'ai activés, et testé chacun par défaut.

  • sv_SE
  • sv_SE.ISO-8859-1
  • sv_SE.ISO-8859-15
  • sv_SE.UTF-8

Je suspecte que xdm ne supporte pas UTF-8 même si votre environnement peut être configuré de cette façon. C'est toujours à l'application de gérer l'interprétation des strings et l'enencoding qu'ils peuvent contenir.

Pour résoudre ce problème, j'ai enlevé les strings codées utf8 et les ai remplacées par leur homologue ISO-8859-15 (vous pouvez get la list des séquences iso-8859-15 à utiliser avec l' man iso_8859-15 ). Donc cela a semblé fonctionner pour moi:

 xlogin*greeting: V\344lkommen till CLIENTHOST xlogin*namePrompt: Anv\344ndare: xlogin*fail: Fel l\366senord! 

Cela signifiait aussi que je n'avais pas besoin de définir quoi que ce soit dans Xsetup non plus (j'essayais à l'origine d'utiliser sv_SE.utf8).

ä en Latin-1 est \303\244 qui est UTF-8 pour ä . Evidemment votre gestionnaire d'affichage interprète vos strings en Latin-1 mais votre éditeur utilise UTF-8.

Une solution consiste à recoder ces ressources de UTF-8 en Latin-1. Les ressources X sont des strings d'octets, pas des strings de caractères: c'est à l'application de décider dans quel encoding ils se trouvent.

Une autre solution consiste à dire à xlogin d'utiliser UTF-8. Vous l'avez configuré pour utiliser Latin-1: la locale sv_SE sans indication de encoding utilise le encoding Latin-1, pour une compatibilité descendante. Changez ces lignes dans /etc/X11/xdm/Xsetup pour

 export LC_CTYPE=sv_SE.UTF-8 

Vous pouvez définir LC_MESSAGES (messages d'erreur et d'information), LC_COLLATE (ordre de sorting, mais je ne pense pas que xlogin fasse quoi que ce soit) et LC_TIME (format de date et d'heure). Ou définissez LANG , qui les définit toutes sauf si elles sont remplacées par des variables LC_xxx . Le paramètre LC_ALL force toutes les catégories locales à cette valeur et n'est pas nécessaire ici, ni LANGUAGE ce qui n'est utile que si vous souhaitez spécifier des replis au cas où une langue n'est pas disponible.