当前位置: 首页 > 知识库问答 >
问题:

Django,gettext msgstr和默认翻译

公瑞
2023-03-14

我正在考虑从自然gettext msgstr切换到固定的。例如从

        {% trans "Welcome to the site" %}

        {% trans "welcome_to_site" %}

这是因为当站点上的语言数量不断增加时,文本字符串更新变得越来越麻烦,并且每次连续部署版本的所有翻译都不实用。然而,改用伪造的MSGID将使网站模板和源代码(英语是主要语言)的工作变得繁琐。

金字塔框架和变色龙模板通过允许gettext翻译的默认值,为这个问题提供了一个简洁的解决方案。例如,如果没有可用的msgidmsgstr数据(英文)。采购订单文件使用默认值。因此,您可以将自然文本和msgid混合到您的翻译中。例子:

         from pyramid.i18n import TranslationString
         ts = TranslationString('add-number', default='Add ${number}',
                            domain='form', mapping={'number':1})

与Django类似的东西存在吗?

或者-是否有任何基于上下文的翻译工具,即使msgid文本不再匹配,也可以使用中的文件和行号信息进行翻译。采购订单文件评论?

如果没有解决方案,我想实现一个自定义翻译函数和自定义xtrans和xBlock trans模板标签,这需要一个msgstr提示。

共有1个答案

邢飞雨
2023-03-14

如果我错了,请纠正我,但我认为这个{%trans"欢迎来到网站"%}不是英文翻译,它只是一个占位符字符串和一个默认值,以防同时找不到翻译(我称之为《开发者英语》)。除了源代码中的这些“英语”字符串之外,您还可以提供单独的英语翻译。这是我理解Django翻译的方式,但请随意纠正我。

 类似资料:
  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编

  • 问题内容: 我有一个具有日期时间字段的模型: 当我在内置的django admin中检查该应用程序时,还会附加时间,因此,如果你尝试保存它,则会返回错误。如何设置默认的日期呢?(也不起作用) 问题答案: 这就是为什么你应该始终导入基本模块:而不是该模块中的类的原因f。 你犯的另一个错误是使用实际调用默认的函数。这意味着所有模型都将在首次定义类时获得日期-因此,如果你的服务器在不重新启动Apache

  • 问题内容: 我有以下模型代码: 但是我希望,它将生成类似 这没有发生,当我运行它时会产生: 深入研究的代码并进行谷歌搜索没有给我任何好处,但是James Bennet的注释不被认为会影响生成,但是Django管理员需要它。即使是这样,我如何获得理想的效果? 我的版本是1.3.0最终版 问题答案: 请注意,该参数也可以采用可调用对象:https : //docs.djangoproject.com/

  • 问题内容: 我有一个模型如下: 我也有上述模型的模型形式,如下所示: 我想知道如何为该坦克隐藏字段设置默认值。这是我到目前为止显示/保存表格的功能: 问题答案: 你有两个选择,可以在调用表单构造函数时填充值: 或在表单定义中设置值:

  • 问题内容: 我有以下db型号: 我使用以下命令添加新实例: 我的问题:数据库中的所有记录在日期字段中都有相同的值,即第一次付款的日期。服务器重新启动后,一条记录具有新的日期,而另一条记录与第一条记录具有相同的日期。看起来有些数据被缓存了,但我找不到位置。 数据库:mysql 5.1.25 django 1.1.1版 问题答案: 在定义模型时,似乎正在计算,而不是每次添加记录时。 Django有一个

  • 问题内容: 如何从“全部”更改默认过滤器选择?我有一个名为领域它有三个值:和。当我在Django admin中使用时,默认情况下将过滤器设置为“全部”,但默认情况下我想将其设置为待处理。 问题答案: