【问题标题】:Django way for multiple translations for one language or parametrize translations一种语言的多种翻译或参数化翻译的 Django 方式
【发布时间】:2015-04-24 11:41:28
【问题描述】:

我有 django 应用程序,它是用于多个电视设备的 javascript 应用程序的后端。每个设备都有不同的前端,但我认为创建多个 .po 文件对于这个目标来说不是一个好主意,因为这些设备的大多数翻译都是重复的。

这是否可以为翻译添加额外的参数,例如在我的情况下,一些带有参数“设备”的函数会非常有用?如果没有,用Django的方式怎么办?

【问题讨论】:

  • 翻译取决于您发送的请求,例如,当您从浏览器发送请求时,它会发送标头“Accept-Language:en-US,en;q=0.8,ms;q=0.6,ja;q =0.4",这将决定哪个语言服务器必须返回输出。

标签: python django internationalization translation


【解决方案1】:

您可能不使用上下文标记:https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#contextual-markers 和 pgettext() 尽管您可能必须手动将它们添加到生成的 .pot 文件中,因为如果它们被参数化,标准提取将不会选择可用选项。

【讨论】:

    【解决方案2】:

    所以你需要翻译所有版本。至少所有的键。如果您想将不同的键映射到相同的值,您可以这样做。像这样。

    #: core/models.py:160
    msgid "previous"
    msgstr "Previous"
    
    #: core/models.py:161 core/models.py:169
    msgid "Back"
    msgstr "Previous"
    

    【讨论】:

      【解决方案3】:

      我假设您正在使用 Django 创建一个 API,并且您使用 javascript 使用该 API。您可以从标头中检查用户代理字符串,并根据请求进行适当的重定向。

      【讨论】:

      • 是的,Django 是我的 API,但我需要为一种语言存储 2 个不同版本的翻译。例如,在一个设备上,后退按钮称为“后退”,在另一个设备上称为“上一个”。我想将所有翻译存储在 .po 文件中,而不是在 js 客户端中。这就是为什么我正在寻找像ugettextByParam(msgID, deviceID)这样的方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      相关资源
      最近更新 更多