البرمجة

تجنب خطأ F821 في flake8 مع gettext

لتجنب ظهور خطأ “F821 undefined name ‘_'” في flake8 عندما يكون _ قد تم تثبيته بواسطة gettext، يمكنك استخدام تقنية محددة. يعتمد الحل على استيراد النمط المناسب من استعراض gettext الخاص بك.

في الواقع، يمكنك تجنب هذا الخطأ عن طريق تعيين الدالة “_” كمتغير محلي في الوحدات التي تحتوي على استدعاءات لهذه الدالة. هذا الأمر يمكن أن يتم عبر استخدام دالة gettext.gettext بدلاً من _ مباشرة. على سبيل المثال، في الكود الخاص بك، يمكنك تغيير lib.py إلى ما يلي:

python
import gettext def fct(sentence): _ = gettext.gettext return _(sentence)

وفي main_script.py، يمكنك استخدام _ كالمعتاد:

python
#!/usr/bin/env python3 import gettext import lib gettext.translation('myapp', 'locale', ['de']).install() print(_('A sentence')) print(lib.fct('A sentence'))

بهذه الطريقة، سيتم تعيين _ كمتغير محلي في كل وحدة تحتاج إليها، وبالتالي لن يتم عرض خطأ flake8.

المزيد من المعلومات

لتوضيح الحل بشكل أفضل، يمكنك أن تفهم أن gettext تثبت دالة _ في الفضاء الأساسي للغة بايثون، وهذا هو السبب في ظهور خطأ flake8. باستخدام الحلا السابق، نقوم بتعيين _ كمتغير محلي في كل وحدة تستخدم gettext بدلاً من استخدام الدالة المثبتة في الفضاء الأساسي. هذا يسمح لنا بتجنب الصراع مع الاسم _ المثبت بواسطة gettext.

باستخدام gettext.gettext بدلاً من _ مباشرة، نضمن أننا نستخدم الدالة المثبتة بواسطة gettext في الفضاء الأساسي بدلاً من الدالة _ القياسية. هذا يعني أننا نستطيع تجنب الخطأ المزعج الذي يظهر في flake8 دون الحاجة إلى استخدام تعليمات # noqa أو تجاهل الخطأ.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر