LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: maramail

我的LINUX的变成英文了

[复制链接]
发表于 2004-11-5 11:17:16 | 显示全部楼层
最初由 orphen 发表
我不是说英文乱码,而是有的程序试图用中文显示时,出现乱码,例如:
你直接在shell下运行vi,vi的首页会有乱码(他原本想用中文显示“帮助乌干达的可怜儿童!”,结果显示不出来,就是乱码;在init5下的konsole中,直接运行vi,vi的首页就会是中文的。)我说的将shell下locale改为POSIX,直接vi显示的是“Help poor children in Uganda!”。

其实,在init3下运行xdm和kdm就和直接init5一样,你查看一下xdm和kdm文件(应该都是shell脚本),看看里面有什么export设置或是和语言有关的。


这次真的明白了!谢谢!

/usr/X11R6/bin/xdm
-rwxr-xr-x  1 root root 112216  9月 28 16:06 xdm*
/usr/bin/mdkkdm
-rwxr-xr-x  1 root root 97848 10月 11 16:36 /usr/bin/mdkkdm*
看过了,都不是shell,应该在别的文件里面了

/etc/rc.d/rc5.d/
总用量 0
lrwxrwxrwx  1 root root 14 10月 31 23:30 K59dund -> ../init.d/dund*
lrwxrwxrwx  1 root root 14 10月 31 23:30 K59hidd -> ../init.d/hidd*
lrwxrwxrwx  1 root root 14 10月 31 23:30 K59pand -> ../init.d/pand*
lrwxrwxrwx  1 root root 14 10月 31 23:49 S01udev -> ../init.d/udev*
lrwxrwxrwx  1 root root 19 10月 31 23:46 S05harddrake -> ../init.d/harddrake*
lrwxrwxrwx  1 root root 17 10月 31 23:49 S10network -> ../init.d/network*
lrwxrwxrwx  1 root root 17 10月 31 23:49 S11portmap -> ../init.d/portmap*
lrwxrwxrwx  1 root root 15 11月  1 05:44 S12pcscd -> ../init.d/pcscd*
lrwxrwxrwx  1 root root 16 10月 31 23:49 S12syslog -> ../init.d/syslog*
lrwxrwxrwx  1 root root 17 10月 31 23:04 S13partmon -> ../init.d/partmon*
lrwxrwxrwx  1 root root 14 10月 31 23:04 S17alsa -> ../init.d/alsa*
lrwxrwxrwx  1 root root 15 10月 31 23:49 S18sound -> ../init.d/sound*
lrwxrwxrwx  1 root root 13 10月 31 23:11 S20xfs -> ../init.d/xfs*
lrwxrwxrwx  1 root root 20 10月 31 23:27 S24messagebus -> ../init.d/messagebus*
lrwxrwxrwx  1 root root 15 10月 31 23:49 S25netfs -> ../init.d/netfs*
lrwxrwxrwx  1 root root 12 10月 31 23:04 S30dm -> ../init.d/dm*
lrwxrwxrwx  1 root root 13 10月 31 23:44 S40atd -> ../init.d/atd*
lrwxrwxrwx  1 root root 20 10月 31 23:49 S56rawdevices -> ../init.d/rawdevices*
lrwxrwxrwx  1 root root 16 10月 31 23:07 S56xinetd -> ../init.d/xinetd*
lrwxrwxrwx  1 root root 18 10月 31 23:49 S75keytable -> ../init.d/keytable*
lrwxrwxrwx  1 root root 17 10月 31 23:48 S85numlock -> ../init.d/numlock*
lrwxrwxrwx  1 root root 15 10月 31 23:49 S90crond -> ../init.d/crond*
lrwxrwxrwx  1 root root 17 10月 31 23:49 S95kheader -> ../init.d/kheader*
lrwxrwxrwx  1 root root 11 10月 31 23:04 S99local -> ../rc.local*

rc.local和/init.d/dm看了一下,好象没有你说的相关内容
发表于 2004-11-5 11:23:40 | 显示全部楼层
/etc/rc.d/rc3.d/中就是/init.d/dm成了K开头的,其他内容和/etc/rc.d/rc5.d/都一样,再麻烦你看看
[PHP]

#!/bin/sh
#---------------------------------------------------------------
# Project         : Mandrakelinux
# Module          : initscripts
# File            : dm
# Version         : $Id: dm,v 1.5 2004/03/08 16:06:20 flepied Exp $
# Author          : Frederic Lepied
# Created On      : Wed May 29 22:10:40 2002
#---------------------------------------------------------------
# chkconfig: 5 30 09
# description: This startup script launches the graphical display manager.
#---------------------------------------------------------------

# Source function library.
. /etc/rc.d/init.d/functions

ret=0

case $1 in
    start)
        gprintf "Starting display manager: "
        /etc/X11/prefdm &
        success "Display manager startup"
        ret=$?
        echo
        if [ $ret = 0 ]; then
            touch /var/lock/subsys/dm
        fi
        ;;

    stop)
        gprintf "Stopping display manager: "
        if [ -r /var/lock/subsys/dm ]; then
            kill `cat /var/lock/subsys/dm` > /dev/null 2>&1
        fi
        ret=$?
        echo
        if [ $ret = 0 ]; then
            success "Display manager shutdown"
            rm -f /var/lock/subsys/dm
        else
            failure "Display manager shutdown"
        fi
        ;;

    status)
        status dm
        ;;

    reload)
        ;;

    restart)
        $0 stop
        # give a chance to the X server to stop gracefully
        sleep 5
        $0 start
        ret=$?
        ;;
    *)
        gprintf "Usage: %s\n" "$(basename $0) {start|stop|restart|status}"
        exit 0
        ;;
esac

exit $ret

# dm ends here

[/PHP]
发表于 2004-11-5 11:33:35 | 显示全部楼层
/usr/X11R6/bin/xdm
-rwxr-xr-x 1 root root 112216 9月 28 16:06 xdm*
/usr/bin/mdkkdm
-rwxr-xr-x 1 root root 97848 10月 11 16:36 /usr/bin/mdkkdm*

应该是shell脚本啊~~你用file /usr/X11R6/bin/xdm
file /usr/bin/mdkkdm
查看一下,另外,看一下/etc/X11/prefdm这个文件,和上两个一样。
发表于 2004-11-5 11:50:57 | 显示全部楼层
最初由 orphen 发表
应该是shell脚本啊~~你用file /usr/X11R6/bin/xdm
file /usr/bin/mdkkdm
查看一下,另外,看一下/etc/X11/prefdm这个文件,和上两个一样。


打开看了都是乱码,应该就是执行程序了
/usr/X11R6/bin/xdm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
/usr/bin/mdkkdm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

/etc/X11/prefdm倒是shell

[PHP]
#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
HOME=/root
export HOME

# We need to source this so that the login screens get translated
[ -f /etc/profile.d/10lang.sh ] && . /etc/profile.d/10lang.sh

# trap SIGTERM to be able to kill autologin
killed () {
    kill -15 $!
    exit
}

trap killed 15

# Run preferred X display manager

# Try autologin first, if wanted...
if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
        . /etc/sysconfig/autologin
        if [ -n "$USER" -a "$AUTOLOGIN" = yes ]; then
            /usr/sbin/autologin &
            echo -n $$ > /var/lock/subsys/dm
            wait $!
        fi
fi

# we have to assume that /etc/sysconfig/desktop has two variables, DESKTOP
# and DISPLAYMANAGER because administors may prefer a specific DM regardless
# of desktops.
# DISPLAYMANAGER is referenced by this script, and DESKTOP is referenced
# as system-wide default by /etc/X11/Xsession script only when X-session
# is opened by "startx" command.
# when DMs open an X-session, they send DESKTOP, which is in this case
# directly selected by users, as a commandline argument of /etc/X11/Xsession.
# actually Xsession script is only able to know by existance of its first
# argument whether it is called by DM or "startx". see the logic
# in /etc/X11/Xsession.
# If DISPLAYMANAGER is not defined, then assume that it is the same as DESKTOP
preferred=
if [ -f /etc/sysconfig/desktop ]; then
        . /etc/sysconfig/desktop >/dev/null 2>&1
        [ -z "$DISPLAYMANAGER" ] && DISPLAYMANAGER=$DESKTOP
        if [ "$DISPLAYMANAGER" = "GDM" -o "$DISPLAYMANAGER" = "gdm" -o "$DISPLAYMANAGER" = "GNOME" -o "$DISPLAYMANAGER" = "gnome" -o "$DISPLAYMANAGER" = "Gnome" ]; then
            preferred=gdm
        elif [ "$DISPLAYMANAGER" = "KDE" -o "$DISPLAYMANAGER" = "kde" ]; then
            preferred=mdkkdm
        elif [ "$DISPLAYMANAGER" = "KDM" -o "$DISPLAYMANAGER" = "kdm" ]; then
            preferred=kdm
        elif [ "$DISPLAYMANAGER" = "XDM" -o "$DISPLAYMANAGER" = "xdm" ] ; then
            preferred=xdm
        fi
fi
# xdm-like program are launched from the console, however, the locale-setting
# can be done in a way that console is not localize, while X11 is.
# That is handled by the lang.sh script, depending on the existance of
# $DISPLAY or $DESKTOP variable. Now that $DESKTOP is defined resource lang.sh
[ -z "$DESKTOP" ] && DESKTOP=dummy_DESKTOP_variable
. /etc/profile.d/10lang.sh
[ "$DESKTOP" = "dummy_DESKTOP_variable" ] && unset DESKTOP


