在Python中的Django框架中进行字符串翻译


Posted in Python onJuly 27, 2015

使用函数 ugettext() 来指定一个翻译字符串。 作为惯例,使用短别名 _ 来引入这个函数以节省键入时间.

在下面这个例子中,文本 "Welcome to my site" 被标记为待翻译字符串:

from django.utils.translation import ugettext as _

def my_view(request):
  output = _("Welcome to my site.")
  return HttpResponse(output)

显然,你也可以不使用别名来编码。 下面这个例子和前面两个例子相同:

from django.utils.translation import ugettext

def my_view(request):
  output = ugettext("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 HttpResponse(output)

(以上两个例子中,对于使用变量或计算值,需要注意的一点是Django的待翻译字符串检测工具, make-messages.py ,将不能找到这些字符串。 稍后,在 makemessages 中会有更多讨论。)你传递给 _() 或 gettext() 的字符串可以接受占位符,由Python标准命名字符串插入句法指定的。 例如:

def my_view(request, m, d):
  output = _('Today is %(month)s %(day)s.') % {'month': m, 'day': d}
  return HttpResponse(output)

这项技术使得特定语言的译文可以对这段文本进行重新排序。 比如,一段英语译文可能是 "Today is November 26." ,而一段西班牙语译文会是 "Hoy es 26 de Noviembre." 使用占位符(月份和日期)交换它们的位置。

由于这个原因,无论何时当你有多于一个单一参数时,你应当使用命名字符串插入(例如: %(day)s )来替代位置插入(例如: %s or %d )。 如果你使用位置插入的话,翻译动作将不能重新排序占位符文本。

Python 相关文章推荐
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
Python上下文管理器和with块详解
Sep 09 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
python如何使用腾讯云发送短信
Sep 17 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
实战Python爬虫爬取酷我音乐
Apr 11 Python
Python之matplotlib绘制饼图
Apr 13 Python
Python中特殊函数集锦
Jul 27 #Python
Python实现截屏的函数
Jul 26 #Python
Python计算已经过去多少个周末的方法
Jul 25 #Python
Python基于动态规划算法计算单词距离
Jul 25 #Python
Python中Django框架利用url来控制登录的方法
Jul 25 #Python
Python实现模拟登录及表单提交的方法
Jul 25 #Python
Python基于有道实现英汉字典功能
Jul 25 #Python
You might like
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
PHP新手上路(三)
2006/10/09 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python修改字典内key对应值的方法
2015/07/11 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
Python中安装easy_install的方法
2018/11/18 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
创建文明学校实施方案
2014/03/11 职场文书
事假请假条范文
2014/04/11 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
好的促销活动方案
2014/08/21 职场文书
综合管理员岗位职责
2015/02/11 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
详解Python类和对象内容
2021/06/22 Python