使用Kotti的多语言站点
项目描述
使用Kotti的多语言站点。
Kotti的数据模型在Content类中包含一个language属性,所有内容类型都继承自该属性。然而,该属性既没有被Kotti的UI暴露,也没有被任何其他方式使用。kotti_multilingual提供了一种通用的方法来构建多语言站点。
进行中
kotti_multilingual仍处于早期开发阶段。它既不完整,也不能被认为是API稳定的。事情将会改变!
功能
该软件包包含一个名为LanguageRoot的单个内容类型,该类型应包含特定语言中的所有内容。在(或移动到)此类子树中创建的所有内容都将自动标记为根的语言。这是通过订阅Kotti的ObjectInsert和ObjectUpdate事件来完成的。
您可以将LanguageRoot实例放置在内容树中的任何位置,但最佳实践是保持如下树形结构
- / Document language neutral - /en LanguageRoot English - /de LanguageRoot German - /nl LanguageRoot Dutch - /images Document language neutral
设置
要激活Kotti站点的kotti_multilingual插件,您需要在Paste Deploy配置中的kotti.configurators设置中添加一个条目。如果您没有kotti.configurators选项,请添加一个。添加的条目应如下所示
kotti.configurators = kotti_multilingual.kotti_configure
您可以注册一个可选的kotti_multilingual.blacklist,其中包含kotti_multilingual不处理的类型名称列表。
测试
测试设置需要额外的步骤
$ virtualenv --no-site-packages . $ source bin/activate $ pip install -r requirements.txt $ python setup.py develop $ python setup.py dev
如何启动测试
$ py.test
变更日志
0.2a3 (2015-04-27)
修复了0.2a2版本(MANIFEST.in仍然错误)
0.2a2 (2015-04-27)
修复了MANIFEST.in文件
0.2a1 (2015-04-27)
维护内容项目之间的翻译链接,包括翻译源和目标。
添加了一个用于添加项目翻译的翻译下拉UI。
添加了widget.i10n_widget_factory延迟小部件。如果上下文是翻译,则将字段转换为只读模式。
此延迟小部件也与添加表单兼容,您应该将addform属性绑定到True,小部件将在编辑模式下正常渲染。您可以在添加表单上添加一个get_bind_data方法来实现这一点。
添加了一个kotti_multilingual.blacklist设置,其中包含不可翻译的类型名称列表
更改了翻译操作的策略。现在,翻译文档将自动填充父级翻译(提高了可用性,因为我们不需要像LinguaPlone那样将屏幕分成两部分)。这是由于sqla.py中的更改而成为可能,因为我们没有在翻译文档上设置语言无关的属性
修复了具有不可为空的字段的对象的翻译
添加了对sqlalchemy的关联代理的支持
修复了get_source(完整性错误)的间歇性问题
0.1a3 - 2013-05-08
将LanguageSection重命名为LanguageRoot,以更好地适应Kotti的INavigationRoot。这涉及到数据库模式的更改,没有自动模式迁移可用;您必须自己将表language_sections重命名为language_roots。
添加了一些测试。
0.1a2 - 2013-05-07
删除了现在由Kotti的INavigationRoot / TemplateAPI.navigation_root替换的大量代码。这极大地简化了kotti_multilingua的设置。
依赖于Kotti>=0.9a3dev(如上所述)。
0.1a1 - 2013-05-06
首次发布。