首页 > 解决方案 > Django 翻译成自定义语言在开发中有效,但在生产中无效

问题描述

对于我正在进行的 Django 项目,我创建了一个名为 en-ORGNAME 的翻译,它反映了目标组织使用的特定英语行话。我为多个组织使用此应用程序的多个实例,并希望能够根据客户组织自定义行话。

开始非常好,在运行 django makemessages -l en_ORGNAME 之后,我最终得到了一个可以翻译的 .po 文件。运行 compilemessages 确保我也必须使用 .mo 文件。

应用程序仅使用 LANGUAGE_CODE 设置来确定语言(无上下文处理器或 URL)。语言环境路径设置为

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),)

当我运行应用程序(使用 docker-compose 和开发服务器)时,一切正常,我的翻译按预期显示。但是,当我使用 Rancher 部署应用程序(使用相同的 docker 映像)时,自定义翻译停止工作。我使用环境变量在容器级别设置语言,所有其他语言都可以正常工作。

我已经在开发中测试了相同的堆栈(NGINX、Gunicorn、Django),并且我的自定义翻译工作正常。我尝试将自定义翻译添加到 django.conf.locale 字典中(按照Add custom language for localization in Django app)。从来没有什么不同。无论有没有调整的语言环境字典,自定义翻译都适用于开发,但不适用于生产。

任何想法都非常受欢迎。

标签: djangodockerdjango-i18n

解决方案


经过与我亲爱的朋友和同事@sandertuit 的深入分析和讨论,我们发现 en-ORG 字符太多了。根据标准格式,语言变体扩展名只能有 2 个字符,所以我现在使用 en-OR。现在一切正常。为什么它在开发中起作用仍然让我感到困惑。也非常感谢@Risadinha 的帮助。


推荐阅读