if [ -z "$preferred" ] || ! which $preferred >/dev/null 2>&1; then
  if which mdkkdm >/dev/null 2>&1; then
             preferred=mdkkdm
  elif which kdm >/dev/null 2>&1; then
             preferred=kdm
  elif which gdm >/dev/null 2>&1; then
        preferred=gdm
  elif which xdm >/dev/null 2>&1; then
        preferred=xdm
  fi
fi

if [ -n "$preferred" ]; then
        `which $preferred` -nodaemon $* >/dev/null 2>&1 &
        echo -n $! > /var/lock/subsys/dm
fi

exit 0

[/PHP]

接着再贴个/etc/profile.d/10lang.sh
[PHP]
# /etc/profile.d/lang.sh - set i18n stuff

if [ -n "$GDM_LANG" ]; then
    LC_SOURCED=1
    LANG="$GDM_LANG"
else
    # only source one of the possible files, and in that order;
    # if system wide and user config are mixed and different, umpredictable
    # things will happen...
    for langfile in $HOME/.i18n /etc/sysconfig/i18n ; do
        [ -f $langfile -a "$LC_SOURCED" != 1 ] && . $langfile && LC_SOURCED=1 && export LC_SOURCED
    done   
fi

if [ "$LC_SOURCED" = 1 ]; then
    if [ -n "$LANG" ] ; then
       [ "$LANG" = "C" ] && LANG="en_US"
       export LANG
    else
      unset LANG
    fi
    [ -n "$LANG" ] && export LANG || unset LANG
    [ -n "$LC_ADDRESS" ] && export LC_ADDRESS || unset LC_ADDRESS
    [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE
    [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE
    [ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION || unset LC_IDENTIFICATION
    [ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT || unset LC_MEASUREMENT
    [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES
    [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY
    [ -n "$LC_NAME" ] && export LC_NAME || unset LC_NAME
    [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC
    [ -n "$LC_PAPER" ] && export LC_PAPER || unset LC_PAPER
    [ -n "$LC_TELEPHONE" ] && export LC_TELEPHONE || unset LC_TELEPHONE
    [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME
    if [ -n "$LC_ALL" ]; then
       if [ "$LC_ALL" != "$LANG" ]; then
         export LC_ALL
       else
         unset LC_ALL
       fi
    else
       unset LC_ALL
    fi
    [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE
    if [ -n "$LINGUAS" ]; then
       if [ "$LINGUAS" != "$LANG" -a "$LINGUAS" != "$LANGUAGE" ]; then
          export LINGUAS
       else
          unset LINGUAS
       fi
    else
       unset LINGUAS
    fi
   
    if [ -n "$RPM_INSTALL_LANG" ]; then
       export RPM_INSTALL_LANG
    else
       unset RPM_INSTALL_LANG
    fi

    # XIM and keyboard stuff
    [ -n "$ENC" ] && export ENC || unset ENC
    [ -n "$XIM" ] && export XIM || unset XIM
    [ -n "$XIM_PROGRAM" ] && export XIM_PROGRAM || unset XIM_PROGRAM
    [ -n "$XMODIFIERS" ] && export XMODIFIERS || unset XMODIFIERS
    [ -n "$_XKB_CHARSET" ] && export _XKB_CHARSET || unset _XKB_CHARSET
    [ -n "$GTK_IM_MODULE" ] && export GTK_IM_MODULE || unset GTK_IM_MODULE
    [ -n "$QT_IM_MODULE" ] && export QT_IM_MODULE || unset QT_IM_MODULE

    [ -f /etc/init.d/mandrake_consmap ] && . /etc/init.d/mandrake_consmap

    unset SYSFONTACM SYSFONT

    # handling of special cases where localization is done
    # only on console or only on X11.
    # when launching an xdm-like program we are not yet in X11 (so
    # $DISPLAY is not defined) but obviously we will, so we check
    # also $DESKTOP which is defined before calling xdm-like program
    if [ -n "$DISPLAY" ]; then
        [ "$X11_NOT_LOCALIZED" = "yes" ] && LANGUAGE=C
    elif [ -z "$DESKTOP" ]; then
        [ "$CONSOLE_NOT_LOCALIZED" = "yes" ] && LANGUAGE=C
    fi
   
    if [ -n "$CHARSET" ]; then
        case $CHARSET in
            8859-1|8859-2|8859-5|8859-15|koi*)
                if [ "$TERM" = "linux" -a "`/sbin/consoletype`" = "vt" ]; then
                       echo -n -e '\033(K' 2>/dev/null > /proc/$$/fd/0
                fi
                ;;
        esac
    elif [ -n "$SYSFONTACM" ]; then
        case $SYSFONTACM in
            iso01*|iso02*|iso05*|iso15*|koi*|latin2-ucw*)
                if [ "$TERM" = "linux" -a "`/sbin/consoletype`" = "vt" ]; then
                        echo -n -e '\033(K' 2>/dev/null > /proc/$$/fd/0
                fi
                ;;
        esac
    fi
    if [ -n "$LANG" ]; then
      case $LANG in
            *.utf8*|*.UTF-8*)
            if [ "$TERM" = "linux" -a "`/sbin/consoletype`" = "vt" ]; then
                [ -x /bin/unicode_start ] && /sbin/consoletype fg && unicode_start $SYSFONT $SYSFONTACM
        fi
        ;;
      esac
    fi
    [ -n "$LANGUAGE" ] && export LANGUAGE

fi
unset langfile

[/PHP]
发表于 2004-11-5 12:00:59 | 显示全部楼层
列一下i18n
发表于 2004-11-5 12:08:19 | 显示全部楼层

/etc/sysconfig/i18n

LANGUAGE=zh_CN.GB2312:zh_CN:zh
GTK_IM_MODULE=scim
LC_ADDRESS=zh_CN
LC_COLLATE=zh_CN
QT_IM_MODULE=scim
LC_NAME=zh_CN
LC_NUMERIC=zh_CN
LC_MEASUREMENT=zh_CN
LC_TIME=zh_CN
LANG=zh_CN
LC_IDENTIFICATION=zh_CN
LC_MESSAGES=zh_CN
LC_CTYPE=zh_CN
LC_TELEPHONE=zh_CN
CONSOLE_NOT_LOCALIZED=yes
ENC=gb
LC_MONETARY=zh_CN
XIM_PROGRAM="scim -d"
LC_PAPER=zh_CN
XMODIFIERS=@im=SCIM
发表于 2004-11-5 12:27:58 | 显示全部楼层
在init3下输入set看看,看是不是i18n里的项没有都export?
如果没问题,在init3下执行10lang.sh再startx看看
先要确定是由哪个文件造成的Gtk用英文显示
 楼主| 发表于 2004-11-5 12:45:13 | 显示全部楼层
谢谢大家,原来退出就没事了
发表于 2004-11-5 22:19:32 | 显示全部楼层
最初由 orphen 发表
在init3下输入set看看,看是不是i18n里的项没有都export?
如果没问题,在init3下执行10lang.sh再startx看看
先要确定是由哪个文件造成的Gtk用英文显示


在 init3的shell下以及startx下的set中,相关部分如下
[PHP]
LANG=zh_CN
LANGUAGE=C
LC_ADDRESS=zh_CN
LC_COLLATE=zh_CN
LC_CTYPE=zh_CN
LC_IDENTIFICATION=zh_CN
LC_MEASUREMENT=zh_CN
LC_MESSAGES=zh_CN
LC_MONETARY=zh_CN
LC_NAME=zh_CN
LC_NUMERIC=zh_CN
LC_PAPER=zh_CN
LC_SOURCED=1
LC_TELEPHONE=zh_CN
LC_TIME=zh_CN
[/PHP]
除了LANGUAGE=C 以外应该没有漏掉的了
在init3下执行10lang.sh后,set中的LANGUAGE=C没有变,进入startx后GTK依然是英文界面

而用init5登陆后的set中
[PHP]
LANG=zh_CN
LANGUAGE=zh_CN.GB2312:zh_CN:zh
LC_ADDRESS=zh_CN
LC_COLLATE=zh_CN
LC_CTYPE=zh_CN
LC_IDENTIFICATION=zh_CN
LC_MEASUREMENT=zh_CN
LC_MESSAGES=zh_CN
LC_MONETARY=zh_CN
LC_NAME=zh_CN
LC_NUMERIC=zh_CN
LC_PAPER=zh_CN
LC_SOURCED=1
LC_TELEPHONE=zh_CN
LC_TIME=zh_CN
[/PHP]
LANGUAGE=zh_CN.GB2312:zh_CN:zh看来区别就在这儿了
发表于 2004-11-5 22:35:53 | 显示全部楼层

感谢orphen!!!!

在orphen的提示下终于解决了这个问题,init3下用startx登陆后GTK程序界面为英文的原因是:
i18n里的LANGUAGE=zh_CN.GB2312:zh_CN:zh 这一项没有export,解决的办法就是,在用户目录下的.bashrc 文件中加入[PHP]LANGUAGE=zh_CN.GB2312:zh_CN:zh[/PHP]
至此init3登陆后GTK界面变英文的问题终于解决!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表