3

我想在 Django 中的一个(或多个)单独文件中包含所有模板的实际非 html 文本。目前,我的模板被以下段落塞得满满当当:

{% if request.session.lang == "en" %}
    Some text in English
{% else %}
    Some text in the default language
{% endif %}

模板的文本(主要语言或英语)经常被其他人更改,所以我只想拥有一些其他人也可以编辑的文件(无需编辑实际的视图文件)。在阅读了 django 文档的本地化部分之后,似乎仍然需要将文本(文档示例中的英语)硬编码到模板/视图中。

来自 django 文档的示例关于生成的 .po 文件:

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 版本 1.4.5

4

2 回答 2

0

您可以为与项目相同的语言创建语言文件,它将覆盖硬编码的字符串(模板和视图)

我的项目:

LANGUAGE_CODE = 'en-US'

locale/en/LC_MESSAGES/django.po我的翻译中可以覆盖我错误/错误的单词选择

于 2013-12-17T15:19:58.280 回答
0

你没有说你使用的是什么版本的 Django(你几乎应该总是包含这些信息——它会帮助你得到最好的答案)。但是,你应该可以把

{% load i18n %} 

在模板的顶部。然后你可以调用 trans 并像处理模型等一样处理它。

<title>{% trans "My very important title" %}</title>

Django book 2.0 在这个主题上有一个很好的章节。可能是工作阅读?点击这里了解更多信息。

于 2013-06-04T02:40:31.933 回答