跳转到主要内容

使用注册方法翻译Wagtail CMS模型。

项目描述

Wagtail Modeltranslation

此应用程序使用django-modeltranslation的核心功能构建: https://github.com/deschler/django-modeltranslation

它是Wagtail CMS网站i18n支持的替代方法。

Wagtail-modeltranslation 应用程序用于将现有 Wagtail 模型的动态内容翻译成任意数量的语言,无需更改原始模型类。它使用注册方法(类似于 Django 的管理应用)向现有或新项目添加翻译,并且完全集成到 Wagtail 管理界面中。

注册方法的优点是能够按应用逐个添加翻译到模型中。您可以在不同项目中使用相同的应用,无论它们是否使用翻译,而不需要触及原始模型类。

https://github.com/infoportugal/wagtail-modeltranslation/blob/master/screenshot.png?raw=true

功能

  • 在不更改现有模型或视图的情况下添加翻译

  • 翻译字段存储在同一张表中(无需昂贵的连接)

  • 支持继承的模型(抽象和多表继承)

  • 处理不仅仅是文本字段

  • Wagtail 管理集成

  • 灵活的回退、自动填充等功能!

  • 默认页面模型字段默认具有可翻译字段

  • StreamFields 现在支持!

注意事项

wagtail-modeltranslation 使用命令 sync_page_translation_fields 通过补丁为 Wagtail 的 Page 模型添加翻译字段 title_xxslug_xxseo_title_xxsearch_description_xxurl_path_xx,其中“xx”代表每种翻译语言的代码。这是通过不使用迁移来完成的。由于 Page 模型属于 Wagtail,所以有可能有一天 Wagtail 可能会向 Page 添加一个冲突字段,从而干扰 wagtail-modeltranslation

Wagtail 的 slugurl 标签无法跨语言工作。wagtail-modeltranslation 提供了一个名为 slugurl_trans 的内置替代品,默认情况下它使用默认语言的 slug 参数。

快速入门

  1. 安装 wagtail-modeltranslation

    pip install wagtail-modeltranslation
  2. 将‘wagtail_modeltranslation’添加到您的 INSTALLED_APPS 设置中,如下所示(在您想要翻译的所有应用之前)

    INSTALLED_APPS = (
        ...
        'wagtail_modeltranslation',
        'wagtail_modeltranslation.makemigrations',
        'wagtail_modeltranslation.migrate',
    )
  3. 将‘django.middleware.locale.LocaleMiddleware’添加到您的 settings.py 中的 MIDDLEWARE

    MIDDLEWARE = (
        ...
        'django.middleware.locale.LocaleMiddleware',  # should be after SessionMiddleware and before CommonMiddleware
    )
  4. settings.py 中启用 i18n

    USE_I18N = True
  5. settings.py 中定义可用语言

    from django.utils.translation import gettext_lazy as _
    
    LANGUAGES = (
        ('pt', _('Portuguese')),
        ('es', _('Spanish')),
        ('fr', _('French')),
    )
  6. 在您想要翻译的模型的根文件夹中创建 translation.py

    from .models import Foo
    from modeltranslation.translator import TranslationOptions
    from modeltranslation.decorators import register
    
    @register(Foo)
    class FooTR(TranslationOptions):
        fields = (
            'body',
        )
  7. 运行 python manage.py makemigrations,然后运行 python manage.py migrate(每次添加新语言或注册新模型时重复此操作)

  8. 运行 python manage.py sync_page_translation_fields(每次添加新语言时重复此操作)

  9. 如果您将 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

项目主页

https://github.com/infoportugal/wagtail-modeltranslation

文档

http://wagtail-modeltranslation.readthedocs.io/

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源代码分发

wagtail_modeltranslation-0.15.1.tar.gz (52.0 kB 查看哈希值)

上传时间 源代码

构建分发

wagtail_modeltranslation-0.15.1-py3-none-any.whl (55.9 kB 查看哈希值)

上传时间 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面