2012-09-12 2 views
1

MongoEngine에 대한 다국어 StringField의 opensource 구현을 찾고 있습니다.MongoEngine에 다국어 문자열 필드를 사용할 준비가 되었습니까?

나는 혼자서 할 수 있지만, 있다면 나는 그것을 사용하는 것이 더 낫다고 생각한다.

내가 원하는 것은 동일한 속성의 다양한 값에 대해 여러 언어로 알 수있는 필드입니다 (예 :

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 .: 예, MongoKit의 방식과 정말 비슷합니다.

+0

상속을 원할 경우 해당 클래스를 생성해야합니다. 그렇지 않으면 클래스에 언어 "en"이 포함 된 추가 문자열을 저장할 수 있습니다. –

답변

1

지금입니다에서 풀 요청을 받아

해피.

"mongoengine-multilingual-field" project

사용법 : 그것은 빠른 값 검색 (value, lang)에 의해 효과적인 인덱스를 정의 할 수 있습니다 정규화 로케일을 사용

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

:

여기
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를처럼 보이는 것입니다 이름을 lang 코드로 사용합니다.

1

그러나 현재 MongoKit을 간략하게 살펴본 후 구현 된 구현은 없습니다. 데이터는 사전으로 저장되며 설정 현재 언어는 그 위에 문법적 설탕입니다. 여기 http://github.com/mongoengine/mongoengine

+0

답변 해 주셔서 감사합니다. 곧있을거야. 나는이 질문에 자기가 끝낼 때 대답 할 것이다. – lig

관련 문제