在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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
详解Python中的array数组模块相关使用
Jul 05 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
python 实现简易的记事本
Nov 30 Python
Python对excel的基本操作方法
Feb 18 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 缓冲的免费实现方法
2006/10/09 PHP
人大复印资料处理程序_输入篇
2006/10/09 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
laravel5.6实现数值转换
2019/10/23 PHP
更优雅的事件触发兼容
2011/10/24 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
Python标准异常和异常处理详解
2015/02/02 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
python 容器总结整理
2017/04/04 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
纺织工程专业个人求职信范文
2014/01/27 职场文书
产品质量承诺范本
2014/03/31 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
离职信范本
2015/06/23 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers