第三方包的语言选择,Django

问题描述

我正在处理这个问题大约 2 天。让我告诉你我做了什么以及我为什么要问我的问题。

我有一个项目想要支持多语言,但现在它应该只支持一种语言,我会随着时间的推移添加其他语言。所以我的 settings.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_field 包。即使这个模块有自己的“tr”翻译“.po”和“.mo”文件,我的电话字段错误不在“tr”中,它们一直是“en”。

我不知道为什么 Django 管理应用程序检测到我的 LANGUAGE_CODE 而 phonenumber_field 没有。

我想为项目中的所有应用设置认语言。

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)