1

MongoEngine 用の多言語 StringField のオープンソース実装を探しています。

自分でもできるけど、あるなら使って貢献したほうがいいと思う。

私が欲しいのは、複数の言語で同じプロパティのさまざまな値を知るフィールドです。

class MyDoc(Document):
    name = MultilingualString()

my_doc = MyDoc.objects.first()

# storing value
my_doc.name.en = 'My Document'

# outputs stored value 'Mein Dokument'
print(my_doc.name.de)

内部で DictField を使用してそのようなフィールドを実装するのはかなり簡単だと思います。

PS: はい、MongoKit の方法と非常によく似ています。

4

2 に答える 2

1

とりあえずここまで。

「mongoengine-多言語フィールド」プロジェクト

使用法:

from mongoengine import Document
from multilingual_field.fields import MultilingualStringField

class MyDoc(Document):
    name = MultilingualStringField()

doc = MyDoc(name={'en': 'Hermitage', 'ru': u'Эрмитаж'})
doc.translate('en')
doc.name  #  'Hermitage'
doc.translate('ru')
doc.name  #  u'Эрмитаж'
doc.translate('en')
doc.name = 'The Hermitage'
doc.name.translations  # {'en_US.ISO8859-1': 'The Hermitage', 'ru_RU.UTF-8': u'Эрмитаж'}

MongoDB では次のようになります。

{
    "_cls" : "MyDoc",
    "_id" : ObjectId("5053ad4e3116b063001f6980"),
    "_types" : [
        "MyDoc"
    ],
    "name" : [
        {
            "lang" : "ru_RU.UTF-8",
            "value" : "Эрмитаж"
        },
        {
            "lang" : "en_US.ISO8859-1",
            "value" : "The Hermitage"
        }
    ]
}

高速な値検索のために有効なインデックスを定義し(value, lang)、正規化されたロケール名を言語コードとして使用できます。

于 2012-09-14T23:27:42.230 に答える
1

現在、これについて私が知っている実装はありませんが、MongoKit をざっと見た後、データは辞書として保存され、現在の言語の設定はその上にある構文糖衣です。

http://github.com/mongoengine/mongoengineでプル リクエストを受け付けます。

于 2012-09-13T11:49:45.233 に答える