DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Arabic — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-arabic

Arabic

Arabic experience for DeepSeek Harness: bidi-safe RTL rendering for mixed Arabic/English content plus a full Arabic UI language pack registered through the official locale service.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:SMSMy/dsh-arabic#16ec0436d9d14e2d0c4d7f6cad04635e35d065c9
READMECompatibilityVersions

Compatibility and provenance

Arabic is published as dsh-arabic and currently resolves to version 0.4.2. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/16/2026

Versions

0.4.3stable
10/12/2026
0.4.2stable
10/10/2026
0.4.1stable
10/9/2026
Show 16 more versionsCollapse versions
0.4.0stable
10/9/2026
0.3.2stable
10/7/2026
0.3.1stable
10/5/2026
0.3.0stable
10/5/2026
0.2.9stable
10/5/2026
0.2.8stable
10/5/2026
0.2.7stable
10/5/2026
0.2.6stable
10/5/2026
0.2.5stable
10/5/2026
0.2.4stable
10/5/2026
0.2.3stable
10/5/2026
0.2.2stable
10/5/2026
0.2.1stable
10/4/2026
0.2.0stable
10/4/2026
0.1.1stable
10/4/2026
0.1.0stable
10/4/2026

Related plugins

Loading related plugins…

Latest
0.4.2
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 2
Weekly downloads
740
Last push
10/13/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Whale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinClient Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH skill center: browse loaded skills by source (bundled / project / user / custom / runtime), enable or disable, create and delete, in a web GUI panel.Client Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundleBetter Sidebardsh-better-sidebarBetter Sidebar for DSH — file tree, editor, changes, tasks and side chat in one column, separate for every conversation. Also exposes a service other plugins use to register sidebar tabs and file viewers.

README

dsh-arabic

العربية · English

العربية لتطبيق DeepSeek Harness — عرض RTL سليم تقنياً، وحزمة تعريب كاملة للواجهة، وخطّ ثمانية للواجهة.

DSH لا يدعم RTL ولا يوفّر لغة عربية. خلط النص العربي بأسماء المتغيّرات والمسارات والأكواد داخل الواجهة يجعل الكلام مبعثراً، وكل القوائم إنجليزية. هذا البلاقن يحل المشكلتين دون تعديل التطبيق نفسه.

ما الذي يفعله

١) عرض RTL آمن ثنائي الاتجاه (يعمل بأي لغة واجهة)

الاتجاه يُحسم لكل كتلة بهيمنة الكلمات، لا بأول حرف قوي. والتقسيم على المسافات فقط، فـ@deepseek-ai/dsh تُحسب كلمة واحدة لا ثلاثاً:

المحتوىالاتجاهالسبب
كيف حالك HelloRTLالكلمات العربية غالبَة
Hello كيف حالكRTLما زالت جملة عربية — وdir="auto" يخطئ هنا
Error: فشل الاتصال بالخادمRTLالجملة عربية والبادئة ليست كذلك
npm install ثم أعد التشغيلRTL٣ كلمات عربية مقابل ٢ لاتينية
شغّل npx @deepseek-ai/dsh webRTLالرمز التقني يلصق npx … web في وحدة واحدة: عربية ١ مقابل لاتينية ١
راجع commit a4c1025b قبل النشرRTLالبصمة المجرّدة لا تُصوِّت
نسبة النجاح 15/15RTLالنسبة محايدة
افتح src/index.ts ثم عدّل الدالةRTLالمسار لا يُصوِّت
"C:\Users\…\الخطوط\thmanyahseriftext"بلا تغييرمسار ويندوز رمز تقني ولو كان أحد مجلداته عربيًا
@deepseek-ai/dsh مهم جدًاRTLالمُعرِّف الواحد = وحدة واحدة
Hello نصRTLالتعادل يُحسم RTL
The build failed while parsing سلام in the fileبلا تغييرنص إنجليزي يقتبس كلمة يبقى LTR
شغّل "git status"RTLالاقتباس وحدة واحدة: يُحتسب مرة لا مرتين
pre وcode والكود المضمّنLTR دائماًالكود لا يُحكم عليه ولا يُقلب
مربّع الكتابة والبحثيتبع ما تكتبهRTL حين تغلب العربية، وإلا auto الأصلي

القواعد الأربع خلف الجدول:

١. الرموز الشبيهة بالكود لا تُصوِّت — الروابط، المسارات (بما فيها شرطة ويندوز المائلة الخلفية)، @scope/name، البصمات، 15/15، أسماء الملفات المنقوطة؛ فرابط واحد أو بصمة واحدة قد ترجّح على جملة عربية كاملة، والرمز التقني يلصق الكلمات اللاتينية حوله في وحدة تقنية واحدة. والمسار الذي يحمل مجلدًا عربيًا يبقى مسارًا: احتسابه نصًّا عربيًا هو ما كان يقلب كتلة مسارات إلى RTL، فيُعاد ترتيب مقاطعها اللاتينية حول تلك الكلمة. ٢. الكلمات هي الوحدة لا الحروف — فالمصطلح اللاتيني أطول حروفاً وأقل كلمات. والتعادل يُحسم للعربية، والكتلة التي لا كلمة عربية فيها تُحرَّر. ٣. تثبيت أثناء البثّ (hysteresis) — الكتلة التي صارت RTL تبقى كذلك حتى يصير النص لاتينياً بوضوح (ضعف عدد الكلمات العربية)، فلا يتذبذب الرد المتدرّج. ٤. الاقتباس وحدة واحدة — "git status" نصٌّ مقتبس (أمر، عنوان، جملة) يُحتسب مرة واحدة لا مرتين؛ فيُقرأ شغّل "git status" جملةً عربية كما هي، بينما الكلمتان نفسهما بلا اقتباس تبقى LTR (انظر الحدود أدناه). وعلامة اقتباس غير مغلقة — ردٌّ يتدفّق والاقتباس لم يُغلق بعد — تمتدّ إلى آخر النص، وهي الوحدة نفسها التي سينتجها الاقتباس المغلق، فلا تذبذب لحظةَ الإغلاق.

كتل النص وحدها تُقلب — والهيكل لا يُقلب أبداً. حاوية flex أو grid تُعيد ترتيب أبنائها عند القلب، والصف الذي يملك أزراراً هو شريط أدوات: كلاهما مُستثنى، فيبقى زر الإرسال في مكانه رغم أن وسم الصلاحية العربي في الصف نفسه. والنص العربي داخل ذلك الصف يعيش في كتلة نصية خاصة به فيُعالَج عادةً.

وشكلان احتاجا أكثر من قرار كتلة عادية، وكلٌّ منهما مُثبَّت باختبار وبـdata/card-pins.json:

  • خلية نصّية جعلها CSS كتلةً. بطاقة السؤال التي يسأل بها المساعد ترسم كل خيار button بـflex، ووسمها ووصفها span داخله. الـspan المضمّن فعلاً جزء من التدفّق حوله، أما عنصر flex فهو كتلة نصية قائمة بذاتها: كل خلية تأخذ RTL، فيُقرأ ادفع fix/rust-flake كما هو بترتيبه لا مقلوباً، ويبقى رقم الصف في مكانه؛
  • <header>/<footer> بطاقة المحتوى. DSH يضع نص السؤال داخل <header> (وheader وfooter علامتان للهيكل وتبقيان LTR). وإطار البطاقة يحمل data-question-key — وهو المُعرِّف الوحيد الذي يقرأه هذا البلاقن من التطبيق — فعلامة داخل البطاقة جزء من البطاقة، وسؤالها محتوى كأي فقرة. وscripts/check-card-pins.mjs <app.asar> يفشل مسمّياً الفرق إذا تغيّر هذا المُعرِّف أو لم يعد صف الخيارات صف flex؛
  • وما لا يتحرك: رقم الخيار، وعناصر التحكّم نفسها. الصف الذي يملك زراً لا يُقلب، وعنصر التحكّم لا يُمنح اتجاهاً خاصاً به — فزر flex يعكس ترتيب أيقونته ووسمه، والوسم المتوسّط يقفز إلى حافة عند تجاوز المحاذاة. فيبقى الرقم حيث وضعه التصميم، وتبقى أزرار البطاقة بتخطيطها، ويبدأ النص العربي بجانبها — البطاقة لا تُقلب، بل نصّها.

قبل وبعد: بطاقة السؤال مع الطبقة وبدونها

مُصيَّرة بـChromium بمحرّك bidi الحقيقي: الترميز والنصوص نفسها في اللوحين، مع خصائص dir التي يكتبها البلاقن في اللوح الأيمن. ورقم الخيار يبقى في اليسار في الحالتين. المصدر: docs/question-card.html.

وإذا كان اتجاه كتلة ما مضبوطاً من التطبيق أو منك (dir="ltr" في الترميز)، فلا نلمسه أبداً — وهذا هو المخرج الاحتياطي لأي كتلة يُخطئ فيها المُقدِّر.

حدود معروفة (مُثبَّتة في الاختبارات لا مخفية)

  • الكلمات اللاتينية المجرّدة تُصوِّت. شغّل git status يبقى LTR: كلمتان لاتينيتان عاديتان ترجّحان على كلمة عربية، ولا فاصل تقني يلصقهما. وقد جُرِّب اعتبار كل تتابع لاتيني وحدة واحدة فرُفض — لأنه يقلب فقرات إنجليزية تقتبس كلمة عربية. والاقتباس هو العلاج بيد القارئ: شغّل "git status" ينقلب.
  • المسار المختلط داخل الجملة العربية يتبع خوارزمية bidi. الكتلة عربية وتبقى RTL، فتترتّب مقاطع المسار اللاتينية حول مقطعه العربي. وكتابة المسار داخل علامتَي الكود الخلفيتين هي الصيغة الموثوقة: الورقة تعزل code من اليسار إلى اليمين، فيُقرأ المسار بترتيبه (مُتحقَّق منه في Chromium).
  • طرفية الشريط الجانبي لا تصل الحروف. طرفية DSH مبنية على xterm.js ولا تصل الحروف العربية (ا ل ع ر ب ي ة). هذا قيد في المصدر، نوثّقه ولا نتظاهر بإصلاحه.
  • صيغ الجمع. قواميس DSH سلاسل مسطّحة، فالجملة العربية التي تعدّ الأشياء لا تستطيع اختيار الصيغة الصحيحة لـ ١ و٢ و٣–١٠ و١١+؛ وحيث يهمّ ذلك نصوغ الجملة بحيث لا تتأثر بالعدد.
  • الهيكل يبقى LTR. القوائم والشريط الجانبي تتبع اتجاه الهيكل لا اللغة المختارة؛ فقلبها بالحقن يكسر تخطيطاً كُتب بخصائص CSS فيزيائية. وللسبب نفسه تُستثنى حاويات flex/grid والصفوف التي تملك أزراراً من قرار الاتجاه — فيُقرأ وسم الصلاحية العربي في شريط المُحرِّر من اليمين دون أن ينتقل زر الإرسال. الخطة المعتمدة تعتمد المصدر أولاً — انظر docs/roadmap.md.

نهج هيمنة الكلمات، وقاعدة «المُعرِّف الواحد كلمة واحدة»، وفكرة حذف الرموز الشبيهة بالكود قبل العدّ — كلها تتبع الإجماع المجتمعي الذي بدأه haythamat/dsh-client-ui-rtl وkfirsch/dsh-hebrew-rtl (رخصة MIT لكلٍّ منهما)؛ وهذا التنفيذ مستقل، ويضيف طبقة مربّع الكتابة والمفتاح والتثبيت أثناء البثّ، ومغطّى باختباراته.

قبل وبعد: قاعدة أول حرف قوي مقابل هيمنة الكلمات

مُصيَّرة بمتصفح Chromium بمحرّك bidi الحقيقي: العمودان يحملان الأسطر الخمسة نفسها، وكلٌّ منها يبدأ بمُعرِّف لاتيني. المصدر: docs/direction.html.

لا يقلب الواجهة كلها إلى RTL. واجهات المطوّرين ثنائية اللغة بطبيعتها، واتجاه كل كتلة على حدة هو ما يُبقي اللغتين مقروءتين.

٢) حزمة تعريب الواجهة

