参考文档:

配置 settings

MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', # LocaleMiddleware 中间件需要放在 sessions 中间件之后和 common 中间件之前
'django.middleware.common.CommonMiddleware',
] TEMPLATES = [
{
# BACKEND 要使用的模板后端。还有一个 'django.template.backends.jinja2.Jinja2'
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# DIRS 包含搜索顺序的序列,搜索引擎会按照这个顺序查找 template 资源文件
'DIRS': [
os.path.join(BASE_DIR, 'templates').replace('\\', '/'), # 设置项目根目录模板路径
]
,
'APP_DIRS': True, # Templates 引擎是否应该在已安装的 app 中查找 Template 源文件
'OPTIONS': {
'context_processors': [
"django.template.context_processors.i18n", # 模板国际化
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.template.context_processors.media',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
] # LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans' # UTC 世界统一时间
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai' USE_I18N = True # 启用国际化 USE_L10N = True # 国际化语言种类
from django.utils.translation import gettext_lazy as _ LANGUAGES = [
('en', _('English')),
('zh-Hans', _('中文简体')),
] # 国际化翻译文件目录
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'), # 翻译文件所在目录,请手动创建目录
]

  

安装 gettext

Django 框架具有很好的 I18N 和 L10N 的支持,其实现是基于 GNU 的 gettext, 所以要想在 Django 中使用 I18N 还需要先安装配置 gettext。

windows gettext 下载地址:

https://mlocati.github.io/articles/gettext-iconv-windows.html

exe 包安装时会默认加入到环境变量(提醒:已打开的 cmd 或 控制台,后加入的环境变量不会生效,需要重启咯),如图:

Mac 安装 gettext 使用 brew 安装:(CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 意思是提示需要安装 gettext)(注:Mac 解决 Homebrew 一直卡在 update

brew install gettext

brew link gettext --force

  

生成需要翻译的文件

python manage.py makemessages -l zh_Hans
python manage.py makemessages -l zh_Hans
# 结果
processing locale zh_Hans

运行成功后会生成一个 django.po 文件( LOCALE_PATHS 对应语言目录下 - 具体看下图,这个里面就是我们手动写翻译的地方)

django.po 文件:

如果执行命令:python manage.py makemessages -l zh_Hans(第二个 H 大写)

msgid: 需要翻译的文案

msgstr: 翻译后的文案

在代码中看到:_("这种就是国际化的标志,我们只需要翻译下就 OK")

最后一步就是 编译

编译成功后会在 django.po 的对应目录生成 django.mo 文件

python manage.py compilemessages

  

实践效果图

其他用途

  • 把三方库某些显示的文案翻译成本地语言,而不用修改源代码。

django 国际化的更多相关文章

  1. Django国际化注意事项

    涉及两部分内容: py/html文件国际化.外部js文件国际化 步骤 1. settings.py 激活相应的配置 2. 针对py文件,需要注意被翻译代码的编写方式 3. 针对html文件,需要注意被 ...

  2. Django 国际化和本地化

    所谓的国际化,是指使用不同语言的用户在访问同一个网站页面时能够看到符合其自身语言的文本页面. 国际化的基本原理是: 浏览器通过LANGUAGE_CODE在HTTP请求头中告诉网站后台服务器用户所需要的 ...

  3. Django国际化和本地化

    把django的这篇文档看了一遍,基本弄懂了,讲的也挺详细的 https://docs.djangoproject.com/en/1.6/topics/i18n/ 首先是国际化和本地化概念: 1,国际 ...

  4. django国际化的简单设置

    设置国际化的具体步骤: 一.国际化 1)效果:针对不同的国家的人可以配置不同的语言(一般是英文和中文,  English  Chinese) 2)目的:增加项目的用户量 3)难度:不难 比较费劲的就是 ...

  5. django国际化总结

    转:http://blog.csdn.net/ybdesire/article/details/46806739

  6. Django分析之国际化处理

    最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线 ...

  7. Django:之安全、国际化和session

    Django 安全 以下是关于Django安全的一些特征,它包括如何使基于Django的网站的一些建议. 关于安全的官方文档:https://docs.djangoproject.com/en/dev ...

  8. django框架项目 国际化和本地化的实现方法

    转自 https://blog.csdn.net/scissors0707/article/details/79042458 Django国际化 所谓的国际化,是指使用不同语言的用户在访问同一个网站页 ...

  9. Django rest_framework 实用技巧

    前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...

  10. 《Django By Example》第九章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag 注:哈哈哈,第九章终于来啦 ...

随机推荐

  1. CF371D Vessels题解

    思路: 定义一个权值并查集,权值保存这个集合还可以存下多少水. 如果这个集合可以存放的水已经小于要装入的水,就将这个集合与下一个集合合并. 否则,直接把这个集合可以存放的水减去要装入的水的体积. 代码 ...

  2. react项目中使用plop

    第一步,安装依赖 npm install plop --dev //或者用yarn yarn add plop --dev 第二步,在package同级目录下新建plopfile.js 这是plop的 ...

  3. 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 请你返回你需要移除的最短子数组的长度,如果

    2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和 能被 p 整除. 不允许 将整个数组都移除. 请你返回你需要移除的最短子数组的长度,如果 ...

  4. Mediabox:年度最佳音视频开发工具

    "2023稀土开发者大会"落下帷幕,由稀土掘金社区评选的的掘金技术引力榜重磅出炉,共有22个优秀实践案例上榜,涵盖对技术行业发展有特别贡献的人物.开发工具.开源项目.技术团队和技术 ...

  5. 大白话讲讲 Go 语言的 sync.Map(二)

    上一篇文章 <大白话讲讲 Go 语言的 sync.Map(一)> 讲到 entry 数据结构,原因是 Go 语言标准库的 map 不是线程安全的,通过加一层抽象回避这个问题. 当一个 ke ...

  6. SpringBoot整合WebService(实用版)

    SpringBoot整合WebService 简介 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术 此处就不赘述WebService相关概念和原理了,可以参考:https://b ...

  7. django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported.

    django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing a ...

  8. 论文解读(MCD)《Maximum Classifier Discrepancy for Unsupervised Domain Adaptation》

    Note:[ wechat:Y466551 | 付费咨询,非诚勿扰 ] 论文信息 论文标题:Maximum Classifier Discrepancy for Unsupervised Domain ...

  9. HTML5CSS3基础

    目录 HTML5CSS3基础 1 2D 转换 1.1 二维坐标系 1.2 2D 转换之移动 translate 1.3 2D 转换之旋转 rotate 1.4 2D 转换中心点 transform-o ...

  10. CSS基础(4)

    目录 1 定位 1.1 为什么需要定位 1.2 定位组成 1.2.1 边偏移(方位名词) 1.2.2 定位模式 (position) 1.3 定位模式介绍 1.3.1 静态定位(static) - 了 ...