0

スペインの日付文字列値を 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)

datetime4) 文字列値を Pythonオブジェクトに変換します。

5)dt2DT値を Zope DateTime に変換するために使用します。

6) 次に、値を書き込みます。

これはばかげた計画ですが、それは私が知っていることであり、いくつかの手がかりが欲しい.

ありがとうございました!

4

1 に答える 1

0

同様の問題がありますが、2012 年 1 月 1 日などの現地時間をスペイン語のロケールでフランス語で表示したいのですが、 調査の結果、 locale.setlocaleはほとんどのシステムでスレッドセーフではないことがわかりました。サイトを使用するすべての人に特定のロケールが設定される可能性があるため、設定/設定解除を続けることをお勧めします。

選択した言語に必要なロケールを引き続きインストールできます。Debian では、次の方法でこれを行うことができます。

#aptitude インストールロケール

それから

#dpkg-ロケールの再構成

必要なすべてのロケール言語を選択すると、システムにそれらが表示されます。月の名前の形式を変換する方法があるはずですが、まだ見つけていません。

ソース:

Plone ディスカッション -- http://plone.293351.n2.nabble.com/Plone-strftime-and-locales-question-td6602394.html

Python ロケールのドキュメント ページ、locale.setlocale までスクロールします -- http://docs.python.org/library/locale.html

EDIT : また、 locale.setlocale の代わりに、スレッドセーフのように見えるため、babel パッケージを使用することもできます。現在、自分のプロジェクトでその可能性を調査しています。

スタックオーバーフローの議論 - https://stackoverflow.com/a/225106/86294

Pypi のバベル -- http://pypi.python.org/pypi/Babel

于 2012-08-10T21:22:04.213 に答える