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

用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完全支持自定义的国际化了

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: django
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.