- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
The Django Book
About | Comment help | Contact us | Errata | Buy the print version on A
已完成 172段 共有 172段 完成度 100% | 中英文对照 | 英文 | 中文 | 上一章 | 目 录 | 下一章 | 翻译 |
第十八章 国际化
Django诞生于美国,和许多其他的开源软件一样,Django社区发展中得到了全球范围的支持。所以Djano社区的国际化应用变得非常重要。由于大量开发者对本章内容比较困惑,所以我们将详细介绍。
国际化是指为了在任何其它地区使用该软件而进行设计的过程。它包括为了以后的翻译而标记文本(比如用户界面控件和错误信息等),提取出日期和时间的显示以保证显示遵循不同地区的标准,为不同时区提供支持,并且在一般情况下确保代码中不会有关于使用者所在地区的假设。您可以经常看到国际化被缩写为“I18N”(18表示Internationlization这个单词首字母I和结尾字母N之间的字母有18个)。
本地化是指使一个国际化的程序为了在某个特定地区使用而进行翻译的过程。有时,本地化缩写为 L10N 。
Django本身是完全国际化的;所有的字符串均被标记为需要翻译,而且在选项中可以设置区域选项(如时间和日期)的显示。Django是带着40个不同的本地化文件发行的。即使您不是以英语作为母语的,也很有可能Django已经被翻译为您的母语了。
这些本地化文件所使用的国际化框架同样也可以被用在您自己的代码和模板中。
简要地说,您只需要添加少量的hook到您的Python代码和模板中。这些hook被称为“翻译字符串”。它们告诉Django,如果这段文本可以被翻译为终端用户语言,那么就翻译这段文本。
Django根据用户的语言偏好来使用这些hook去翻译Web应用程序。
本质上来说,Django做这两件事情:
由开发者和模板的作者指定他们的应用程序的哪些部分是需要被翻译的。
Django根据用户的语言偏好来翻译Web应用程序。
备注:
Django的翻译机制是使用 GNU gettext (/software/gettext/),具体为Python标准模块 gettext 。
如果您不需要国际化:
Django国际化的hook默认是开启的,这可能会给Django增加一点点负担。如果您不需要国际化支持,那么您可以在您的设置文件中设置 USE_I18N = False 。如果 USE_I18N 被设为 False ,那么Django会进行一些优化,而不加载国际化支持机制。
您也可以从您的 TEMPLATE_CONTEXT_PROCESSORS 设置中移除 django.core.context_processors.i18n 。
在Python代码中指定翻译字符串
翻译字符串指定这段文本需要被翻译。这些字符串出现在您的Python代码和模板中。您需要做的是标记出这些翻译字符串;而系统只会翻译出它所知道的东西。
标准的翻译函数
Django通过使用函数 _() 来指定翻译字符串(是的,函数名是一个下划线字符)。这个函数是全局有效的(也就是说,相当于它是一个内置函数);您不需要import任何东西。
在下面这个例子中,这段文本 Welcome to my site 被标记为翻译字符串:
def my_view(request):
output = _(Welcome to my site.)
return HttpResponse(output)
函数 django.utils.translation.gettext() 与 _() 是相同的。下面这个例子与前一个例子没有区别:
from django.utils.translation import gettext
def my_view(request):
output = gettext(Welcome to my site.)
return HttpResponse(output)
大多数开发者喜欢使用 _() , 因为它比较短小.
翻译字符串对于语句同样有效。下面这个例子和前面两个例子相同:
def my_view(request):
words = [Welcome, to, my, site.]
output = _( .join(words))
return HttpResponse(output)
翻译也可以对变量进行。同样的例子:
def my_view(request):
sentence = Welcome to my site.
output = _(sentence)
return Ht
您可能关注的文档
- 电线电缆行业市场发展现状以及未来发展趋势分析.doc
- 电线电缆规格型号3.doc
- 电线电缆的术语.doc
- 电线、电缆穿管和线槽敷线报验申请表.doc
- 电网企业财务管理如何创新?.doc
- 电梯电气安装试题库.doc
- 电梯安全管理人员考核题2.doc
- 电视机产品调研.doc
- 电气专业毕业设计中英文对照翻译.doc
- 电气监理实施细则 我改.doc
- 2025年成都市玩偶生产荧光涂鸦互动玩偶开发可行性研究报告.docx
- 2025年成都市海绵生产用于体育馆室外运动场地透水改造可行性研究报告.docx
- 2025年天津市体操鞋企业团建运动应用报告.docx
- 2025年上海市溶洞极限运动(速降)场地开发可行性研究报告.docx
- 2025年上海市涵洞工程施工技术应用可行性研究报告.docx
- 2025年上海市体育场馆设施扎带安全防护可行性研究报告.docx
- 2025年上海市牦牛育肥产业园区建设可行性研究报告.docx
- 2025年旅拍宠物陪伴拍摄项目可行性研究报告.docx
- 2025年上海市进口食品节庆主题快闪店可行性研究报告.docx
- 2025年上海市洗选厂尾矿综合利用产业化可行性研究报告.docx
文档评论(0)