在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中文编码问题小结
Sep 28 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
PyQt5响应回车事件的方法
Jun 25 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
浅谈Python 递归算法指归
Aug 22 Python
Python实现分数序列求和
Feb 25 Python
python实现PDF中表格转化为Excel的方法
Jun 16 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 一元分词算法
2009/11/30 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
bootstrap table表格使用方法详解
2017/04/26 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
python中对list去重的多种方法
2014/09/18 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
python实现简单遗传算法
2018/03/19 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python的slice notation的特殊用法详解
2019/12/27 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
特步官方商城:Xtep
2017/03/21 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
英语硕士生求职简历的自我评价
2013/10/15 职场文书
工作表现评语
2014/01/19 职场文书
致全体运动员广播稿
2014/02/01 职场文书
超市创业计划书
2014/04/24 职场文书
大学生求职信
2014/06/17 职场文书
应届毕业生自荐书
2014/06/18 职场文书
离职证明标准格式
2014/09/15 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python