当前位置: 首页 > 编程笔记 >

在Python中的Django框架中进行字符串翻译

洪俊能
2023-03-14
本文向大家介绍在Python中的Django框架中进行字符串翻译,包括了在Python中的Django框架中进行字符串翻译的使用技巧和注意事项,需要的朋友参考一下

使用函数 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 )。 如果你使用位置插入的话,翻译动作将不能重新排序占位符文本。

 类似资料:
  • 问题内容: 我正在尝试采用字符串形式的二进制数并将1和0翻转,即将字符串中的所有1都更改为0,并将所有0都更改为1。我是Python的新手,已经花了几个小时想弄清楚它。 问题答案: 琥珀色的答案虽然优越,但可能不是最明确的,因此,这里有一个超级基本的迭代示例: 这可以用 更好的 方法来完成…替换,理解,但这只是一个例子。 一旦您了解了这个问题的基础,我就会从该问题的其他答案中学习。这种方法缓慢而痛

  • 我有一个从xml文档中读取数据的程序。在这个xml文档中,一些属性包含特殊字符,如“\n”、“t”等。 有没有一种简单的方法可以将所有这些字符串替换为实际的字符,或者我必须像下面的例子一样为每个字符手动替换? 手动示例: 编辑: 我正在寻找某种方法来处理字符串,就像这样的转义字符串(尽管我知道这是行不通的)

  • 这是django框架中的python代码。我已经成功安装了django,但我不知道为什么会出现错误。 事实上,我刚开始与django合作,所以请看一下故障。 这可能是因为它无法访问URL和contrib目录。请帮忙,谢谢 .

  • 我正在用Django做一个中文博客。我用中文写所有我能控制的东西,如文章文本,博客标题,博客导航,评论和联系人表单的标签标签。我唯一不能控制的是表单提交错误,如“此字段是必需的。”,“输入有效的电子邮件地址。”。因为我使用django评论框架和表单库来制作我的评论表单和联系人表单,我不知道如何将英文版替换成中文版。 为什么django翻译一些错误消息而忽略其他错误消息? 如果django不能自动翻

  • 我有一些字符串要连接,结果字符串会很长。我还有一些要连接的变量。 如何组合字符串和变量,使结果成为多行字符串? 以下代码抛出错误。 这个我也试过 请建议一种方法。

  • 本文向大家介绍详解Python的Django框架中的中间件,包括了详解Python的Django框架中的中间件的使用技巧和注意事项,需要的朋友参考一下 什么是中间件 我们从一个简单的例子开始。 高流量的站点通常需要将Django部署在负载平衡proxy之后。 这种方式将带来一些复杂性,其一就是每个request中的远程IP地址(request.META["REMOTE_IP"])将指向该负载平衡p