微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第三方包的语言选择,Django

如何解决第三方包的语言选择,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 举报,一经查实,本站将立刻删除。