转自 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. 只有自己看的懂的vue 二叉树的3级联动

    我是在vue做的数据 actions mutations state index页面获取值 传递给子页面 子页面的操作 <template> <div class='cascade_ ...

  2. MacOs安装mysql与修改root密码

    1.下载安装包 http://www.mysql.com/downloads/ 找到如下内容下载 mysql-5.7.21-1-macos10.13-x86_64.dmg下载地址是 https://c ...

  3. python的metaclass浅析-乾颐堂

    元类一般用于创建类.在执行类定义时,解释器必须要知道这个类的正确的元类.解释器会先寻找类属性__metaclass__,如果此属性存在,就将这个属性赋值给此类作为它的元类.如果此属性没有定义,它会向上 ...

  4. 创建DB2数据库联合对象

    db2 1.db2 =>update dbm cfg using Federated YES 2. db2 =>db2stop force3. db2 =>db2start 4.创建 ...

  5. AJAX学习必备三本书

    <AJAX基础教程>AJAX必备图书之一.国内发行的第一本AJAX图书,也是目前最好的AJAX入门书,如果您是AJAX新手,此书是最好的入门图书.本书基本包括了实现Ajax需要了解的大部分 ...

  6. this.closest()在IE中报错的原因及解决办法

    closest()定义在jquery中,不能在原生的js中使用 解决方法:将this.closest()换成$(this).closest()即可

  7. python网页爬虫 spiders_97A-04B

    import urllib import urllib.request import bs4 from bs4 import BeautifulSoup as bs import re import ...

  8. Tomcat 环境变量配置

    1.变量和常量 i 和 0 2.环境变量 cmd >set 查看所有环境变量 %PATH% 系统指定可执行文件的搜索路径,可以是 .exe .bat String path=“C:\WINDOW ...

  9. SSH整合 第二篇 工程初建

    SSH整合,第二篇. 创建工程 这里只是测试和理解hibernate.建立Java工程就好了. 1.hibernate-4.2.21.jar hibernate包下的required,即\hibern ...

  10. (二分匹配 模板 KM)奔小康赚大钱--hdu--2255

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2255 代码: #include <iostream> #include <cstdio ...