Rad*_*hiu 1 python django internationalization web
我想尝试一个简单的例子来理解Django的国际化.
从我在djangoproject文档中读到的内容来看,最简单的方法是使用块来包装要从模板中翻译的内容{% trans %}.
根据我的理解和预期,在我的情况下,字符串会自动执行翻译:
{% for x in found_bills %}
<tr>
<td>{% trans x.name %}
</td>
</tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
并且对于x.name中的字符串(它是一天的名字,用英语,即"sunday")进行翻译并返回到以其翻译形式显示的模板.
我误解了它的工作方式吗?
更新:
错误:在_argparse.py上运行xgettext时发生错误./build/ipython/IPython/external/argparse/_argparse.py:1113:警告:'msgid'带有未命名参数的格式字符串无法正确本地化:转换程序无法对参数重新排序.请考虑使用带有命名参数的格式字符串,以及参数的映射而不是元组.
第二次更新:
模板中的HTML代码如上所示,以下代码是视图中的代码.
bills.py:
def bills(request):
bills = ps_bill.objects.all()
return render_to_response('bills.html',"bills":bills,},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
国际化和本地化是复杂的,阅读文档是无可替代的.但这里是必要步骤的粗略概述:
您需要标记所有需要翻译的字符串.在模板中,您可以{% trans "text" %}用于简单案例和{% blocktrans %} text {% endblocktrans %}复杂案例.在源代码中你包用绳子的ugettext函数(或它的变体之一).在Django 1.4中,您还可以本地化URL模式.
运行的makemessages管理命令来创建要翻译成各种语言的消息文件.
将邮件翻译成目标语言.您可以在文本编辑器中执行此操作,但是您可能希望使用计算机辅助翻译工具来帮助完成此步骤:请参阅Wikipedia以获取与GNU消息文件(.po扩展名)一起使用的部分工具列表.如果您有翻译人员,请与他们交谈并找出他们喜欢使用的软件.
运行的compilemessages管理命令编译消息文件.
打开Django的语言首选项检测中间件.如果您的网站已注册用户,请为其提供语言首选项设置.对于未登录的用户,提供一种切换语言的方法(通过URL或语言首选项cookie).
哦,阅读文档.
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |