Ubuntu 切换系统语言

今天把 display manager 切换成 ly 后,发现终端里面的语言默认被切换成中文了,想改回英文。由于使用的 labwc 环境,不想切换到 Gnome 点击 GUI 设置。或者假设你在服务器上面没有图形界面,这个时候命令行方式变更系统语言就有用武之地了。

下面记录命令行方式切换系统语言的方法(演示的是从英文切换到中文,反之亦然):

1. 先查看当前语言设置

 1➜  ~ locale
 2LANG=en_US.UTF-8
 3LANGUAGE=
 4LC_CTYPE="en_US.UTF-8"
 5LC_NUMERIC=en_US.UTF-8
 6LC_TIME=en_US.UTF-8
 7LC_COLLATE="en_US.UTF-8"
 8LC_MONETARY=en_US.UTF-8
 9LC_MESSAGES="en_US.UTF-8"
10LC_PAPER=en_US.UTF-8
11LC_NAME=en_US.UTF-8
12LC_ADDRESS=en_US.UTF-8
13LC_TELEPHONE=en_US.UTF-8
14LC_MEASUREMENT=en_US.UTF-8
15LC_IDENTIFICATION=en_US.UTF-8
16LC_ALL=

从上面可以看出,当前系统语言为英文,货币、计量、地址、电话、时间等都会是英文的方式展示。很多程序会依赖这个配置,glibc 就是。

2. 重新选择系统语言

 1➜  ~ sudo dpkg-reconfigure locales
 2Generating locales (this might take a while)...
 3  en_AG.UTF-8... done
 4  en_AU.UTF-8... done
 5  en_BW.UTF-8... done
 6  en_CA.UTF-8... done
 7  en_DK.UTF-8... done
 8  en_GB.UTF-8... done
 9  en_HK.UTF-8... done
10  en_IE.UTF-8... done
11  en_IL.UTF-8... done
12  en_IN.UTF-8... done
13  en_NG.UTF-8... done
14  en_NZ.UTF-8... done
15  en_PH.UTF-8... done
16  en_SG.UTF-8... done
17  en_US.UTF-8... done
18  en_ZA.UTF-8... done
19  en_ZM.UTF-8... done
20  en_ZW.UTF-8... done
21  zh_CN.UTF-8... done
22  zh_SG.UTF-8... done
23Generation complete.

期间会弹出 tui 界面,先需要选中目标支持语言,可以多选的。

select language

选择默认语言

select language2

3. 配置检测

退出重启后,再次检测,如下所示,发现部分配置被切换了中文。

 1➜  ~ locale
 2LANG=zh_CN.UTF-8
 3LANGUAGE=
 4LC_CTYPE="zh_CN.UTF-8"
 5LC_NUMERIC=en_US.UTF-8
 6LC_TIME=en_US.UTF-8
 7LC_COLLATE="zh_CN.UTF-8"
 8LC_MONETARY=en_US.UTF-8
 9LC_MESSAGES="zh_CN.UTF-8"
10LC_PAPER=en_US.UTF-8
11LC_NAME=en_US.UTF-8
12LC_ADDRESS=en_US.UTF-8
13LC_TELEPHONE=en_US.UTF-8
14LC_MEASUREMENT=en_US.UTF-8
15LC_IDENTIFICATION=en_US.UTF-8
16LC_ALL=

此时输入date命令查看,还是英文格式。因为LC_TIME=en_US.UTF-8

1➜  ~ date
2Thu Jul 13 04:27:39 PM CST 2023

测试修改下LC_TIME=zh_CN.UTF-8,时间变成中文格式:

 1➜ ~ date
 220230713 日 星期四 16:31:57 CST
 3➜ ~ cat /etc/default/locale
 4LANG=zh_CN.UTF-8
 5LC_NUMERIC=en_US.UTF-8
 6LC_TIME=zh_CN.UTF-8
 7LC_MONETARY=en_US.UTF-8
 8LC_PAPER=en_US.UTF-8
 9LC_NAME=en_US.UTF-8
10LC_ADDRESS=en_US.UTF-8
11LC_TELEPHONE=en_US.UTF-8
12LC_MEASUREMENT=en_US.UTF-8
13LC_IDENTIFICATION=en_US.UTF-8
14➜ ~ cat /etc/default/locale |grep LC_TIME
15LC_TIME=zh_CN.UTF-8
16➜ ~ date
1720230713 日 星期四 16:32:38 CST

可见不同配置项,控制不同地方,就不一一列举了,我一般选择全部更改成英文。

命令示例:

  • vim

    %s/aaa/bbb/g
    
  • sed

    1sudo sed -i s/zh_CN/en_US/g /etc/default/locale
    

如何知道这些关键字呢?请看

 1
 2➜  ~ locale -a
 3C
 4C.utf8
 5en_AG
 6en_AG.utf8
 7en_AU.utf8
 8en_BW.utf8
 9en_CA.utf8
10en_DK.utf8
11en_GB.utf8
12en_HK.utf8
13en_IE.utf8
14en_IL
15en_IL.utf8
16en_IN
17en_IN.utf8
18en_NG
19en_NG.utf8
20en_NZ.utf8
21en_PH.utf8
22en_SG.utf8
23en_US.utf8
24en_ZA.utf8
25en_ZM
26en_ZM.utf8
27en_ZW.utf8
28POSIX
29zh_CN.utf8
30zh_SG.utf8

注意,测试的时候记得退出 tmux session(会记住会话,影响对比效果),该重启系统的时候重启。

最后修改于: Monday, August 28, 2023
欢迎关注微信公众号,留言交流。

相关文章:

翻译: