在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列表操作之extend和append的区别实例分析
Jul 28 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
用python实现k近邻算法的示例代码
Sep 06 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
python简单的三元一次方程求解实例
Apr 02 Python
深入探讨opencv图像矫正算法实战
May 21 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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和ACCESS写聊天室(十)
2006/10/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
window.open的功能全解析
2006/10/10 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
python去除扩展名的实例讲解
2018/04/23 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
师范生教师实习自我鉴定
2013/09/27 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
会计求职信范文
2014/05/24 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
员工升职自我评价
2019/03/26 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python