c - 我如何知道与给定区域设置对应的度量单位?

标签 c localization internationalization locale units-of-measurement

我想以与区域设置相关的方式显示长度,即:以当前区域设置的正确测量单位显示长度。我知道 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 值进行特殊处理(或者更好的是,三个模式,因为其中一些国家/地区不止一种语言):

更新:所有这些国家/地区都在(缓慢)转换为公制 (SI) 的过程中。这可能是没有人费心编写一些库、代码片段或数据库的另一个原因。

关于c - 我如何知道与给定区域设置对应的度量单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038491/

相关文章:

c - 使用单个 system() 调用在 C 中执行多个命令

c - Execv 的参数从第二个元素开始

新 UI 的 iOS Storyboard本地化

ios - 如何与译者分享和合作?

django - 如何在 Django URL 模式中捕获子域?

python - 如何在 django.po 中使用自定义复数形式?

c++ - 为什么数组名不能像指针一样递增

c - 当我 malloc 错误的内存量时,为什么 C 不会崩溃

c# - 带有翻译的 ASP.NET MVC bundle 脚本

iOS:将澳大利亚语言设置为语言并将澳大利亚设置为区域时本地化为 en-GB