RSS Git Download  Clone
Raw Blame History 56kB 1082 lines
const strings = {
  error: {
    server_error: "خطأ في الخادم، يرجى المحاولة مرة أخرى",
    aiPromptTooLong: "طلب AI طويل جدًا (الحد الأقصى 4096 حرفًا)",
  },
  title: {
    donate: "تبرع",
    donateTitle: "ادعم P3X Redis UI",
    donateDescription: "P3X Redis UI هو مشروع مجاني ومفتوح المصدر. تكاليف صيانة التطبيق وميزات الذكاء الاصطناعي وصور Docker والخوادم والبنية التحتية تأتي من جيب المطور الخاص. إذا وجدت هذه الأداة مفيدة، يرجى التفكير في دعم تطويرها المستمر بتبرع. كل مساهمة تساعد في الحفاظ على المشروع حيًا ومتناميًا. شكرًا لك!",
    jsonRecursive: "توسيع جميع الأوراق",
    name: "P3X Redis UI",
    nameDonated: "P3X Redis UI+",
    main: "يمكنك اختيار اتصال Redis للاتصال من القائمة السفلية اليسرى.",
    statistics: "الإحصائيات",
    error: "خطأ",
    connectingRedis: "الاتصال بـ Redis ...",
    socketioConnectError: "خطأ Socket.IO",
    db: "DB",
    server: "الخادم",
    clients: "العملاء",
    memory: "الذاكرة",
    persistence: "المثابرة",
    stats: "الإحصائيات",
    replication: "النسخ المتماثل",
    cpu: "CPU",
    cluster: "Cluster",
    modules: "الوحدات",
    errorstats: "إحصائيات الأخطاء",
    commandstats: "إحصائيات الأوامر",
    latencystats: "إحصائيات زمن الاستجابة",
    keysizes: "أحجام المفاتيح",
    threads: "الخيوط"
  },
  confirm: {
    dropIndex: "هل أنت متأكد من حذف هذا الفهرس؟",
    uploadBuffer: "هل أنت متأكد من تحميل هذه البيانات الثنائية؟",
    uploadBufferDone: "يتم تحميل البيانات الثنائية",
    uploadBufferDoneAndSave: "يتم تحميل البيانات الثنائية وحفظها على الخادم",
    title: "تأكيد",
    alert: "تنبيه",
    info: "معلومات",
    deleteListItem: "هل أنت متأكد من حذف عنصر القائمة هذا؟",
    deleteHashKey: "هل أنت متأكد من حذف عنصر مفتاح التجزئة هذا؟",
    deleteStreamTimestamp: "هل أنت متأكد من حذف هذا الطابع الزمني للبث؟",
    deleteSetMember: "هل أنت متأكد من حذف هذا العضو في المجموعة؟",
    deleteZSetMember: "هل أنت متأكد من حذف عضو المجموعة الذي تم فرزه؟",
    deleteConnection: "تأكيد",
    deleteConnectionText: "هل أنت متأكد من حذف اتصال Redis هذا؟",
    deleteNode: "هل أنت متأكد من حذف عقدة Redis هذه؟",
    delete: "حذف؟",
    deleteAllKeys: opts => {
      return `احذف هذه الشجرة وكل مفاتيحها (${opts.key})؟`;
    },
    deleteSearchKeys: opts => {
      return `هل أنت متأكد من حذف جميع المفاتيح المطابقة لـ "${opts.pattern}"؟ تم العثور على ${opts.count} مفتاح.`;
    },
    socketioConnectError: "لا يمكن لـ Socket.IO الاتصال بالخادم، يمكنك إعادة التحميل ومحاولة حل خطأ الاتصال بنفسك، ولا يعرف العميل كيفية حل المشكلة بنفسه.",
    socketioAuthRequired: "مطلوب إذن Socket.IO. يرجى المصادقة باستخدام HTTP Basic Auth (اسم المستخدم/كلمة المرور) وإعادة التحميل.",
    invalidCredentials: "اسم المستخدم أو كلمة المرور غير صحيحة.",
    deleteKey: "هل أنت متأكد من حذف هذا المفتاح؟",
    rename: {
      title: "هل أنت متأكد من إعادة تسمية هذا المفتاح؟",
      textContent: "يؤدي هذا الإجراء إلى إعادة تسمية المفتاح بشكل دائم.",
      placeholder: "مفتاح Redis (مطلوب)"
    },
    ttl: {
      title: "هل أنت متأكد أنك تريد تغيير TTL لهذا المفتاح؟",
      textContent: "يؤدي تغيير TTL إلى تحديث مدة بقاء هذا المفتاح. اتركه فارغًا للاحتفاظ بهذا المفتاح إلى الأبد.",
      placeholder: "مفتاح Redis TTL (عدد صحيح أو فارغ)",
      placeholderPlaceholder: "فارغة تعني أنها ستستمر إلى الأبد؛ وإلا أدخل عددًا صحيحًا.",
      convertTextToTime: "تحويل النص إلى وقت",
      convertTextToTimePlaceholder: "على سبيل المثال. 1d سيكون 86400"
    }
  },
  language: {
    ar: "العربية / Arabic",
    az: "Azərbaycanca / Azerbaijani",
    be: "Беларуская / Belarusian",
    bg: "Български / Bulgarian",
    bn: "বাংলা / Bengali",
    cs: "Čeština / Czech",
    da: "Dansk / Danish",
    de: "Deutsch / German",
    el: "Ελληνικά / Greek",
    en: "English",
    es: "Español / Spanish",
    et: "Eesti / Estonian",
    fi: "Suomi / Finnish",
    fil: "Filipino / Filipino",
    fr: "Français / French",
    he: "עברית / Hebrew",
    hr: "Hrvatski / Croatian",
    hu: "Magyar / Hungarian",
    hy: "Հայերեն / Armenian",
    id: "Bahasa Indonesia / Indonesian",
    it: "Italiano / Italian",
    ja: "日本語 / Japanese",
    ka: "ქართული / Georgian",
    kk: "Қазақша / Kazakh",
    km: "ខ្មែរ / Khmer",
    ko: "한국어 / Korean",
    ky: "Кыргызча / Kyrgyz",
    lt: "Lietuvių / Lithuanian",
    mk: "Македонски / Macedonian",
    ms: "Bahasa Melayu / Malay",
    ne: "नेपाली / Nepali",
    nl: "Nederlands / Dutch",
    no: "Norsk / Norwegian",
    pl: "Polski / Polish",
    "pt-BR": "Português (Brasil) / Portuguese (Brazil)",
    "pt-PT": "Português / Portuguese",
    ro: "Română / Romanian",
    ru: "Русский / Russian",
    sk: "Slovenčina / Slovak",
    sl: "Slovenščina / Slovenian",
    sr: "Српски / Serbian",
    sv: "Svenska / Swedish",
    tg: "Тоҷикӣ / Tajik",
    th: "ไทย / Thai",
    tr: "Türkçe / Turkish",
    uk: "Українська / Ukrainian",
    vi: "Tiếng Việt / Vietnamese",
    "zh-HK": "中文(香港) / Chinese (Hong Kong)",
    "zh-TW": "中文(台灣) / Chinese (Taiwan)",
    zn: "中文 / Chinese",
    bs: 'Bosanski / Bosnian',
    si: 'සිංහල / Sinhala',
    sw: 'Kiswahili / Swahili',
    ta: 'தமிழ் / Tamil'
  },
  intention: {
    copy: "نسخ",
    downloadBuffer: "تحميل ثنائي",
    setBuffer: "تحميل ثنائي",
    exportKeys: "تصدير المفاتيح",
    exportAllKeys: (opts) => `تصدير جميع المفاتيح (${opts.count})`,
    exportSearchResults: (opts) => `تصدير ${opts.count} نتيجة`,
    deleteAllKeysMenu: (opts) => `حذف جميع ${opts.count}`,
    importKeys: "استيراد المفاتيح",
    deleteSearchKeys: (opts) => `حذف ${opts.count} مفتاح مطابق`,
    saveWithFormatJson: "حفظ مع التنسيق",
    formatJson: "تنسيق جيسون",
    wrap: "التفاف",
    unwrap: "بسط",
    downloadJson: "تحميل JSON",
    pubsubMonitor: "PubSub",
    pulse: "Pulse",
    profiler: "Profiler",
    memoryAnalysis: "Analysis",
    // When you translate the language, keep the Language in English
    // eg. Idioma / Language
    language: "اللغة",
    ok: "حسنًا",
    addKey: "أضف إلى هذا المفتاح",
    addKeyRoot: "أضف مفتاح الجذر",
    reloadKey: "إعادة تحميل المفتاح",
    reload: "إعادة تحميل",
    close: "إغلاق",
    commands: "الأوامر",
    view: "عرض",
    statistics: "الإحصائيات",
    refresh: "تحديث",
    pause: "إيقاف مؤقت",
    resume: "استئناف",
    clear: "واضح",
    rename: "إعادة تسمية",
    main: "قاعدة البيانات",
    cancel: "إلغاء",
    theme: "الموضوع",
    github: "GitHub",
    githubRepo: "مستودع",
    githubRelease: "الإصدارات",
    githubChangelog: "سجل التغيير",
    info: "Info",
    settings: "الإعدادات",
    connect: "الاتصال",
    disconnect: "قطع الاتصال",
    logout: "تسجيل الخروج",
    overview: "نظرة عامة",
    console: "وحدة التحكم",
    noConnections: "لا يوجد اتصالات، قم بإضافة اتصال في قائمة الإعدادات.",
    noConnectionsInSettings: "لا توجد اتصالات، يمكنك إضافة اتصال جديد أعلاه.",
    connectionAdd: "اتصال جديد",
    addGroup: "إضافة مجموعة",
    extend: "تمديد",
    collapse: "طي",
    add: "أضف",
    edit: "تحرير",
    save: "حفظ",
    ttl: "قم بتعيين TTL",
    fieldTtl: "مهلة الحقل",
    digest: "ملخص",
    delete: "حذف",
    remove: "إزالة",
    areYouSure: "هل أنت متأكد؟",
    sure: "بالتأكيد",
    testConnection: "اتصال الاختبار",
    getKey: "جارٍ تحميل مفتاح Redis والبيانات المرتبطة به ...",
    jsonViewShow: "عرض JSON",
    jsonViewEditor: "تحرير JSON",
    quickConsole: "وحدة التحكم السريعة",
    moveUp: "نقل لأعلى",
    moveDown: "نقل لأسفل",
  },
  diff: {
    reviewChanges: "\u0645\u0631\u0627\u062c\u0639\u0629 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a",
    inline: "\u0645\u0636\u0645\u0646",
    sideBySide: "\u062c\u0646\u0628\u064b\u0627 \u0625\u0644\u0649 \u062c\u0646\u0628",
    additions: "\u0625\u0636\u0627\u0641\u0627\u062a",
    deletions: "\u0639\u0645\u0644\u064a\u0627\u062a \u062d\u0630\u0641",
    unchangedLines: "\u0623\u0633\u0637\u0631 \u062f\u0648\u0646 \u062a\u063a\u064a\u064a\u0631",
    noChanges: "\u0644\u0645 \u064a\u062a\u0645 \u0627\u0643\u062a\u0634\u0627\u0641 \u0623\u064a \u062a\u063a\u064a\u064a\u0631\u0627\u062a",
    before: "\u0642\u0628\u0644",
    after: "\u0628\u0639\u062f",
  },
  label: {
    id: {
      nodeId: "معرف العقدة",
      id: "معرف الاتصال",
      info: "إذا كنت لا ترغب في تغيير خصائص: sshPassword، وsshPrivateKey، وpassword، وtlsCrt، وtlsKey، وtlsCa، فيرجى إدخال معرف الاتصال في تلك الخصائص للحفاظ على قيم الخاصية سليمة. إذا كنت تريد نفس المنطق في كلمة مرور العقدة، فأدخل معرف العقدة في كلمة مرور العقدة."
    },
    secureFeature: "إذا رأيت قيمة تبدأ بـ P3X بنفس الشكل، فهذه ميزة آمنة. لتغيير الإعدادات، ما عليك سوى استبدال هذه الإعدادات بفارغة أو أي شيء آخر وسيتم حفظها. إذا لم تقم بتغيير الإعدادات، فسيتم الاحتفاظ بالإعدادات كما هي على الخادم.",
    aiTranslating: "جاري الترجمة...",
    aiSettings: "إعدادات AI",
    aiGroqApiKey: "مفتاح API Groq",
    aiGroqApiKeyInfo: "اختياري. مفتاح API Groq خاص بك لأداء أفضل. احصل على مفتاح مجاني من",
    aiGroqApiKeyPlaceholder: "gsk_...",
    aiGroqApiKeySaved: "تم حفظ مفتاح API AI",
    aiGroqApiKeyInvalid: "مفتاح API Groq غير صالح",
    aiGroqApiKeyNotSet: "غير محدد (الافتراضي للخادم)",
    aiEnabled: "AI مفعّل",
    aiEnabledYes: "نعم",
    aiEnabledNo: "لا",
    aiRouteViaNetwork: "التوجيه عبر network.corifeus.com",
    aiRoutingDirect: "تنتقل الاستعلامات مباشرة إلى Groq باستخدام مفتاح API الخاص بك، متجاوزةً network.corifeus.com.",
    aiRoutingNetwork: "تُوجَّه استعلامات الذكاء الاصطناعي عبر network.corifeus.com. إذا كان لديك مفتاح Groq API مجاني خاص بك، يمكنك إيقاف هذا الخيار للتوجيه مباشرةً إلى Groq بدون network.corifeus.com.",
    aiMaxTokens: "الحد الأقصى لرموز AI",
    aiMaxTokensInfo: "الحد الأقصى لعدد الرموز المميزة لاستجابات AI. تسمح القيم الأعلى باستجابات أطول ولكن قد تستهلك المزيد من رصيد API.",
    consoleDrawer: {
      toggleTooltip: "تبديل وحدة التحكم",
      clearTooltip: "مسح التمرير الخلفي",
      closeTooltip: "إغلاق وحدة التحكم",
      aiSettingsTooltip: "إعدادات AI",
      modeRedis: "REDIS",
      modeAi: "AI",
      connectionChipNoDb: opts => `${opts.name}`,
      connectionChipWithDb: opts => `${opts.name} · db ${opts.db}`,
      pageChip: opts => `الصفحة: ${opts.page}`,
      connectingTo: opts => `جارٍ الاتصال بـ ${opts.name}...`,
      connectedTo: opts => `متصل بـ ${opts.name} (Redis ${opts.version} ${opts.mode}، ${opts.modules} تم تحميل الوحدات)`,
      connectedToNoInfo: opts => `متصل بـ ${opts.name}`,
      disconnectedFrom: opts => `تم قطع الاتصال بـ ${opts.name}`,
      readyIndicator: "جاهز."
    },
    cheatsheet: {
      title: "AI ورقة الغش - ماذا يمكنني أن أسأل؟",
      subtitle: "انقر فوق أي مطالبة للصقه في وحدة التحكم. ثم اضغط على Enter.",
      searchPlaceholder: "مطالبات التصفية...",
      openOfficialDocs: "Redis الأوامر ↗",
      openOfficialDocsTooltip: "افتح مرجع أوامر Redis الرسمي على redis.io",
      closeTooltip: "إغلاق (خروج)",
      empty: "لا توجد مطالبات تتطابق مع الفلتر الخاص بك.",
      footerHint: "نصيحة: اكتب \"ai:\" متبوعًا بأي شيء بأي لغة - يفهم AI 54 لغة ويستخدم حالة Redis المباشرة عند الحاجة.",
      groups: {
        diagnostics: {
          name: "التشخيص المباشر",
          description: "اطلب من AI التحقق من حالة الخادم المباشرة عبر أدوات آمنة للقراءة فقط.",
          prompts: [
            "لماذا الذاكرة عالية؟",
            "أرني أبطأ 10 استفسارات",
            "التي ترتبط العملاء؟",
            "ما هي سياسة الحد الأقصى للذاكرة؟",
            "هل هناك أي عمليات إخلاء حديثة؟",
            "هل هناك أي حدث الكمون؟",
            "كم من الوقت كان الخادم يعمل؟",
            "ما هو معدل الإصابة؟",
            "إظهار استخدام وحدة المعالجة المركزية",
            "تلخيص مساحة المفاتيح",
            "ما مقدار الذاكرة التي يستخدمها كل نوع من البيانات؟",
            "هل هناك أي شيء يمنع الخادم الآن؟"
          ]
        },
        keys: {
          name: "مفاتيح",
          description: "فحص المفاتيح والعثور عليها والتفكير فيها دون النقر فوق الشجرة.",
          prompts: [
            "ابحث عن جميع المفاتيح المطابقة user:*",
            "كم عدد المفاتيح في كل قاعدة بيانات؟",
            "إظهار أكبر تجزئة في هذا db",
            "ابحث عن المفاتيح مع TTL أقل من 60 ثانية",
            "ما هي المفاتيح التي لا تحتوي على TTL؟",
            "ما هو نوع المفتاح session:abc؟",
            "تقدير الذاكرة المستخدمة بواسطة البادئة \"session:\"",
            "إظهار ترميز الكائن للمفتاح user:42",
            "هل هناك أي مفاتيح على وشك الانتهاء؟",
            "ما هي مساحة الاسم التي تستخدم أكبر قدر من الذاكرة؟"
          ]
        },
        dataTypes: {
          name: "أنواع البيانات",
          description: "صياغة باللغة الطبيعية للإنشاء/القراءة/التحديث لكل نوع Redis.",
          prompts: [
            "أنشئ تجزئة باسم المستخدم:1 مع اسم الحقول = عمر أليس = 30",
            "أضف ثلاثة عناصر إلى القائمة tasks",
            "إضافة أعضاء للمجموعة favourites",
            "إضافة الأعضاء المسجلين إلى المجموعة المصنفة leaderboard",
            "إلحاق حدث بالبث events",
            "احصل على آخر 10 إدخالات من الدفق events",
            "الحصول على جميع حقول مستخدم التجزئة:1",
            "احصل على أعضاء المجموعة favourites",
            "احصل على أعلى 10 نقاط من leaderboard"
          ]
        },
        modules: {
          name: "وحدات",
          description: "استعلامات عن الوحدات النمطية Redis المحملة (تظهر الفئات أدناه فقط عند وجود الوحدة النمطية).",
          prompts: []
        },
        json: {
          name: "RedisJSON",
          description: "متاح عند تحميل الوحدة النمطية ReJSON.",
          prompts: [
            "قم بإنشاء مستند JSON في user:42 مع { الاسم: \"Alice\"، العمر: 30 }",
            "اقرأ حقل الاسم user:42",
            "قم بتحديث عمر user:42 إلى 31",
            "قم بإدراج جميع مفاتيح JSON",
            "حذف حقل من مستند JSON",
            "الحصول على حقل متداخل باستخدام JSONPath"
          ]
        },
        search: {
          name: "RediSearch",
          description: "متاح عند تحميل وحدة البحث.",
          prompts: [
            "سرد كافة فهارس النص الكامل",
            "قم بإجراء بحث عن النص الكامل لـ \"redis\" في الفهرس idx:products",
            "إنشاء فهرس مدعوم بالتجزئة بعنوان الحقول (TEXT) والسعر (NUMERIC)",
            "الحصول على معلومات حول الفهرس idx:products",
            "مؤشر الهبوط idx:products",
            "ابحث عن المستندات التي يتراوح سعرها بين 10 و50",
            "اكتب بحثًا مختلطًا يجمع بين تشابه النص والمتجه"
          ]
        },
        timeseries: {
          name: "RedisTimeSeries",
          description: "متاح عند تحميل وحدة السلاسل الزمنية.",
          prompts: [
            "قائمة بجميع مفاتيح السلاسل الزمنية",
            "أضف نقطة بيانات إلى temp:room1",
            "احصل على نطاق temp:room1 من الأمس إلى الآن",
            "احصل على نطاق متعدد حسب التصنيف sensor=temp",
            "إنشاء 100 نقطة بيانات موجة جيبية لـ temp:room1",
            "إظهار الاحتفاظ والتسميات لـ temp:room1"
          ]
        },
        bloom: {
          name: "RedisBloom (بلوم / الوقواق / Top-K / CMS / T-Digest)",
          description: "متاح عند تحميل وحدة bf.",
          prompts: [
            "تحقق مما إذا كان العنصر foo موجودًا في مرشح الإزهار spam:ips",
            "إضافة عناصر إلى مرشح الازدهار spam:ips",
            "قم بإنشاء أعلى K باسم popular مع K = 10",
            "رسم بياني لعدد الاستعلامات traffic للمفتاح /home",
            "أضف قيمًا إلى t-digest واحصل على النسبة المئوية 95",
            "عرض معلومات لمرشح بلوم spam:ips"
          ]
        },
        vectorSet: {
          name: "VectorSet (Redis 8+)",
          description: "متاح عند اكتشاف Redis 8+ (النوع VECTORSET الأصلي).",
          prompts: [
            "إضافة متجه إلى embeddings",
            "ابحث عن المتجهات العشرة الأكثر تشابهًا مع متجه الاستعلام",
            "إظهار الأبعاد وعدد المتجهات embeddings",
            "حذف عنصر من مجموعة المتجهات embeddings",
            "البحث حسب اسم العنصر باستخدام VSIM"
          ]
        },
        redis8: {
          name: "Redis أكثر من 8 ميزات",
          description: "يظهر عند اكتشاف Redis 8+.",
          prompts: [
            "تعيين حقل التجزئة ttl مع HEXPIRE",
            "الحصول على ملخص قيمة السلسلة",
            "تشغيل نص كامل مختلط + بحث متجه (FT.HYBRID)",
            "قم بتعيين مفاتيح متعددة مع انتهاء صلاحية مشترك باستخدام MSETEX",
            "حذف إدخال دفق مع مجموعة المستهلكين (XDELEX)",
            "عرض إحصائيات فتحات المجموعة لأفضل 10 فتحات"
          ]
        },
        scripting: {
          name: "البرمجة النصية",
          description: "قم بإنشاء نصوص Lua / EVAL من أوصاف اللغة الطبيعية.",
          prompts: [
            "اكتب نصًا ذريًا يزيد counter X فقط إذا كان Y > 5",
            "قم بإنشاء 100 مفتاح عشوائي باستخدام Lua",
            "قم بتحويل خط أنابيب Shell هذا إلى خط أنابيب واحد EVAL: مفاتيح user:* | احصل على | grep غير نشط | ديل",
            "قم بنقل عملية دفعية إلى Lua لسلامة المجموعة",
            "تحديث نمط التحقق والضبط في مكالمة واحدة Lua",
            "قم بالتكرار عبر التجزئة وحذف الحقول المطابقة للنمط"
          ]
        },
        cluster: {
          name: "الكتلة",
          description: "يظهر فقط في وضع المجموعة.",
          prompts: [
            "إظهار معلومات الكتلة",
            "قائمة العقد العنقودية",
            "إظهار أفضل 10 فتحات حسب عدد المفاتيح",
            "إظهار أعلى 10 فتحات حسب الذاكرة",
            "أي سيد يملك فتحة 5000؟"
          ]
        },
        acl: {
          name: "ACL (Redis 6+)",
          description: "فحص مستخدمي التحكم في الوصول والاتصال الحالي.",
          prompts: [
            "من أنا متصل؟",
            "قم بإدراج جميع مستخدمي ACL",
            "ما هي الأذونات التي لدي؟",
            "إظهار قواعد المستخدم الافتراضية"
          ]
        },
        qna: {
          name: "أسئلة وأجوبة عامة",
          description: "اطرح أسئلة معرفية عن Redis - بدون أدوات، فقط إجابات.",
          prompts: [
            "ما هو ZADD؟",
            "كيف يعمل تجاوز فشل المجموعة؟",
            "اشرح SCAN مقابل KEYS",
            "متى يجب علي استخدام EVAL مقابل أوامر متعددة؟",
            "ما هي خيارات الثبات Redis؟",
            "ما الفرق بين RDB و AOF؟",
            "كيف يقرر Redis Sentinel اختيار سيد جديد؟",
            "شرح علامات التجزئة في الوضع العنقودي"
          ]
        },
        translate: {
          name: "اللغة الطبيعية → أمر Redis",
          description: "قم بوصف ما تريده بأي من اللغات الـ 54؛ يقوم AI بكتابة الأمر Redis.",
          prompts: [
            "حذف المفتاح user:42",
            "إعادة تسمية المفتاح foo إلى الشريط",
            "تنتهي صلاحية المفتاح session:abc خلال 10 ثوانٍ",
            "نسخ المصدر الرئيسي إلى الوجهة",
            "زيادة الزيارات المضادة بمقدار 5",
            "اضبط مفتاح التحية على \"hello\" لمدة ساعة واحدة",
            "احذف جميع مفاتيح user:*",
            "أظهر لي أكثر 10 مفاتيح ازدحامًا"
          ]
        }
      }
    },
    ssh: {
      on: "SSH على",
      off: "إيقاف تشغيل SSH",
      sshHost: "المضيف SSH",
      sshPort: "منفذ SSH",
      sshUsername: "اسم المستخدم SSH",
      sshPassword: "كلمة المرور SSH",
      sshPrivateKey: "SSH المفتاح الخاص"
    },
    isBuffer: opts => `[object ArrayBuffer] يعني أن القيمة عبارة عن بيانات ثنائية أو أن القيمة أكبر منها ${opts.maxValueAsBuffer}`,
    streamValue: `حقل الدفق والقيمة عبارة عن خط واحد. على سبيل المثال: الحقل 1 القيمة 1 "الحقل 2" "القيمة 2"`,
    streamTimestampId: `"*" يعني إنشاء تلقائي أو المواصفات كـ <millisecondsTime>-<sequenceNumber>`,
    unableToLoadKey: ({
      key
    }) => {
      return `غير قادر على تحميل هذا المفتاح: ${key}. ممكن، تم حذف المفتاح. الخطأ الدقيق موجود في وحدة التحكم.`;
    },
    bigJson: "يزيد حجم كائن JSON هذا عن 10 كيلو بايت، لذا تأكد من أنك تعرف ما تفعله، لأن بعض الوظائف قد تكون بطيئة في العرض.",
    addNode: "أضف عقدة",
    validateJson: "التحقق من صحة JSON",
    reducedFunction: `انخفاض الوظائف`,
    tooManyKeys: opts => {
      return `للحصول على الحد الأقصى الكامل للوظائف المسموح بها، إجمالي المفاتيح هو ${opts.maxLightKeysCount} العد. تحتوي قاعدة البيانات هذه على المفاتيح المسموح بها إجمالاً ${opts.count}. تم تعطيل فرز المفاتيح ومعلومات الشجرة الفاخرة الإضافية. يتم البحث فقط على الخادم بدلاً من بحث العميل.`;
    },
    redisCommandNotFound: "لم يتم العثور على تطابق أمر Redis ...",
    treeKeyStore: `يتم تنفيذ الفرز (المقارنة الطبيعية) على العميل المعروف أيضًا باسم المتصفح، مما يعني أنه يفرض عقوبة على المجموعات الكبيرة الكبيرة، مثل أكثر من 10 آلاف مفتاح، وقد يضيف القليل من الوقت لعرض الصفحة. لا يوجد فرز للمفاتيح في Redis، فقط هكذا.`,
    socketIoTimeout: options => {
      return `انتهت مهلة Socket.IO لهذا الطلب (بحد أقصى ${options.timeout / 1000} ثواني)...`;
    },
    resizerInfo: options => {
      return `الحد الأدنى لعرض اللوحة اليسرى أو اليمنى هو ${options.width}بكسل`;
    },
    jsonViewNotParsable: "هذه القيمة غير قابلة للتحليل JSON  ",
    ttlTitle: "اضبط TTL في ثوانٍ",
    passwordSecure: "قد تكون كلمة المرور فارغة، ولكنها ستظهر أحرفًا، وهذه ميزة أمنية.",
    aclAuthHint: "استخدم اسم مستخدم وكلمة مرور Redis ACL للمصادقة. اتركه فارغًا للمستخدم الافتراضي بدون كلمة مرور.",
    tlsWithoutCert: "تمكين TLS بدون شهادة إضافية",
    tlsRejectUnauthorized: "رفض الشهادة غير المصرح بها",
    tlsSecure: "إذا رأيت تكوين TLS يبدأ بـ P3X أو تبدو جميع إعدادات TLS متشابهة، فهذه ميزة آمنة. لتغيير الإعدادات، ما عليك سوى استبدال هذه الإعدادات بفارغة أو أي شيء آخر وسيتم حفظها. إذا لم تقم بتغيير إعدادات TLS، فسيتم الاحتفاظ بالإعدادات كما هي على الخادم.",
    treeSeparatorEmpty: "إذا كان فاصل الشجرة فارغًا، فلن تحتوي الشجرة على عقد متداخلة، بل مجرد قائمة خالصة",
    treeSeparatorEmptyNote: "لا توجد عقد متداخلة، مجرد قائمة نقية",
    welcomeConsole: "مرحبًا بك في وحدة التحكم Redis",
    welcomeConsoleInfo: "SHIFT + تم تمكين سجل المؤشر لأعلى أو لأسفل",
    redisListIndexInfo: "فارغ للإلحاق، -1 للإلحاق به أو حفظه في الموضع الموضح.",
    console: "وحدة التحكم",
    connectiondAdd: "إضافة اتصال",
    connectiondEdit: "تحرير الاتصال",
    connectiondView: "عرض الاتصال",
    connections: "اتصالات",
    keysSort: {
      on: "تشغيل فرز المفاتيح",
      off: "فرز المفاتيح"
    },
    cluster: {
      on: "Cluster على",
      off: "إيقاف تشغيل Cluster"
    },
    sentinel: {
      on: "Sentinel على",
      off: "إيقاف تشغيل Sentinel",
      name: "اسم Sentinel"
    },
    readonly: {
      on: "تشغيل للقراءة فقط",
      off: "إيقاف للقراءة فقط"
    },
    theme: {
      light: "ضوء",
      dark: "مؤسسة مظلمة",
      darkNeu: "الظلام",
      darkoBluo: "داركو بلو",
      enterprise: "المؤسسة",
      redis: "Redis",
      matrix: "مصفوفة"
    },
    connected: opts => {
      return `متصل: ${opts.name}`;
    },
    tree: "شجرة",
    askAuth: "اطلب الترخيص",
    keyboardShortcuts: "Keyboard Shortcuts",
    about: "About",
    supportedLanguages: "Supported Languages",
    version: "Version",
    redisVersion: "Redis Version",
    modules: "الوحدات",
    shortcutRefresh: "Refresh",
    shortcutSearch: "Focus Search",
    shortcutNewKey: "New Key",
    shortcutDisconnect: "قطع الاتصال",
    themeAuto: "Auto (system)",
    languageAuto: "Auto (system)",
    shortcutCommandPalette: "Command Palette",
    commandPalette: "Command Palette",
    noResults: "No results",
    redisCommandsReference: "أوامر Redis",
    ungrouped: "بدون مجموعة",
    grouped: "Grouped",
    connectFirst: "اتصل بخادم Redis أولاً",
    searchLanguage: "بحث عن لغة...",
    exportProgress: "جارٍ تصدير المفاتيح...",
    importProgress: "جارٍ استيراد المفاتيح...",
    importPreview: "معاينة",
    importOverwrite: "الكتابة فوق",
    importSkip: "تخطي",
    importConflict: "إذا كان المفتاح موجودًا بالفعل:",
    noKeysToExport: "لا توجد مفاتيح للتصدير",
    time: "الوقت",
    type: "النوع",
    format: "التنسيق",
    loading: "جارٍ التحميل...",
    autoRefresh: "تلقائي",
    exportSearchHint: "تصدير المفاتيح المطابقة للبحث الحالي فقط",
    importSearchHint: "الاستيراد يطبق على قاعدة البيانات بالكامل وليس نتائج البحث فقط",
    deleteSearchHint: "يحذف جميع المفاتيح المطابقة للبحث الحالي على الخادم",
    deletingSearchKeys: "جارٍ حذف المفاتيح المطابقة...",
    importNoKeys: "لم يتم العثور على مفاتيح في الملف",
    desktopNotifications: "إشعارات سطح المكتب",
    desktopNotificationsEnabled: "تفعيل إشعارات سطح المكتب",
    desktopNotificationsInfo: "تلقي إشعارات نظام التشغيل عند انقطاع اتصال Redis أو إعادة الاتصال عندما لا يكون التطبيق في المقدمة."
  },
  status: {
    dataCopied: "البيانات موجودة في الحافظة",
    exportDone: "اكتمل التصدير",
    deletedSearchKeys: (opts) => `تم حذف ${opts.count} مفتاح`,
    indexCreated: "تم إنشاء الفهرس",
    indexDropped: "تم حذف الفهرس",
    importDone: (opts) => `اكتمل الاستيراد: ${opts.created} تم إنشاؤه، ${opts.skipped} تم تخطيه، ${opts.errors} أخطاء`,
    nodeRemoved: "تمت إزالة العقدة",
    keyIsNotExisting: "ربما تم حذف هذا المفتاح أو انتهت صلاحيته.",
    keyCount: opts => {
      if (opts.keyCount === 0) {
        return "لا يوجد مفتاح";
      } else if (opts.keyCount === 1) {
        return "1 مفتاح";
      } else {
        return `${opts.keyCount} مفاتيح`;
      }
    },
    treeExpandAll: "قم بتوسيع جميع أوراق الشجرة. قد تكون هذه العملية مكلفة وقد تستغرق وقتا طويلا..",
    noRedisKeys: "لا توجد مفاتيح في قاعدة البيانات هذه.",
    redisConnected: "تم توصيل Redis بنجاح",
    reverted: "\u062a\u0645 \u0627\u0644\u062a\u0631\u0627\u062c\u0639",
    reloadingDataInfo: "إعادة تحميل معلومات بيانات Redis",
    added: "تمت الإضافة",
    saved: "تم التحديث",
    cancelled: "تم الإلغاء",
    deleted: "تم الحذف",
    savedRedis: "يتم حفظ بيانات Redis",
    redisDisconnected: opts => {
      return `حدث خطأ في الاتصال الحالي: ${opts.error.message}`;
    },
    dbChanged: opts => {
      return `تم تعيين مؤشر db على ${opts.db}. `;
    },
    treeDeleted: opts => {
      return `تم حذف مفتاح الشجرة (${opts.key}).`;
    },
    deletedKey: opts => {
      return `تم حذف المفتاح (${opts.key}).`;
    },
    renamedKey: "تمت إعادة تسمية هذا المفتاح",
    ttlChanged: "تم تغيير TTL لهذا المفتاح",
    notInteger: "هذا الإدخال ليس عددًا صحيحًا",
    persisted: "ويستمر هذا المفتاح إلى الأبد",
    set: "تم ضبط/إضافة المفتاح",
    connectionRestored: "تم استعادة الاتصال",
    socketDisconnected: "تم قطع الاتصال",
    socketError: "خطأ في الاتصال",
    deletedHashKey: "تم حذف مفتاح الهاش",
    deletedSetMember: "تم حذف عضو المجموعة",
    deletedListElement: "تم حذف عنصر القائمة",
    deletedZSetMember: "تم حذف عضو المجموعة المرتبة",
    deletedStreamTimestamp: "تم حذف إدخال التدفق",
  },
  code: {
    "delete-connection": "تم حذف هذا الاتصال، لذا تم قطع اتصالك بمثيل Redis هذا.",
    "save-connection": "تم تغيير هذا الاتصال، لذا تم قطع اتصالك بمثيل Redis هذا. يمكنك إعادة الاتصال.",
    "readonly-connections": "اتصالات إضافة/حفظ/حذف للقراءة فقط!",
    "readonly-connection-mode": "يتم قراءة هذا الاتصال فقط الوضع!",
    "list-out-of-bounds": "فهرس القائمة هذا خارج الحدود",
    "invalid-json-value": "القيمة غير صالحة JSON.",
    "http_auth_required": "التفويض مطلوب: يرجى المصادقة باستخدام HTTP Basic Auth وإعادة التحميل.",
    "auto-connection-failed": "ممكن تم حذف الاتصال وفشل الاتصال التلقائي لهذا السبب.",
    invalid_console_command: "هذا الأمر لا يعمل عبر GUI.",
    "AI_DISABLED": "الذكاء الاصطناعي معطل. قم بتفعيله في إعدادات AI.",
    "AI_PROMPT_REQUIRED": "مطلوب إدخال نص للذكاء الاصطناعي.",
    "GROQ_API_KEY_READONLY": "مفتاح Groq API للقراءة فقط ولا يمكن تعديله.",
    "blocked_api_access": "خطة Groq API الخاصة بك لا تسمح بالوصول إلى هذا النموذج. يرجى ترقية خطة Groq أو استخدام وكيل network.corifeus.com.",
    "rate_limit": "تم الوصول إلى حد معدل AI. حاول مرة أخرى لاحقًا أو استخدم مفتاح Groq API الخاص بك في الإعدادات."
  },
  form: {
    error: {
      required: "مطلوب",
      port: "المنفذ بين 1-65535",
      invalid: "النموذج غير صالح"
    },
    connection: {
      label: {
        name: "الاسم",
        group: "Group",
        host: "اسم المضيف",
        port: "ميناء",
        password: "كلمة المرور",
        username: "اسم المستخدم"
      }
    },
    treeSettings: {
      maxValueDisplay: "الحد الأقصى لطول سلسلة عرض القيمة",
      maxValueDisplayInfo: "إذا تم التعيين على 0، قم بإظهار القيم الكاملة. إذا كان أكبر من 0، اقتطاع إلى هذا الطول. إذا -1: بالنسبة للسلاسل، قم بإخفاء القيمة حتى يتم التحرير؛ أما بالنسبة للأنواع الأخرى، أظهر المحتوى الكامل.",
      maxKeys: "الحد الأقصى لعدد المفاتيح",
      maxKeysInfo: "لكي لا يتعطل GUI، فإننا نحدد الحد الأقصى لعدد المفاتيح.",
      keyCount: (opts) => {
        return `عدد المفاتيح: ${opts?.keyCount ?? 0}`;
      },
      label: {
        animation: "استخدم الرسوم المتحركة",
        noAnimation: "لا الرسوم المتحركة",
        undoEnabled: "\u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0645\u0641\u0639\u0651\u0644",
        undoDisabled: "\u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0645\u0639\u0637\u0651\u0644",
        diffEnabled: "\u0625\u0638\u0647\u0627\u0631 diff \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638",
        diffDisabled: "\u062a\u0645 \u062a\u0639\u0637\u064a\u0644 diff \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638",
        jsonFormatTwoSpace: "قم بتنسيق JSON بمسافتين",
        jsonFormatFourSpace: "قم بتنسيق JSON بأربع مسافات",
        formName: "إعدادات Redis",
        searchModeClient: "وضع البحث عن العميل",
        searchModeServer: "وضع البحث عن الخادم",
        searchModeStartsWith: "البحث مع يبدأ مع الوضع",
        searchModeIncludes: "البحث يشمل الوضع"
      },
      undoHint: "\u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0645\u062a\u0627\u062d \u0641\u0642\u0637 \u0644\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d string \u0648JSON",
      field: {
        treeSeparator: "فاصل الشجرة",
        treeSeparatorSelector: "محدد فاصل الشجرة",
        page: "عدد صفحات الشجرة",
        keyPageCount: "عدد الصفحات الرئيسية",
        keysSort: "فرز المفاتيح",
        searchMode: "وضع البحث",
        searchModeStartsWith: "يبدأ البحث بـ / يتضمن"
      },
      error: {
        keyPageCount: "يجب أن يكون عدد الصفحات الرئيسية عددًا صحيحًا بين 5 - 100",
        page: "يجب أن يكون عدد الصفحات عددًا صحيحًا بين 10 - 5000",
        maxValueDisplay: "يجب أن تكون قيمة العرض القصوى عددًا صحيحًا بين -1 و32768",
        maxKeys: "يجب أن يكون الحد الأقصى لقيمة عدد المفاتيح عددًا صحيحًا بين 100 و100000"
      }
    },
    key: {
      label: {
        formName: {
          add: "أضف مفتاح Redis جديد",
          edit: "تحرير مفتاح Redis",
          append: "أضف إلى مفتاح Redis الموجود"
        }
      },
      field: {
        streamTimestamp: "الطابع الزمني",
        key: "مفتاح",
        type: "اكتب",
        index: "الفهرس",
        hashKey: "مفتاح التجزئة",
        score: "النتيجة",
        value: "القيمة",
        errorRate: "معدل الخطأ",
        capacity: "السعة",
        topk: "Top K",
        width: "العرض",
        depth: "العمق",
        decay: "الاضمحلال",
        compression: "الضغط",
        increment: "الزيادة",
        item: "العنصر",
        vectorValues: "قيم المتجه (مفصولة بفواصل)",
        element: "اسم العنصر",
      },
      error: {
        streamTimestamp: "الطابع الزمني مطلوب، إما بتنسيق Redis أو *",
        key: "المفتاح هو، على الأقل، حرف واحد",
        hashKey: "يتكون مفتاح جدول التجزئة من حرف واحد على الأقل",
        score: "مطلوب النتيجة المحددة التي تم فرزها",
        value: "القيمة مطلوبة",
        errorRate: "يجب أن يكون معدل الخطأ بين 0 و1 (مثال 0.01)",
        capacity: "يجب أن تكون السعة عددًا صحيحًا موجبًا",
        topk: "يجب أن يكون Top K عددًا صحيحًا موجبًا",
        width: "يجب أن يكون العرض عددًا صحيحًا موجبًا",
        depth: "يجب أن يكون العمق عددًا صحيحًا موجبًا",
        item: "العنصر مطلوب"
      }
    },
    main: {
      label: {
        database: "DB"
      }
    }
  },
  page: {
    search: {
      title: "بحث",
      index: "فهرس",
      query: "استعلام",
      results: "النتائج",
      noIndex: "لم يتم العثور على فهارس",
      createIndex: "إنشاء فهرس",
      dropIndex: "حذف فهرس",
      indexInfo: "معلومات الفهرس",
      indexName: "اسم الفهرس",
      prefix: "بادئة المفتاح (اختياري)",
      fieldName: "اسم الحقل",
      hybridMode: "بحث هجين (FT.HYBRID)",
      vectorField: "حقل المتجه",
      vectorValues: "قيم المتجه",
    },
    monitor: {
      title: "المراقبة",
      memory: "الذاكرة",
      opsPerSec: "عمليات/ثانية",
      clients: "العملاء",
      blocked: "محظور",
      hitsMisses: "معدل الإصابة",
      networkIo: "إدخال/إخراج الشبكة",
      slowLog: "السجل البطيء",
      noSlowQueries: "لم يتم تسجيل أي استعلامات بطيئة.",
      confirmSlowLogReset: "هل أنت متأكد أنك تريد إعادة تعيين السجل البطيء؟",
      slowLogResetDone: "تمت إعادة تعيين السجل البطيء.",
      totalCommands: "الإجمالي",
      expired: "منتهي الصلاحية",
      evicted: "مطرود",
      clientList: "قائمة العملاء",
      topKeys: "أكبر المفاتيح حسب الذاكرة",
      killClient: "إنهاء العميل",
      clientKilled: "تم إنهاء العميل",
      confirmKillClient: "هل أنت متأكد من إنهاء هذا العميل؟",
      noKeys: "لا توجد مفاتيح",
      rss: "RSS",
      peak: "الذروة",
      fragmentation: "التجزئة",
      hitsAndMisses: "الإصابات / الأخطاء",
      noClients: "لا يوجد عملاء",
      slotStats: "إحصائيات فتحات المجموعة",
      serverInfo: "معلومات الخادم",
      os: "نظام التشغيل",
      port: "منفذ الشبكة",
      pid: "معرف العملية",
      configFile: "ملف التكوين",
      uptime: "الجهوزية",
      keyspace: "مساحة مفاتيح Redis",
      keys: "مفاتيح Redis",
      expires: "تنتهي",
      noKeyspace: "لا توجد مفاتيح",
      persistence: "ثبات البيانات",
      rdbLastSave: "RDB آخر حفظ",
      rdbStatus: "حالة RDB",
      rdbChanges: "التغييرات منذ آخر حفظ",
      aofEnabled: "تم تمكين AOF",
      aofSize: "حجم AOF",
      replication: "النسخ المتماثل Redis",
      role: "دور النسخ المتماثل",
      replicas: "النسخ المتماثلة المتصلة",
      masterHost: "المضيف الأساسي",
      linkStatus: "حالة ارتباط النسخ المتماثل",
      cpu: "استخدام وحدة المعالجة المركزية",
      cpuSys: "النظام",
      cpuUser: "المستخدم",
      modules: "وحدات Redis المحملة",
      noModules: "لم يتم تحميل وحدات Redis",
      clusterSlotMap: "خريطة فتحة مجموعة Redis",
      slotRange: "نطاق فتحة الكتلة",
      totalSlots: "إجمالي فتحات الكتلة",
      noClusterData: "لا تتوفر بيانات مجموعة Redis.",
    },
    analysis: {
      title: "تحليل الذاكرة",
      runAnalysis: "تشغيل التحليل",
      running: "جارٍ التحليل...",
      typeDistribution: "توزيع الأنواع",
      prefixMemory: "الذاكرة حسب البادئة",
      topKeysByMemory: "أكبر المفاتيح حسب الذاكرة",
      expirationOverview: "انتهاء صلاحية المفاتيح",
      memoryBreakdown: "تفصيل الذاكرة",
      keysScanned: "المفاتيح الممسوحة",
      totalMemory: "إجمالي الذاكرة",
      rssMemory: "ذاكرة RSS",
      peakMemory: "ذروة الذاكرة",
      luaMemory: "ذاكرة Lua",
      overheadMemory: "الحِمل الزائد",
      datasetMemory: "مجموعة البيانات",
      fragmentation: "التجزئة",
      allocator: "المُخصِّص",
      withTTL: "مع TTL",
      persistent: "دائم",
      avgTTL: "متوسط TTL",
      prefix: "البادئة",
      keyCount: "عدد المفاتيح",
      memoryUsage: "استخدام الذاكرة",
      noPrefix: "(بدون بادئة)",
      topN: "Top N",
      maxScanKeys: "الحد الأقصى لمسح المفاتيح",
      type: "النوع",
      noData: "لا توجد بيانات. انقر على تشغيل التحليل للبدء.",
      exportAll: "تصدير الكل",
      memoryDoctor: "Memory Doctor",
      doctorNoData: "انقر فوق تحديث لتشغيل تشخيصات Memory Doctor.",
    },
    acl: {
      title: "مستخدمي ACL",
      loadUsers: "تحميل المستخدمين",
      loading: "جارٍ التحميل...",
      username: "اسم المستخدم",
      status: "الحالة",
      enabled: "ممكّن",
      disabled: "معطل",
      commands: "الأوامر",
      commandsHint: "على سبيل المثال، +@all or +@read -@dangerous",
      keys: "أنماط مفاتيح Redis",
      keysHint: "على سبيل المثال، ~* or ~user:*",
      channels: "قنوات Pub/Sub",
      channelsHint: "على سبيل المثال، &* or &notifications:*",
      password: "كلمة المرور",
      noPassword: "لا يوجد كلمة مرور (nopass)",
      passwordHint: "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية",
      currentUser: "الحالي",
      createUser: "إنشاء مستخدم",
      editUser: "تحرير المستخدم",
      deleteUser: "حذف",
      confirmDelete: "هل أنت متأكد أنك تريد حذف مستخدم ACL؟",
      userDeleted: "تم حذف مستخدم ACL.",
      userSaved: "تم حفظ مستخدم ACL.",
      cannotDeleteDefault: "لا يمكن حذف المستخدم الافتراضي.",
      cannotDeleteSelf: "لا يمكن حذف المستخدم المتصل حاليًا.",
      noUsers: "مطلوب Redis 6.0+ لـ ACL.",
      groupCommon: "عام",
      groupDataTypes: "أنواع البيانات",
      groupOperations: "العمليات",
      rules: "القواعد",
      rulesHint: "الرموز المميزة المفصولة بمسافات (على سبيل المثال on >password +@all ~* &*)",
      defaultUserWarning: "تحذير: يمكن أن يؤدي تعديل المستخدم الافتراضي إلى قفل كافة الاتصالات. إذا حدث هذا، فستحتاج إلى إعادة تشغيل Redis أو استخدام redis-cli لاستعادة الوصول.",
    },
    overview: {
      noConnected: "لا يوجد اتصال بـ Redis.",
      overviewClients: "قم بإدراج المتصلين حسب عدد العملاء",
      connectedCount: opt => {
        if (opt.length === 1) {
          return "1 عميل";
        }
        return `${opt.length} عملاء`;
      }
    },
    key: {
      label: {
        key: "مفتاح",
        encoding: "الترميز",
        compression: "الضغط",
        aiRateLimited: "تم الوصول إلى حد طلبات الذكاء الاصطناعي. حاول مرة أخرى لاحقًا أو استخدم مفتاح Groq API الخاص بك في الإعدادات.",
        aiError: "فشل استعلام الذكاء الاصطناعي",
        length: "الحجم",
        ttl: "TTL",
        ttlTitle: "الوقت للعيش",
        type: "اكتب",
        ttlNotExpire: "لا تنتهي صلاحيته",
        lengthString: "بايت",
        lengthItem: "العناصر",
        actions: "الإجراءات"
      },
      list: {
        table: {
          index: "الفهرس",
          value: "القيمة"
        }
      },
      hash: {
        table: {
          hashkey: "هاشكي",
          value: "القيمة"
        }
      },
      set: {
        table: {
          value: "عضو"
        }
      },
      zset: {
        table: {
          value: "عضو",
          score: "النتيجة"
        }
      },
      stream: {
        table: {
          timestamp: "معرف الطابع الزمني",
          field: "الميدان",
          value: "القيمة"
        }
      },
      timeseries: {
        chart: "مخطط",
        info: "معلومات",
        addPoint: "إضافة نقطة بيانات",
        from: "من (ms أو -)",
        to: "إلى (ms أو +)",
        aggregation: "تجميع",
        timeBucket: "دلو (ms)",
        none: "لا شيء",
        dataPoints: "نقاط البيانات",
        labels: "التسميات",
        rules: "القواعد",
        retention: "الاحتفاظ",
        timestamp: "الطابع الزمني",
        value: "القيمة",
        retentionHint: "0 = بدون انتهاء صلاحية، أو بالمللي ثانية",
        duplicatePolicy: "سياسة التكرار",
        labelsHint: "key1 value1 key2 value2",
        timestampHint: "'*' يعني توليد تلقائي، أو طابع زمني بالمللي ثانية",
        editAllHint: "نقطة بيانات واحدة لكل سطر: طابع_زمني قيمة (الطابع الزمني يمكن أن يكون * للتوليد التلقائي)",
        autoSpread: "فاصل الانتشار التلقائي *",
        formula: "صيغة",
        formulaLinear: "خطي",
        formulaRandom: "عشوائي",
        formulaSawtooth: "سن المنشار",
        formulaPoints: "النقاط",
        formulaAmplitude: "السعة",
        formulaOffset: "الإزاحة",
        generate: "توليد",
        exportChart: "تصدير PNG",
        overlay: "تراكب المفاتيح",
        overlayHint: "مفاتيح مفصولة بفاصلة",
        mrangeFilter: "فلتر التسميات",
        bulkMode: "إنشاء مجمع",
        mrangeHint: "مثال sensor=temp"
      },
      probabilistic: {
        info: "معلومات",
        addItem: "إضافة عنصر",
        checkItem: "فحص عنصر",
        item: "عنصر",
        exists: "موجود",
        doesNotExist: "غير موجود",
        topkList: "أعلى العناصر",
        topkCount: "العدد",
        queryCount: "عدد الاستعلام",
        queryResult: "نتيجة الاستعلام",
        addedSuccessfully: "تمت إضافة العنصر بنجاح",
        deletedSuccessfully: "تم حذف العنصر بنجاح",
        quantile: "الكمية",
        quantileResult: "النتيجة",
        noItems: "لا توجد عناصر للعرض",
        resetConfirm: "إعادة تعيين جميع البيانات في هذا T-Digest؟",
      },
      vectorset: {
        info: "معلومات",
        elements: "العناصر",
        similarity: "بحث التشابه",
        searchByElement: "البحث حسب العنصر",
        searchByVector: "البحث حسب المتجه",
        vectorValues: "قيم المتجه",
        element: "عنصر",
        score: "النتيجة",
        count: "العدد",
        addElement: "إضافة عنصر",
        attributes: "السمات",
        noAttributes: "لا توجد سمات",
        dimensions: "الأبعاد",
        removeConfirm: "هل تريد إزالة هذا العنصر من VectorSet؟",
        noElements: "لا توجد عناصر",
        filter: "تصفية",
        searchComplete: "اكتمل البحث",
      }
    },
    treeControls: {
      settings: "إعدادات الشجرة",
      expandAll: "قم بتوسيع الكل",
      collapseAll: "طي الكل",
      level: "المستوى",
      search: {
        search: "ابحث في المفاتيح",
        clear: "مسح البحث الحالي لتعيينه فارغا",
        placeholderClient: "البحث من جانب العميل",
        placeholderServer: "بحث جانب الخادم",
        info: (opts) => "يعني البحث من جانب العميل أنه يطابق النص الموجود في إدخال البحث. يعني البحث من جانب الخادم أنه يشبه البحث في أنماط المفاتيح مثل *{search-text}*. بالنسبة لمجموعات البحث الكبيرة، من الأفضل استخدام البحث من جانب الخادم. بالنسبة لمجموعات البحث الأصغر، فمن الأفضل استخدام وضع البحث من جانب العميل." + ` إذا انتهى عدد المفاتيح ${opts?.maxLightKeysCount ?? 110000}، يمكنك البحث فقط على جانب الخادم.`,
        largeSetInfo: "في مجموعة كبيرة، يتم تعطيل البحث من جانب العميل. لذا، في الوقت الحالي، أصبح البحث من جانب الخادم فقط ممكنًا.",
        infoDetails: "لمعرفة كيفية عمل البحث، يرجى مراجعة الإعدادات"
      },
      pager: {
        next: "التالي",
        prev: "السابق",
        first: "أولا",
        last: "الاخير"
      }
    }
  },
  time: {
    years: "سنوات",
    months: "أشهر",
    days: "أيام",
    year: "سنة",
    month: "شهر",
    day: "يوم",
    second: "ثانية",
    seconds: "ثوانٍ",
    minute: "دقيقة",
    minutes: "دقائق",
    hour: "ساعة",
    hours: "ساعات"
  },
  redisTypes: {
    string: "String",
    list: "List",
    hash: "Hash table",
    set: "Set",
    zset: "Sorted set - zset",
    stream: "Stream",
    json: "JSON",
    timeseries: "Time Series",
    bloom: "Bloom مرشح",
    cuckoo: "Cuckoo مرشح",
    topk: "Top-K",
    cms: "Count-Min Sketch",
    tdigest: "T-Digest",
    vectorset: "VectorSet",
  },
  promo: {
    title: "AI مساعد الشبكة",
    description: "اكتشف مساعد الشبكة AI المجاني لدينا في network.corifeus.com - قم بتحليل المجالات، IPs، وسجلات DNS، وشهادات SSL، وأمن البريد الإلكتروني، والبنية التحتية للشبكة. مدعوم بـ AI للحصول على نتائج فورية وشاملة.",
    disclaimer: "يظهر هذا الترويج فقط على الموقع التجريبي ولن يظهر في Docker، Electron، أو عمليات نشر تطبيقات الويب.",
    toastMessage: "جرب مساعد الشبكة AI المجاني على network.corifeus.com - قم بتحليل النطاقات، DNS، SSL، والمزيد!",
    visit: "قم بزيارة network.corifeus.com"
  }
};
module.exports = strings;