【发布时间】:2021-01-04 20:19:10
【问题描述】:
Django 的默认 i18n 系统使用代码语言(例如英语)作为翻译键;翻译成其他语言必须使用该基础语言。例如,在 Django 模板中,您可以编写 {% trans "Hello" %},然后在法语或西班牙语翻译文件中将“Hello”翻译成“Bonjour”或“Hola”。
这有一个重大缺陷:在英语中拼写相同的单词不能在其他语言中进行不同的翻译。例如,如果我在代码的两个位置使用{% trans "Fire" %},其中一个表示燃烧的东西,另一个使用大炮,我将分别需要法语中的“Feu”和“Tirer”;但 Django 的 i18n 迫使我为“火”选择一个翻译。
翻译键模式解决了这个问题:我在代码中使用了诸如 {% trans "campsite.fire" %} 和 {% trans "cannon.fire" %} 之类的翻译键,我在英文翻译文件中将其翻译为“Fire”,在英文翻译文件中分别翻译为“Feu”和“Tirer”法语文件。
这是支持使用 Django 的 i18n 系统吗?如何将变量注入到此类翻译中?
【问题讨论】:
-
Django 使用 po 文件进行翻译。键可以是任何匹配的字符串或短语。示例
{% trans "cannon.fire" %}可以正常工作。 -
如果我需要在翻译中注入变量呢?看起来它需要“出现”在密钥中才能用于翻译。
标签: django internationalization django-i18n