我如何知道与给定区域相对应的测量单位?

我想以与语言环境相关的方式显示长度,即:显示当前语言环境的正确度量单位的长度.我知道LC_MEASUREMENT是我需要使用的,但我该如何使用它?

GNU gettext没有给我任何与LC_MEASUREMENT一起使用的东西.我查看了一些天气小程序的来源,它们都要求您在首选项窗口中手动输入您的单位(Kelvin,Fahrenheit或Celsius).

在我看来,任何人都不会使用该环境变量,但我真的很想用它来提供更好的用户体验.也许,是否存在将区域设置名称映射到相应测量单位的免费(如在自由中)数据库?

仅供参考:我的申请是用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)使用类似于Imperial的customary system.
>所有其他国家/地区使用International System of Units.

更新:所有这些国家都处于转换为公制系统(SI)的(缓慢)过程中.这可能是为什么没有人打扰写一些库,代码片段或数据库的另一个原因.

点赞