我希望将所有模板的实际非HTML文本放在Django中的一个(或多个)单独文件中。目前,我的模板非常紧凑,如:
{% if request.session.lang == "en" %}
Some text in English
{% else %}
Some text in the default language
{% endif %}
模板的文本(主要语言或英语)经常被其他人更改,所以我想要一些文件,其他人也可以编辑(无需编辑实际的视图文件)。 在阅读了django docs的本地化部分后,似乎仍然需要将文本(文档示例中的英文)硬编码到模板/视图中。
关于生成的.po文件的django docs示例:
msgid "Welcome to my site."
msgstr ""
我宁愿有类似的东西:
msgid APP-XY_VIEW-XY_INTRODUCTION
msgstr ""
当然,明显的解决方案似乎是使用类似的东西:
ugettext('APP-XY_VIEW-XY_INTRODUCTION') # in a view
但是,我想确定是否没有其他解决方案(没有创建一些自定义id字符串文字,在每个视图/模板中都是硬编码的。)
非常感谢!
/ edit,Django Version 1.4.5
答案 0 :(得分:0)
你没有说你正在使用什么版本的Django(你应该总是包含这些信息 - 它将帮助你获得最佳答案)。但是,你应该只能把
{% load i18n %}
位于模板顶部。然后你可以像调整你的模型一样调用trans并处理它。
<title>{% trans "My very important title" %}</title>
Django的书2.0在这个主题上有一个非常好的章节。读书可能会工作吗?点击here了解详情。
答案 1 :(得分:0)
您可以使用与项目相同的语言创建语言文件,它将覆盖硬编码字符串(模板和视图)
我的项目:
LANGUAGE_CODE = 'en-US'
在locale/en/LC_MESSAGES/django.po
我的译员可以覆盖我错误/错误的词语选择