我想以与区域设置相关的方式显示长度,即:以当前区域设置的正确测量单位显示长度。我知道 LC_MEASUREMENT
是我需要使用的,但是我该如何使用它呢?
GNU gettext 没有给我任何可以使用 LC_MEASUREMENT
的东西。我查看了一些天气小程序的来源,它们都要求您在首选项窗口中手动输入您的单位(开尔文、华氏度或摄氏度)。
在我看来,该环境变量从未被任何人使用过,但我真的很想用它来提供更好的用户体验。也许,是否有一个免费的(自由的)数据库可以将语言环境名称映射到相应的测量单位?
仅供引用:我的应用程序是用 C 语言编写的。
最佳答案
据我所知,C 标准和 GNU gettext 不提供任何方式来了解一个国家/地区使用的测量单位,没有第三方库可以完成这项工作,也没有现成可用的数据库(免费或专有)。
然而,根据CIA - The World Factbook :
At this time, only three countries - Burma, Liberia, and the US - have not adopted the International System of Units (SI, or metric system) as their official system of weights and measures.
因此,即使没有数据库或第三方库,编写自己的代码也相当容易。您只需要对三个 LC_MEASUREMENT
值进行特殊处理(或者更好的是,三个模式,因为其中一些国家/地区不止一种语言):
- Burma (语言代码模式:
*_MM
)使用 Burmese system ; - Liberia (语言代码模式:
*_LR
)使用 Imperial system ; - United States (语言代码模式:
*_US
)使用 customary system类似于帝国的。 - 所有其他国家/地区使用 International System of Units .
更新:所有这些国家/地区都在(缓慢)转换为公制 (SI) 的过程中。这可能是没有人费心编写一些库、代码片段或数据库的另一个原因。
关于c - 我如何知道与给定区域设置对应的度量单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038491/