我正在处理这个问题大约2天。让我告诉你我做了什么,为什么做,然后问我的问题
我有一个项目,我想支持多语言,但现在它应该只支持一种语言,我会随着时间的推移添加其他语言。因此,我的设置.py具有以下功能:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'phonenumber_field',
'project.apps.ProjectConfig',
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'project/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
'django.template.context_processors.i18n'
],
},
},
]
LANGUAGE_CODE = 'tr'
LANGUAGES = [
('tr', 'Türkçe')
]
LOCALE_PATHS = [
BASE_DIR / 'project/locale',
]
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我现在只翻译了forms.py和models.py文件。 并运行makemessages:
python manage.py makemessages -l tr --ignore=venv/*
(我忽略了venv文件夹) 我所有的消息ID都是英文的,我将它们翻译成正确的方式,如下所示:
msgid "Phone"
msgstr "Telefon"
然后:
python manage.py compilemessages --ignore=venv/*
在所有这些之后,我的网站被正确地翻译成我想要的语言(这是现在唯一的语言),Django管理页面现在是“tr”,因为项目语言设置为“tr”。表单错误也是“tr”
但是。我在表格和模型中使用第三方phonenumber_字段包。尽管这个模块有自己的“tr”翻译的“.po”和“.mo”文件,但我的手机字段错误不在“tr”中,它们始终是“en”
我不知道为什么Django admin应用程序检测到我的语言代码,但phonenumber字段没有检测到
我想为项目中的所有应用设置默认语言
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