-
Notifications
You must be signed in to change notification settings - Fork 0
feat(i18n): wire all 5 locales (en, es, ar, hi, zh) #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
d3a1178
feat(i18n): wire en + es locales in navigation.languages
WomB0ComB0 b4084c0
feat(i18n): add ar, hi, zh locale entries + commit existing stubs
WomB0ComB0 1fdc442
feat(i18n): translate concepts/quickstart/authentication/errors to ar…
WomB0ComB0 c13e40b
style(i18n): add resq-pill--primary modifier to DRN-05 ACTIVE chip
WomB0ComB0 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| --- | ||
| title: 'مقدمة' | ||
| description: 'وثائق مرجعية لواجهات برمجة ResQ' | ||
| --- | ||
|
|
||
| ## واجهات برمجة ResQ | ||
|
|
||
| تكشف ResQ عن واجهتين رئيسيتين لتنسيق الاستجابة للكوارث: | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card | ||
| title="Infrastructure API" | ||
| icon="server" | ||
| href="#infrastructure-api" | ||
| > | ||
| إدارة الحوادث، جمع الأدلة، التحقق عبر البلوكشين، تحليل الذكاء | ||
| الاصطناعي، وعمليات Solana على السلسلة. | ||
| </Card> | ||
| <Card | ||
| title="Coordination API" | ||
| icon="satellite-dish" | ||
| href="#coordination-api" | ||
| > | ||
| تنسيق أسطول الطائرات بدون طيار في الوقت الفعلي، استيعاب القياسات | ||
| عن بُعد، تخزين IPFS، حقن الأخطاء، وموافقة المهام (HITL). | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## Infrastructure API | ||
|
|
||
| مبنية بـ Rust/Axum. تتعامل مع البيانات الدائمة، وتفاعلات البلوكشين، والتحليل المدعوم بالذكاء الاصطناعي. | ||
|
|
||
| | Tag | الوصف | | ||
| |-----|-------| | ||
| | **incidents** | إنشاء، إدراج، واسترجاع حوادث الكوارث | | ||
| | **evidence** | إدارة الأدلة التي تجمعها الطائرات بدون طيار (مدعوم بـ IPFS) | | ||
| | **blockchain** | تسجيل واستعلام الأحداث على السلسلة، التحقق من المواقع | | ||
| | **solana** | إدارة المجال الجوي، سجلات التسليم، والتصاريح | | ||
| | **auth** | مصادقة قائمة على JWT | | ||
|
|
||
| ## Coordination API | ||
|
|
||
| مبنية بـ TypeScript/Elysia. تتعامل مع عمليات الأسطول في الوقت الفعلي وتنسيق المهام. | ||
|
|
||
| | Tag | الوصف | | ||
| |-----|-------| | ||
| | **Fleet** | معالجة دفعات القياسات عن بُعد | | ||
| | **Intelligence** | الإبلاغ عن الحوادث والتنبيهات التنبؤية | | ||
| | **Storage** | رفع ملفات IPFS | | ||
| | **Simulation** | حقن الأخطاء للاختبار | | ||
| | **Admin** | صحة الخدمة، التنميط، موافقة المهام (المادة 14 من قانون الذكاء الاصطناعي للاتحاد الأوروبي HITL) | | ||
| | **Observability** | مقاييس Prometheus وتدفقات أحداث SSE | | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,128 @@ | ||
| --- | ||
| title: "المصادقة" | ||
| description: "كيفية الحصول على وإرسال وتدوير اعتمادات JWT لواجهات Infrastructure و Coordination في ResQ." | ||
| --- | ||
|
|
||
| تصادق Infrastructure API في ResQ الطلبات باستخدام **JWT من نوع bearer**. | ||
| تستبدل اسم المستخدم وكلمة المرور بتوكن على `POST /login`، ثم ترسل التوكن | ||
| كرأس `Authorization: Bearer <token>` على كل طلب محمي. | ||
|
|
||
| <Note> | ||
| تُصدَر اعتمادات المشغّل خارج النطاق من قبل مسؤول ResQ الخاص بك. لا | ||
| يوجد تدفق تسجيل عام — كل مشغّل مرتبط بمنظمة ومجموعة من نطاقات صلاحيات | ||
| المهام. | ||
| </Note> | ||
|
|
||
| ## التدفق | ||
|
|
||
| <Steps> | ||
| <Step title="اطلب توكنًا"> | ||
| `POST /login` مع جسم JSON بالشكل | ||
| `{"username": "...", "password": "..."}`. | ||
|
|
||
| ```bash | ||
| curl -X POST https://api.resq.software/login \ | ||
| -H "Content-Type: application/json" \ | ||
| -d '{"username":"مشغّل","password":"REDACTED"}' | ||
| ``` | ||
| </Step> | ||
|
|
||
| <Step title="اقرأ الاستجابة"> | ||
| عند النجاح، تُرجِع API توكن JWT وطابع وقت Unix بالثواني لانتهاء | ||
| الصلاحية. | ||
|
|
||
| ```json | ||
| { | ||
| "token": "eyJhbGciOi...", | ||
| "expires_at": 1746345600 | ||
| } | ||
| ``` | ||
|
|
||
| عند الفشل، تتلقى `401` مع جسم `AuthError`. | ||
|
|
||
| ```json | ||
| { "error": "Invalid credentials" } | ||
| ``` | ||
| </Step> | ||
|
|
||
| <Step title="أرسل التوكن"> | ||
| أرفق التوكن بكل طلب يستهدف نقطة نهاية محمية. | ||
|
|
||
| <CodeGroup> | ||
| ```bash curl | ||
| curl https://api.resq.software/evidence \ | ||
| -H "Authorization: Bearer $RESQ_TOKEN" | ||
| ``` | ||
|
|
||
| ```ts TypeScript | ||
| const res = await fetch("https://api.resq.software/evidence", { | ||
| headers: { Authorization: `Bearer ${token}` }, | ||
| }); | ||
| ``` | ||
|
|
||
| ```python Python | ||
| import httpx | ||
| httpx.get( | ||
| "https://api.resq.software/evidence", | ||
| headers={"Authorization": f"Bearer {token}"}, | ||
| ) | ||
| ``` | ||
| </CodeGroup> | ||
| </Step> | ||
| </Steps> | ||
|
|
||
| ## مدى صلاحية التوكن | ||
|
|
||
| `expires_at` هو طابع وقت Unix بالثواني. تعامل معه على أنه المرجع — لا | ||
| تُحلِّل جسم JWT لاستنتاج انتهاء الصلاحية. | ||
|
|
||
| ينبغي للعميل المتين: | ||
|
|
||
| 1. تخزين التوكن في الذاكرة فقط (لا تخزّنه أبدًا في قرص بنص واضح). | ||
| 2. التحديث استباقيًا عندما يتبقى أقل من 60 ثانية. | ||
| 3. إعادة المصادقة من الاعتمادات عند `401 Unauthorized`. | ||
|
|
||
| ```ts | ||
| function isExpired(expiresAt: number, skewSeconds = 60) { | ||
| return Math.floor(Date.now() / 1000) >= expiresAt - skewSeconds; | ||
| } | ||
| ``` | ||
|
|
||
| ## تخزين الاعتمادات بأمان | ||
|
|
||
| <Warning> | ||
| لا تُودِع الاعتمادات أبدًا في التحكم بالإصدار ولا تمررها على سطر الأوامر. | ||
| استخدم متغيرات البيئة أو مدير الأسرار في منصّتك. | ||
| </Warning> | ||
|
|
||
| ```bash | ||
| export RESQ_USERNAME="..." | ||
| export RESQ_PASSWORD="..." | ||
| export RESQ_TOKEN="$(curl -sS -X POST https://api.resq.software/login \ | ||
| -H 'Content-Type: application/json' \ | ||
| -d "{\"username\":\"$RESQ_USERNAME\",\"password\":\"$RESQ_PASSWORD\"}" \ | ||
| | jq -r .token)" | ||
| ``` | ||
|
|
||
| ## التدوير | ||
|
|
||
| دوّر اعتمادات المشغّل ربعيًا على الأقل، وفورًا إذا كان من الممكن أن | ||
| يكون التوكن قد انكشف. يُعالَج الإلغاء على الخادم؛ لا يحتاج العميل سوى | ||
| إعادة تشغيل تدفق تسجيل الدخول. | ||
|
|
||
| ## Coordination API | ||
|
|
||
| يقبل Coordination API نفس التوكن للمسارات الإدارية ومسارات الموافقة على | ||
| المهام (مثلاً، `POST /admin/missions/approve`). قد تستخدم نقاط نهاية | ||
| الاستيعاب العامة — دفعات القياس عن بُعد، عمليات الرفع إلى IPFS — توكن | ||
| خدمة مستقل يصدره مسؤولك. تأكَّد من المخطط الدقيق لنشرك. | ||
|
|
||
| ## الأخطاء التي ينبغي معالجتها | ||
|
|
||
| | الرمز | المعنى | ما الذي ينبغي فعله | | ||
| |-------|-------|--------------------| | ||
| | `401` | التوكن مفقود أو منتهي أو غير صالح | أعد المصادقة، ثم أعد المحاولة مرة واحدة | | ||
| | `403` | التوكن صالح لكن يفتقر إلى نطاق الصلاحية المطلوب | اعرضه للمشغّل؛ لا تُعد المحاولة | | ||
| | `429` | طلبات كثيرة جدًا | تراجع مع jitter ثم أعد المحاولة | | ||
|
|
||
| راجع [الأخطاء](/ar/errors) للحصول على الغلاف الكامل ومرجع رموز الحالة. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| --- | ||
| title: "المفاهيم" | ||
| description: "كيف تتلاءم قطع ResQ Tactical OS معًا: الشبكة المتراصة، سلسلة الأدلة، تدفق المهام، ونطاقات صلاحيات المشغّل." | ||
| --- | ||
|
|
||
| هذه هي الخريطة المفاهيمية. اقرأها مرة واحدة قبل مرجع API وستتجمّع بقية | ||
| الوثائق بسرعة. | ||
|
|
||
| ## الشبكة المتراصة | ||
|
|
||
| يعمل ResQ كـ**شبكة متراصة لامركزية**، وليس كسحابة بنمط hub-and-spoke. | ||
| تشكّل الطائرات بدون طيار والوحدات الأرضية ومحطات المشغّل شبكة نظراء | ||
| تستمر في العمل عند تعطل البنية التحتية الأمامية أو عدم توفّرها. | ||
|
|
||
| - تتواصل العقد عبر وسائط ذات أولوية محلية (راديو الشبكة، LTE، Wi-Fi) | ||
| وتتزامن مع السحابة عند توفّر الفرصة. | ||
| - تم تصميم Coordination API للاستمرار في قبول القياس عن بُعد وتقديم | ||
| الحالة المباشرة عند تدهور تبعياتها الأمامية. | ||
| - لا توجد نقطة فشل وحيدة. إذا انقطع منسّق، تستمر العقد النظيرة في | ||
| تبادل القياس عن بُعد وإدراج العمل في الطابور. | ||
|
|
||
| ستظهر هذه الحالة في API كـ `503 Service Unavailable` لبعض المسارات | ||
| أثناء الانقطاعات الجزئية — راجع [الأخطاء](/ar/errors) لإرشادات إعادة | ||
| المحاولة. | ||
|
|
||
| ## الأدلة والسلسلة | ||
|
|
||
| كل إجراء ذي عواقب في المهمة ينتج **دليلاً**: | ||
|
|
||
| 1. تلتقط الطائرات بدون طيار إطارات المستشعرات والفيديو والقياس عن بُعد | ||
| المُهيكل. | ||
| 2. تُثبَّت ملفات الأدلة على **IPFS** ويُشار إليها عبر CID | ||
| (مُعرِّف معتمد على المحتوى). | ||
| 3. تُربَط الـ CIDs على **Solana**، مما يُنتج سلسلة محصَّنة ضد التلاعب. | ||
| 4. يكشف Infrastructure API كلا النصفين: `/evidence` لحمولة IPFS، | ||
| و `/blockchain/*` لنقاط الربط على السلسلة. | ||
|
|
||
| هذا يُمكّن المراجعة بعد الحدث ومراجعة سلسلة العهدة دون الثقة بأي طرف | ||
| وحيد — يمكن لأي شخص لديه CID والمرجع على السلسلة التحقق من البايتات. | ||
|
|
||
| ## مهام مع إنسان في الحلقة | ||
|
|
||
| تدفقات ResQ المستقلة جميعها **مُقيَّدة بـ HITL**. تُطبّق المنصة الإشراف | ||
| البشري الوارد في | ||
| [المادة 14 من قانون الذكاء الاصطناعي الأوروبي](https://artificialintelligenceact.eu/article/14/): | ||
| يجب على مشغّل مُخوَّل أن يوافق على الإجراءات عالية المخاطر قبل أن | ||
| ينفّذها النظام. | ||
|
|
||
| تتم الموافقة على المهام عبر Coordination API: | ||
|
|
||
| - `GET /admin/missions/pending` — الإجراءات قيد الانتظار | ||
| - `POST /admin/missions/approve` — الموافقة على مهمة معلّقة | ||
| - `POST /admin/missions/reject` — الرفض وتسجيل السبب | ||
|
|
||
| تتطلب الموافقة نطاق صلاحية المشغّل `missions.approve`. الاستدعاءات | ||
| التي لا تحوزه ترجع `403` — راجع [الأخطاء](/ar/errors). | ||
|
|
||
| ## المجال الجوي والتصاريح | ||
|
|
||
| للتسليمات والطيران المستقل، يستخدم ResQ **سجل المجال الجوي** على | ||
| السلسلة عبر Solana. تُسجّل نقاط النهاية `/solana` في Infrastructure API | ||
| التصاريح وأحداث التسليم واستعلامات السجل. يرفض المُرسِل خطط الطيران | ||
| خارج المجال الجوي المسموح به؛ يقع هذا الفلتر قبل الموافقة على المهمة، | ||
| وليس بعدها. | ||
|
|
||
| ## القياس عن بُعد والأحداث المباشرة | ||
|
|
||
| تنقل تدفقان البيانات في الوقت الحقيقي: | ||
|
|
||
| - **الاستيعاب**: تدفع أساطيل الطائرات بدون طيار دفعات القياس عن بُعد | ||
| إلى `POST /fleet/telemetry` على Coordination API. تُخزَّن الدفعات | ||
| مؤقتًا على الحافة وتُعاد محاولتها — لا يُسقَط القياس عن بُعد بصمت أبدًا. | ||
| - **الاشتراك**: يستهلك العملاء الحالة المباشرة عبر Server-Sent Events | ||
| على `/events` و Prometheus scrapes على `/metrics` (Coordination API). | ||
|
|
||
| ## هوية المشغّل ونطاقات الصلاحيات | ||
|
|
||
| يصادق المشغّلون باسم المستخدم وكلمة المرور على `POST /login` ويتلقون | ||
| JWT قصير الأجل (راجع [المصادقة](/ar/authentication)). يحمل التوكن | ||
| **نطاقات صلاحيات** المشغّل — أذونات دقيقة مثل `missions.approve` أو | ||
| `evidence.write` أو `airspace.admin`. | ||
|
|
||
| طلب يجتاز المصادقة لكنه يفتقر إلى نطاق الصلاحية المطلوب يُرجِع `403`. | ||
| اعرضه على المشغّل ولا تعد المحاولة؛ يتطلب إجراءً من المسؤول. | ||
|
|
||
| ## حقن الأخطاء والمحاكاة | ||
|
|
||
| يكشف Coordination API نقاط نهاية `Simulation` لحقن الأخطاء، وتحوي | ||
| SDKs أُطُر محاكاة. الهدف هو ممارسة سلوك الشبكة في الوضع المتدهور في | ||
| الاختبار قبل الاعتماد عليه في الإنتاج. استخدمه أثناء اختبارات التكامل، | ||
| وليس في العمليات الحية. | ||
|
|
||
| ## أين يوجد ماذا | ||
|
|
||
| | تريد… | انظر إلى | | ||
| |-------|---------| | ||
| | إبقاء الحوادث والأدلة ونقاط الربط | Infrastructure API | | ||
| | إرسال أو قراءة حالة الأسطول الحية | Coordination API | | ||
| | التحقق من من يستطيع فعل ماذا | [المصادقة](/ar/authentication) | | ||
| | فهم الإخفاقات وإعادة المحاولات | [الأخطاء](/ar/errors) | | ||
| | البناء دون كتابة عميل | [SDKs](/sdks) | | ||
|
|
||
| ## التالي | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="بدء سريع" icon="rocket" href="/ar/quickstart"> | ||
| أول استدعاء مُصادَق. | ||
| </Card> | ||
| <Card title="المصادقة" icon="key" href="/ar/authentication"> | ||
| دورة حياة JWT ونطاقات الصلاحيات. | ||
| </Card> | ||
| <Card title="مرجع API" icon="code" href="/ar/api-reference/introduction"> | ||
| كل نقاط النهاية. | ||
| </Card> | ||
| </CardGroup> |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor Arabic grammar: consider "رئيستين" over "رئيسيتين".
The LanguageTool hint is valid: classical Arabic grammar holds that يـاء النسبة should not be added to existing adjectives, making "رئيستين" the technically correct dual form rather than "رئيسيتين". While "رئيسيتين" is widely accepted in modern written Arabic, the more precise form aligns with formal technical documentation.
🛠️ Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 LanguageTool
[grammar] ~8-~8: لا تقل شيء رئيسي أو حاجة رئيسية بل قل شيء رئيس و حاجة رئيسة،
أن كلمة "رئيس" أو "رئيسة" من الصفات وياء النسبة لا تُنسب للصفات فلا يصح مثلًا قول "(رأيتُ الرجل العظيمي)" أو "(رأيتُ المرأة العظيمية)"
"رئيستين"
Context: ...واجهات برمجة ResQ تكشف ResQ عن واجهتين رئيسيتين لتنسيق الاستجابة للكوارث: <CardGroup c...
(wrong_adj_use)
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Acknowledged — kept "رئيسيتين" intentionally. While "رئيستين" is the classically-strict dual form, "رئيسيتين" is widely accepted in modern written Arabic and matches the register chosen by the original translator for the existing ar/index.mdx file (which we are matching). Happy to flip if you prefer the classical form across the entire ar/ tree as a separate consistency pass.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@WomB0ComB0— That's a well-reasoned call. Register consistency within thear/tree is a perfectly valid editorial priority, and "رئيسيتين" is entirely standard in modern formal Arabic. I'll note this preference so it isn't flagged again in future reviews.(✿◠‿◠)∫ 🐇
✏️ Learnings added