You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail国际化:添加多语言页面及翻译功能遇问题

解决Wagtail 4.0.2多语言页面翻译及语言切换问题

一、找回页面语言切换选择器

  • 检查页面模型配置:确保页面模型继承TranslatableMixin,示例代码如下:
from wagtail.models import Page
from wagtail_localize.models import TranslatableMixin

class HomePage(TranslatableMixin, Page):
    intro = RichTextField(blank=True)
    template = "home/home_page.html"

    content_panels = Page.content_panels + [
        RichTextFieldPanel("intro"),
    ]
  • 验证后台权限与配置:用超级管理员账号进入页面编辑页,顶部「Settings」标签下应该能看到「Language」选择器。如果没显示,确认INSTALLED_APPS包含wagtail.contrib.settings,且settings.py中设置WAGTAIL_I18N_ENABLED = True。
  • 检查站点语言关联:在后台「Settings」→「Sites」中,确认站点已关联英文、德语两种语言,并设置好默认语言。

二、文本翻译实现示例

1. 模板静态文本翻译

先在模板顶部加载翻译标签,再用{% trans %}包裹需要翻译的文本:

{% load i18n %}

<div class="header">
    <h1>{% trans "Welcome to Our Platform" %}</h1>
</div>

然后在项目根目录执行以下命令生成并编译德语翻译文件:

# 生成德语翻译文件
django-admin makemessages -l de
# 编译翻译文件生效
django-admin compilemessages

最后在locale/de/LC_MESSAGES/django.po文件中填充对应翻译内容即可。

2. 页面字段翻译

配合TranslatableMixin,在模型中声明可翻译字段,后台切换语言时即可编辑对应语言版本的字段内容:

from wagtail.fields import RichTextField
from wagtail_localize.models import TranslatableMixin, TranslatableField

class HomePage(TranslatableMixin, Page):
    intro = RichTextField(blank=True)
    banner_title = models.CharField(max_length=100)

    content_panels = Page.content_panels + [
        RichTextFieldPanel("intro"),
        FieldPanel("banner_title"),
    ]

    translatable_fields = [
        TranslatableField("intro"),
        TranslatableField("banner_title"),
    ]

三、替代wagtail-localize的临时方案

因wagtail-localize暂不兼容4.0.2,可通过Wagtail原生机制手动管理翻译:

  • 进入已有英文页面,点击右上角「Copy to another language」按钮(需模型正确继承TranslatableMixin),选择德语生成对应版本页面,再编辑翻译内容。
  • 手动维护各语言版本页面,通过站点语言配置实现不同语言路由的对应跳转。

内容的提问来源于stack exchange,提问作者ViLuWi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:25:25