我正在尝试做一个简单的例子来理解 Django 国际化。
根据我在 djangoproject 文档中阅读的内容,最简单的方法是用 {% trans %} block 包装您要从模板翻译的内容。
根据我的理解和预期,在我的例子中是为字符串自动执行翻译:
{% for x in found_bills %}
<tr>
<td>{% trans x.name %}
</td>
</tr>
{% endfor %}
并且 x.name 中的字符串(它是一天的名称,英文,即“星期日”)被翻译并返回到模板,在那里它以翻译后的形式显示。
我是不是误解了它的工作方式?
更新:
错误:在 _argparse.py 上运行 xgettext 时发生错误 ./build/ipython/IPython/external/argparse/_argparse.py:1113: 警告:无法正确本地化带有未命名参数的“msgid”格式字符串: 翻译器无法重新排列参数。 请考虑使用带有命名参数的格式字符串, 和参数的映射而不是元组。
第二次更新:
模板中的HTML代码是上面的代码,下面是 View 中的代码。
bills.py:
def bills(request):
bills = ps_bill.objects.all()
return render_to_response('bills.html',"bills":bills,},context_instance=RequestContext(request))
请您参考如下方法:
国际化和本地化很复杂,reading the documentation 无可替代.但这里有一个非常粗略的必要步骤概述:
您需要标记所有需要翻译的字符串。在模板中使用
{% trans "text" %}对于简单的情况,{% blocktrans %} text {% endblocktrans %}对于复杂的情况。在源代码中,您使用 theugettextfunction 包装字符串(或其变体之一)。在 Django 1.4 中,您还可以 localize URL patterns .运行 the
makemessagesadministration command为您要翻译成的每种语言创建一个消息文件。将消息翻译成您的目标语言。您可以在文本编辑器中执行此操作,但您可能需要使用计算机辅助翻译工具来帮助完成此步骤:see Wikipedia用于处理 GNU 消息文件(
.po扩展名)的部分工具列表。如果您有翻译人员,请与他们交谈并了解他们更喜欢使用什么软件。打开 Django 的 language preference detection middleware .如果您的网站有注册用户,请为他们提供语言偏好设置。对于未登录的用户,提供一种切换语言的方法(通过 URL 或通过语言偏好 cookie。)
哦,还有阅读文档。
