在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中__new__与__init__方法的区别详解
May 04 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
Python探索之SocketServer详解
Oct 28 Python
python学生管理系统代码实现
Apr 05 Python
python实现linux下抓包并存库功能
Jul 18 Python
对python周期性定时器的示例详解
Feb 19 Python
python实现简单日期工具类
Apr 24 Python
python原类、类的创建过程与方法详解
Jul 19 Python
PyTorch预训练的实现
Sep 18 Python
浅谈Python3中print函数的换行
Aug 05 Python
python实现简单贪吃蛇游戏
Sep 29 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 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删除数组中的重复元素
2019/03/03 PHP
PHP函数积累总结
2019/03/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
Convert Seconds To Hours
2007/06/16 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
javascript 闭包详解
2015/07/02 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
详解Python中的循环语句的用法
2015/04/09 Python
理解python正则表达式
2016/01/15 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Anaconda入门使用总结
2018/04/05 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
Python实现扫码工具的示例代码
2020/10/09 Python
大学运动会入场词
2014/02/22 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
预备党员半年考察意见
2015/06/01 职场文书
个人更名证明
2015/06/23 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang