django admin model 国际化(I18N) 问题解决

摘要: 用django admin 来做系统的后台管理,节省了很多开发时间,也少写了很多代码,但这只能仅限于比较简单的功能才能用ADMIN,否则还是自己扩展吧。

用django admin 来做系统的后台管理,节省了很多开发时间,也少写了很多代码,但这只能仅限于比较简单的功能才能用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完全支持自定义的国际化了

上一篇: jquery Ajax请求 的几种方式总结
下一篇: 浓雾密布的京城-《沁园春.雾》
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号