跳转到主要内容

提供了一种单独翻译实体字段的方法。

项目描述

摘要

此立方块提供了一种管理和显示存储在应用程序数据库中的实体字段(属性)翻译的方法。

要为您的特定实体类型实现此功能,您必须

  • 添加一个‘i18nfield_of’关系定义,从‘I18nField’实体类型链接到您的可翻译实体类型

  • 添加一个‘ref_lang’关系定义,从您的实体类型链接到‘I18nLang’实体类型

  • 让您的业务实体类型继承‘TranslatableEntityMixin’,并在其‘i18nfields’属性中列出其可翻译字段

  • 创建一个简单的适配器,继承‘_TranslatableEntityAdapter’并可供您的可翻译实体类型选择

这就是代码部分的所有内容。只需在您的数据库中添加至少一个I18nLang实例,并将您的可翻译实体链接到其参考语言。

默认的Web UI将为可以修改可翻译实体的用户显示一个新的“翻译”动作菜单,并默认以Web请求语言显示您的可翻译实体。

示例

如果您想翻译Card实体类型(来自“card”立方块)的所有字段,您需要在您的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.predicates import is_instance

from cubicweb_card.entities import Card as OrigCard
from cubicweb_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')

运行测试

在虚拟环境中

` python2 -m tox `

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

cubicweb-i18nfield-0.6.0.tar.gz (18.1 kB 查看哈希值)

上传时间

构建分布

cubicweb_i18nfield-0.6.0-py3-none-any.whl (19.6 kB 查看哈希值)

上传时间 Python 3