在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发布模块的步骤分享
Feb 21 Python
在Docker上部署Python的Flask框架的教程
Apr 08 Python
python基于phantomjs实现导入图片
May 13 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
浅析python中while循环和for循环
Nov 19 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
Python实现随机爬山算法
Jan 29 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
python井字棋游戏实现人机对战
Apr 28 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 Ubb代码编辑器函数代码
2012/07/05 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
业务主管岗位职责
2013/11/20 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
物业保安辞职信
2015/05/12 职场文书
生产车间管理制度
2015/08/04 职场文书
Pandas 数据编码的十种方法
2022/04/20 Python