网站大量收购闲置独家精品文档,联系QQ:2885784924

django-I18N国际化.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
django-I18N国际化

I18N国际化 “I18N”18表示Internationlization这个单词首字母I和结尾字母N之间的字母有18个Django本身是完全国际化了的,所有的字符串均因翻译所需而被标记,并且设定了与地域无关的显示控制值,如时间和日期。您只需要添加少量的挂接代码到您的Python代码和模板中。 这些挂接代码被称为* 翻译字符串* 。它们告诉Django:如果这段文本的译文可用的话,它应被翻译为终端用户指定的语言。Django会根据用户的语言偏好,在线地运用这些挂接指令去翻译Web应用程序。 下面我们用一个例子来展示I18N的使用: 首先:打开hljuoj的setting.py然后在第37行把语言改成zh-cn,下面的一行languages=(???)显示出了该项目支持的语言 接下来:安装hljuoj\3rd下的gettext和poedit 安装完成后在cmd下输入xgettext --version看是否安装成功 然后:在hljuoj目录下输入下面两条命令来创建翻译目录 django-admin.py makemessages -l zh_CN -a django-admin.py makemessages -l en –a 然后到hljuoj\conf\locale的目录里就会发现 这两个文件夹 一个对应翻译中文的,另一个对应English 接下来到zh_CN\ LC_MESSAGES文件夹中:我们发现这个文件,双击打开就会打开Poedit翻译编辑器 然后我们找到Contest 和Contests并把它们翻译成中文 然后保存,此时可能弹出如下错误不用理会 然后仍旧在hljuoj目录下 执行以下三条命令 django-admin.py compilemessages md locale\zh_CN\LC_MESSAGES\ copy conf\locale\zh_CN\LC_MESSAGES\*.molocale\zh_CN\LC_MESSAGES\ /Y 接下来最后一步就是启动服务器 然后打开后台页面: 我们发现此时的英文Contest已被翻译成中文了. 我们可以试着翻译英文(en文件夹)的部分 对应英文版本的命令在hljuoj目录下的compile_i18n.bat文件里(另外创建翻译目录的命令在extract_i18n.bat里,这俩是学长写的批处理文件 以后就不用挨个手打了)^0^. 现在应该讨论一下如何指定待翻译字符并且传到django.po文件里 打开hljuoj\account目录里的models.py发现这行 这里将ugettext设了个别名”_”来简化 我们可以看到有很多类似 “_(‘school’)的语句 带”_”这些就被指定为翻译字符串. Django使用ugettext函数来指定一个翻译字符串 然后通过创建翻译目录命令将这些翻译字符串传到django.po文件里.接下来我们就可以通过软件轻松地翻译了 以上我们对models内的内容进行了标记翻译,我们还可以标记翻译views , html模板等等的内容 在views中进行标记翻译与models类似,在模板中进行标记翻译则略有不同 首先我们要将{% load i18n %}放在模板的最前面 若是我们标记翻译一个字符串常量或可变内容我们用{% trans %} 例: {% trans “this is the title”%} 如果我们标记的含有模板变量,此时我们就不能用{% trans %}了,我们要用{% blocktrans %} 例: {% blocktrans %}This string have a {{value}} inside.{% endblocktrans %} 然后执行extract_i18n.bat此时就能在django.po文件里看到” this is the title”了,然后进行翻译就ok了. (extract_i18n.bat里命令的作用是将已标记为待翻译的字符串传到django.po文件中 compile_i18n.bat里的命令是将保存后生成的django.mo文件编译并copy到工程中去) 余下的参考django国际化一章~

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档