django - 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)。从来没有什么不同。无论有没有调整的语言环境字典,自定义翻译都适用于开发,但不适用于生产。
任何想法都非常受欢迎。
解决方案
经过与我亲爱的朋友和同事@sandertuit 的深入分析和讨论,我们发现 en-ORG 字符太多了。根据标准格式,语言变体扩展名只能有 2 个字符,所以我现在使用 en-OR。现在一切正常。为什么它在开发中起作用仍然让我感到困惑。也非常感谢@Risadinha 的帮助。
推荐阅读
- python - 样式表在 Flask 框架中使用时无法正常工作。有什么建议么?
- android - 在我失去连接之前,有没有办法通过蓝牙发送命令
- python - 我正在尝试为我的工作应用程序获取访问令牌,但我得到“未找到请求的资源”。错误信息
- php - 使用 orderby 缓存关系 laravel
- javascript - 替换保留原始空间的单词
- http - 只下载文件的一部分
- stata - 我可以在 Stata 中使用哪个函数来复制定量变量?
- python - 列表仅包含整数列表中的一个字符串
- postgresql - 通过 AWS Lambda 连接到 RDS AWS 时,Psycopg2 挂起
- php - 显示目录中的所有 .jpg 图像和 .mp4 文件?