在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的lambda匿名函数的简单介绍
Apr 25 Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
python遍历文件夹下所有excel文件
Jan 03 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
PyTorch中的Variable变量详解
Jan 07 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
Python实现aes加密解密多种方法解析
May 15 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中如何实现Hook机制
2017/11/14 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
JS常用算法实现代码
2016/11/14 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python中文编码知识点
2019/02/18 Python
Python实现名片管理系统
2020/02/14 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
计算机求职信
2013/12/01 职场文书
甜点店创业计划书
2014/01/27 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
社区活动总结报告
2014/05/05 职场文书
全国文明单位申报材料
2014/05/31 职场文书
2019年入党思想汇报
2019/03/25 职场文书
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python