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

目前没有我知道的实现,但是,在快速查看 MongoKit 之后 - 数据存储为字典,并且设置当前语言是最重要的语法糖。

很高兴在http://github.com/mongoengine/mongoengine接受拉取请求

于 2012-09-13T11:49:45.233 回答
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 回答