如何将可翻译文本(包括英文)放入Django中的文件中

时间:2013-06-03 20:10:26

标签: django localization

我希望将所有模板的实际非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

2 个答案:

答案 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我的译员可以覆盖我错误/错误的词语选择