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

时间:2019-02-05 14:51:12

标签: django docker django-i18n

对于我正在从事的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)。没什么区别。无论有没有经过调整的语言环境字典,定制翻译都可以在开发中使用,但不能在生产中使用。

任何想法都非常受欢迎。

1 个答案:

答案 0 :(得分:1)

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