locale-gen 在 Linux 中生成什么?

use*_*750 7 linux locale

在我的理解中,语言环境只是一组指示系统语言和区域的环境变量。但在我们使用它之前,我们需要编辑locale.gen文件以指示您要使用的区域设置,然后运行locale-gen命令。那么它有什么locale-gen作用呢?生成什么数据local-gen?Linux 如何使用这些数据?

sle*_*ske 8

在我的理解中,语言环境只是一组指示系统语言和区域的环境变量。

不,这只是图片的一部分。首先,“区域设置”是特定于特定地点(国家、地区等)的所有设置和信息的抽象。实际上,在 Linux 上,语言环境基础结构是由 C 库提供的(在 Linux 上通常是GNU C 库)。作为该语言环境基础设施的一部分,有多种东西协同工作:

  • 一组根据“当前区域设置”更改行为的函数。这些由 C 库提供,其中确切的更改取决于函数。例如,printf函数系列将根据区域设置以不同的方式格式化输出(请参阅printf(3))。
  • 包含有关如何在不同区域设置中表现的信息的数据库。该信息(区域设置信息)被提取到数据库中,而不是在每个与区域设置相关的函数中对不同区域设置的行为进行硬编码(参见上文) 。它包含诸如哪一天是一周的开始以及用于打印数字的格式等内容。
  • 设置“当前区域设置”的方法。这就是“环境变量集”的用武之地 - 这是设置当前区域设置的一种方法。

为了进一步阅读,我推荐 GNU C Library 的文档:7 Locales and Internationalization

但在使用它之前,我们需要编辑 locale.gen 文件以指示您要使用的区域设置,然后运行 ​​locale-gen 命令。那么 locale-gen 是做什么的呢?local-gen 生成什么数据?linux如何使用这些数据呢?

locale-gen通过调用 . 生成(或者更确切地说编译)我上面提到的“区域设置信息” localedef。语言环境信息以文本格式呈现,对于软件来说很容易编辑但难以阅读(就像软件源代码一样)。locale-gen并将localedef这些信息编译成更易于阅读的二进制格式,这就是C库将使用的数据。

由于这种二进制格式会占用大量磁盘空间,因此它仅为实际使用的区域设置生成。这就是您可以在 locale.gen 中配置的内容。

locale-gen另请阅读和的联机帮助页localedef,他们很好地解释了这一点:locale-gen(8)localedef(1)