0

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

如果尚未完成,那么我将不胜感激您对我的计划提出的任何意见。我从谷歌和 SO 收集了一些信息,这就是我想出的:

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

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

3) 然后设置语言环境,使用locale.setlocale(local.LC_TIME, LANG_CODE).

4) 我会将字符串值转换为 pythondatetime对象。

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

6)然后我将写入值。

这是一个愚蠢的计划,但这是我所知道的,我希望得到一些线索。

谢谢!

4

1 回答 1

0

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

您仍然可以为所选语言安装所需的语言环境,在 Debian 中您可以这样做:

#aptitude 安装语言环境

然后

#dpkg-重新配置语言环境

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

资料来源:

克隆讨论——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,因为它似乎是线程安全的,我目前正在为我自己的项目调查这种可能性。

堆栈溢出讨论——https: //stackoverflow.com/a/225106/86294

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

于 2012-08-10T21:22:04.213 回答