Django中大型静态文本的多语言支持技巧

1 投票
2 回答
685 浏览
提问于 2025-04-15 18:07

对于小段文字,我们使用 Django 的标准 {% trans %} 标签。

那么对于较长的文本,比如常见问题、条款和其他静态页面,该怎么处理呢?

2 个回答

2

看看这个 django-better-chunks。它可以让你在模板中插入一些静态的HTML片段,并且支持国际化(i18n),也就是可以用多种语言显示。

如果你要做静态页面,我建议使用某种内容管理系统(CMS),比如 django-cms。这个系统也支持国际化。

6

你可以使用一个叫做 {% blocktrans %} 的模板标签。

你也可以自己写一个简单的模板标签,根据当前的语言来包含另一个模板。

{% i18ninclude "faq/question1.html" "en" %}

这会包含 faq/question1.en.html。下面是代码:

import os
from django import template
register = template.Library()

@register.simpletag
def i18ninclude(template_name, language):
    template_name, extension = os.path.splitext(template_name)
    template_name = '%s.%s%s' % (template_name, language, extension)
    return template.loader.render_to_string(template_name)

把这个放在你应用的模板标签库里。如果你还没看过,建议你阅读一下 关于自定义模板标签的文档

撰写回答