Xadmin 汉化不全的解决方案
前言
由于近期需要为自己的应用写一个后台管理系统,刚开始想尝试这自己一步一步慢慢的敲出来,但是写了一点后发现自己写真是太麻烦了!
所以想看看有没有现成的后台管理的框架。由于我是基于Django的系统,所以我找到了xadmin。但是在使用xadmin的过程中我遇到了一些汉化的问题:部分英文汉化不出来,最后通过在网上看博客和看文档的方式解决了这个问题。
Django 本地化
在django中,我们可以通过自己编写语言文件让django识别并使用。
翻译的本质:字符串替换的过程。
编写语言文件并生效分为以下几个步骤:
-
在
settings.py
中配置翻译文件所在的路径:LOCALE_PATHS = [ os.path.join(BASE_DIR, 'extra_apps', 'xadmin', 'locale') ]
-
为你想要支持的语言创建一个消息文件。
消息文件里面包含了所有需要翻译的字符串,并让我们自己决定如何在这种语言中显示它们。
我们可以通过下面的命令创建一个语言为
zh-Hans
(中文)的消息文件:python manage.py makemessages -l zh-Hans
如果在运行命令的过程中出现了
CommandError: Can’t find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
报错信息,则需要安装gettext
。在mac上安装
gettext
的步骤如下:brew install gettext brew link gettext –-force
-
翻译字符串
在我们生成的消息文件中,会出现待翻译的字符串,与下图类似:#: path/to/python/module.py:23 msgid "Welcome to my site." msgstr ""
解释:
- 第一行注释是字符串所在的文件路径和位置
- msgid 是文件原始字符串
- msgstr 是翻译后的字符串,也就是我们自己填写的字符串
更新所有的消息文件:
python manage.py makemessages -a
-
编译消息文件使之生效
django-admin compilemessages
执行完命令后可以看到原来的消息文件中多了几个
.mo
的文件,则说明我们编译成功了。
上面就是我们创建本地化django翻译的流程。
解决 Xadmin 汉化不完全的问题
在xadmin中自带了语言包,但是不知道为啥我下载的版本没有编译语言包,导致在使用xadmin的过程中会出现汉化不完全的问题。
解决方法:
-
在settings.py中配置翻译文件所在的目录(可有可无)
LOCALE_PATHS = [ os.path.join(BASE_DIR, 'extra_apps', 'xadmin', 'locale') ]
-
编译语言包
django-admin compilemessages
-
设置语言为中文并开启国际化
LANGUAGE_CODE = 'zh-Hans' USE_I18N = True USE_L10N = True
这样xadmin的汉化就完美了,可以开开心心的继续写代码了~