我的任何翻译文件在compilemessages
生效后都无法获取。
深入研究我来到的代码:
django.utils.translation.trans_real.check_for_language
def check_for_language(lang_code):
# First, a quick check to make sure lang_code is well-formed (#21458)
if not language_code_re.search(lang_code):
return False
for path in all_locale_paths():
if gettext_module.find('django', path, [to_locale(lang_code)]) is not None:
return True
return False
它利用了:
django.utils.translation.trans_real.all_locale_paths
def all_locale_paths():
from django.conf import settings
globalpath = os.path.join(
os.path.dirname(upath(sys.modules[settings.__module__].__file__)), 'locale')
return [globalpath] + list(settings.LOCALE_PATHS)
返回:
[
u'/data/.venv/mysite/local/lib/python2.7/site-packages/django/conf/locale',
'/data/www/locale/'
]
这是这样的核心代码,可能测试了一百万次,我确定我配置错了,但我真的看不出我的 LOCALE_PATHS 有什么优先权?
/data/www/locale/ 内容
/data/www/locale/
|-- en-us
| `-- LC_MESSAGES
| |-- django.mo
| `-- django.po
|-- zh-hans
| `-- LC_MESSAGES
| |-- django.mo
| `-- django.po
`-- zh-hant
`-- LC_MESSAGES
|-- django.mo
`-- django.po
设置.py
LANGUAGES_DICT = {
'en-us': _('English'),
'zh-hant': _('Traditional Chinese'),
'zh-hans': _('Simplified Chinese'),
}
LANGUAGES = LANGUAGES_DICT.items()
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
path = lambda *a: os.path.join(BASE_DIR, *a)
LOCALE_PATHS = (
path(u'locale'),
)
# Outputs: (u'/data/www/locale',)