locale-gen 在 Linux 中生成什么?

locale-gen 在 Linux 中生成什么?

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

答案1

据我了解,区域设置只是一组指示系统语言和区域的环境变量。

不,这只是一部分。“地点”首先是抽象特定于某个地方(国家、地区等)的所有设置和信息。实际上,在 Linux 上,区域设置基础结构由 C 库提供(在 Linux 上,它通常是GNU C 库)。此区域设置基础结构由多种组件共同协作:

  • 一组根据“当前语言环境”更改行为的函数。这些函数由 C 库提供,其中确切的更改取决于函数。例如,printf函数系列将根据语言环境以不同的方式格式化输出(请参阅printf(3))。
  • 包含如何在不同区域设置下表现的信息的数据库。此信息(区域信息) 被提取到数据库中。它包含诸如哪一天是星期几以及使用什么格式来打印数字等信息。
  • 设置“当前区域设置”的方法。这就是“环境变量集”的作用所在 - 这是设置当前区域设置的一种方法。

为了进一步阅读,我推荐 GNU C 库的文档:7 区域设置和国际化

但在使用它之前,我们需要编辑 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)

相关内容