使用注册方法翻译Wagtail CMS模型。
项目描述
Wagtail Modeltranslation
此应用程序使用django-modeltranslation的核心功能构建: https://github.com/deschler/django-modeltranslation
它是Wagtail CMS网站i18n支持的替代方法。
Wagtail-modeltranslation 应用程序用于将现有 Wagtail 模型的动态内容翻译成任意数量的语言,无需更改原始模型类。它使用注册方法(类似于 Django 的管理应用)向现有或新项目添加翻译,并且完全集成到 Wagtail 管理界面中。
注册方法的优点是能够按应用逐个添加翻译到模型中。您可以在不同项目中使用相同的应用,无论它们是否使用翻译,而不需要触及原始模型类。
功能
在不更改现有模型或视图的情况下添加翻译
翻译字段存储在同一张表中(无需昂贵的连接)
支持继承的模型(抽象和多表继承)
处理不仅仅是文本字段
Wagtail 管理集成
灵活的回退、自动填充等功能!
默认页面模型字段默认具有可翻译字段
StreamFields 现在支持!
注意事项
wagtail-modeltranslation
使用命令 sync_page_translation_fields
通过补丁为 Wagtail 的 Page
模型添加翻译字段 title_xx
、slug_xx
、seo_title_xx
、search_description_xx
和 url_path_xx
,其中“xx”代表每种翻译语言的代码。这是通过不使用迁移来完成的。由于 Page
模型属于 Wagtail,所以有可能有一天 Wagtail 可能会向 Page
添加一个冲突字段,从而干扰 wagtail-modeltranslation
。
Wagtail 的 slugurl
标签无法跨语言工作。wagtail-modeltranslation
提供了一个名为 slugurl_trans
的内置替代品,默认情况下它使用默认语言的 slug 参数。
快速入门
安装
wagtail-modeltranslation
pip install wagtail-modeltranslation
将‘wagtail_modeltranslation’添加到您的 INSTALLED_APPS 设置中,如下所示(在您想要翻译的所有应用之前)
INSTALLED_APPS = ( ... 'wagtail_modeltranslation', 'wagtail_modeltranslation.makemigrations', 'wagtail_modeltranslation.migrate', )
将‘django.middleware.locale.LocaleMiddleware’添加到您的 settings.py 中的 MIDDLEWARE
MIDDLEWARE = ( ... 'django.middleware.locale.LocaleMiddleware', # should be after SessionMiddleware and before CommonMiddleware )
在 settings.py 中启用 i18n
USE_I18N = True
在 settings.py 中定义可用语言
from django.utils.translation import gettext_lazy as _ LANGUAGES = ( ('pt', _('Portuguese')), ('es', _('Spanish')), ('fr', _('French')), )
在您想要翻译的模型的根文件夹中创建 translation.py
from .models import Foo from modeltranslation.translator import TranslationOptions from modeltranslation.decorators import register @register(Foo) class FooTR(TranslationOptions): fields = ( 'body', )
运行
python manage.py makemigrations
,然后运行python manage.py migrate
(每次添加新语言或注册新模型时重复此操作)运行
python manage.py sync_page_translation_fields
(每次添加新语言时重复此操作)如果您将
wagtail-modeltranslation
添加到现有站点,请运行python manage.py update_translation_fields
支持版本
wagtail-modeltranslation 版本发布 |
兼容的 Wagtail 版本 |
兼容的 Django 版本 |
兼容的 Python 版本 |
---|---|---|---|
0.10 |
>= 1.12, < 2.12 |
>= 1.11 |
2.7, 3.4, 3.5, 3.6 |
0.11 |
>= 2.13, < 3.0 |
>= 3.0 |
3.6, 3.7, 3.8, 3.9 |
0.12 |
>= 3.0, < 4.0 |
>= 3.2 |
3.7, 3.8, 3.9, 3.10 |
0.13 |
>= 4.0, < 5.0 |
>= 3.2 |
3.7, 3.8, 3.9, 3.10 |
0.14 |
>= 5.0, < 6.0 |
>= 3.2 |
3.8, 3.9, 3.10, 3.11 |
0.15 |
>= 5.2 |
>= 4.2 |
3.8, 3.9, 3.10, 3.11, 3.12 |
升级注意事项(v0.10.8)
模板标签 change_lang 现在需要第二个参数,page
升级注意事项(v0.8)
这个版本包含破坏性更改,因为应用的一些关键部分已经被重写
最重要的更改是,现在 Page 被补丁添加了翻译字段。
WAGTAILMODELTRANSLATION_ORIGINAL_SLUG_LANGUAGE 设置已被弃用。
要升级到这个版本,您需要
在所有 translation.py 文件中将 WagtailTranslationOptions 替换为 TranslationOptions
至少运行一次
python manage.py sync_page_translation_fields
以创建 Page 的翻译字段将任何 Wagtail 的 {% slugurl ... %} 替换为
wagtail-modeltranslation
的 {% slugurl_trans ... %}虽然不是必须的,但建议将 'wagtail_modeltranslation.makemigrations' 添加到您的 INSTALLED_APPS 中。这将覆盖 Django 的 makemigrations 命令,以避免创建虚假的 Page 迁移。
升级注意事项(v0.6)
这个版本有一些重要的更改,因为我们对代码进行了重构,将 django-modeltranslation 作为依赖项包含在内,而不是在我们的版本中重复它们的代码。这样,我们可以专注于 Wagtail 管理员集成功能,因为 django-modeltranslation 维护得非常好,并且可以迅速修复与最新 Django 版本相关的问题。这种方式我们还保留了所有 django-modeltranslation 功能(如果您想的话,也可以自定义 django-admin,例如)。我们还提供了一个新的类来创建翻译选项类:WagtailTranslationOptions 大部分更改都与导入有关,因为它们从 wagtail-modeltranslation 更改为 modeltranslation。
要升级到这个版本,您需要
将所有翻译.py 文件中的 TranslationOptions 替换为 WagtailTranslationOptions
register 装饰器的导入现在是 from modeltranslation.decorators import register
translator 的导入现在是 from modeltranslation.translator import translator
项目主页
文档
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
哈希值 for wagtail_modeltranslation-0.15.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1dc52a15e769111db3507ac1a4ca88bb6f0fdfef3b7fe248e70711dff9ef0a6 |
|
MD5 | 28ed42d6a55ce2eaa1f1e8eebc890d21 |
|
BLAKE2b-256 | 4653dd20652bdb0528846af017f66f3c6eeb48e710cfcaf22ade2d9f21582aa8 |