Skip to content

Accessibility fa

James Morris edited this page Jul 29, 2026 · 1 revision

دسترس‌پذیری

🌎 زبان: فارسیمشاهدهٔ هر ۳۳ زبان

LockedIn CLI یک شوخی است، اما دسترس‌پذیریِ آن شوخی نیست. یک رابط کاربریِ ترمینال با این حد از غنای بصری — نشان‌واژه‌ی گرادیانی، کارت‌های خط‌کشیده، اسپینرهای بریل، ایموجی — بدون طراحیِ درست، استفاده با فناوری کمکی را واقعاً دشوار می‌کند. این صفحه توضیح می‌دهد که CLI چه می‌کند، چگونه آن را روشن کنیم و بهترین شیوه‌های کلیِ پشت آن (که فراتر از این پروژه هم به کار می‌آید).

چهار حالت

حالت پرچم متغیر محیطی چه می‌کند
صفحه‌خوان --accessible (--a11y, --screen-reader) LOCKEDIN_ACCESSIBLE=1، یا TERM=dumb متن ساده‌ی خطیِ تمیز: بدون حاشیه، بدون هنر اسکی، بدون حرکت اسپینر، بدون نگاره‌های تزئینی؛ رنگ خاموش؛ اعلانِ کوتاه؛ نشانه‌های معنایی ("Post:" … "(end of post)").
کنتراست بالا --high-contrast (--hc) LOCKEDIN_HIGH_CONTRAST=1 یک پالتِ پرکنتراست برای کم‌بینایی: متن ثانویه‌ی سفیدِ ناب، تأکیدهای روشن‌تر، بدون کم‌رنگی، تأکیدِ یکدست به‌جای گرادیانِ کم‌کنتراست.
حواس‌پرتی کم --low-distraction (--calm, --reduce-motion) LOCKEDIN_LOW_DISTRACTION=1، LOCKEDIN_REDUCE_MOTION=1 حرکت کاهش‌یافته (بدون انیمیشن اسپینر)، بدون ایموجیِ تزئینی، رنگِ یکدستِ آرام — چیدمان بصری را حفظ می‌کند. برای کاهش بار شناختی/حسی.
ساده / تک‌رنگ --plain (--mono, --monochrome) LOCKEDIN_PLAIN=1، یا NO_COLOR=1 همه‌ی رنگ را غیرفعال می‌کند در حالی که چیدمان، حاشیه‌ها و ایموجیِ کامل را نگه می‌دارد. برای ترمینال‌هایی با پشتیبانیِ ضعیف از رنگ، ثبت گزارش، یا سلیقه. بر FORCE_COLOR غلبه می‌کند.

این‌ها ترکیب‌پذیرند: --high-contrast --low-distraction یک رابط کاربریِ روشن، آرام و بدون‌ایموجی می‌دهد؛ یک کاربر صفحه‌خوان روی ترمینالِ TERM=dumb به‌طور خودکار حالت دسترس‌پذیر می‌گیرد. هنگام تعارضِ حالت‌ها، محدودکننده‌ترین برنده است — تک‌رنگ بر پالت رنگی می‌چربد، و حالت صفحه‌خوان جایگزین حالت ساده می‌شود.

lockedin --accessible post
lockedin --high-contrast
lockedin --plain post
LOCKEDIN_LOW_DISTRACTION=1 lockedin aura

تعویض حالت‌ها در میانه‌ی یک نشست: /a11y

لازم نیست از پیش تصمیم بگیرید. درون نشستِ تعاملی، فرمانِ اسلشِ /a11y یک تابلوی کنترلِ واقعی و کارآمد است (دسترس‌پذیری بخشِ طنز نیست):

تایپ کنید نتیجه
/a11y نمایش وضعیت کنونی (روشن/خاموش) هر چهار حالت
/a11y <mode> جابه‌جاییِ یکی: screen-reader، high-contrast، low-distraction، plain (نام‌های بدیل مانند sr / hc / calm / mono هم کار می‌کنند)
/a11y reset خاموش کردن همه‌ی حالت‌ها

