提供单独转换实体字段的方法。
cubicweb-i18nfield的Python项目详细描述
摘要
此多维数据集提供了一种管理和显示实体字段(属性)的方法。 翻译,存储在应用程序数据库中。
要为您的特定实体类型实现这一点,您必须:
- 添加“i18nfield”关系定义,从“i18nfield”链接 实体类型到可翻译实体类型
- 添加“ref_lang”关系定义,从实体类型链接 “I18nLang”实体类型 < >使您的业务实体类型继承“代理”和 在其“i18nfields”属性中列出其可翻译字段
- 创建一个简单的适配器,该适配器继承“_translatableentityadapter”,并且 可用于可翻译实体类型
代码部分就到此为止。只需在您的 数据库并将可翻译实体链接到其引用语言。
默认的web用户界面将显示一个新的“翻译”操作菜单 可以修改可翻译实体并显示可翻译实体的用户 默认情况下,web请求语言中的实体
示例
如果要转换卡实体类型的所有字段(从“卡”中 在schema.py文件中需要:
from yams.buildobjs import RelationDefinition class i18nfield_of(RelationDefinition): subject = 'I18nField' object = 'Card' cardinality = '1*' composite = 'object' class ref_lang(RelationDefinition): subject = 'Card' object = 'I18nLang' cardinality = '1*' inlined = True
在entities.py文件中:
from cubicweb.selectors import is_instance from cubes.card.entities import Card as OrigCard from cubes.i18nfield.entities import (TranslatableEntityMixin, _TranslatableEntityAdapter) class Card(TranslatableEntityMixin, OrigCard): i18nfields = (u'title', u'synopsis', u'content') def dc_title(self): return self.printable_value('title', format='text/plain') class MyTranslatableEntityAdapter(_TranslatableEntityAdapter): __select__ = _TranslatableEntityAdapter.__select__ & is_instance('Card')