افزونه‌ای برای افزودن قابلیت پشتیبانی از متن دوجهته

اگر در صفحات وب، از اشتباه بودن چینش و جهت متن فارسی و انگلیسی اذیت می‌شوید، شاید بد نباشد افزونه Add Bidi Support را نصب کنید. در این مقاله توضیح می‌دهم که این افزونه چیست و چه می‌کند.

دیروز افزونه ساده‌ای برای فایرفاکس نوشتم که با افزودن قابلیت پشتیبانی از متن دو جهته به مرورگر (هم میزکار و هم اندروید)، مشکل نمایش نادرست جهت متن در صفحات وب را تا حد زیادی حل می‌کند. این افزونه کاری را انجام می‌دهد که اساسا باید توسط توسعه‌دهندگان وب انجام می‌شده ولی نشده است. اما از آن‌جایی که بسیاری نمی‌دانند مشکل چیست، در این مطلب توضیح می‌دهم که داستان از چه قرار است و این افزونه چه مشکلی را به چه شکلی حل کرده یا کاسته است.

داستان چیست؟

فضای وب در بسیاری موارد برای ما فارسی زبانان (و بسیاری دیگر که با زبان‌های راست به چپ کار می‌کنند) مناسب‌سازی نشده است. وقتی یک وب‌گاه را باز می‌کنید، یا کاملا فارسی (راست به چپ)‌ است یا کاملا انگلیسی (چپ به راست) اگر متنی بر خلاف زبان اصلی آن صفحه نوشته شود، بد نمایش می‌یابد.

چالش اینجاست که توسعه‌دهندگان وب، یا به تاکید باید بگویند صفحه راست به چپ است و یا چپ به راست. این کار در مواقعی که محتوای صفحه فقط به یک زبان منتشر می‌شود، مشکلی ایجاد نمی‌کند. اما در شبکه‌های اجتماعی که هر کسی ممکن است به یک زبان اقدام به تولید محتوا کند، چه باید کرد؟

اینجا، مفهومی به میان می‌آید به نام متن دو جهته یا bidirectional text یا به اختصار #bidi. در اینجا بحث این است که بدون مشخص کردن دقیق جهت، مرورگر بتواند جهت را درست تشخیص داده و متن را در جهت درست نمایش دهد. روش‌های مختلفی وجود دارد برای این منظور. بهترین روش، تعیین جهت بر اساس اولین حرف است. در این صورت، اگر متنی با حرفی از زبانی شروع شود که راست به چپ است، تمام آن متن (پاراگراف) در جهت همان زبان نمایش می‌یابد. تلگرام، توییتر و بسیاری برنامه‌های دیگر هم چنین می‌کنند. این روش، مشکلاتی هم دارد. اما مزیت‌های آن به مراتب بیش از معایب‌اش است.

حل مشکل متن چندجهته با افزونه Add Bidi Support

مصادیق این مشکل را برنامه‌نویس‌ها در جاهایی مثل گیت‌هاب به دفعات دیده‌اند. پیش‌تر، در انجمن OSM هم چنین مشکلی وجود داشت (و هنوز هم وجود دارد). در این تصاویر می‌بینید که با کمک افزونه جدید، این مشکلات بدون آسیب رساندن به سایر محتوای صفحه، حل شد‌ه‌اند.

آیا این افزونه راه حل است؟

قطعا این افزونه راه حل نیست. این مشکل باید توسط خود توسعه‌دهندگان در صفحات وب اصلاح شود. هدف من از نوشتن این افزونه این است که در مقطع فعلی، مشکل نمایش را رفع کرده یا کاهش دهم. اما اساسا هدفم رسیدن به نقطه‌ای است که این افزونه بی‌استفاده باشد. یعنی توسعه‌دهندگان تغییرات ساده‌ای در کدها بدهند که شاهد چنین مشکلاتی نباشیم.

در خلال توسعه و استفاده از این افزونه، تجربیاتم را مکتوب و مستند می‌کنم تا بتوان به کمک آن، یک راهنما و معیار ساده اما کارآمد در اختیار توسعه‌دهندگان قرار بگیرد.

سخن پایانی

در پایان تاکید کنم که من، متخصص این کار نیستم. (البته نمی‌دانم متخصص‌اش کیست که تا کنون کاری نکرده است.) در نتیجه هم من، هم bidi و هم این افزونه نیازمند مشارکت شما هستیم. نصب کنید، استفاده کنید و مشکلات را گزارش دهید. اگر هم راهکار بهتری می‌شناسید، اعلام کنید.

می‌توانید افزونه را از مخزن افزونه‌های فایرفاکس در این نشانی دریافت کنید.

اگر می‌خواهید بدانید چگونه می‌شود مشکل را در پروژه‌های نرم‌افزاری حل کرد، من قبلا روی پروژه‌های Plume و FluxBB و Sengi و WhaleBird برای افزودن قابلیت bidi مشارکت داشته‌ام. از مراحل انجام کار در Plume و FluxBB فیلم هم گرفته و منتشر کرده‌ام. می‌توانید به آن‌ها رجوع کنید.