Wagtail: تم إيقاف استخدام دوال uggettext

تم إنشاؤها على ١٨ فبراير ٢٠٢٠  ·  5تعليقات  ·  مصدر: wagtail/wagtail

ملخص القضية

سيؤدي استدعاء أي من وظائف ugettext(), ugettext_lazy(), ugettext_noop(), ungettext() و ungettext_lazy() من django.utils.translation إلى رفع تحذير الإيقاف RemovedInDjango40Warning .

خطوات التكاثر

  1. ابدأ خادم التطوير مع تمكين التحذيرات لمشروع Wagtail مع تثبيت Django 3.0: python -Wall manage.py runserver
  2. مراقبة الإخراج. سيصدر عشرات التحذيرات المشابهة لهذا التحذير:
/Users/stormh/torchbox/wagtail/wagtail/admin/edit_handlers.py:762: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy().
  'heading': ugettext_lazy('Scheduled publishing'),
  • لقد أكدت أنه يمكن إعادة إنتاج هذه المشكلة كما هو موصوف في مشروع Wagtail جديد: نعم

تم إهمال وظائف ugettext في Django 3.0

سبب الإيقاف هو أن هذه أسماء مستعارة قديمة لنظيراتها المقابلة من gettext . تم استخدامها مرة واحدة لتوافق unicode مع Python 2.7 وفقًا لهذه البطاقة

كيف يمكننا حل هذا؟

يجب علينا استبدال جميع الإشارات إلى ugettext وظائف مع هم gettext نظرائهم. يجب ألا يكون لهذا تأثير سلبي لأن Wagtail لم يعد يدعم Python 2.7 وسيكون هذا التغيير متوافقًا مع Django 2.2 LTS.

الآن ، هل علينا الإسراع في تنفيذ هذا التغيير؟ لا ليس بالفعل كذلك. وظائف ugettext ستتم إزالتها في Django 4.0. الذي من المقرر إصداره في عام 2022 وفقًا لهذا المخطط الذي أخذته من https://www.djangoproject.com/download/

ومع ذلك ، سيكون من الجيد التخلص من تحذيرات الإهمال السيئة هذه لتجربة مشروعي بالكامل المحدثة 👌

تفاصيل تقنية

  • إصدار Python: 3.8.1
  • إصدار Django: 3.0.3
  • نسخة الذعرة: 2.9a0
  • إصدار المتصفح: n / a
Django i18n good first issue Bug

التعليق الأكثر فائدة

danihodovic يعتمد على حالة الاستخدام الخاصة بك ، هذه هي الطريقة التي تخفيها عند تشغيل pytest.

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

ال 5 كومينتر

هل هناك أي طريقة لإسكات هذا التحذير حتى يتم حله؟

danihodovic يعتمد على حالة الاستخدام الخاصة بك ، هذه هي الطريقة التي تخفيها عند تشغيل pytest.

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

شكرا لك @ مارتين !

اكتمل في # 5907 ، ولكن نظرًا لأنه من المحتمل تمامًا أن تتسلل الأحداث الجديدة نتيجة لدمج العلاقات العامة الحالية ، سأترك هذا مفتوحًا لتذكيرنا بالقيام بمسح آخر قبل الإصدار 2.9.

أعيد التحقق ، ولم تتسلل أي أحداث جديدة ، لذلك أعتقد أننا جميعًا بخير 👍

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات