تقنية

gettext في بايثون: هل fallback يترجم النص تلقائيًا؟

طلب ar دون ملف mo يعطي NullTranslations وتبقى Hello
مجلد فارغ وfallback=True. [1] [2]

الخيار لا ينشئ ترجمة مفقودة. [1] [2]

الخلاصة السريعة

عند غياب ملف .mo تعيد translation كائن NullTranslations مع fallback=True. [1] [2]

  • نطلب ar في مجلد مؤقت فارغ. [1] [2]
  • نوع الكائن NullTranslations. [1] [2]
  • تبقى Hello كما هي. [1] [2]
  • تعطيل الخيار يرفع FileNotFoundError هنا. [1] [2]
  • اختبرنا 3.12.14؛ الحالة لملف غائب. [1] [2]

المثال

import gettext as g,tempfile as t
with t.TemporaryDirectory() as d:
 tr=g.translation('demo',d,['ar'],
                  fallback=True)
 print(type(tr).__name__)
 print(tr.gettext('Hello'))

[1] [2]

المخرجان NullTranslations ثم Hello؛ لم تصبح الرسالة عربية. [1] [2]

ما وظيفة الكائن؟

دون بديل ترجمة مضاف، يعيد NullTranslations.gettext الرسالة نفسها. [1] [2]

عند تعطيل fallback لاحظنا FileNotFoundError في المجلد نفسه. [1] [2]

غياب الملف يعيد NullTranslations مع True وخطأ FileNotFoundError مع False
غياب الملف في الحالتين. [1] [2]

حد التجربة

لا نختبر ملفًا تالفًا أو ترجمة آلية. يجب ألا يساوي التقرير بين إرجاع رسالة وترجمتها. [1] [2]

المراجع

  1. Python: gettext
  2. CPython 3.12.14: gettext.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.