国际化单位制

时间:2013-06-15 19:46:58

标签: python localization internationalization gettext

我要用GTK +将用Python编写的应用程序国际化。需要国际化单位系统,主要是从“fl.oz”到“升”,盎司到克等等。我正在寻找一个可以提供帮助的工具库。 Python默认使用gettext模块,但我不确定它是否有用。

在最好的情况下,我想有一个工具,读取单位,自动获取区域设置并返回本地化单位。

感谢任何帮助。


当然,价值计算也会很棒。

2 个答案:

答案 0 :(得分:1)

很难证明是消极的。但我怀疑你运气不好。

我所知道的最全面的文化特定名称,首选项和单位集合是Unicode Common Locale Data Repository (CLDR)项目。查看summary of its most recent, v23.1, release,我可以看到货币,时区城市的条目,时间间隔的名称,“在{0}个月”和“{0}秒前”的短语......但不是文​​化惯例质量和体积单位。

如果CLDR没有它,如果有任何现成的产品系列,我会感到惊讶。

您需要的是:

  • 关于各种区域有利于哪些单元的数据,用于各种测量(质量,体积等)。祝你好运获得这些问题的单一答案;在加拿大西部,我看到人们在日常生活中使用的是英镑和千克,米和英尺,°F和°C的混合物。这是可能无法在任何地方收集的数据。
  • 用于各种区域设置中的各个单元的名称。无论我们在加拿大的这一部分使用米还是英尺,您都希望用户使用的所有语言(英语,法语,简体中文,乌尔都语......)都有单词。任何本地人都可以为您提供这些单词列表。
  • 按区域设置管理和检索各个单元名称的机制。 Gettext可以为您完成此操作。
  • 按区域设置管理和检索各个单元的标识符的机制。我没有听说过任何直接这样做的机制,但你可以自己写一个,或者重新使用Gettext。
  • 应用程序逻辑,用于获取区域设置和某种单元,检索该区域设置中单元的标识符,并在目标语言环境中查找该单元的区域设置名称。
  • 将数量从一个单位转换为另一个单位的应用程序逻辑。我怀疑写自己很简单。找到转换系数应该不难。
  • 有关各种区域设置如何格式化数字的数据,以及管理和检索该数据的机制。 CLDR会为您做到这一点。有一些关于使用JSON bindings of CLDR in Python
  • 的工作

作为结束思想:你的问题预先假定“需要国家化单位制”。您是否研究过您的用户和产品,以了解他们如何使用单位以及产品如何使用单位,以确保自动更换单位是合适的?我生活在一个官方公制的国家,但却被一个强调 not 指标的国家所掩盖。我宁愿让应用程序呈现克,磅或内容作者决定的任何单位。如果我想转换,有时精确转换是好的,有时近似转换更有用(“2磅”有时可以更好地呈现“1千克”而不是“2磅3.2盎司”)。在你为这个工具投入太多工作之前,我建议你花一些时间在你的要求上。

答案 1 :(得分:0)

实际上有几个Python的单元库,一些值得注意的例子: