Archetypes locale aware DateTime字段

时间:2012-08-06 15:37:14

标签: plone

将西班牙语日期字符串值保存到Archetypes DateTimeField时,该字段最终为None值。我已经阅读了DateTimeField代码,根本没有任何语言环境代码。我确信这和大多数事情一样,已经在Plone的某个地方完成了,我想知道在哪里。

如果尚未完成,那么我将非常感谢您对我的计划提出的任何意见。我从Google和SO那里收集了一些信息,这就是我提出的:

1)我将在我自己的源代码中继承Archetypes / Field.py / DateTimeField()。

2)我将使用@@plone_portal_state/language()来获取当前的语言代码。

3)然后使用locale.setlocale(local.LC_TIME, LANG_CODE)设置区域设置。

4)我将把字符串值转换为python datetime对象。

5)我将使用dt2DT将值转换为zope DateTime。

6)然后我会写下这个值。

这是一个愚蠢的计划,但这是我所知道的,我会喜欢一些线索。

谢谢!

1 个答案:

答案 0 :(得分:0)

我有类似的问题,但我想要的是在西班牙语语言环境中以法语显示当地时间,例如 2012年1月1日,但是在做研究时我发现 locale.setlocale < / strong>在大多数系统上都不是线程安全的,因此保持设置/取消设置并不是一个好主意,因为它可能会为使用该站点的每个人设置该特定区域设置。

您仍然可以为所选语言安装所需的语言环境,在Debian中您可以使用以下语言:

#aptitude安装区域设置

然后

#dpkg-reconfigure locales

选择您需要的所有语言环境语言,系统将拥有它们。应该有一种翻译月份名称格式的方法,但我还没有找到它。

来源:

Plone讨论 - http://plone.293351.n2.nabble.com/Plone-strftime-and-locales-question-td6602394.html

Python语言环境文档页面,向下滚动到locale.setlocale - http://docs.python.org/library/locale.html

编辑:您也可以使用babel软件包代替locale.setlocale,因为它似乎是线程安全的,我正在调查我自己项目的可能性。

Stack Overflow讨论 - https://stackoverflow.com/a/225106/86294

Pypi上的Babel - http://pypi.python.org/pypi/Babel