وضعیت همیشه به‌صورت یک واژه‌ی صریحِ روشن/خاموش نشان داده می‌شود، هرگز فقط با رنگ — چون همان کاربرانی که این ویژگی به آن‌ها خدمت می‌کند ممکن است رنگ را درنیابند. این تابلو کاملاً بومی‌سازی شده است.

بهترین شیوه‌های پشت آن

این‌ها اصولی هستند که ما به کار بستیم — همان‌ها که برای هر ابزار ترمینالی صدق می‌کنند.

  1. معنا بر تزئین. یک صفحه‌خوان نویسه‌ها را می‌خواند. حاشیه‌های خط‌کشیده به «خط افقی، خط افقی…» بدل می‌شوند؛ یک نشان‌واژه‌ی هنرِ اسکی نویز است. حالت دسترس‌پذیر ساختار بصری را با واژه‌ها جایگزین می‌کند: صفحه‌ی آغازین «LockedIn CLI» را به شکل متن اعلام می‌کند و کارت‌ها نشانه می‌گیرند ("Post:", "(end of post)") تا کاربران بدانند یک بلوک از کجا شروع و کجا تمام می‌شود.
  2. هرگز فقط به رنگ یا نماد تکیه نکنید. معنایی که تنها با رنگ یا یک ایموجی حمل می‌شود برای برخی کاربران نامرئی است. متن را با رنگِ خاموش هم بامعنا نگه دارید — مثلاً «با Ava متصل شد» با نبودِ ✔ همچنان درست خوانده می‌شود.
  3. جایگزینِ متنی فراهم کنید / نویز را حذف کنید. ایموجیِ تزئینی پرحرف خوانده می‌شود ("📥" → "inbox tray"). حالت دسترس‌پذیر نگاره‌های صرفاً تزئینی را حذف می‌کند و واژه‌ها را نگه می‌دارد؛ حواس‌پرتی کم ایموجیِ پرصدا را حذف می‌کند اما چیدمان را برای کاربران بینایی که فقط آرامش می‌خواهند نگه می‌دارد.
  4. حرکت کاهش‌یافته را محترم بشمارید. انیمیشن (اسپینرِ بریل) حواس‌پرت‌کننده است و می‌تواند محرکِ دهلیزی باشد. حالت‌های دسترس‌پذیر و حواس‌پرتی کم انیمیشن نمی‌سازند — وضعیت را یک بار و ایستا چاپ می‌کنند. این کار بازتابِ prefers-reduced-motion وب است.
  5. کنتراست بالا ارائه دهید. متن ثانویه‌ی «خاکستریِ کم‌رنگِ» کم‌کنتراست برای بسیاری از کاربران کنتراستِ WCAG را برآورده نمی‌کند. حالت کنتراست بالا آن را با سفیدِ ناب عوض می‌کند و تأکیدها را روشن‌تر می‌کند.
  6. بار شناختی را کاهش دهید. فراتر از بینایی، برخی کاربران به کمتر نیاز دارند: آرایش کمتر، بدون حرکت، بدون ایموجی. این‌جا آن یک حالتِ درجه‌یک است، نه یک فکرِ بعدی.
  7. قراردادهای بستر را ارج نهید. این CLI پیشاپیش NO_COLOR را محترم می‌شمارد؛ همچنین TERM=dumb (که بسیاری از پوسته‌های صفحه‌خوان و Emacs صادر می‌کنند) را «برو به حالت دسترس‌پذیر» تلقی می‌کند و LOCKEDIN_REDUCE_MOTION را می‌خواند. تشخیص سیگنال‌های موجودِ کاربر بهتر از آن است که وادارش کنیم چیز دیگری را هم پیکربندی کند.
  8. آزمون‌پذیرش کنید و آزموده نگهش دارید. دسترس‌پذیری‌ای که در دروازهٔ آزمون نباشد می‌پوسد. مجموعه اثبات می‌کند که خروجیِ دسترس‌پذیر هیچ نگاره‌ی تزئینی ندارد، که نشانه‌ها حاضرند، که کنتراست بالا پالت را عوض می‌کند و که حواس‌پرتی کم هم‌ترازِ حاشیه می‌ماند — در هر زبان.