مُسجَّلة عبر خدمة الترجمة الرسمية (ctx.locale.addLanguage + ctx.locale.register) — أي بالنفس الآلية التي يستخدمها التطبيق نفسه، بلا استبدال نصوص في DOM وبلا تعديل دوال قائمة:

  • 60 نطاقاً · 3,307 نصاً مأخوذة من مصدر DSH الرسمي
  • أي مفتاح غير مترجم يعود تلقائياً إلى الإنجليزية (fallback: 'en')
  • اختر العربية من الإعدادات ← عام ← Language

التغطية وكل قرار ترجمة غير بديهي قابلة للتدقيق في data/en-catalog.json (مجموعة المفاتيح الإنجليزية الرسمية)، وlocales/ar.json (الحزمة العربية)، وdata/overrides.json (توحيد الصيغ بين الدفعات).

٣) الخيار بيدك لا بيدنا

العربية تُضاف كخيار ولا تُفرض أبداً:

  • الإعدادات ← عام ← Language تُدرج العربية بجانب اللغات المدمجة، ويحفظ التطبيق اختيارك عبر خدمة اللغة الرسمية — فمن يفضّل الواجهة الإنجليزية يحتفظ بها.
  • الإعدادات ← عام ← اتجاه النص من اليمين إلى اليسار يُشغّل طبقة الاتجاه ويوقفها فوراً ويتذكّر اختيارك (localStorage). عند الإيقاف لا تُوسَم أي كتلة ولا يُضبط اتجاه أي خانة كتابة — تتصرّف الواجهة تماماً كما لو لم يكن البلاقن موجوداً.

٤) طباعة الواجهة

ثلاث قطع من ثمانية، كلٌّ في الدور الذي رُسم له:

الدورالقطعأين يظهر
الواجهةثمنية سانسالافتراضي: الوسوم والأزرار والهيكل والنصوص الصغيرة
القراءةثمنية سيريف تيكستفقرات الماركداون وعناصر القوائم والاقتباسات
العناوينثمنية سيريف ديسپلايh1–h6

وسطر واحد يحمل دور الواجهة — البلاقن يعيد تعريف --dsw-font-family، المتغيّر الذي تمرّ منه كل رموز الطباعة في سمة التطبيق — وقاعدتان للعناصر تحملان الدورين الآخرين. وتبقى حزمة خطوط التطبيق خلف كل عائلة في التعريف نفسه، وخطّ الكود لا يُلمس، وكل دور يصمت إن غابت ملفاته.

ومنذ DSH 0.2.1 صار ذلك المتغيّر وسيطاً داخلياً عند التطبيق نفسه: يحمل على body قيمة --dsh-font-family-text — الخط الذي تختاره من الإعدادات ← عام — قبل حزمة خطوطه المدمجة. فصار البلاقن يسمّي قطعه احتياطياً لذلك المتغيّر لا قيمةً له: خطٌّ تختاره في حقل التطبيق يتقدّم على قطعنا في الواجهة والفقرات والعناوين جميعاً، وحقلٌ فارغ — وحينها لا يكتب التطبيق شيئاً — يُبقي ثمانية في مكانها. والمتغيّر يُقرأ ولا يُعرَّف أبداً، وهذا ما يحفظ ذلك الترتيب.

والأوزان في fonts/ — مجلد فرعي لا جذر المستودع — ومعه نصّا الرخصة (والعربية هي الحاكمة)، ويخدمها البلاقن من /dsh-arabic/fonts/ على خادم التطبيق نفسه: نسخة الديسكتوب تحمّل صفحتها من http://127.0.0.1:<port> فيعمل الرابط نفسه في الوجهين، وتحمل الصفحة تسع قواعد @font-face قصيرة بدل نحو ميغابايت من base64. ووجّه DSH_ARABIC_FONTS إلى مجلد بالبنية نفسها لتُزوّد نسخةً أخرى، أو إلى مجلد فارغ لتُبقي خط التطبيق الأصلي — الطبقة تصمت، لا تتعطّل.

لا يتغيّر شيء في الواجهة حتى تختاره أنت.

التثبيت

# من npm
dsh plugin --profile desktop add dsh-arabic

# أو من نسخة محلية (للتطوير)
dsh plugin --profile desktop add link:/المسار/الكامل/dsh-arabic

أو من داخل التطبيق: الإعدادات ← Plugins ← Plugin Manager.

