---
title: "Django国际化的坑"
url: "https://lerry.me/post/2018/06/django-i18n-issue"
date: 2018-06-30T11:13:03.937Z
updated: 2026-08-28T05:16:26.841Z
tags:
  - "Python"
  - "Django"
  - "i18n"
language: zh-CN
---

# Django国际化的坑

最近一个项目要用到国际化，按照官方教程配置始终不生效，最后发现是文件夹名字的原因

### settings.py

```python
MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',  # 排在SessionMiddleware之后
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'wagtail.core.middleware.SiteMiddleware',
    'wagtail.contrib.redirects.middleware.RedirectMiddleware',
]

USE_I18N = True
LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', '中文简体'),
]
LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'locale'),
]

```

### 注意 Mac默认不区分大小写，Linux区分 文件夹名字应该是 `zh_Hans`

```
locale
└── zh_Hans
    └── LC_MESSAGES
        ├── django.mo
        └── django.po
```