قالب‌بندیِ جهت‌دار نیز به‌صورت شکست‌بسته (fail-closed) است. عربی، فارسی، عبری و اردو هیچ کنترلِ دوجهته‌ای صادر نمی‌کنند مگر اینکه کاربر صراحتاً LOCKEDIN_BIDI=on را برای ترمینالی که پشتیبانیِ آن از جداساز (isolate) شناخته‌شده است تنظیم کند؛ حالت صفحه‌خوان حتی در آن صورت هم آن‌ها را حذف می‌کند. هیچ کاوشِ TTY یا فهرستِ مجازِ ترمینالی نمی‌تواند آن پیش‌فرضِ امن را نادیده بگیرد.

چگونه ساخته شده است (برای کنجکاوها)

  • a11yFilter(s) یونیکدِ تزئینی (خط‌کشی، بلوک، هندسی، فنی، دینگ‌بَت، بریل، ایموجی) را حذف می‌کند و متن را به چپ می‌رانَد — روی همه‌ی خروجی در حالت دسترس‌پذیر اعمال می‌شود.
  • emojiFilter(s) فیلترِ سبک‌ترِ حواس‌پرتی کم است: فقط ایموجی/نمادهای پرصدا را حذف می‌کند و خط‌کشی، گلوله‌ها، پیکان‌ها و رنگِ ANSI را نگه می‌دارد، تا چیدمان بصری زنده بماند.
  • شیء رنگِ C سرِ جای خود با یک پالتِ کنتراست بالا عوض می‌شود؛ وقتی کنتراست بالا یا حواس‌پرتی کم روشن است گرادیان‌ها به یک تأکیدِ یکدست بازمی‌گردند. حالت ساده هر ورودیِ C را تهی می‌کند (رنگ کاملاً خاموش، حتی زیر FORCE_COLOR) در حالی که چیدمان را دست‌نخورده می‌گذارد.
  • renderSplash، اسپینر، renderPrompt و card شاخه‌های معنایی برای حالت دسترس‌پذیر دارند (متن ساده، بدون حرکت، نشانه‌ها).
  • تشخیص در detectAccessible / detectHighContrast / detectLowDistraction / detectPlain قرار دارد؛ نقطه‌ی ورود پیش از رندر آن‌ها را اعمال می‌کند. فرمانِ درون‌نشستِ /a11y (handleA11y + renderA11yStatus) همان وضعیتِ سطحِ ماژول را زنده جابه‌جا می‌کند.

هنگام افزودن یک ویژگی چگونه کارآمد نگهش داریم

سیاههٔ بازبینیِ این آموزش یک گام دسترس‌پذیری دارد، و این عادتی خوب در هر جایی است:

lockedin --accessible <your command> را اجرا کنید و تأیید کنید که به‌صورت متنِ ساده‌ی تمیز خوانده می‌شود — بدون نگاره‌ی تزئینیِ تازه‌ای که از فیلتر بگذرد — و اینکه هر بلوکِ ساختاریافته‌ی جدید یک نشانه دارد. سپس --high-contrast، --low-distraction و --plain را امتحان کنید (که باید هیچ کدِ رنگی صادر نکند اما چیدمان را نگه دارد). متنِ تازه‌ی قابل‌مشاهده برای کاربر به یک کلید در هر بسته‌ی زبانی نیاز دارد، تا تابلوی /a11y و راهنما ترجمه‌شده بمانند.


طنز. وابسته به LinkedIn نیست. GPL-3.0-or-later.

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally