慎用

所謂的語系(locale),其實包含語言及地區的設定,因為除了語言之外,國家與國家的日期表示方式、數字格式、貨幣符號、度量單位可能都不一樣,所以才會有了這個locale的發明,依照國家和語言給予分類編號,再加上語言編碼,就構成了locale。

例如
zh_TW 表示 繁體中文 台灣
zh_CN 表示 簡體中文 中國
en_US 表示 英文 美國

然後再加上語言編碼
zh_TW.UTF-8 表示 繁體中文 台灣 UTF-8編碼
zh_TW.Big5 表示 繁體中文 台灣 Big5編碼
zh_CN.UTF-8 表示 簡體中文 中國 UTF-8編碼
zh_CN.GB2312 表示 簡體中文 中國 GB2312編碼
en_US.UTF-8 代表 英文 美國 UTF-8編碼

等等還有好多好多,Ubuntu所有支援的語系和編碼,可以看這個檔案:

/usr/share/i18n/SUPPORTED

設定語系
列出已安裝的語系

首先要先看看我們自己的系統上安裝了哪些語系:

$ locale -a
C
POSIX

C和POSIX是系統預設的,看來這台機器三比八,什麼都沒有裝…(囧)

列出目前的語系設定

再來看看我們現在的語系設定是怎樣:

$ locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

果然,全部也是預設的POSIX…(囧)

那這裡面一堆LC_xxx的就是我們上面所說的,關於日期、度量單位、貨幣符號等等各種的設定,其實它就是我們系統的環境變數,可以用 export 指令來看

挑幾個重點來講:
LC_CTYPE 這會影響字元的分類和轉換,若要能輸入中文,就是設定這裡
LC_TIME 這就是日期和時間的顯示格式囉
LC_MONETARY 這會影響貨幣單位的符號和表示
LC_MESSAGES 這會影響系統訊息的顯示,若想要顯示中文,就是設定這裡
LANG 這是預設,如果上面有沒設定的,就會用這裡的設定
LC_ALL 這是強制全部使用這裡的設定,如果這裡設定了,那麼上面的都沒用,全部以這裡的為準

基本上我們會全部都用同一個國家語系,但不表示全部就要設相同的,你可以日期設成中國、度量設成台灣、貨幣設成美國都OK,隨你高興,只是…沒有人會這樣做吧= =”

產生語系檔案

要設定語系,必須先有語系檔案,我們可以用locale-gen這個指令來產生

$ sudo locale-gen zh_TW zh_TW.UTF-8 zh_CN.UTF-8 en_US.UTF-8
Generating locales...
en_US.UTF-8... done
zh_CN.UTF-8... done
zh_TW.BIG5... done
zh_TW.UTF-8... done
Generation complete.

這樣就產生了4種語系檔案,由於Big5是zh_TW的預設編碼,所以下指令時不需要寫成zh_TW.Big5

檔案就放在 /usr/lib/locale 目錄下,會產生與語系同名的目錄:

$ ls -l /usr/lib/locale
drwxr-xr-x 3 root root 4096 2011-10-15 17:27 en_US.utf8
drwxr-xr-x 3 root root 4096 2011-10-15 17:27 zh_CN.utf8
drwxr-xr-x 3 root root 4096 2011-10-15 17:18 zh_TW
drwxr-xr-x 3 root root 4096 2011-10-15 17:18 zh_TW.utf8

另外我們也可以在 /var/lib/locales/supported.d/ 底下建一個 local 檔,裡面寫上妳要產生的語系,格式與我們上面提到的 /usr/share/i18n/SUPPORTED 這個檔案裡面列出的相同,例如:

$ sudo vim /var/lib/locales/supported.d/local
zh_TW.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
en_US.UTF-8 UTF-8
zh_TW BIG5

一行一個語系,有了這個檔案,以後只要下 locale-gen 指令,不指定語系,它會自己去找這裡面寫的語系去產生檔案

$ sudo locale-gen
Generating locales...
en_US.UTF-8... up-to-date
zh_CN.UTF-8... up-to-date
zh_TW.BIG5... up-to-date
zh_TW.UTF-8... up-to-date
Generation complete.

更改語系設定

若只是要暫時更改語系設定,直接下 export 指令更改環境變數即可

先看一下日期格式:

$ date
Sat Oct 15 17:44:37 CST 2011

然後設定,再看一下日期:

$ export LC_TIME=zh_TW.UTF-8
$ date
六 10月 15 17:50:58 CST 2011

唷~ 變中文了耶,喔耶~~ 不過這種格式其實我不是很喜歡,所以下面我要把它改回英文…

若只要變更自己帳號登入的語系設定,那麼編輯家目錄下的.bashrc檔,在最後面加上,例如:

$ vim ~/.bashrc
...(略)...
export LC_CTYPE=zh_TW.UTF-8 # 可以輸入UTF-8中文
export LC_MESSAGES=zh_TW.UTF-8 # 可以顯示UTF-8中文
export LC_TIME=en_US.UTF-8 # 日期格式還是用美式的

