django admin model 国际化(I18N) 问题解决
By:Roy.LiuLast updated:2013-01-15
用django admin 来做系统的后台管理,节省了很多开发时间,也少写了很多代码,但这只能仅限于比较简单的功能才能用ADMIN,否则还是自己扩展吧。
django admin 本身是启用国际化的,在admin 这个app里面也能看到很多 国际化配置的po 文件,比如在我的测试系统,路径是:C:\Python27\Lib\site-packages\django\contrib\admin\ 的 locale 目录下面
但models 里面的类是自己定义的,需要国际化,这时候需要这样做:
然后修改django admin 的国际化po文件,比如修改zh-CN 下的django.po 文件,增加如下内容
在en 目录下的 django.po 文件中增加
修改了国际化文件后,还需要编译
回到django admin 目录下,运行 django-admin.py compilemessages
当然,要支持国际化,还需要在settings.py 中配置:'django.middleware.locale.LocaleMiddleware',
做了这些之后,重新运行django 工程,改变浏览器语言,就发现django admin完全支持自定义的国际化了
django admin 本身是启用国际化的,在admin 这个app里面也能看到很多 国际化配置的po 文件,比如在我的测试系统,路径是:C:\Python27\Lib\site-packages\django\contrib\admin\ 的 locale 目录下面
但models 里面的类是自己定义的,需要国际化,这时候需要这样做:
from django.utils.translation import ugettext_lazy as _ .....省略 class PublicAdminDepartment(models.Model): department_name = models.CharField(max_length=250,verbose_name = _('PublicAdminDepartment|department_name')) ......省略 class Meta: db_table = u'public_admin_department' verbose_name = _('PublicAdminDepartment|department') verbose_name_plural = _('PublicAdminDepartment|department') app_label = u'System_Management'
然后修改django admin 的国际化po文件,比如修改zh-CN 下的django.po 文件,增加如下内容
msgid "PublicAdminDepartment|department_name" msgstr "部门名称" msgid "PublicAdminDepartment|department" msgstr "部门"
在en 目录下的 django.po 文件中增加
msgid "PublicAdminDepartment|department_name" msgstr "Dept Name" msgid "PublicAdminDepartment|department" msgstr "Department"
修改了国际化文件后,还需要编译
回到django admin 目录下,运行 django-admin.py compilemessages
当然,要支持国际化,还需要在settings.py 中配置:'django.middleware.locale.LocaleMiddleware',
做了这些之后,重新运行django 工程,改变浏览器语言,就发现django admin完全支持自定义的国际化了
From:一号门
Previous:jquery Ajax请求 的几种方式总结
Next:浓雾密布的京城-《沁园春.雾》
COMMENTS