Django 中文本地化汉化方法
来源:互联网 发布:软件开发工程师职责 编辑:程序博客网 时间:2024/05/22 06:16
在 Python 的 web 开发框架中很多人都会选择强大的 Django 来进行学习,但是 Django 默认使用的语言是英语,对于开发人员可能还好,但是实际部署的时候英文环境对于网站运维人员未必友好,所以需要能够将 Django 的后台中文本地化,接下来就简单介绍一下如何汉化我们的 Django 。
系统环境
本文建立在以下系统环境中,对于其他版本和环境本文内容仅供参考。
操作系统:Manjaro Linux 内核版本 4.14
Django: 1.11
Python: 3.6
我们搭建了一个简单的投票应用,登录后台是纯英文的如下图:
可以看到我们的应用(app)名字叫polls
,polls 下有一个模型(models)叫做Question
,然后我们整个后台管理界面(admin)也都是全英文的。
设置项目为中文
打开项目配置文件 settings.py
修改为下面的样子
# 较早版本的 Django 可以尝试改为'zh-CN',具体可查看# “python/site-packages/django/conf/locale/”中的语言名称LANGUAGE_CODE = 'zh-Hans'# Windows环境中此项的时区必须和系统一致,设置为 Asia/Shanghai。# 另外此项设置如果保持 UTC 有可能导致 Django 时间和本地时间不同的情况。TIME_ZONE = 'Asia/Shanghai'# 这里必须是 True,否则 LANGUAGE_CODE 会失效USE_I18N = True
保存后我们刷新后台就可以多看,几乎所有由 Django 创建的内容都已经汉化为了中文
汉化应用app
眼尖的同学肯定看到我们创建的应用 polls
和模型 Question
还都是英文的状态,那么接下来我们首先给应用设置中文名字。
我们打开应用下的 apps.py 文件设置应用的名称
# polls/apps.pyclass PollsConfig(AppConfig): name = 'polls' # 在已有的 PollsConfig 类中增加app的名字 verbose_name = '投票系统'
设置模型 models 的中文名
剩下的模型的名字了,当然还包括模型中不同字段的名字,不然不清楚要填写什么就更要命了。
我们看一下 Question 的的模型
class Question(models.Model): # django 的大多数字段都接受一个可选的位置参数 # (在第一的位置) — 字段的自述名,我们利用它来使我们的项目汉化 question_text = models.CharField("问题", max_length=200) pub_date = models.DateTimeField('发布时间') def __str__(self): return self.question_text def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now was_published_recently.admin_order_field = 'pub_date' was_published_recently.boolean = True # 我们可以在模型、admin中通过 short_description 设置自定义名称 was_published_recently.short_description = '是否最近发布?' class Meta: # 设置模型的名字,但是记得复数形式也要设置,否则有些地方就变成 verbose_name + s 了 verbose_name = '问卷' verbose_name_plural = '问卷(复数形式)'
ForeignKey、ManyToManyField 和 OneToOneField 的中文名
由于 ForeignKey()
ManyToManyField()
和 OneToOneField()
的第一个参数要求是关联的模型,因此他们的汉化名字需要通过增加 verbose_name
关键字参数来设置
# 先来建立一个新的tag标签的模型,并且设置中文名称class Tag(models.Model): tag_name = models.CharField("标签", max_length=10) class Meta: verbose_name="Tag标签" verbose_name_plural = "Tag标签"# 创建一个新的文章的模型设置Tag模型的外键,并设置中文名称class Post(models.Model): title = models.CharField('题目', max_length=30) tag = models.ForeignKey(Tag, on_delete=models.CASCADE, verbose_name="标签")
至此,我们通过相对来说简单暴力的方法让我们的 Django 站点实现了中文化。而对于需要面对多语言用户的的情况,官方更建议的方式是通过本地化和全球化的方法来编辑翻译文档来实现。
- Django 中文本地化汉化方法
- devexpress本地化(汉化)方法
- Magento中文汉化包及汉化方法
- Mac OS X 文件夹本地化方法(汉化)
- Atom编辑器中文汉化方法
- django中文本地化初步安装的全过程记录
- Django升级1.9.6出现的中文本地化bug
- Django国际化与本地化实现网站的中文显示
- 软件本地化与汉化
- FlexViewer2.x 本地化(中文)方法
- Centos5.8 中文汉化的方法
- BCGControlBar本地化(汉化)详解
- Django 国际化和本地化
- Django国际化和本地化
- Django国际化和本地化
- iOS_tip:本地化查找所有中文的快捷方法
- django后台汉化
- Jetspeed支持中文本地化
- 论文阅读笔记1
- Solr vs. Elasticsearch谁是开源搜索引擎王者。
- JsBridge源码分析
- Linux中安装JDK
- windows -- 怎么创建一个网页快捷方式
- Django 中文本地化汉化方法
- 从JMSBytesMessage读取数据
- 文件目录损坏
- CUDA零拷贝内存(zerocopy memory)
- Opencv图像处理之滤波降噪
- 在js中实现list<Map>
- mysql实现类似于oracle dblink的功能/开启Federated引擎
- android学习---使用Litepal操作数据库2
- scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: No such file or directory