然後重新登入,噹噹~~就生效了

若要變更的是系統全域設定,那麼就把設定寫在 /etc/default/locale 這個檔案裡

$ sudo vim /etc/default/locale
LC_CTYPE=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8

或者加到環境變數的設定檔 /etc/environment 最後面

$ sudo vim /etc/environment
....(略)...
LC_CTYPE=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
LC_TIME=en_US.UTF-8

相關檔案目錄
/usr/share/i18n/SUPPORTED
/usr/lib/locale/
/var/lib/locales/supported.d/local
~/.bashrc
/etc/default/locale
/etc/environment

相關指令
local
local-gen

參考
locale man page
Ubuntu Documentation
[Ubuntu]初建置的中文環境
[拋磚] locale 設定相關說明
Ubuntu Locale配置问题根源解决之道

ubuntu Change Language的更多相关文章

  1. [Ubuntu] change mouse scrolling between standard and natural

    Standard: sudo vi .Xmodmap insert the content as below pointer = Natural: sudo vi .Xmodmap insert th ...

  2. 如何在Ubuntu上创建及管理LXC容器?

    将LXC安装到Ubuntu上 $ sudo apt-get install lxc 安装完毕之后,运行lxc-checkconifg工具,检查当前Linux内核支持LXC的情况.要是一切都已被启用,内 ...

  3. Ubuntu中一次更改用户名带来的连锁反应

    我是一个ubuntu新手,接触ubuntu半年不到,装系统的时候输入了一个用户名,但是最近突然想更名了,这是悲剧的开始! google:ubuntu change username等相关的关键字,最终 ...

  4. Linux & change username & computer name & .bashrc

    Linux & change username & computer name ubuntu change username and computer name https://ask ...

  5. Visual Studio Code预览版Ver 0.3.0试用体验

    当你开始阅读这篇文章时,请先不要把Visual Studio Code和.net.Windows联想到一起,因为VS Code是一个跨平台,支持30多种语言的开箱代码编辑器.不管你是.Net.Java ...

  6. 使用密码记录工具keepass来保存密码

    在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢?下面介绍给您一款记录密码的软件,使用. ...

  7. FastReport4.6 组件安装

    要完整版不是官方版的试用版.下面包括有的文件 安装前请册除原有的FR控件. 1. "Tools|Environmet options..."中的"Library" ...

  8. 百度云+ KeePass 网络同步你的密码

     百度云+ KeePass 网络同步你的密码   百度云一个目前不限流量不限格式能直链的网盘,速度在我这里很快,难得了!KeePass(小众介绍过 KeePass.) 是一个免费开源的密码管理类软件, ...

  9. 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器

    微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览 ...

随机推荐

  1. (三)Mybatis总结之动态sql

    动态sql 为何需要动态sql?因为简单的sql语句已经不能满足复杂的业务需求 动态sql相当于sql语句拼接 1.if语句 if语句:判断,如果执行多条件查询,如果中间某个条件变量为空,就跳过当前判 ...

  2. 创建对象——单例(Singleton)模式

      单例(Singleton)模式:   保证一个类在系统里只能有一个对象被实例化.   如:缓存池.数据库连接池.线程池.一些应用服务实例等.   难点:在多线程环境中,保证实例的唯一性.     ...

  3. .Net实战之反射操作篇

    1.上一讲中描述了反射中常见的类,仅仅是描述类与反射之间的关系.   但是实际是对数据的操作,  在反射中,数据如何操作? [MyTable("T_UserInfo")] publ ...

  4. Pro ASP.NET Core MVC 6th 第三章

    第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解 ...

  5. Pro ASP.NET Core MVC 第6版翻译 目录页

    Pro ASP.NET Core MVC 第6版 目录 第一部分 第一章 ASP.NET Core MVC 的前世今生 第二章 第一个MVC应用程序(上) 第二章 第一个MVC应用程序(下) 第三章 ...

  6. 学习一波redis

    作为一名合格的java程序员,做web开发的,除了java,mysql,免不了用到内存数据库redis. 身为一名菜鸟,是时候来一波redis从入门到放弃了,哦不,从入门到精通.. 一.安装部署red ...

  7. iOS UI布局总结

    布局就是尺寸和位置的设置. 一.基本布局: 1)绝对布局:frame.layoutsubviews. 二.相对布局: autoresizing.autolayout.基于父视图.基于约束. 三.线性布 ...

  8. 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

    (1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...

  9. 03Struts2基本使用流程

    Struts2基本使用流程 1.新建web工程 2.引入struts2类库 3.创建并配置Struts2的核心控制器web.xml用来拦截客户端请求并将请求转发到相应的Action类中来处理 4.创建 ...

  10. vue+webpack+npm搭建的纯前端项目

    转载来源:https://www.cnblogs.com/shenyf/p/8341641.html 搭建node环境 下载 1.进入node.js官方网站下载页,点击下图中框出位置,进行下载即可,当 ...