“LANGUAGE”区域设置变量 - 如何将英语设置为主要语言? gettext 中的错误?

“LANGUAGE”区域设置变量 - 如何将英语设置为主要语言? gettext 中的错误?

“LANGUAGE”变量应该设置默认语言,并可用于指定一组语言,如果第一个(上一个)消息不可用,则将使用下一个语言。

例如(从获取文本例如)带有“sv:de”变量值的程序将以瑞典语显示消息,如果找不到此类文本,则以德语显示消息。

我想使用英语作为我的主要语言,并使用其他语言(比如说俄语)作为辅助语言:

export LANGUAGE=en:ru; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used**

好的。让我们尝试另一个命令:

export LANGUAGE=ru:en; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used again**

换句话说,英语语言指定在哪个位置并不重要,它始终具有最低优先级,并且如果为该语言定义了消息,则消息将以任何其他指定语言显示。

问题:如何将英语指定为主要语言,将任何其他语言指定为次要语言? LANGUAGE 变量发生了什么?

PS 'LC_MESSAGES' 当然设置为英语语言环境。

答案1

正如在问题是大多数程序没有“英语”语言环境,而是使用默认(“C”)语言环境和英语消息。因此,如果我想使用某些首选英语的语言,那么我必须在列表中的英语区域设置之后添加“C”区域设置。就我而言,“语言”必须是:

LANGUAGES=en:C:ru


这意味着“使用英语,然后使用默认值,然后使用俄语”。因此,每个没有英语语言环境的程序(因为使用英语语言环境作为其默认语言环境)都将回退到其默认语言环境。
有人可能认为在“default”之后指定俄语语言环境没有任何效果,因为默认语言环境始终存在并且永远不会选择俄语语言环境。这是真的。但有些程序(如浏览器和文本编辑器)使用“LANGUAGES”变量来获取用户使用的语言列表(如请求 HTML 页面的语言或用于拼写检查的语言),在这种情况下俄语获胜在语言列表中不要是多余的。

答案2

没有理由LANGUAGE只责备变量。首先,您必须查看locale程序的输出,并注意有许多变量负责不同的事情。因此,如果您想接收英文消息,请更改变量LC_MESSAGES

LC_MESSAGES=C type test
test is a shell builtin

type test
test встроена в оболочку

相关内容