【问题标题】:Template tags successfully translated but ugettext_lazy() in utils not translating模板标签已成功翻译,但 utils 中的 ugettext_lazy() 未翻译
【发布时间】:2012-06-05 21:33:37
【问题描述】:

我成功地获得了 trans 和 blocktrans 来翻译文本。

不过……

我在 utils.py 中定义了一个函数,它返回一个字典,其中包含我需要将其中一些字符串转换为当前语言的字符串。 编辑:*这是我在项目目录中创建的 utils.py,视图调用它来对字典执行某些辅助功能,然后返回更新后的字典

我做过这样的事情:

    try:
     path = default_storage.save(customercode + '/' + file.name, ContentFile(file.read()))
     results['status'] = 'success'
     results['message'] = _(u'Your file has been successfully uploaded')        
    except Exception as e:
     results['status'] = 'error'
     results['message'] = _(u'There was an error uploading your file: ') + str(e)

return results

我也加了from django.utils.translation import ugettext_lazy as _ to the top of this utils.py file..

这个“结果”字典用于我的一个视图中,其中整个字典经过进一步处理后作为上下文变量传递给模板。

我已经在 .po 文件中正确设置了翻译。所有其他模板标签都可以完美翻译。只有上面提到的字符串不翻译。

任何帮助将不胜感激。

更新:我在表单提交标签中尝试了相同的过程,它翻译得很好。只有前面提到的地方不会翻译!

PS:这是我关于 stackoverflow 的第一个问题。如果我在问这个问题时犯了错误,我提前道歉。

【问题讨论】:

  • 你说你的结果字典被进一步处理。这个处理看起来如何?您还说“所有其他模板标签”都会翻译。您是否在某个模板标签中使用了结果字典?
  • 好吧,结果字典中的其他一些键已更新,或者可能会添加一个新键。我的意思是..我使用 {{ value }} 方法在模板标签中使用 results dict 中的值。

标签: python django internationalization


【解决方案1】:

正如我所料,

我犯了一个非常愚蠢的错误。我在尝试打印翻译后的值时访问了模板中的错误变量! >_

但我想我学到的一件事是远离问题,然后在很长一段时间后重新解决问题。你必须重新学习这个问题,这有时会帮助你找到这些愚蠢的错误!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多