这似乎没有记录。问题是我有一个无头服务器,它最低限度地安装了一种语言,但必须重新配置为第二种语言;我需要编写此过程的脚本。这需要几个步骤,但我没有足够的信息来执行此操作。在下面的步骤中,我从英国英语开始,并希望最终使用(例如)加拿大法语:
1:查找所有潜在语言
这些语言似乎列在 中/usr/share/language-selector/data/languagelist
。我找不到任何关于这个文件是什么或它的格式的文档,但有一个有用的Debian 脚本这给出了一些线索。如果我 grep '法语',我会得到:
French;1;fr;fr_FR.UTF-8;fr;FR;fr_FR:fr:en_GB:en;kbd=lat9u-16(utf8)
文本描述是第 1 列(French
,用户在 Web 前端获得此选项)。语言似乎是第 5 列(fr
;Deb 脚本表示第 3 列是DEFAULT_COUNTRY
,第 5 列是LANGUAGELIST
)。
第一个问题:这不是 UTF-8 文件。Ubuntu 安装程序列出了诸如 Ελληνικά 之类的语言,所以它做了一些我不知道的事情。
2:安装缺少的语言包
获取语言所缺少的软件包列表fr
,并安装它们:
$ sudo apt -y install $(check-language-support -l fr)
3:重新生成区域设置
取消注释中所需的区域设置/etc/locale.gen
,然后使用 生成新的区域设置locale-gen
。
第二个问题:fr
不是区域设置;它是一种语言。法语条目如下/etc/locale.gen
:
# fr_BE ISO-8859-1
# fr_BE.UTF-8 UTF-8
# fr_BE@euro ISO-8859-15
# fr_CA ISO-8859-1
# fr_CA.UTF-8 UTF-8
# fr_CH ISO-8859-1
# fr_CH.UTF-8 UTF-8
# fr_FR ISO-8859-1
# fr_FR.UTF-8 UTF-8
# fr_FR@euro ISO-8859-15
# fr_LU ISO-8859-1
# fr_LU.UTF-8 UTF-8
# fr_LU@euro ISO-8859-15
...但其中只有一个 ( fr_FR.UTF-8
) 出现在 中languagelist
,那么我怎么知道我必须取消注释其中一个fr_CA
条目才能获得“加拿大法语”?或者我应该只取消注释第 4 列给出的条目languagelist
并接受我不能有法语变体?
4:更新语言环境
这至少很容易 - 只需运行
$ sudo update-locale LANG=fr_CA.UTF-8
在这一步之前,/etc/default/locale
包含LANG=en_GB.UTF-8
;在这一步之后,它包含LANG=fr_CA.UTF-8
。