أعد تشغيل DSH بعد التثبيت. جدول الحقن في نسخة الديسكتوب يُجمَع مرة واحدة عند إقلاع المضيف، فتحديث الصفحة وحده لا يكفي.

ثم لتفعيل الواجهة العربية: الإعدادات ← عام ← Language ← العربية. طبقة RTL تعمل مع أي لغة بمجرد تحميل البلاقن.

كيف يعمل

index.js                     النصف المضيف
  └── صفوف webserver/index-inject
        ├── { kind: 'style',  text: <CSS الاتجاه> }
        └── { kind: 'script', placement: 'body', text: <سكربت الوسم> }

lib/client.js                النصف البرمجي في المتصفح (مُولَّد)
  └── window.__ModuleLoader__.load({ id, factory })
        ├── ctx.locale.addLanguage({ id: 'ar', label: 'العربية', fallback: 'en' })
        │   ctx.locale.register(namespace, 'ar', dictionary)   × 59
        └── ctx.slots.inject('settings.general.item', …)
            └── صف Switch واحد → window.__dshArabic.setEnabled()

لا اعتماديات خارجية على مستوى التحميل: react والمكوّنات الرسمية تُطلَب فقط عند وجود مقعد الإعدادات، وذاك التسجيل محروس بحيث لا يُسقط تغيير مستقبلي في المواقع حزمةَ اللغة معه.

بنية المستودع

المسارالغرض
index.jsالنصف المضيف: صفوف حقن الاتجاه
lib/client.jsالنصف البرمجي المُولَّد: حزمة اللغة العربية
locales/ar.jsonالقواميس المترجمة
data/en-catalog.jsonمجموعة المفاتيح الإنجليزية الرسمية المستخرجة من مصادر DSH
data/en-catalog.meta.jsonمرجع/بصمة upstream التي قيست عليها المجموعة
data/glossary.ymlالمسرد الآلي (المصطلح، العربية، ما يُتجنّب، ما لا يُترجم)
data/overrides.jsonتوحيد الصيغ حيث اختلفت الدفعات المتوازية
data/term-map.jsonتطبيع المصطلحات المُطبَّق على كل قيمة في الخط
data/bidi-decisions.jsonكل عزل في عائلة سطر الحالة — وكل قيمة مختلطة — بسببها
data/shimmer-pins.jsonأسماء الفئات والـkeyframes المُجزأة التي قيست عليها مرآة الوميض
scripts/extract-catalog.mjsيعيد توليد data/en-catalog.json من المصادر الرسمية (npm run extract)
scripts/status.mjsنسبة التغطية مقابل مرجع upstream المسجَّل (npm run status)
scripts/build-client.mjsيتحقق من الحزمة ويعيد توليد lib/client.js (--check لـ CI)
scripts/assemble-translations.mjsيدمج دفعات الترجمة في locales/ar.json
scripts/lint-consistency.mjsيكشف ترجمة النص الإنجليزي الواحد بصيغتين
scripts/check-bidi-family.mjsيفشل — بتسمية المفتاح — على أي عزل غير مسجَّل في عائلة سطر الحالة
scripts/check-shimmer-pins.mjsيعيد التحقق من أسماء مرآة الوميض مقابل app.asar مثبَّت (خطوة إصدار)
tests/golden-direction.mjs٤٥ نصاً ذهبياً مع الاتجاه الواجب لكلٍّ منها
fonts/قطع ثمنية الثلاث (سانس · سيريف تيكست · سيريف ديسپلاي) بأوزان 400/500/700 + نصّا الرخصة (العربي حاكم)، والمجلد فرعي لا جذر للمستودع

التطوير

npm test                     # الاتجاه (67) + الترجمة (32) + المصفوفة الذهبية (45) + الخطوط (28)
npm run check                # الاكتمال + تدقيق الاتساق + المصفوفة الذهبية
npm run build                # إعادة توليد lib/client.js
npm run status               # التغطية مقابل مرجع upstream المسجَّل

مواكبة التحديثات الرسمية

سير عمل أسبوعي (.github/workflows/upstream-sync.yml) يعيد استخراج مجموعة المفاتيح الرسمية ويفتح PR بالمفاتيح الجديدة وحدها، فيصل الانحراف كفرق قابل للمراجعة لا كمفاجأة:

