如何调试Django i18n?

时间:2012-05-31 12:42:29

标签: django internationalization

我继承了一个需要i18​​n的Django项目。我已经完成了i18n所需的所有常规操作,我通常在其他项目中执行这些操作并且通常可以正常工作。但是在这个上它没有用,它是Django 1.3所以我去了i18n上的文档,并按照所有步骤进行了操作,但它没有用。

我不知道会出现什么问题,因为我自己并没有设置所有项目,我不知道它的哪一部分可能会破坏我。

在base.html中,我添加了文档+ LANGUAGE_CODE标记中的典型语言选择,以获得一些反馈:

<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
{% endfor %}
</select>
Lang:{{ LANGUAGE_CODE }}
<input type="submit" value="Go" />
</form>

无论我做什么,LANGUAGE_CODE总是返回默认的en-us或我在设置中设置的任何内容。

我应该检查哪些顺序?从哪里开始,要改变什么?

1 个答案:

答案 0 :(得分:1)

根据the docs,LANGUAGE_CODE设置为安装语言代码。您确定已在设置文件中将其更改为en-us吗?

您是否尝试在设置文件的末尾打印语言代码,然后以非deamon模式运行,以便您可以看到它的输出?就个人而言,我使用多部分配置文件,并且之前遇到的问题是后面的设置文件已经改变了我预期会进一步发挥作用的东西。这有可能吗?

如果它看起来正好在设置文件的末尾,那么它可能没有正确地传递给模板。您可以尝试像this一样自己推动它。

要检查的另一件事;你确定它不是settings.LANGUAGE_CODE你需要吗?我不记得是否只是在我的头顶模型中。