更改当前 shell 中的 LANG 变量

更改当前 shell 中的 LANG 变量

在 CentOS 8 上,当我尝试将 LANG 变量更改为意大利语时,它没有改变。这是我正在做的一个例子。

LANG=it_IT.UTF-8

然后,如果我这样做,ls --help我仍然会以英语显示结果。

谢谢。

答案1

要使其发挥作用,需要满足以下几个条件:

  • it_IT.UTF-8区域设置必须在系统上可用。查看locale -a | grep it
  • 相应应用程序的意大利语翻译必须可用(对于 GNU ls,通常类似于/usr/share/locale/it/LC_MESSAGES/coreutils.moCentOS 等 GNU 系统)。
  • LANG变量必须导出到环境中才能ls访问它 ( export LANG)。
  • 特别是对于消息语言设置,在 GNU 系统上,$LANGUAGE优先于LANGLC_*变量(除非LC_MESSAGE,LANGLC_ALL设置为 C/POSIX 语言环境)。因此,如果您有LANGUAGE=fr:en:it,即使您将其他所有设置为 ,您也会收到法语消息(如果可用)it_IT.UTF-8
  • 对于消息语言设置,LC_MESSAGES优先于LANGLC_ALL优先于其他所有内容(除非LANGUAGE它是C/ POSIX,如上所示)。

的输出locale应该为您提供当前设置的摘要。env | grep -e LANG -e LC_应该给你一个与区域设置相关的列表环境当前设置的变量。

答案2

LANG是 20 世纪 80 年代 Sun Microsystems 开发当前本地化基础知识时的旧环境变量。

该变量仍在使用中,但仅用作备用,以防官方标准中的其他变量未定义。

搜索顺序是:

  • LC_ALL 用于覆盖全部

  • LC_MESSAGES 和类似的正常使用

  • LANG 如果 LC_ALL 和区域设置类型特定定义都不可用。

如果您想覆盖,请使用记录的 LC_ALL。

答案3

尝试LC_ALL=it_IT.UTF-8LANGUAGE=it_IT.UTF-8之外LANG=it_IT.UTF-8

检查您当前的区域设置是否正确设置locale

还要检查it_IT.UTF-8区域设置是否可用locale -a

我只需进行设置LANGUAGE=it_IT.UTF-8即可更改消息文本,例如helpman页面中的消息文本。请记住,这LANGUAGE会设置存在翻译的消息的语言。所以ls --help可能不完全是意大利语。

答案4

tmux我在 Ubuntu 上使用它时无法显示图标等。

通过使用

export LANG=en_IN.utf-8

它解决了问题。我用来正确显示的另一种方法是使用tmux -u.

相关内容