决定显示语言的正确环境变量是什么?

时间:2014-02-01 12:03:08

标签: unix localization posix lang

编写程序时,正确的环境变量是什么来决定显示的菜单和对话语言?

qtikz的实验向我展示了LC_ALL得到尊重(覆盖了所有其他LC_ - 变量)。但是一旦我

LC_NUMERIC=en_US.UTF-8

qtikz用英语显示其菜单。我找到了peculiar。但我不认为一个Qt程序在这方面具有权威性。

我希望LANG有一些influence

  

在没有LC_ALL和其他LC_ *(LC_COLLATE,LC_CTYPE,LC_MESSAGES,LC_MONETARY,LC_NUMERIC,LC_TIME)环境变量的情况下,此变量应确定本地语言,本地习惯和编码字符集的语言环境类别。应用程序可以使用它来确定用于错误消息和说明,整理序列,日期格式等的语言。

“可以使用”是否意味着,应该选择LANG来设置显示语言,还是可以使用“这个变量”?我的第一个猜测是,LC_MESSAGES设置了菜单和对话框,但不在我的实验中。

或者是否有一个不同的方法,涉及环境变量,大概是?

1 个答案:

答案 0 :(得分:1)

LC_ALL优先于LC _...适用于合适的类别,而后者优先于LANG。从您的链接:

  

LANG
      在没有LC_ALL和其他LC_ *(LC_COLLATE,LC_CTYPE,LC_MESSAGES,LC_MONETARY,LC_NUMERIC,LC_TIME)环境变量的情况下,此变量应确定本地语言,本地习惯和编码字符集的语言环境类别。应用程序可以使用它来确定用于错误消息和说明,整理序列,日期格式等的语言。

所以LANG仅作为最后的手段使用。关于LC_MESSAGES:

  

LC_MESSAGES
      该变量应确定用于处理肯定和否定回答的语言环境类别以及应编写消息的语言和文化惯例。   [...]   此变量的其他语义(如果有)是实现定义的。

由于对话框和菜单文本是程序消息,因此除非设置了LC_ALL,否则它们应受LC_MESSAGES类别的影响。