国际化:redhat7 如何设置系统语言

18 篇文章 3 订阅

        公司与华为合作在科威特实施一个项目,之前部门做的项目都是国内的,还从来没有做过国外的,所以公司领导特别重视,只许成功不许失败;

        首先要做的就是国际化的支持,之前系统只有部分做过国际化,而且很多做的不完善,有的只有中文资源文件,没有英文资源文件,有的直接就没做;这个任务落在我和另一位同事身上,我负责做国际化,同事负责国际化后界面的调整;这么多一个一个去改是不可能的,工程量巨大,而且还会遗漏,这种活怎么能让我们这懒懒的程序猿去做,于是写了三个国际化用的扫描程序,分别扫描java,js和jsp文件,提取出其中的中文替换为国际化的key,同时生成国际化资源文件,然后拿给翻译去翻;最后将个别没有扫描到的人工修改;

       除了系统界面,还有一部分需要做国际化!那就后台任务,自动发送报表、报警邮件、短信之类的功能,这个改写成了根据服务器本地的设置来选择语言;

      全部改好了后,本来以为万事大吉,只欠东风了,结果实施的童鞋发难了,如果对方服务器默认语言不是英文怎么办,那好办,度娘一下全部解决,只需要修改linux系统文件/etc/sysconfig/i18n

      LANG="en_US.UTF-8"

      然后执行一下source  /etc/sysconfig/i18n即可;

      后来客户说要在redhat7上进行安装,实施的童鞋为了确保万无一失,专门做了个redhat7的系统,安装了一遍,更改系统语言的时候发现竟然没有/etc/sysconfig/i18n这个文件;于是自己创建了一个,放上去,为了验证器正不正确,先改为了中文,结果没有起作用,系统发送的邮件仍然是英文邮件,于是各种百度;发现全都是更改/etc/sysconfig/i18n这个文件,要么就是在桌面上更改,我去,我们服务器端安装桌面是不可能的;看样子还是自己动手丰衣食足;

       想了一下解决思路,既然redhat7没有i18n这个文件那么有可能是写在别的地方了, 我们要找的就是看看/etc/sysconfig/i18n会在什么时候加载,找到其他系统加载这个文件的位置,再去看redhat7上是不是也在这个位置加载了其它文件,想了一下linux系统启动时加载配置文件的过程

  1.        /etc/profile
  2.       ~/.bash_profile | ~/.bash_login | ~/.profile
  3.       ~/.bashrc
  4.        /etc/bashrc
  5.       ~/.bash_logout


先从/etc/profile开始查看

vi /etc/profile,在该文件的67行,有了这样的发现

for i in <span style="background-color: rgb(255, 255, 102);"><span style="color:#FF0000;">/etc/profile.d/*.sh</span></span> ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

原来它会执行/etc/profile.d/目录下所有的  *.sh脚本文件;

于是进入到/etc/profile.d/ 目录:

[root@localhost profile.d]# ll
total 44
-rw-r--r--. 1 root root 1127 Oct 17  2013 colorls.csh
-rw-r--r--. 1 root root 1143 Oct 17  2013 colorls.sh
-rw-r--r--. 1 root root  192 Aug 27  2013 glib2.csh
-rw-r--r--. 1 root root  192 Aug 27  2013 glib2.sh
-rw-r--r--. 1 root root 1741 Nov 23  2013 lang.csh
<span style="color:#FF0000;">-rw-r--r--. 1 root root 2706 Nov 23  2013 lang.sh</span>
-rw-r--r--. 1 root root  122 Feb  7  2007 less.csh
-rw-r--r--. 1 root root  108 Feb  7  2007 less.sh
-rw-r--r--. 1 root root   97 Apr  5  2012 vim.csh
-rw-r--r--. 1 root root  269 Apr  5  2012 vim.sh
-rw-r--r--. 1 root root  169 May 20  2009 which2.sh

一眼就瞄到了lang.sh,打开它看看里面有什么内容:

# /etc/profile.d/lang.sh - set i18n stuff

sourced=0

if [ -n "$LANG" ]; then
    saved_lang="$LANG"
    [ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1
    LANG="$saved_lang"
    unset saved_lang
else
    for langfile in <span style="color:#FF0000;">/etc/sysconfig/i18n</span> <span style="color:#FF0000;">"$HOME/.i18n"</span> ; do
        [ -f $langfile ] && . $langfile && sourced=1
    done
fi
来的真是全不费功夫,在开头的位置发现了标红的这两个文件/etc/sysconfig/i18bn 和 用户目录下的.i18n文件;


然后如出一辙,在redhat7上顺藤摸瓜找到了这个文件lang.sh打开一看

else
    for langfile in <span style="background-color: rgb(255, 255, 153);"><span style="color:#FF0000;">/etc/locale.conf</span></span> <span style="color:#FF0000;">"$HOME/.i18n"</span> ; do
        [ -f $langfile ] && . $langfile && sourced=1
    done
fi
原来redhat7已经将系统语言的设置迁移到了/etc/locale.conf文件里


打开这个文件,设置为中文,重启服务,问题解决!



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值