转自 https://blog.csdn.net/scissors0707/article/details/79042458

Django国际化

所谓的国际化,是指使用不同语言的用户在访问同一个网站页面时能够看到符合其自身语言的文本页面。

设置setting.py

# system time zone.
TIME_ZONE = 'UTC'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'zh_hans' # Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/
USE_I18N = True
USE_L10N = True
USE_TZ = True LANGUAGES = (
('en', ('English')),
('zh-hans', ('中文简体')),
('zh-hant', ('中文繁體')),
) # 翻译文件所在目录,需要手工创建
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
) MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware', # 添加此行
]

一、在视图中标识需要翻译的文本

在视图中和HTML模板中都可以标识要翻译的文本。在视图中,通过_()或ugettext()函数,指定某个变量需要翻译,如下所示:

from django.utils.translation import ugettext as _
from django.http import HttpResponse def my_view(request):
output = _("Welcome to my site.")
return HttpResponse(output)

二、在模板中表示需要翻译的文本

在模版文件中,要标识一个待翻译的文本,需要使用{% trans %}模板标签,但首先你要在模版的顶部加载{% load i18n %}。比如:

{% load i18n %}
<title>{% trans "This is the title." %}</title>

三、blocktrans模板标签

与{% trans %}模板标签不同,blocktrans标签允许你通过使用占位符来标记由文字和可变内容组成的复杂句子进行翻译,如下例所示:

{% blocktrans %}This string will have {{ value }} inside.{% endblocktrans %}

四、本地化

建立语言文件是通过django-admin makemessages命令完成的。 
在项目的根目录下,也就是包含manage.py的目录下,运行下面的命令:

python manage.py makemessages -l zh_hans
python manage.py makemessages -l en
python manage.py makemessages -l zh_hant

注意:在Windows下,需要提前安装GNU gettext工具!安装链接

每个.po文件首先包含一小部分元数据,例如翻译维护者的联系信息,但文件的大部分是翻译对照:被翻译字符串和特定语言的实际翻译文本之间的简单映射。 
例如,有一个像下面这样的待翻译字符串: 
_("Welcome to my site.") 
在.po文件中将包含一条下面样子的条目: 
#: path/to/python/module.py:23 
msgid "Welcome to my site." 
msgstr "" 

这三行内容各自代表下面的意思:

  • 第一行通过注释表达该条要翻译的字符串在视图或模版中的位置;
  • msgid:要翻译的字符串。不要修改它。
  • msgstr:翻译后的文本。一开始它是空的,需要翻译人员逐条填写。 
    这是一个文本文件,需要专业的翻译人员将所有的msgstr空白‘填写’齐全。如果你的项目比较大,这可能是个磨人的事。

五、编译语言文件

django-admin compilemessages

Django将自动搜索所有的.po文件,将它们都翻译成.mo文件。

六、附件

af 南非荷兰语 
sq 阿尔巴尼亚语 
ar-sa 阿拉伯语(沙特阿拉伯) 
ar-iq 阿拉伯语(伊拉克) 
ar-eg 阿拉伯语(埃及) 
ar-ly 阿拉伯语(利比亚) 
ar-dz 阿拉伯语(阿尔及利亚) 
ar-ma 阿拉伯语(摩洛哥) 
ar-tn 阿拉伯语(突尼斯) 
ar-om 阿拉伯语(阿曼) 
ar-ye 阿拉伯语(也门) 
ar-sy 阿拉伯语(叙利亚) 
ar-jo 阿拉伯语(约旦) 
ar-lb 阿拉伯语(黎巴嫩) 
ar-kw 阿拉伯语(科威特) 
ar-ae 阿拉伯语(阿拉伯联合酋长国) 
ar-bh 阿拉伯语(巴林) 
ar-qa 阿拉伯语(卡塔尔) 
eu 巴斯克语 
bg 保加利亚语 
be 贝劳语 
ca 加泰罗尼亚语 
zh-tw 中文(中国台湾) 
zh-cn 中文(中华人民共和国) 
zh-hk 中文(中国香港特别行政区) 
zh-sg 中文(新加坡) 
hr 克罗地亚语 
cs 捷克语 
da 丹麦语 
nl 荷兰语(标准) 
nl-be 荷兰语(比利时) 
en 英语 
en-us 英语(美国) 
en-gb 英语(英国) 
en-au 英语(澳大利亚) 
en-ca 英语(加拿大) 
en-nz 英语(新西兰) 
en-ie 英语(爱尔兰) 
en-za 英语(南非) 
en-jm 英语(牙买加) 
en 英语(加勒比) 
en-bz 英语(伯利兹) 
en-tt 英语(特立尼达) 
et 爱沙尼亚语 
fo 法罗语 
fa 波斯语 
fi 芬兰语 
fr 法语(标准) 
fr-be 法语(比利时) 
fr-ca 法语(加拿大) 
fr-ch 法语(瑞士) 
fr-lu 法语(卢森堡) 
gd 盖尔语(苏格兰) 
gd-ie 盖尔语(爱尔兰) 
de 德语(标准) 
de-ch 德语(瑞士) 
de-at 德语(奥地利) 
de-lu 德语(卢森堡) 
de-li 德语(列支敦士登) 
el 希腊语 
he 希伯来语 
hi 北印度语 
hu 匈牙利语 
is 冰岛语 
in 印度尼西亚语 
it 意大利语(标准) 
it-ch 意大利语(瑞士) 
ja 日语 
ko 朝鲜语 
ko 朝鲜语(韩国) 
lv 拉脱维亚语 
lt 立陶宛语 
mk FYRO 马其顿语 
ms 马来西亚语 
mt 马耳他语 
no 挪威语(博克马尔) 
no 挪威语(尼诺斯克) 
pl 波兰语 
pt-br 葡萄牙语(巴西) 
pt 葡萄牙语(葡萄牙) 
rm 拉丁语系 
ro 罗马尼亚语 
ro-mo 罗马尼亚语(摩尔达维亚) 
ru 俄语 
ru-mo 俄语(摩尔达维亚) 
sz 萨摩斯语(拉普兰) 
sr 塞尔维亚语(西里尔) 
sr 塞尔维亚语(拉丁) 
sk 斯洛伐克语 
sl 斯洛文尼亚语 
sb 索布语 
es 西班牙语(西班牙传统) 
es-mx 西班牙语(墨西哥) 
es 西班牙语(西班牙现代) 
es-gt 西班牙语(危地马拉) 
es-cr 西班牙语(哥斯达黎加) 
es-pa 西班牙语(巴拿马) 
es-do 西班牙语(多米尼加共和国) 
es-ve 西班牙语(委内瑞拉) 
es-co 西班牙语(哥伦比亚) 
es-pe 西班牙语(秘鲁) 
es-ar 西班牙语(阿根廷) 
es-ec 西班牙语(厄瓜多尔) 
es-cl 西班牙语(智利) 
es-uy 西班牙语(乌拉圭) 
es-py 西班牙语(巴拉圭) 
es-bo 西班牙语(玻利维亚) 
es-sv 西班牙语(萨尔瓦多) 
es-hn 西班牙语(洪都拉斯) 
es-ni 西班牙语(尼加拉瓜) 
es-pr 西班牙语(波多黎各) 
sx 苏图语 
sv 瑞典语 
sv-fi 瑞典语(芬兰) 
th 泰语 
ts 汤加语 
tn 瓦纳语 
tr 土耳其语 
uk 乌克兰语 
ur 乌尔都语 
ve 文达语 
vi 越南语 
xh 科萨语 
ji 依地语 
zu 祖鲁语

