对于我正在处理的 Django 项目,我创建了一个名为 en-ORGNAME 的翻译,它反射(reflect)了目标组织使用的特定英语术语。我为多个组织使用此应用程序的多个实例,并且希望能够根据客户组织自定义术语。
它开始得非常好,在运行 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 )。没有什么区别。无论有或没有调整后的语言环境字典,自定义翻译都适用于开发,但不适用于生产。
欢迎任何想法。
最佳答案
经过与我亲爱的 friend 和同事 @sandertuit 的彻底分析和讨论,我们发现 en-ORG 的字符太多了。 根据标准格式,语言变体扩展名只能有 2 个字符,因此我现在使用 en-OR。现在一切正常。为什么它对开发有效仍然让我困惑。也非常感谢@Risadinha 的帮助。
关于Django 翻译成自定义语言在开发中有效,但在生产中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537052/