GITHUB_TOKEN=$(gh auth token) npm run extract   # تحديث data/en-catalog.json
node scripts/build-client.mjs --check           # سرد كل مفتاح غير مترجم
npm run status                                  # التغطية + مرجع upstream

المفاتيح الناقصة تعود للإنجليزية وقت التشغيل — فتحديث جزئي لا يكسر الواجهة أبداً. انظر CONTRIBUTING.md وخطة الطريق.

التوافق

مُختبَر على DSH 0.2.0-rc.2 (تطبيق الديسكتوب) و0.2.1-alpha.2 (نسخة ويب مخدومة بـdsh web). الوجهان يستخدمان التقاطعين الداخليين الموثّقين نفسهما — الحدث webserver/index-inject وخدمة locale في العميل — ويتدهور البلاقن بأمان إن تغيّر أحدهما: طبقة الاتجاه مُغلَّفة فلا تكسر أبداً عرض الفهرس، وحزمة اللغة تتوقف عن التسجيل فحسب. وفي نسخة الديسكتوب يُجمَع جدول الحقن مرة واحدة عند إقلاع المضيف، فالمطلوب إعادة تشغيل لا تحديث صفحة.

ومنذ 0.2.1 صار للتطبيق دور خطوط يختاره المستخدم (نص الواجهة، الكود، طرفية الشريط الجانبي): يكتب التطبيق ما تختاره في --dsh-font-family-text على body، فتُسمّى قطعنا احتياطياً لذلك المتغيّر — خطٌّ تختاره يتقدّم، وقطعنا يرسم ما لا يرسمه (العربية عادةً)، وحقلٌ فارغ يُبقي ثمانية في المقدّمة. والمتغيّر يُقرأ ولا يُعرَّف أبداً، وهذا الترتيب مُثبَّت في tests/verify-fonts.mjs.

التفاعل مع بلاقنز عربية/RTL أخرى. بلاقننا وdsh-client-ui-rtl أو dsh-rtl-fix كلاهما يضبط dir على كتل المحتوى؛ وتثبيت اثنين معاً يعني تناوبهما ويفوز آخر كاتب. مفتاح الإعدادات في «عام» يوقف طبقتنا، وهو الطريق النظيف للجمع بينهما. وكذلك تسجيل لغتين بالمعرّف ar (يفعله @mimateinn/dsh-i18n بتغطية مختلفة) سيتنازع على المعرّف نفسه — اختر واحداً.

المصطلح. «بلاقن» اختيار واعٍ: هي الصيغة التي يستخدمها المطوّرون العرب في كلامهم، بينما يبقى plugin في النطاقات التقنية (أسماء الحزم، المسارات، مخرجات الطرفية). وإن فضّلت الكلمة اللاتينية في الواجهة فالقاموس على بعد تعديل واحد — انظر CONTRIBUTING.md.

الشكر والتوثيق

  • نصوص الواجهة وأسماء المفاتيح من deepseek-ai/deepseek-harness (رخصة MIT).
  • نهج هيمنة الكلمات وقاعدة «المُعرِّف الواحد كلمة واحدة» يتبعان الإجماع المجتمعي الذي بدأه haythamat/dsh-client-ui-rtl (رخصة MIT)، وهذا التنفيذ مستقل.
  • الترجمات العربية في هذا المستودع عمل أصلي، منشورة تحت رخصة MIT.

الرخصة

MIT — انظر LICENSE.

docs/roadmap.mdالطبقات الثلاث، وطلبات المصدر، وما لا ننوي فعله
AUDIT.mdكيف بُني المشروع: كل خطوة وأمر ونتيجة بوابة
CONTRIBUTING.mdكيف تضيف ترجمة أو تصلحها، والفحوص التي يشغّلها CI
tests/verify-rtl.mjs٦٧ اختباراً سلوكياً لطبقة الاتجاه على محاكي DOM
tests/verify-locales.mjsسلامة الكتالوج وعقد الملف وتسجيل اللغة
data/card-pins.jsonشكل بطاقة السؤال (المُعرِّف والعلامات وصفّ flex)، يُعاد التحقق منه من app.asar المثبَّت (خطوة إصدار)