zoukankan      html  css  js  c++  java
  • 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的汉化就完美了,可以开开心心的继续写代码了~

  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    提高SQL执行效率的16种方法
    Spring Ioc DI 原理
    java内存泄漏
    转:js闭包
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Best Time to Buy and Sell Stock with Cooldown
    LeetCode Length of Longest Fibonacci Subsequence
    LeetCode Divisor Game
    LeetCode Sum of Even Numbers After Queries
  • 原文地址:https://www.cnblogs.com/finlu/p/11645744.html
Copyright © 2011-2022 走看看