Django中大型静态文本的多语言支持技巧
对于小段文字,我们使用 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)
把这个放在你应用的模板标签库里。如果你还没看过,建议你阅读一下 关于自定义模板标签的文档。