You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中strftime返回英文月份名?已设德语语言码仍无效

问题原因与解决方法

核心原因

Python的strftime方法依赖系统区域设置(locale),而非Django的LANGUAGE_CODE配置。Django的国际化(I18N)设置仅作用于框架自身的模板、表单等组件,不会自动覆盖Python全局的locale环境。

解决方法

方法1:配置Python全局locale

  • 先确保服务器/本地环境安装了目标语言的locale包:
    • Ubuntu/Debian:执行sudo locale-gen de_DE.UTF-8
    • CentOS/RHEL:执行sudo localedef -i de_DE -f UTF-8 de_DE.UTF-8
  • 在Django项目中手动设置locale,比如在settings.py末尾添加:
import locale
try:
    locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
except locale.Error:
    # 处理locale不存在的情况, fallback到默认
    pass

方法2:使用Django原生国际化工具(推荐)

放弃直接用strftime,改用Django提供的日期格式化工具,自动适配LANGUAGE_CODE:

  • 模板中:使用date过滤器,N代表月份缩写:
{{ your_date_variable|date:"N" }}
  • 视图中:使用date_format函数,配合语言激活:
from django.utils.formats import date_format
from django.utils.translation import activate

activate('de')  # 若已通过中间件自动激活语言,可省略
formatted_month = date_format(your_date_object, "N")

内容的提问来源于stack exchange,提问作者R-obert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:52:33