我为 pl 语言环境创建了一个 .po 文件并翻译了所有字符串。除了“登录”字符串外,一切正常。我将“登录”翻译成“Zaloguj”,但在 HTML 中它显示为“Zaloguj się”,尽管这样的翻译甚至没有出现在我的 .po 文件中。我想“登录”是如此受欢迎,以至于 Django 提供了开箱即用的翻译(比如错误消息),但它在任何地方都有记录吗?
我想知道如何强制使用我的翻译而不是 Django 的翻译。谢谢。
我为 pl 语言环境创建了一个 .po 文件并翻译了所有字符串。除了“登录”字符串外,一切正常。我将“登录”翻译成“Zaloguj”,但在 HTML 中它显示为“Zaloguj się”,尽管这样的翻译甚至没有出现在我的 .po 文件中。我想“登录”是如此受欢迎,以至于 Django 提供了开箱即用的翻译(比如错误消息),但它在任何地方都有记录吗?
我想知道如何强制使用我的翻译而不是 Django 的翻译。谢谢。
Django 按以下顺序发现翻译,试图实现本地资源比更多全局翻译获得更高的优先级。从文档:
- LOCALE_PATHS 中列出的目录具有最高优先级,首先出现的目录的优先级高于后面出现的目录。
- 然后,它会查找并使用 INSTALLED_APPS 中列出的每个已安装应用程序中是否存在区域设置目录。首先出现的优先级高于后来出现的优先级。
- 最后,django/conf/locale 中的 Django 提供的基本翻译被用作后备。
所以我想问题是你是否把你的LOCALE_PATHS
(1)或INSTALLED_APPS
(2)按正确的顺序排列。请注意,如果将第三方应用程序放在他们面前,它们可能会否决您自己的翻译。
有关更多详细信息,请参阅https://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations。