Django 翻译成自定义语言在开发中有效,但在生产中无效

标签 django docker django-i18n

对于我正在处理的 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/

相关文章:

python - 从 Django 中的数据库获取某些元素

linux - 如何链接由两个不同的 docker-compose.yml 生成的两个 docker 容器

bash - grep'ing时忽略命令输出

python - 如何翻译动态表单选择

python - 在 django 页面中允许 'fuzzy' 翻译?

python - 使用 django 和 sqlalchemy 但后端 mysql

python - Django 应用程序 : Foreign Key pointing to an abstract class

python - django admin - 强制用户创建新记录而不是利用现有记录

java - AWS ECS 任务进入挂起状态

Django - 防止模板中可用语言名称的翻译