我的终端中的信息默认使用俄语显示,这是我的母语。
我只是想让它们变成英文(例如粘贴到论坛中),然后切换回默认语言。
我如何使用 bash 进行切换并切换回来?
答案1
有多个环境变量可用于更改语言设置。您可以通过执行命令来查看当前的语言环境设置locale
。要将所有语言环境设置更改为英语,请使用LANG=C
。此C
语言环境始终可用,无需安装其他语言包。(要暂时更改为非英语语言环境,请参阅@mklement0的帖子。)
例子:
使用默认语言设置执行命令并打印当前区域设置:
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
暂时覆盖一个程序的语言并表明它确实是临时的:
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
更改当前 shell 中执行的所有命令的区域设置并再次包含证明:
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
答案2
Lekensteyn 的有用答案如果你想切换到美式英语按照原帖的要求,但是如果你想切换到不同的按需语言,还需要做更多的工作。
在开始之前,您必须使用 安装消息表sudo apt-get install language-pack-<lang-tag>
,其中<lang-tag>
是简单的 RTF 5646 语言子标签,例如es
西班牙语。
背景信息
GNU gettext基于的实用程序优先于非标准LANGUAGE
环境变量[1] ,
而不是 POSIX 定义的区域设置环境变量LC_ALL
、LC_MESSAGES
和LANG
(按此顺序)。
鉴于LANGUAGE
在 Ubuntu 系统上默认设置为[2],即子字符串LANG
反映简单语言标记(例如,es
西班牙语)或语言区域标记(例如,de_DE
德语的德国变体)的值,您必须取消设置或覆盖LANGUAGE
,才能使不同语言的消息生效。[3]
选项 1:设置LANGUAGE
例子es
:临时切换到西班牙语( )消息:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
笔记:简单的语言标签(例如 )就es
足够了,但您可以添加区域标识符(例如,es_AR
阿根廷),甚至字符集后缀(例如es_AR.UTF-8
)。
但是,本地化消息可能仅存在于语言级别,而后备方法是使用与语言部分(es
在本例中为 )。
选项 2:取消设置LANGUAGE
并设置LC_ALL
此替代解决方案取消定义 LANGUAGE
首先,然后使用 POSIX 区域环境变量LC_ALL
隐式设置LC_MESSAGES
[4]:
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
该解决方案的优点是全部本地化方面到指定的区域设置(如LC_TIME
日期/时间格式)并通过(隐式)设置LC_MESSAGES
通知非- 所需语言的 GNU 程序。
注意如何LC_ALL
要求准确,完整区域设置名称(包括字符集后缀)有效(es_ES.UTF-8
)(不同于LANGUAGE
,对于 ,一个简单的语言标记就足够了(如es
))。这同样适用于设置LC_MESSSAGES
和LANG
。指定无效/未安装的区域设置名称会导致回退到 POSIX 区域设置,因此会回退到美国英语。