Findings from the astra, sol and fable reviews of the Arabic screenshots:
- Wording: forecast valid time is «عند», not an expiry; acres are آكر, not
feddans; live layers are «تتبّع … المباشر» (not "direct flights"); the
straight-ahead lane, turboprop, call sign, reconcile, proximity, retrying,
count agreement (colon form, fixed counts, ي for compact day ages) and
smaller fixes. Guide and glossary updated.
- Right to left: the scene editor's JSON fields are LTR; canvas map cards
draw with LTR geometry and an Arabic face; whiteboard callouts anchor
inside their cards; HDG/FOV keep their values; the cyclone timestamp no
longer splits its date; bare-number counters read 01 / 25, translated
ones say «من».
- Built-in shot titles of the Nepal shot pack's bootstrap shots localize
(the applied pack vouches for them), in every language.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- **Western digits (0–9)**, as in the catalog. The HUD reads like an instrument panel, and mixing ٠–٩ with Latin codes and coordinates misreads. `intlLocale('ar')` in `src/i18n/locale.js` passes `ar-u-nu-latn` to every Intl formatter, so browsers that default to Arabic-Indic digits for an Arabic region still show 0–9.
- **Western digits (0–9)**, as in the catalog. The HUD reads like an instrument panel, and mixing ٠–٩ with Latin codes and coordinates misreads. `intlLocale('ar')` in `src/i18n/locale.js` passes `ar-u-nu-latn` to every Intl formatter, so browsers that default to Arabic-Indic digits for an Arabic region still show 0–9.
- **Right to left.** `ar` is in `RTL_LOCALES`, so the page gets `<html dir="rtl">`. The title, style indicator and both rails swap sides; the dock and the corner row reverse. The intel HUD (classification block, MGRS, coordinates, GSD) stays a left-to-right instrument overlay; its translated lines read right to left inside it. Media transport (previous / play / next) and the radio dial stay left to right, as on any player. Layout rules: `src/ui/styles/rtl.css`.
- **Right to left.** `ar` is in `RTL_LOCALES`, so the page gets `<html dir="rtl">`. The title, style indicator and both rails swap sides; the dock and the corner row reverse. The intel HUD (classification block, MGRS, coordinates, GSD) stays a left-to-right instrument overlay; its translated lines read right to left inside it. Media transport (previous / play / next) and the radio dial stay left to right, as on any player. Layout rules: `src/ui/styles/rtl.css`.
- Latin runs inside Arabic sentences (product names, codes, `{placeholders}` filled with English data) are isolated by the bidi algorithm; write them as plain text, without manual direction marks.
- Latin runs inside Arabic sentences (product names, codes, `{placeholders}` filled with English data) are isolated by the bidi algorithm; write them as plain text, without manual direction marks.
- Position counters: a translated counter says «من» («القناة {index} من {total}», «الإطار {index} من {total}»); a spaced slash between two isolated numbers swaps them in right-to-left text. Counters the code builds from bare numbers (`01 / 25`, `1 / 3`) are shown left to right by `rtl.css`.
- Code stays left to right: the JSON fields of the scene editor are LTR in every language.
## Units
## Units
Distances and speeds take Arabic abbreviations after the number, with a space: كم، م، كم/س، كم/ث، م/ث، ميل/س، عقدة (knots)، قدم (feet)، مم. Time: ث (seconds)، د (minutes)، س (hours)، يوم. Scientific and radio units stay Latin: MHz، dB، dBFS، dBZ، hPa، MW، MiB. `°` and `%` stay. Hemisphere letters in coordinates: ش (N)، ج (S)، ق (E)، غ (W), as in `21.33ش`.
Distances and speeds take Arabic abbreviations after the number, with a space: كم، م، كم/س، كم/ث، م/ث، ميل/س، عقدة (knots)، قدم (feet)، مم. Time: ث (seconds)، د (minutes)، س (hours)، يوم; compact age labels («3d», «5D AGO») use ي: «{count} ي»، «قبل {count} ي», since a plain string cannot make يوم agree with the count. Area: آكر (acres, the value is not converted; فدان is a different unit). Scientific and radio units stay Latin: MHz، dB، dBFS، dBZ، hPa، MW، MiB. `°` and `%` stay. Hemisphere letters in coordinates: ش (N)، ج (S)، ق (E)، غ (W), as in `21.33ش`.
## Plurals
## Plurals
@@ -55,6 +57,8 @@ Every form must keep `{count}`. For one and two, Arabic names the quantity with
| globe / map / map source / basemap | الكرة الأرضية / الخريطة / مصدر الخريطة / الخريطة الأساسية |
| globe / map / map source / basemap | الكرة الأرضية / الخريطة / مصدر الخريطة / الخريطة الأساسية |
| tiles | بلاطات |
| tiles | بلاطات |
| aircraft / flight / military flights | طائرة / رحلة / الرحلات العسكرية |
| aircraft / flight / military flights | طائرة / رحلة / الرحلات العسكرية |
| Live Flights / Live Vessels (layers) | تتبّع الرحلات / السفن المباشر (not الرحلات المباشرة) |
| call sign | رمز النداء |
| vessel, ship | سفينة |
| vessel, ship | سفينة |
| satellite | قمر صناعي |
| satellite | قمر صناعي |
| launch (rocket) / space mission | إطلاق / مهمة فضائية |
| launch (rocket) / space mission | إطلاق / مهمة فضائية |
@@ -78,12 +82,13 @@ Every form must keep `{count}`. For one and two, Arabic names the quantity with
| transit / bike share | النقل العام / الدراجات المشتركة |
| transit / bike share | النقل العام / الدراجات المشتركة |
| Previous / Next | السابق / التالي |
| Previous / Next | السابق / التالي |
| compass points (N, NNE, …) | شمال، شمال شمال شرق، … |
| compass points (N, NNE, …) | شمال، شمال شمال شرق، … |
| forecast / valid / issued | توقع / صالح حتى / صدر |
| forecast / valid (time) / issued | توقع / عند، وقت التوقع (not صالح حتى) / صدر |
"MAPPED SITES LOADED":"تم تحميل المواقع المرسومة",
"MAPPED SITES LOADED":"تم تحميل المواقع المرسومة",
"RETRYING MAPPED SITES":"إعادة محاولة المواقع المرسومة",
"RETRYING MAPPED SITES":"جارٍ إعادة محاولة تحميل المواقع المرسومة",
"FETCHING MAPPED SITES":"جارٍ جلب المواقع المرسومة",
"FETCHING MAPPED SITES":"جارٍ جلب المواقع المرسومة",
"TURNING OFF LIVE DATA":"جارٍ إيقاف البيانات المباشرة",
"TURNING OFF LIVE DATA":"جارٍ إيقاف البيانات المباشرة",
"REFRESHING LIVE DATA":"جارٍ تحديث البيانات المباشرة",
"REFRESHING LIVE DATA":"جارٍ تحديث البيانات المباشرة",
"Close data attribution":"إغلاق إسناد البيانات",
"Close data attribution":"إغلاق إسناد البيانات",
"MISSION CONTROL · FIRST LAUNCH":"مركز التحكم · أول تشغيل",
"MISSION CONTROL · FIRST LAUNCH":"مركز التحكم · أول تشغيل",
"Choose your first view":"اختر عرضك الأول",
"Choose your first view":"اختر عرضك الأول",
"LIVE CONTACTS":"الأهداف المباشرة",
"LIVE CONTACTS":"تتبّع الأهداف المباشر",
"Don't show this again":"لا تعرض هذا مرة أخرى",
"Don't show this again":"لا تعرض هذا مرة أخرى",
"POWER UP":"تشغيل",
"POWER UP":"تشغيل",
"GROUND STATION · PROVIDER SETTINGS":"المحطة الأرضية · إعدادات المزوّدين",
"GROUND STATION · PROVIDER SETTINGS":"المحطة الأرضية · إعدادات المزوّدين",
"Power up the globe":"شغّل الكرة الأرضية",
"Power up the globe":"شغّل الكرة الأرضية",
"SAVE KEYS":"حفظ المفاتيح",
"SAVE KEYS":"حفظ المفاتيح",
"Saving…":"جارٍ الحفظ…",
"Saving…":"جارٍ الحفظ…",
"It feels like a forbidden cockpit—then you realize the sources are public and the data is real.":"يبدو الأمر كقمرة قيادة محظورة—ثم تدرك أن المصادر عامة والبيانات حقيقية.",
"It feels like a forbidden cockpit—then you realize the sources are public and the data is real.":"يبدو الأمر كقمرة قيادة محظورة — ثم تدرك أن المصادر عامة والبيانات حقيقية.",
"Aircraft, vessels and nearby intelligence":"طائرات وسفن ومعلومات استخباراتية قريبة",
"Aircraft, vessels and nearby intelligence":"طائرات وسفن ومعلومات استخباراتية قريبة",
"SPACE MISSIONS":"المهام الفضائية",
"SPACE MISSIONS":"المهام الفضائية",
"Launches, spacecraft and orbital context":"عمليات إطلاق ومركبات وسياق مداري",
"Launches, spacecraft and orbital context":"عمليات إطلاق ومركبات وسياق مداري",
@@ -66,7 +66,7 @@
"IMPORT":"استيراد",
"IMPORT":"استيراد",
"RUN LOG":"سجل التشغيل",
"RUN LOG":"سجل التشغيل",
"Ready":"جاهز",
"Ready":"جاهز",
"Starting live contacts…":"جارٍ تشغيل الأهداف المباشرة…",
"Starting live contacts…":"جارٍ بدء تتبّع الأهداف المباشر…",
"Opening space missions…":"جارٍ فتح المهام الفضائية…",
"Opening space missions…":"جارٍ فتح المهام الفضائية…",
"Scanning active events…":"جارٍ مسح الأحداث النشطة…",
"Scanning active events…":"جارٍ مسح الأحداث النشطة…",
"Working…":"جارٍ العمل…",
"Working…":"جارٍ العمل…",
@@ -105,7 +105,7 @@
"CONNECTING":"جارٍ الاتصال",
"CONNECTING":"جارٍ الاتصال",
"ERROR":"خطأ",
"ERROR":"خطأ",
"Session ended — cost cap {cost}":"انتهت الجلسة — بلغت حد التكلفة {cost}",
"Session ended — cost cap {cost}":"انتهت الجلسة — بلغت حد التكلفة {cost}",
"VOICE STANDBY":"الصوت في وضع الاستعداد",
"VOICE STANDBY":"الصوت: استعداد",
"VOICE ACTIVE":"الصوت نشط",
"VOICE ACTIVE":"الصوت نشط",
"VOICE UNAVAILABLE":"الصوت غير متاح",
"VOICE UNAVAILABLE":"الصوت غير متاح",
"WebRTC microphone support unavailable":"دعم ميكروفون WebRTC غير متاح",
"WebRTC microphone support unavailable":"دعم ميكروفون WebRTC غير متاح",
"Shared {subject} could not be restored — feed unavailable":"تعذّرت استعادة المشاركة — المصدر غير متاح: {subject}",
"Shared {subject} could not be restored — feed unavailable":"تعذّرت استعادة المشاركة ({subject}) — المصدر غير متاح",
"Shared {subject} is unavailable":"المشاركة غير متاحة: {subject}",
"Shared {subject} is unavailable":"المشاركة غير متاحة: {subject}",
"Context":"السياق",
"Context":"السياق",
"Space Missions":"المهام الفضائية",
"Space Missions":"المهام الفضائية",
@@ -469,7 +469,7 @@
"Resume":"استئناف",
"Resume":"استئناف",
"selected":"المحددة",
"selected":"المحددة",
"nearest":"الأقرب",
"nearest":"الأقرب",
"{action} {target} radio station":"{action} محطة الراديو {target}",
"{action} {target} radio station":"{action}: محطة الراديو {target}",
"RADIO STATE UNCERTAIN":"حالة الراديو غير مؤكدة",
"RADIO STATE UNCERTAIN":"حالة الراديو غير مؤكدة",
"SYNCING DIRECTORY":"جارٍ مزامنة الدليل",
"SYNCING DIRECTORY":"جارٍ مزامنة الدليل",
"SYNCING":"جارٍ المزامنة",
"SYNCING":"جارٍ المزامنة",
@@ -519,7 +519,7 @@
"Search location by name or coordinates":"البحث عن موقع بالاسم أو الإحداثيات",
"Search location by name or coordinates":"البحث عن موقع بالاسم أو الإحداثيات",
"Expand LOCATION":"توسيع الموقع",
"Expand LOCATION":"توسيع الموقع",
"UNAVAILABLE":"غير متاح",
"UNAVAILABLE":"غير متاح",
"Live Flights":"الرحلات المباشرة",
"Live Flights":"تتبّع الرحلات المباشر",
"Earthquakes (24h)":"الزلازل (24 ساعة)",
"Earthquakes (24h)":"الزلازل (24 ساعة)",
"No selected data layers":"لا توجد طبقات بيانات محددة",
"No selected data layers":"لا توجد طبقات بيانات محددة",
"Cleared {count} data layers":{
"Cleared {count} data layers":{
@@ -552,7 +552,7 @@
"CALIBRATION":"المعايرة",
"CALIBRATION":"المعايرة",
"ADJUST":"ضبط",
"ADJUST":"ضبط",
"Drag the camera in the world: rings rotate, arrows move, handles set range/FOV":"اسحب الكاميرا في العالم: تدور الحلقات وتحرّك الأسهم الموضع وتضبط المقابض المدى وزاوية الرؤية",
"Drag the camera in the world: rings rotate, arrows move, handles set range/FOV":"اسحب الكاميرا في العالم: تدور الحلقات وتحرّك الأسهم الموضع وتضبط المقابض المدى وزاوية الرؤية",
"Camera pose — click a value to type":"وضع الكاميرا — انقر على قيمة لكتابتها",
"Camera pose — click a value to type":"وضعية الكاميرا — انقر على قيمة لكتابتها",
"awaiting first AIS position…":"بانتظار أول موضع AIS…",
"awaiting first AIS position…":"بانتظار أول موضع AIS…",
"CCTV ON":"CCTV يعمل",
"CCTV ON":"CCTV مفعّل",
"COVERAGE ON":"التغطية مفعّلة",
"COVERAGE ON":"التغطية مفعّلة",
"AUTO HOP ON":"التنقل التلقائي مفعّل",
"AUTO HOP ON":"التنقل التلقائي مفعّل",
"PROJECTION OFF":"الإسقاط متوقف",
"PROJECTION OFF":"الإسقاط متوقف",
"ADJUST ON":"الضبط مفعّل",
"ADJUST ON":"الضبط مفعّل",
"{count} CAMERAS STANDING BY · NO CAMERA SELECTED · CLICK A CAMERA TO ACTIVATE":"{count} كاميرا في وضع الاستعداد · لم تُحدَّد كاميرا · انقر على كاميرا لتفعيلها",
"{count} CAMERAS STANDING BY · NO CAMERA SELECTED · CLICK A CAMERA TO ACTIVATE":"الكاميرات في وضع الاستعداد: {count} · لم تُحدَّد كاميرا · انقر على كاميرا لتفعيلها",
"No cameras available in catalog.":"لا توجد كاميرات متاحة في الفهرس.",
"No cameras available in catalog.":"لا توجد كاميرات متاحة في الفهرس.",
"ENABLE TO LOAD OBSERVED / MAPPED PROXIMITY":"فعّل لتحميل العناصر القريبة المرصودة / المرسومة",
"Global Context navigation":"التنقل في السياق العالمي",
"Global Context navigation":"التنقل في السياق العالمي",
"PREVIOUS":"السابق",
"PREVIOUS":"السابق",
"Open-source mapped/observed context. Missing broadcasts, unloaded map areas, or unmapped sites are not evidence of absence.":"سياق مرسوم/مرصود من مصادر مفتوحة. غياب البث أو عدم تحميل مناطق الخريطة أو وجود مواقع غير مرسومة لا يدل على عدم الوجود.",
"Open-source mapped/observed context. Missing broadcasts, unloaded map areas, or unmapped sites are not evidence of absence.":"سياق مرسوم/مرصود من مصادر مفتوحة. غياب البث أو عدم تحميل مناطق الخريطة أو وجود مواقع غير مرسومة لا يدل على عدم الوجود.",
@@ -928,7 +928,7 @@
"Data provided by:":"البيانات مقدَّمة من:",
"Data provided by:":"البيانات مقدَّمة من:",
"Light aircraft":"طائرة خفيفة",
"Light aircraft":"طائرة خفيفة",
"Glider":"طائرة شراعية",
"Glider":"طائرة شراعية",
"Turboprop":"طائرة مروحية توربينية",
"Turboprop":"طائرة بمحرك توربيني مروحي",
"Airliner":"طائرة ركاب",
"Airliner":"طائرة ركاب",
"Widebody":"طائرة عريضة البدن",
"Widebody":"طائرة عريضة البدن",
"Four-engine jet":"نفاثة رباعية المحركات",
"Four-engine jet":"نفاثة رباعية المحركات",
@@ -1110,7 +1110,7 @@
"That file creates more than {limit} map objects (the limit).":"ينشئ هذا الملف عناصر على الخريطة تتجاوز الحد المسموح ({limit}).",
"That file creates more than {limit} map objects (the limit).":"ينشئ هذا الملف عناصر على الخريطة تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} style definitions and image links after cleanup (the limit).":"بعد التنظيف، يحتوي هذا الملف على تعريفات أنماط وروابط صور تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} style definitions and image links after cleanup (the limit).":"بعد التنظيف، يحتوي هذا الملف على تعريفات أنماط وروابط صور تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} features (the limit).":"يحتوي هذا الملف على عناصر تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} features (the limit).":"يحتوي هذا الملف على عناصر تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} points (the limit) across {features} features.":"يحتوي هذا الملف على نقاط تتجاوز الحد المسموح ({limit}) موزّعة على {features} عنصر.",
"That file has more than {limit} points (the limit) across {features} features.":"يحتوي هذا الملف على نقاط تتجاوز الحد المسموح ({limit})؛ عدد العناصر: {features}.",
"That file has more than {limit} points (the limit).":"يحتوي هذا الملف على نقاط تتجاوز الحد المسموح ({limit}).",
"That file has more than {limit} points (the limit).":"يحتوي هذا الملف على نقاط تتجاوز الحد المسموح ({limit}).",
"That KMZ unpacks to more than the import limit.":"حجم ملف KMZ هذا بعد فك ضغطه يتجاوز حد الاستيراد.",
"That KMZ unpacks to more than the import limit.":"حجم ملف KMZ هذا بعد فك ضغطه يتجاوز حد الاستيراد.",
"That KMZ is damaged and could not be unpacked.":"ملف KMZ هذا تالف وتعذّر فك ضغطه.",
"That KMZ is damaged and could not be unpacked.":"ملف KMZ هذا تالف وتعذّر فك ضغطه.",
@@ -1200,7 +1200,7 @@
"{name} is empty":"{name}: القيمة فارغة",
"{name} is empty":"{name}: القيمة فارغة",
"{name} is longer than any real key ({limit} max)":"{name}: القيمة أطول من أي مفتاح حقيقي (الحد الأقصى {limit})",
"{name} is longer than any real key ({limit} max)":"{name}: القيمة أطول من أي مفتاح حقيقي (الحد الأقصى {limit})",
"{name} may only contain printable characters with no spaces":"{name}: يُسمح فقط بالأحرف القابلة للطباعة دون مسافات",
"{name} may only contain printable characters with no spaces":"{name}: يُسمح فقط بالأحرف القابلة للطباعة دون مسافات",
"{name} contains a character that is not valid in a key (#, quotes, $, \\, or backtick)":"{name}: يحتوي على حرف غير صالح في المفتاح (#، أو علامات الاقتباس، أو $، أو \\، أو العلامة المائلة الخلفية `)",
"{name} contains a character that is not valid in a key (#, quotes, $, \\, or backtick)":"{name}: يحتوي على حرف غير صالح في المفتاح (#، أو علامات الاقتباس، أو $، أو \\، أو علامة الاقتباس الخلفية `)",
"{name} is configured outside Provider Settings and can only be changed where it was set":"{name}: مُعَدّ خارج «إعدادات المزوّدين» ولا يمكن تغييره إلا حيث ضُبط",
"{name} is configured outside Provider Settings and can only be changed where it was set":"{name}: مُعَدّ خارج «إعدادات المزوّدين» ولا يمكن تغييره إلا حيث ضُبط",
"The key was not saved: could not restrict the credential file to your account; nothing was saved":"لم يُحفظ المفتاح: تعذّر قصر الوصول إلى ملف بيانات الاعتماد على حسابك؛ لم يُحفظ شيء",
"The key was not saved: could not restrict the credential file to your account; nothing was saved":"لم يُحفظ المفتاح: تعذّر قصر الوصول إلى ملف بيانات الاعتماد على حسابك؛ لم يُحفظ شيء",
"The key was not saved: the existing configuration could not be read, so nothing was changed":"لم يُحفظ المفتاح: تعذّرت قراءة الإعدادات الحالية، لذا لم يتغيّر شيء",
"The key was not saved: the existing configuration could not be read, so nothing was changed":"لم يُحفظ المفتاح: تعذّرت قراءة الإعدادات الحالية، لذا لم يتغيّر شيء",
@@ -1290,7 +1290,7 @@
"many":"القريبة: {count}",
"many":"القريبة: {count}",
"other":"القريبة: {count}"
"other":"القريبة: {count}"
},
},
"retrying mapped ALPR cameras":"إعادة محاولة تحميل كاميرات ALPR المرسومة",
"retrying mapped ALPR cameras":"جارٍ إعادة محاولة تحميل كاميرات ALPR المرسومة",
"Click the globe to place {endpoint}":"انقر على الكرة الأرضية لوضع {endpoint}",
"Click the globe to place {endpoint}":"انقر على الكرة الأرضية لوضع {endpoint}",
"SET B, then click the globe":"اضغط «تعيين B»، ثم انقر على الكرة الأرضية",
"SET B, then click the globe":"اضغط «تعيين B»، ثم انقر على الكرة الأرضية",
@@ -1480,7 +1480,7 @@
"Routing timed out":"انتهت مهلة حساب المسار",
"Routing timed out":"انتهت مهلة حساب المسار",
"Routing unavailable — no response from the routing service":"التوجيه غير متاح — لا استجابة من خدمة التوجيه",
"Routing unavailable — no response from the routing service":"التوجيه غير متاح — لا استجابة من خدمة التوجيه",
"Earthquake source unavailable":"مصدر بيانات الزلازل غير متاح",
"Earthquake source unavailable":"مصدر بيانات الزلازل غير متاح",
"live feed unavailable":"البث المباشر للبيانات غير متاح",
"live feed unavailable":"المصدر المباشر غير متاح",
"{value}°N":"{value}° ش",
"{value}°N":"{value}° ش",
"{value}°S":"{value}° ج",
"{value}°S":"{value}° ج",
"{value}°E":"{value}° ق",
"{value}°E":"{value}° ق",
@@ -1490,7 +1490,7 @@
"fire confidence|low":"منخفضة",
"fire confidence|low":"منخفضة",
"age|<1h":"<1 س",
"age|<1h":"<1 س",
"age|{count}h":"{count} س",
"age|{count}h":"{count} س",
"age|{count}d":"{count} يوم",
"age|{count}d":"{count} ي",
"Source snapshot time unavailable":"وقت لقطة المصدر غير متاح",
"Source snapshot time unavailable":"وقت لقطة المصدر غير متاح",
"Live data unavailable":"البيانات المباشرة غير متاحة",
"Live data unavailable":"البيانات المباشرة غير متاحة",
"Intel Picture":"الصورة الاستخباراتية",
"Intel Picture":"الصورة الاستخباراتية",
@@ -1534,7 +1534,7 @@
"Retrying automatically at {time} UTC":"إعادة المحاولة تلقائيًا عند {time} UTC",
"Retrying automatically at {time} UTC":"إعادة المحاولة تلقائيًا عند {time} UTC",
"Retrying automatically after provider cooldown":"إعادة المحاولة تلقائيًا بعد انتهاء مهلة المزوّد",
"Retrying automatically after provider cooldown":"إعادة المحاولة تلقائيًا بعد انتهاء مهلة المزوّد",
"Updates automatically after pan or zoom and once a minute. The public feed covers a 250-nautical-mile circle around the view centre; zooming out does not make it a worldwide snapshot. Blank cells are outside sampled coverage or have insufficient observations.":"يتحدّث تلقائيًا بعد التحريك أو التكبير/التصغير ومرة كل دقيقة. يغطي المصدر العام دائرة نصف قطرها 250 ميلًا بحريًا حول مركز العرض؛ والتصغير لا يجعله لقطة عالمية. الخلايا الفارغة خارج نطاق العيّنة أو أرصادها غير كافية.",
"Updates automatically after pan or zoom and once a minute. The public feed covers a 250-nautical-mile circle around the view centre; zooming out does not make it a worldwide snapshot. Blank cells are outside sampled coverage or have insufficient observations.":"يتحدّث تلقائيًا بعد التحريك أو التكبير/التصغير ومرة كل دقيقة. يغطي المصدر العام دائرة نصف قطرها 250 ميلًا بحريًا حول مركز العرض؛ والتصغير لا يجعله لقطة عالمية. الخلايا الفارغة خارج نطاق العيّنة أو أرصادها غير كافية.",
"Low-accuracy score = 100 × max(0, bad − 1) / total: one aircraft is discounted, so this is not the raw share. Cells need {aircraft} aircraft over {minutes} minutes. Navigation-integrity anomalies are not a detection of jamming or spoofing.":"مؤشر ضعف الدقة = 100 × max(0, الضعيفة − 1) / الإجمالي: تُستبعد طائرة واحدة، لذا فهو ليس النسبة الخام. تحتاج كل خلية إلى {aircraft} طائرة خلال {minutes} دقيقة. شذوذ سلامة الملاحة ليس كشفًا للتشويش أو الانتحال.",
"Low-accuracy score = 100 × max(0, bad − 1) / total: one aircraft is discounted, so this is not the raw share. Cells need {aircraft} aircraft over {minutes} minutes. Navigation-integrity anomalies are not a detection of jamming or spoofing.":"مؤشر ضعف الدقة = 100 × max(0, الضعيفة − 1) / الإجمالي: تُستبعد طائرة واحدة، لذا فهو ليس النسبة الخام. تحتاج كل خلية إلى {aircraft} طائرات خلال {minutes} دقيقة. شذوذ سلامة الملاحة ليس كشفًا للتشويش أو الانتحال.",
"GNSS snapshot needs a view anchor":"لقطة GNSS تحتاج إلى نقطة ارتكاز للعرض",
"GNSS snapshot needs a view anchor":"لقطة GNSS تحتاج إلى نقطة ارتكاز للعرض",
"Selected field unavailable · wind remains visible":"الحقل المحدد غير متاح · تبقى الرياح ظاهرة",
"Selected field unavailable · wind remains visible":"الحقل المحدد غير متاح · تبقى الرياح ظاهرة",
@@ -1966,11 +1966,11 @@
"No surface reading":"لا قراءة سطحية",
"No surface reading":"لا قراءة سطحية",
"Aim the map center at Earth":"وجّه مركز الخريطة نحو الأرض",
"Aim the map center at Earth":"وجّه مركز الخريطة نحو الأرض",
"A location reading needs a loaded forecast and the Earth at the center of the view.":"تتطلب قراءة الموقع توقعًا محمّلًا ووجود الأرض في مركز العرض.",
"A location reading needs a loaded forecast and the Earth at the center of the view.":"تتطلب قراءة الموقع توقعًا محمّلًا ووجود الأرض في مركز العرض.",
"Interpolated model forecast on an approximately 1° grid. Broad weather patterns, not a street-level measurement.":"توقع نموذجي مستكمَل على شبكة بدقة 1° تقريبًا. أنماط طقس عامة، لا قياس على مستوى الشارع.",
"Interpolated model forecast on an approximately 1° grid. Broad weather patterns, not a street-level measurement.":"توقع نموذج عددي محسوب بالاستيفاء على شبكة بدقة 1° تقريبًا. أنماط طقس عامة، لا قياس على مستوى الشارع.",
" · calm":" · سكون",
" · calm":" · سكون",
" from {direction}":" من {direction}",
" from {direction}":" من {direction}",
"WIND AT {coordinates}":"الرياح عند {coordinates}",
"WIND AT {coordinates}":"الرياح عند {coordinates}",
"{model} · valid {time}":"{model} · صالح حتى {time}",
"{model} · valid {time}":"{model} · التوقع عند {time}",
"Wind speed field unavailable":"حقل سرعة الرياح غير متاح",
"Wind speed field unavailable":"حقل سرعة الرياح غير متاح",
"Globe imagery unavailable":"صور الكرة الأرضية غير متاحة",
"Globe imagery unavailable":"صور الكرة الأرضية غير متاحة",
"Globe field image unavailable":"صورة الحقل على الكرة الأرضية غير متاحة",
"Globe field image unavailable":"صورة الحقل على الكرة الأرضية غير متاحة",
@@ -2096,12 +2096,12 @@
"Review scene import":"مراجعة استيراد المشهد",
"Review scene import":"مراجعة استيراد المشهد",
"Nothing is loaded or changed until you apply this file.":"لا يُحمَّل أو يتغيّر شيء حتى تطبّق هذا الملف.",
"Nothing is loaded or changed until you apply this file.":"لا يُحمَّل أو يتغيّر شيء حتى تطبّق هذا الملف.",
"Ready to import":"جاهز للاستيراد",
"Ready to import":"جاهز للاستيراد",
"Apply replaces the current project. Export your current project first if you want to keep both.":"التطبيق يستبدل المشروع الحالي. صدّر مشروعك الحالي أولًا إن أردت الاحتفاظ بكليهما.",
"Apply replaces the current project. Export your current project first if you want to keep both.":"يؤدي تطبيق الاستيراد إلى استبدال المشروع الحالي. صدّر مشروعك الحالي أولًا إن أردت الاحتفاظ بكليهما.",
"Apply import":"تطبيق الاستيراد",
"Apply import":"تطبيق الاستيراد",
"Import was not applied. The current project may have changed.":"لم يُطبَّق الاستيراد. ربما تغيّر المشروع الحالي.",
"Import was not applied. The current project may have changed.":"لم يُطبَّق الاستيراد. ربما تغيّر المشروع الحالي.",
"Select a scene and shot first":"اختر مشهدًا ولقطة أولًا",
"Select a scene and shot first":"اختر مشهدًا ولقطة أولًا",
"Edit scene details":"تعديل تفاصيل المشهد",
"Edit scene details":"تعديل تفاصيل المشهد",
"Camera positions use degrees and meters above the ellipsoid. Drafts are validated before they replace your saved scene.":"تُحدَّد مواضع الكاميرا بالدرجات وبالأمتار فوق الإهليلج. يُتحقّق من المسودات قبل أن تحل محل مشهدك المحفوظ.",
"Camera positions use degrees and meters above the ellipsoid. Drafts are validated before they replace your saved scene.":"تُحدَّد مواضع الكاميرا بالدرجات وبالأمتار فوق المجسّم الإهليلجي. يُتحقّق من المسودات قبل أن تحل محل مشهدك المحفوظ.",
"Anchors and data packs":"نقاط الارتكاز وحزم البيانات",
"Anchors and data packs":"نقاط الارتكاز وحزم البيانات",
"Shot camera, timing, packs and actions":"كاميرا اللقطة والتوقيت والحزم والإجراءات",
"Shot camera, timing, packs and actions":"كاميرا اللقطة والتوقيت والحزم والإجراءات",
"New anchor ID":"معرّف نقطة الارتكاز الجديدة",
"New anchor ID":"معرّف نقطة الارتكاز الجديدة",
@@ -2233,7 +2233,7 @@
"Show {name}":"إظهار {name}",
"Show {name}":"إظهار {name}",
"Fly to {name}":"الانتقال إلى {name}",
"Fly to {name}":"الانتقال إلى {name}",
"Remove {name}":"إزالة {name}",
"Remove {name}":"إزالة {name}",
"At most {count} files at once — remove one first.":"الحد الأقصى {count} ملفات في آن واحد — أزل ملفًا أولًا.",
"At most {count} files at once — remove one first.":"الحد الأقصى {count} ملفًا في آن واحد — أزل ملفًا أولًا.",
"Reading {name}…":"جارٍ قراءة {name}…",
"Reading {name}…":"جارٍ قراءة {name}…",
"That file could not be read.":"تعذّرت قراءة هذا الملف.",
"That file could not be read.":"تعذّرت قراءة هذا الملف.",
/* Canvas labels (installations, map cards, detections) are measured and drawn
with left-to-right geometry: a card's text starts at its left padding. A
canvas inherits the page direction, which turned that start into the right
edge and pushed every title out of its card. */
html[dir='rtl']canvas{
direction:ltr;
}
/* Scene callouts on the screen whiteboard: the card grows to the right of the
text's x, so right-to-left text ends there instead of starting there. The
injected stack (JetBrains Mono) has no Arabic glyphs; use the Arabic-aware
one. */
html[dir='rtl'].gev-anno-text{
text-anchor:end;
font-family:var(--font-mono);
letter-spacing:0;
}
/* Position counters built from bare numbers (01 / 25, 1 / 3) read as a number
pair, left to right, as an unspaced 1/3 does; otherwise the slash swaps
them and the current item looks like the total. Translated counters say
«من» instead. */
html[dir='rtl']
:is(
#bhote-koshi-event-panel[data-role='beat-index'],
#cockpit-brief-position
){
direction:ltr;
unicode-bidi:isolate;
}
/* The radio tuner header is a left-to-right instrument row; its channel
readout («القناة 01 من 750») still reads in its own language. */
html[dir='rtl']#radio-tuner-value{
unicode-bidi:plaintext;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.