django框架项目 国际化和本地化的实现方法的更多相关文章

  1. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  2. 使用Pycharm开发python下django框架项目生成的文件解释

    目录MyDjangoProject下表示工程的全局配置,分别为setttings.py.urls.py和wsgi.py,1.其中setttings.py包括了系统的数据库配置.应用配置和其他配置,2. ...

  3. 潭州课堂25班:Ph201805201 django框架 第八课 表关联对象方法add,create,remove,clear,多表查询 (课堂笔记)

    查表: 数据的插入 新建添加 删除 清空

  4. Django 国际化和本地化

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

  5. 第六章:Django 综合篇 - 18:国际化和本地化

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

  6. Django国际化和本地化

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

  7. python开发学习-day15(前端部分知识、web框架、Django创建项目)

    s12-20160430-day15 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  8. 第三百零三节,Django框架介绍——用pycharm创建Django项目

    Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

  9. Django项目国际化

    Django项目国际化 实验环境: py3.4.3 + django1.8.2 + Windows 项目设置 >django-admin startproject I18nDjango > ...

随机推荐

  1. win, cmd下安装mysql(win真tm难用)

    常用命令: 修改root用户密码 update mysql.user set authentication_string=password('1234qwer') where user='root' ...

  2. DirectFB编程

    一.简介 DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示.它是一个用软件封装当前硬件无 ...

  3. UI设计,你为什么不能把标题做的更明显呢?

    在设计中标题常常被重视,标题即是文案信息的精华提炼,那么如何能把标题在很多文案信息中脱颖而出就是设计师所要做的工作,前面的文章说过对比可以凸显主题,这期是在对比合理的前提下更进一步的处理方法,我们可以 ...

  4. python不用声明数据类型

    不用声明变量一样,Python不用去声明函数的返回类型,是由于其“若类型”的语言特性决定的. 在其他语言中,例如C/C++语言中在存储一个数据之前,都需要在内存中给这个数据开辟一个固定的内存空间,并给 ...

  5. Laravel 中使用原生的 PHPExcel

    1.安装 composer require maatwebsite/excel 之后,程序中就可以使用 PHPExcel 了 2.控制器中 public function export(Request ...

  6. PacBio下机数据如何看?

    一开始拿到三代测序的下机数据时,蒙了,readme ?三代测序的下机数据都有哪些,以及他们具体的格式是怎么样的(以sequel 平台为主). 测序过程 SMRTbell A adapter通用接头,两 ...

  7. centos7 rabbitmq安装以及应用

    安装单机rabbitmq   1.安装erlang cd /usr.local yum install wget yum install net-tools wget http://erlang.or ...

  8. cmake-include_directories

    include_directories: Add include directories to the build. include_directories([AFTER|BEFORE] [SYSTE ...

  9. python编码(七)

    本文中,以'哈'来解释作示例解释所有的问题,“哈”的各种编码如下: 1. UNICODE (UTF8-16),C854:2. UTF-8,E59388:3. GBK,B9FE. 一.python中的s ...

  10. MFC框架仿真<二>