是否准备好为MongoEngine使用多语言字符串字段?

时间:2012-09-12 11:19:49

标签: python mongodb multilingual mongoengine

我正在寻找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实现这样的字段非常容易。

P.S。:是的,它与MongoKit的方式非常相似。

2 个答案:

答案 0 :(得分:1)

目前还没有我知道的实现,但是,在快速浏览一下MongoKit之后 - 数据存储为字典,设置当前语言就是语法糖。

很高兴在http://github.com/mongoengine/mongoengine

处接受拉取请求

答案 1 :(得分:1)

现在就是这样。

"mongoengine-multilingual-field" project

用法:

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)定义有效索引以进行快速值搜索,并使用规范化区域设置名称作为lang代码。