在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中if __name__ == "__main__"详细解释
Oct 21 Python
用Python实现协同过滤的教程
Apr 08 Python
Python线程中对join方法的运用的教程
Apr 09 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
python输出带颜色字体实例方法
Sep 01 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
在keras下实现多个模型的融合方式
May 23 Python
基于Python实现的购物商城管理系统
Apr 27 Python
聊聊Python String型列表求最值的问题
Jan 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小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
python 正确保留多位小数的实例
2018/07/16 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python常用数据重复项处理方法
2019/11/22 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
django 模型字段设置默认值代码
2020/07/15 Python
python将数据插入数据库的代码分享
2020/08/16 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
师范院校学生自荐信范文
2013/12/27 职场文书
js之ajax文件上传
2021/05/13 Javascript
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
python中如何对多变量连续赋值
2021/06/03 Python