Linux 通過終端命令行切換系統語言


通過命令的形式修改系統的語言,比較詳細的講解了來龍去脈;

0 前言

如果不想看前面比比賴賴可以直接跳到3 解決方案,此處省略一萬字。

1 locale 文件

locale是linux本土化和國際化的一個系統標准,包括語言,國家,軟件運行的環境等等信息,在終端輸入可以查看locale的使用信息;

man locale

找到兩個文檔;

  • /usr/lib/locale/locale-archive:Usual default locale archive location.

  • /usr/share/i18n/locales:Usual default path for locale definition files.

如下所示;
在這里插入圖片描述

然后直接在終端輸入locale,可以查看系統當前的相關信息,具體如下;

jackma@alibaba:locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=

在這里我們發現兩個參數LANGLANGUAGE

2 查找相關文件

通常linux的系統配置文件都放在/etc路徑下,因此我們嘗試搜索一下;

jackma@alibaba:sudo find /etc/ -name locale
/etc/default/locale

很明顯,打開這個文件/etc/default/locale

sudo vi /etc/default/locale

具體如下所示;

# File generated by update-locale
LANG="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LANGUAGE="zh_CN:en"

可見當前系統是中文,應該主要修改LANGLANGUAGE

3 解決方案

如果希望將系統改為英文,則將zh_CN替換為en_US即可,修改完的內容具體如下:

# File generated by update-locale
LANG="en_US.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LANGUAGE="en_US:en"

如果需要修改編碼,那么則將UTF-8改成其他的編碼格式就行;

保存文件,重啟即可;

LANGLANGUAGE的區別:
LANGUAGE是設置應用程序的界面語言,比如終端。而LANG是優先級很低的一個變量,它指定所有與locale有關的變量的默認值。

4 相關信息

4.1 locale屬性的含義

  1. 語言符號及其分類(LC_CTYPE)
  2. 數字(LC_NUMERIC)
  3. 比較和排序習慣(LC_COLLATE)
  4. 時間顯示格式(LC_TIME)
  5. 貨幣單位(LC_MONETARY)
  6. 信息主要是提示信息,錯誤信息,狀態信息,標題,標簽,按鈕和菜單等(LC_MESSAGES)
  7. 姓名書寫方式(LC_NAME)
  8. 地址書寫方式(LC_ADDRESS)
  9. 電話號碼書寫方式(LC_TELEPHONE)
  10. 度量衡表達方式 (LC_MEASUREMENT)
  11. 默認紙張尺寸大小(LC_PAPER)
  12. 對locale自身包含信息的概述(LC_IDENTIFICATION)。

4.2 LANGUAGE 屬性

感覺解決亂碼的關鍵應該是這個屬性
進入到路徑/usr/share/i18n/locales,可以看到很多文件,如下所示;在這里插入圖片描述
根據這幾年讀過的書,大概可以猜測到是哪些國家,當然這些都是文本文件,可以直接打開en_US

LC_IDENTIFICATION
title      "English locale for the USA"
source     "Free Software Foundation, Inc."
address    "http:////www.gnu.org//software//libc//"
contact    ""
email      "bug-glibc-locales@gnu.org"
tel        ""
fax        ""
language   "American English"
territory  "United States"
revision   "1.0"
date       "2000-06-24"

category "i18n:2012";LC_IDENTIFICATION
category "i18n:2012";LC_CTYPE
category "i18n:2012";LC_COLLATE
category "i18n:2012";LC_TIME
category "i18n:2012";LC_NUMERIC
category "i18n:2012";LC_MONETARY
category "i18n:2012";LC_MESSAGES
category "i18n:2012";LC_PAPER
category "i18n:2012";LC_NAME
category "i18n:2012";LC_ADDRESS
category "i18n:2012";LC_TELEPHONE
category "i18n:2012";LC_MEASUREMENT
END LC_IDENTIFICATION

果不其然是美國英語;

5 總結

對於locale還不是很深入的了解,只是遇到了問題,整體地查閱了一遍,本人能力有限,難免存在錯誤或者紕漏,如果有什么更好的辦法,請大佬不吝賜教。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM