Xadmin 汉化不全的解决方案

前言

由于近期需要为自己的应用写一个后台管理系统,刚开始想尝试这自己一步一步慢慢的敲出来,但是写了一点后发现自己写真是太麻烦了!
所以想看看有没有现成的后台管理的框架。由于我是基于Django的系统,所以我找到了xadmin。但是在使用xadmin的过程中我遇到了一些汉化的问题:部分英文汉化不出来,最后通过在网上看博客和看文档的方式解决了这个问题。

Django 本地化

在django中,我们可以通过自己编写语言文件让django识别并使用。

翻译的本质:字符串替换的过程。

编写语言文件并生效分为以下几个步骤:

  1. settings.py 中配置翻译文件所在的路径:

    LOCALE_PATHS = [
        os.path.join(BASE_DIR, 'extra_apps', 'xadmin', 'locale')
    ]
    
  2. 为你想要支持的语言创建一个消息文件。

    消息文件里面包含了所有需要翻译的字符串,并让我们自己决定如何在这种语言中显示它们。

    我们可以通过下面的命令创建一个语言为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
    
  3. 翻译字符串
    在我们生成的消息文件中,会出现待翻译的字符串,与下图类似:

    #: path/to/python/module.py:23
    msgid "Welcome to my site."
    msgstr ""
    

    解释:

    • 第一行注释是字符串所在的文件路径和位置
    • msgid 是文件原始字符串
    • msgstr 是翻译后的字符串,也就是我们自己填写的字符串

    更新所有的消息文件:

    python manage.py makemessages -a
    
  4. 编译消息文件使之生效

    django-admin compilemessages
    

    执行完命令后可以看到原来的消息文件中多了几个 .mo 的文件,则说明我们编译成功了。

上面就是我们创建本地化django翻译的流程。

解决 Xadmin 汉化不完全的问题

在xadmin中自带了语言包,但是不知道为啥我下载的版本没有编译语言包,导致在使用xadmin的过程中会出现汉化不完全的问题。

解决方法:

  1. 在settings.py中配置翻译文件所在的目录(可有可无)

    LOCALE_PATHS = [
        os.path.join(BASE_DIR, 'extra_apps', 'xadmin', 'locale')
    ]
    
  2. 编译语言包

    django-admin compilemessages
    
  3. 设置语言为中文并开启国际化

    LANGUAGE_CODE = 'zh-Hans'
    
    USE_I18N = True
    
    USE_L10N = True
    

这样xadmin的汉化就完美了,可以开开心心的继续写代码了~

posted @ 2019-10-10 09:07  finlu  阅读(540)  评论(0编辑  收藏  举报