diff --git a/i18n/ar/code.json b/i18n/ar/code.json
new file mode 100644
index 00000000..eda4d800
--- /dev/null
+++ b/i18n/ar/code.json
@@ -0,0 +1,356 @@
+{
+ "home.heroTitle": {
+ "message": "SideStore"
+ },
+ "home.heroSubtitle": {
+ "message": "مصدرك للحصول على تعليمات حول SideStore."
+ },
+ "home.getStartedButton": {
+ "message": "ابدأ الآن"
+ },
+ "home.feature.FES.title": {
+ "message": "سريع، سهل، أنيق"
+ },
+ "home.feature.FES.description": {
+ "message": "صُمم SideStore ليكون تطبيقاً عملياً؛ فهو يجمع بين الأداء الوظيفي والمظهر الجذاب، مع تجنب التعقيد الزائد."
+ },
+ "home.feature.power.title": {
+ "message": "القدرة هي الأساس"
+ },
+ "home.feature.power.description": {
+ "message": "إن القدرة على تثبيت التطبيقات غير المتوفرة في متجر App Store ليست أمرًا شائعًا، ويُعد SideStore حلًا يسد فجوة كبيرة في مجال تثبيت التطبيقات من مصادر خارجية."
+ },
+ "home.feature.openSource.title": {
+ "message": "مفتوح المصدر"
+ },
+ "home.feature.openSource.description": {
+ "message": "نولي أهمية كبيرة للبرمجيات مفتوحة المصدر، إذ أن SideStore بحد ذاته مشروع مفتوح المصدر؛ ونرحب بمساهمة الجميع في أي من مشاريع SideStore على منصة GitHub."
+ },
+ "theme.ErrorPageContent.title": {
+ "message": "هذه الصفحة لا تستجيب.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "إنتقل للأعلى",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.archive.title": {
+ "message": "أرشيف",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "أرشيف",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "التنقل في صفحة قائمة المدونة",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "أحدث الإدخالات",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "أقدم الإدخالات",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "عرض كل الوسوم",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "التنقل في صفحة مقالات المدونة",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "أحدث المقالات",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "أقدم المقالات",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.colorToggle.ariaLabel.mode.system": {
+ "message": "system mode",
+ "description": "The name for the system color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "الوضع الفاتح",
+ "description": "The name for the light color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "الوضع الداكن",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "التبديل بين الوضع الداكن والفاتح (الحالي {mode})",
+ "description": "The ARIA label for the color mode toggle"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "التنقل التفصيلي",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "{count} مواد",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "صفحة التوثيق",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "السابق",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "التالي",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "مستند موسوم واحد|{count} مستندات موسومة",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} مستند موسوم بـ \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "الإصدار: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "هذه الوثائق لم يتم طرحها بَعـد للإصدار {siteTitle} {versionLabel}.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "هذه هي وثائق {siteTitle} {versionLabel}، التي لم تعد تتم صيانتها بشكل نشط.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "للحصول على أحدث الوثائق، راجع {latestVersionLink} ({versionLabel}).",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "احدث إصدار",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "تعديل هذه الصفحة",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "إرتباط مُبـاشر بالعنوان {heading}",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " في {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " بواسطة {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "آخر تحديث {atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.NotFound.title": {
+ "message": "الصفحة غير موجودة",
+ "description": "The title of the 404 page"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "الإصدارات",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "الوسوم:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.admonition.caution": {
+ "message": "حذر",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.admonition.danger": {
+ "message": "خطر",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "معلومات",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.note": {
+ "message": "ملاحظة",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "تلميح",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.warning": {
+ "message": "تنبيه",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "إغلاق",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "أحدث مُشـاركات المدونة",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "Expand sidebar category '{label}'",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "Collapse sidebar category '{label}'",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.IconExternalLink.ariaLabel": {
+ "message": "(opens in new tab)",
+ "description": "The ARIA label for the external link icon"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "Main",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.NotFound.p1": {
+ "message": "لم نتمكن من العثور على ما كنت تبحث عنه.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "يُـرجى الإتصال بمالك الموقع الذي ربطك بعنوان URL الأصلي وإخباره بأن الارتباط الخاص به مُعطل.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "اللُغـات",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "مُحتويات هذه الصفحة",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "{readingTime} دقائق قراءة|{readingTime} دقائق قراءة",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.post.readMore": {
+ "message": "اقرأ المزيد",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "اقرأ المزيد {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "تبديل التفاف النص",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "نسخ",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "تم النسخ",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "نسخ الرمز إلى الحافظة",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "الرئيسية",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "طي الشريط الجانبي",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "طي الشريط الجانبي",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Docs sidebar",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "Close navigation bar",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "Toggle navigation bar",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "→ العودة إلى القائمة الرئيسية",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
+ "message": "Expand the dropdown",
+ "description": "The ARIA label of the button to expand the mobile dropdown navbar item"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
+ "message": "Collapse the dropdown",
+ "description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "توسيع الشريط الجانبي",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "توسيع الشريط الجانبي",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.blog.post.plurals": {
+ "message": "مقالة واحدة|{count} مقالات",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} موسومة بـ \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "Authors",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "View All Authors",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.blog.author.noPosts": {
+ "message": "This author has not written any posts yet.",
+ "description": "The text for authors with 0 blog post"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "Unlisted page",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "Draft page",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "المُحاولة مجددًا",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "إنتقل إلى المحتوى الرئيسي",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "الوسوم",
+ "description": "The title of the tag list page"
+ }
+}
diff --git a/i18n/ar/docusaurus-plugin-content-blog/options.json b/i18n/ar/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 00000000..9239ff70
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Blog",
+ "description": "The title for the blog used in SEO"
+ },
+ "description": {
+ "message": "Blog",
+ "description": "The description for the blog used in SEO"
+ },
+ "sidebar.title": {
+ "message": "Recent posts",
+ "description": "The label for the left sidebar"
+ }
+}
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current.json b/i18n/ar/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000..5e6001e3
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,22 @@
+{
+ "version.label": {
+ "message": "التالي",
+ "description": "The label for version current"
+ },
+ "sidebar.tutorialSidebar.category.Installation": {
+ "message": "التثبيت",
+ "description": "The label for category 'Installation' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Troubleshooting": {
+ "message": "استكشاف الأخطاء وإصلاحها",
+ "description": "The label for category 'Troubleshooting' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Advanced": {
+ "message": "متقدم",
+ "description": "The label for category 'Advanced' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Contributing": {
+ "message": "المساهمة",
+ "description": "The label for category 'Contributing' in sidebar 'tutorialSidebar'"
+ }
+}
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/alternative.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
new file mode 100644
index 00000000..04e4316e
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/alternative.mdx
@@ -0,0 +1,252 @@
+---
+title: تعليمات بديلة/قديمة
+description: "مساحة مخصصة لتعليمات إعداد SideStore البديلة أو القديمة. ملاحظة: قد تكون العديد من هذه الشروحات غير متوافقة مع أحدث إصدارات iOS أو SideStore."
+---
+
+```mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+```
+
+## التثبيت
+### AltServer
+
+
+
+ اتبع التعليمات (من الخطوة 1 إلى 3) [هنا](https://faq.altstore.io/altstore-classic/how-to-install-altstore-macos) لإعداد AltServer
+
+
+ اتبع التعليمات (من الخطوة 1 إلى 3) [هنا](https://faq.altstore.io/altstore-classic/how-to-install-altstore-windows) لإعداد AltServer
+
+
+ قبل البدء، تأكد من تثبيت usbmuxd.
+ 1. تأكد من تثبيت وتحديث usbmuxd عن طريق كتابة الأمر `sudo apt install -y usbmuxd` في طرفية (terminal)
+ 2. ثبِّت Docker أو Podman على جهازك
+ 3. قم بتوصيل جهاز iPhone أو iPad أو iPod touch الثانوي. وإذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر "وثوق" وأدخل رمز الدخول الخاص بك
+ 4. الآن، قم بتشغيل Altcon باستخدام Docker أو Podman عبر الأمر التالي (قد يتطلب الأمر استخدام `sudo`):
+
+ إذا كنت تستخدم Docker:
+ ```bash
+ docker run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+ ```
+
+ إذا كنت تستخدم Podman:
+ ```bash
+ podman run --rm -it -v ${PWD}/:/mnt/ -v /var/run/usbmuxd:/var/run/usbmuxd -v /var/lib/lockdown:/tmp/lockdown ghcr.io/sidestore/altcon
+ ```
+
+ 5. سيقترن Altcon بجهازك. وعندما تتلقى نافذة اخرى منبثقة تطلب الوثوق، اختر "وثوق" وأدخل رمز المرور الخاص بك مجدداً
+
+
+
+#### إعداد SideStore لأجهزة متعددة باستخدام نفس الحساب عبر AltServer (يعمل فقط مع نظامي macOS وWindows)
+الخطوات:
+1. قم بإعداد AltServer على نظام macOS أو Windows باتباع التعليمات المذكورة أعلاه
+2. ثبِّت AltStore على جهاز واحد باستخدام AltServer
+3. سجل دخولك بحساب Apple الخاص بك في AltStore
+4. صدر الترخيص
+5. احذف AltStore
+
+ثم افعل التالي لكل جهاز:
+1. قم بتثبيت SideStore باستخدام AltServer مع استخدام حساب Apple نفسه (اضغط باستمرار على مفتاح [Option على Mac أو Shift على Windows] أثناء النقر على AltServer -> ثم اختر Install IPA -> وحدد ملف SideStore.ipa)
+2. استورد الترخيص
+3. سجّل الدخول باستخدام حساب Apple في SideStore (يجب تسجيل الدخول بعد استيراد الترخيص؛ وإلا فلن تتمكن من تسجيل الدخول دون إلغاء ترخيص AltStore)
+4. حمل التطبيقات التي تريدها من مصادر خارجية
+
+عند انتهاء صلاحية الترخيص القديمة:
+1. سيطلب SideStore إعادة تثبيت نفسه على جهاز واحد.
+2. بعد إعادة التثبيت، قم بتصدير الترخيص.
+
+ثم بالنسبة لكل جهاز آخر:
+1. استورد الترخيص الجديد
+2. ثبت ملف SideStore ipa من SideStore
+
+## VPN
+### WireGuard
+:::note
+SideStore WireGuard VPN **يعمل فقط على إصدارات SideStore التي تتراوح بين 0.3.1 و0.6.1، وكذلك من إصدار 0.6.3-nightly.4e6756d و أعلى**، ولا يُنصح به إذا كان لديك بديل متاح (LocalDevVPN). إذا لم تكن تستخدم إحد هذه الإصدارات ولم تنجح العملية، **يرجى عدم طلب الدعم بخصوص هذا الأمر**.
+:::
+
+يستخدم SideStore شبكة افتراضية خاصة (VPN) من نوع WireGuard تعمل على الجهاز نفسه، مما يتيح لـ SideStore التواصل مع الخدمات الداخلية.
+
+1. قم بتنزيل تطبيق WireGuard من [App Store](https://apps.apple.com/app/wireguard/id1441195209).
+2. قم أيضًا بتنزيل إعدادات WireGuard الموجودة [هنا](https://github.com/SideStore/SideStore/releases/download/0.3.1/SideStore.conf).
+3. افتح WireGuard، واضغط على زر 'Add a Tunnel' أو '+'.
+4. حدد "Create from file or archive"، واختر ملف SideStore.conf.
+5. قد يطلب منك جهازك "السماح بإعدادات VPN"؛ اختر 'سماح' وقم بإجراء المصادقة.
+6. قم بتفعيل خيار SideStore VPN.
+
+يجب تشغيل شبكة VPN هذه في كل مرة تستخدم فيها SideStore، حيث أن معظم الوظائف لن تعمل بدونها.
+
+## الإقتران
+### idevice_pair
+#### تعليمات التثبيت
+
+
+
+ 1. حمل [idevice pair لنظام macOS](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--macos-universal.dmg).
+ 2. افتح صورة القرص واسحب `idevice pair` إلى `Applications`.
+
+
+ 1. تأكد من أن iTunes ([64بت](https://apple.com/itunes/download/win64) أو [32بت](https://apple.com/itunes/download/win32)) مثبت من موقع Apple الرسمي (من المفترض أن يكون قد ثُبِّت بالفعل أثناء عملية إعداد AltServer).
+ 2. حمل [idevice pair لنظام Windows](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--windows-x86_64.exe) ونقله إلى مكان تستطيع تذكره.
+
+
+ 1. تأكد من تثبيت usbmuxd عن طريق كتابة الأمر `sudo apt install -y usbmuxd` في طرفية (terminal).
+ 2. حمل نسخة Linux من برنامج idevice_pair ([x86_64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-x86_64.AppImage) أو [AArch64](https://github.com/jkcoxson/idevice_pair/releases/latest/download/idevice_pair--linux-aarch64.AppImage)) التي تتوافق مع بنية حاسوبك. انقله إلى مكان يسهل عليك تذكره، واجعله قابلاً للتنفيذ.
+
+
+
+#### تعليمات الإقتران
+
+1. قم بتوصيل جهازك الثانوي بالكمبيوتر باستخدام كابل. وإذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر `وثوق` وأدخل رمز الدخول الخاص بك.
+2. افتح جهازك، ثم افتح `idevice pair` واختر جهازك من القائمة.
+3. تأكد من فتح جهازك وأنه في الشاشة الرئيسية، ثم اختر `load`. إذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر `وثوق`. من المفترض أن يظهر ملف الإقتران الخاص بك.
+4. تأكد من بقاء جهازك على الشاشة الرئيسية، ثم مرر للأسفل واختر `install` الموجودة أسفل "SideStore"؛ حينها ستظهر عبارة `Success` باللون الأخضر.
+
+### JitterbugPair
+JitterbugPair (*وليس* Jitterbug app) يتيح لنا ذلك إنشاء ملف إقتران يُمكّن برامج مثل SideStore من التواصل مع جهازك عن بُعد. وتُعد هذه الخطوة ضرورية لاستخدام SideStore، وإلا فلن يعمل التطبيق.
+
+حمل JitterbugPair لنظام [ويندوز (64بت)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip)، [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip)، أو [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
+
+#### تعليمات الإقتران
+
+:::tip
+
+اعتماداً على الطريقة التي تستخدمها، قد تتغير صيغة الملف عند نقل ملف mobiledevicepairing. (عادةً يصبح txt. أو يتم حذف الأحرف "ing" من نهايته). لذا، يُنصح دائماً بضغط ملف الإقتران قبل نقله؛ إذ لا يقبل تطبيق SideStore سوى الملفات التي تحمل صيغة mobiledevicepairing. (أو ملفات .plist في الإصدارات الأقدم).
+:::
+
+
+
+ 1. حمل JitterbugPair لنظام [macOS](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-macos.zip).
+ 2. **فك ضغط** `jitterbugpair-macos.zip`.
+ 3. **قم بتعيين رمز دخول** لجهازك إذا لم تكن قد فعلت ذلك بالفعل. قم بإلغاء قفل جهازك ووصله بالكمبيوتر باستخدام الكابل. إذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر "وثوق" وأدخل رمز الدخول الخاص بك.
+ 4. افتح جهازك على الشاشة الرئيسية.
+ 5. اعثر على الملف `jitterbugpair` المستخرج وافتحه (يجب أن تكون أيقونته باللونين الأسود والأخضر.) عن طريق النقر المزدوج عليه، أو النقر بزر الفأرة الأيمن عليه واختيار "فتح". عند تشغيل الأداة للمرة الأولى، ستظهر لك نافذة تطلب من بإدخال رمز الدخول على جهازك الثانوي. أدخل الرمز، ثم أبق الشاشة قيد التشغيل وغير مقفلة وشغِّل الأداة مرة أخرى.
+ 6. إذا تلقيت الرسالة" "لا يمكن لنظام macOS التحقق من خلو هذا التطبيق من البرامج ضارة.":
+ - انتقل إلى إعدادات النظام > الخصوصية والأمان
+ - مرّر للأسفل إلى الرسالة المتعلقة بالتطبيق
+ - انقر على "فتح على أية حال"؛ وإذا لم يعمل البرنامج تلقائياً، فحاول تشغيله يدوياً مرة أخرى
+ 7. سيُنشئ JitterbugPair **ملف إقتران** بصيغة `mobiledevicepairing.` إلى المجلد الرئيسي للمستخدم.
+ 8. إذا لم تتمكن من العثور على ملف الإقتران:
+ - انسخ اسم ملف الإقتران الذي تم إنشاؤه
+ - ألصقه في Finder
+ - إذا قمت بتشغيل البرنامج أكثر من مرة، فيجب أن تظهر جميع ملفات الإقتران الخاصة بجهازك، نظراً لأنها تحمل الاسم نفسه
+ 9. للحصول على أفضل النتائج، قم بضغط الملف في مجلد بصيغة .zip. بعد ذلك، **انقل ملف الإقتران** إلى جهاز iOS الخاص بك عبر AirDrop، أو iCloud/OneDrive/Google Drive، أو البريد الإلكتروني، أو أي طريقة أخرى تفضلها.
+
+
+ 1. حمل JitterbugPair لنظام [ويندوز (64بت)](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip).
+ 2. **فك ضغط** `jitterbugpair-win64.zip`.
+ 3. **قم بتعيين رمز دخول** لجهازك إذا لم تكن قد فعلت ذلك بالفعل. قم بإلغاء قفل جهازك ووصله بالكمبيوتر باستخدام الكابل. إذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر "وثوق" وأدخل رمز الدخول الخاص بك.
+ 4. افتح جهازك على الشاشة الرئيسية.
+ 5. في مستكشف الملفات، حدد موقع الملف `jitterbugpair.exe` وقم بتشغيله عن طريق النقر المزدوج عليه، أو النقر بزر الماوس الأيمن واختيار "فتح". عند تشغيل الأداة للمرة الأولى، ستظهر لك نافذة تطلب من بإدخال رمز الدخول على جهازك الثانوي. أدخل الرمز، ثم أبق الشاشة قيد التشغيل وغير مقفلة وشغِّل الأداة مرة أخرى.
+ 6. سيقوم JitterbugPair بإنشاء **ملف إقتران** في المجلد نفسه. وسيحمل هذا الملف الامتداد `mobiledevicepairing.`.
+ 7. للحصول على أفضل النتائج، قم بضغط الملف في مجلد بصيغة .zip. بعد ذلك، **انقل ملف الإقتران** إلى جهاز iOS الخاص بك عبر AirDrop، أو iCloud/OneDrive/Google Drive، أو البريد الإلكتروني، أو أي طريقة أخرى تفضلها.
+
+ في نظام ويندوز، قد تضطر إلى تشغيل البرنامج باستخدام موجه الأوامر (CMD) أو PowerShell، إذ إن النقر المزدوج على ملف `.exe` لا يؤدي دائمًا إلى فتحه.
+
+ 8. في مستكشف الملفات، انتقل إلى المجلد الذي يوجد فيه الملف jitterbugpair.
+ 9. في شريط التنقل الذي يوضح مسار المجلد، انقر في مساحة فارغة واكتب `powershell`. سيؤدي ذلك إلى فتح نافذة (قد تكون زرقاء اللون) تحمل اسم PowerShell.
+ 10. في هذه النافذة، اكتب `./jitterbugpair.exe` واضغط على مفتاح الإدخال بينما يكون جهازك موصولاً.
+
+
+
+ تفترض هذه الخطوات أنك على دراية أوامر Linux.
+ 1. حمل JitterbugPair لنظام [Linux](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-linux.zip).
+ 2. **فك ضغط** `jitterbugpair-linux.zip`.
+ 3. افتح طرفية (terminal) في المجلد المستخرج
+ 4. اجعل البرنامج قابلاً للتنفيذ:
+ ```bash
+ chmod +x ./jitterbugpair
+ ```
+ 5. **قم بتعيين رمز دخول** لجهازك إذا لم تكن قد فعلت ذلك بالفعل. قم بإلغاء قفل جهازك ووصله بالكمبيوتر باستخدام الكابل. إذا ظهرت لك نافذة منبثقة تطلب الوثوق، فاختر "وثوق" وأدخل رمز الدخول الخاص بك.
+ 6. افتح جهازك على الشاشة الرئيسية.
+ 7. شغل البرنامج:
+ ```bash
+ ./jitterbugpair
+ ```
+ 8. عند تشغيل الأداة للمرة الأولى، ستظهر لك نافذة تطلب من بإدخال رمز الدخول على جهازك الثانوي. أدخل الرمز، ثم أبق الشاشة قيد التشغيل وغير مقفلة وشغِّل الأداة مرة أخرى.عند تشغيل الأداة للمرة الأولى، ستظهر لك نافذة تطلب من بإدخال رمز الدخول على جهازك الثانوي. أدخل الرمز، ثم أبق الشاشة قيد التشغيل وغير مقفلة وشغِّل الأداة مرة أخرى.
+ 9. سيُنشئ JitterbugPair ملف إقتران بصيغة mobiledevicepairing. إلى المجلد الرئيسي للمستخدم.
+ 10. للحصول على أفضل النتائج، قم بضغط الملف في مجلد بصيغة .zip. بعد ذلك، **انقل ملف الإقتران** إلى جهاز iOS الخاص بك عبر AirDrop، أو iCloud/OneDrive/Google Drive، أو البريد الإلكتروني، أو أي طريقة أخرى تفضلها.
+
+
+
+## ثغارات SideStore
+### SparseRestore (حد التطبيقات الثلاثة)
+:::note
+ثغرة الـ SparseRestore "تجاوز حد التطبيقات الثلاثة" **لاتعمل إلا على الإصدارات التالية iOS/iPadOS بين 17.0 و18.1 beta 4 (لا يشمل تحديث 17.7.1)**. إذا لم تكن تستخدم أحد هذه الإصدارات أو أن الثغرة لم تعمل، **فيرجى عدم طلب الدعم لحل مشكلاتها**.
+:::
+
+#### المتطلبات
+* جهاز iPhone أو iPad على إصدار يدعم ثغرة SparseRestore (انظر الملاحظة أعلاه).
+* توفر App-ID واحد شاغر على الأقل
+* إصدار SideStore 0.5.9 أو أحدث. يمكنك العثور على أحدث الإصدارات [هنا](https://github.com/SideStore/SideStore/releases).
+* لتنفيذ هذا هذه الثغرة، يجب عليك إيقاف تشغيل ميزة **تحديد الموقع** على جهاز iPhone أو iPad أثناء العملية. ولن يعمل خلاف ذلك. إليك كيف يمكنك إيقاف تشغيله:
+ - افتح تطبيق الإعدادات.
+ - اضغط على اسمك في الأعلى.
+ - اضغط على تحديد الموقع.
+ - اضغط على تحديد الموقع iPhone/iPad.
+ - أغلق تحديد الموقع iPhone/iPad.
+ - قد يُطلب منك إدخال كلمة مرور حساب Apple الخاص بك للتأكيد.
+
+ > **ملاحظة:** ربما لا تستظيع إيقاف تشغيل تحديد الموقع نظرًا لأن ميزة حماية الجهاز المسروق مفعلة قد تمنعك من إيقاف تشغيله. قم بإيقاف تشغيل حماية الأجهزة المسروقة قبل محاولة إيقاف تشغيل تحديد الموقع.
+
+#### الخطوات
+1. قم بتثبيت SparseBox. يمكن القيام بذلك باستخدام مجموعة متنوعة من الطرق، ولكن لهذا الشرح، قم بتثبيته باستخدام SideStore. يمكن العثور على أحدث نسخة [هنا](https://github.com/khanhduytran0/SparseBox/releases/download/0.0.1/com.kdt.sparsebox_0.0.1.ipa).
+
+2. حدد "Disable App Limit" في SideStore، وتأكد من أن SideStore **مغلق** (وليس في الخلفية)، ثم افتح SparseBox.
+
+3. قم بتشغيل الـ VPN عن طريق برنامج LocalDevVPN، وحدد ملف الإقتران الخاص بك، ثم انقر فوق 'Bypass 3-app limit'. سيؤدي ذلك إلى إظهار سجل المخرجات. انتظر حتى تظهر رسالة `idevicebackup2 exited with code -18` أو `idevicebackup2 exited with code 2`، ثم أغلق التطبيق. لا حاجة للضغط على تطبيق.
+
+4. أعد فتح SideStore، ثم قم بسحب الشاشة لأسفل في Settings و اضغط على "clear cache"، وهذا سيسمح برؤية الثغرة بواسطة SideStore.
+
+5. اختبر ما أذا كانت الثغرة تعمل ام لا (قد تحتاج إلى تثبيت أكثر من تطبيق واحد للاختبار، اعتمادًا على عدد فتحات التطبيقات المتوفرة لديك). إذا ظهر خطأ بشأن الحد، فأعد فتح SideStore أو أعد محاولة خطوات تشغيل الثغرة. إذا قام بتثبيت التطبيق، تهانينا! يمكنك الآن تثبيت أكثر من 3 تطبيقات في وقت واحد.
+
+#### ملاحظات
+نظرًا لقيود معينة، يجب تنفيذ هذه الثغرة لكل 3 تطبيقات إضافية تقوم بتحميلها.
+
+إذا كنت تريد/تحتاج إلى تحديد الموقع لأغراض أخرى، فيمكنك الآن تشغيله مرة أخرى. ولكن، إذا كنت تريد تثبيت المزيد من التطبيقات أو تنشيطها، فستحتاج إلى إيقاف تشغيلها مرة أخرى.
+
+### MacDirtyCow (حد التطبيقات الثلاثة)
+:::note
+ثغرة MacDirtyCow "تجاوز حد التطبيقات الثلاثة" **تعمل فقط على إصدارات iOS/iPadOS بين 15.0 و16.1.2**. إذا لم تكن تستخدم أحد هذه الإصدارات أو أن الثغرة لم تعمل، **فيرجى عدم طلب الدعم لحل مشكلاتها**.
+:::
+[MDC-Compatible IPA](https://cdn.discordapp.com/attachments/949183273827983370/1074037820328521829/SideStore_MDC_14.ipa)
+
+إذا كنت ترغب في الحصول على هذه الميزة، فنوصيك بالانضمام إلى Discord الخاص بنا والانتقال إلى قناة [sidestore-downloads](https://discord.com/channels/949183273383395328/1126118099930861638)، والتي ستحتوي على إصدارات SideStore المتوافقة مع MDC. ثم [قم بتثبيت WDBRemoveThreeAppLimit بشكل منفصل في SideStore](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0) لتطبيق الـ patch.
+
+## Lara (حد التطبيقات الثلاثة)
+
+:::note
+برنامج "Lara" يستخدم **ثغرة Darksword**، والتي تعمل على **iOS 17.0 - iOS 18.7.1 وiOS 26.0.x** فقط، مع استثناء لـ **أجهزة M5 وA19**.
+وقد تم التأكيد أيضًا على أنها تعمل على **iOS 16.7.2**.
+
+إذا لم تكن تستخدم إصدارًا مدعومًا، **لا تطلب الدعم**.
+:::
+
+لاستخدام هذه الطريقة، تأكد من تشغيل أحدث **SideStore Nightly**، ثم قم بتثبيت **Lara**:
+https://github.com/rooootdev/lara/releases/
+(يعمل برنامج Lara أيضًا داخل LiveContainer.)
+
+### الخطوات
+
+1. افتح Lara واضغط على **Run Exploit**
+2. *(لأول مرة فقط)* اضغط على **Fetch Kernel Cache**
+3. اضغط على **Initialize System**
+4. اضغط على شعار Lara في الجزء السفلي الأوسط من الشاشة
+5. اذهب إلى **Apps**
+6. اختار **3-App Bypass**
+7. اضفط **Bypass**
+
+:::warning
+**لا** تغلق Lara من مبدل التطبيقات حتى تنتهي من جميع الخطوات.
+:::
+
+8. افتح SideStore وقم بتثبيت IPA الذي تريده كالمعتاد
+9. انتهى
+
+:::note
+هذا **لا** يزيد من حد Apple ID المكون من 10 تطبيقات.
+:::
+
+**يجب عليك** تكرار هذه العملية مع كل تطبيق جديد يتم تحميله من مصدر خارجي.
\ No newline at end of file
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/anisette.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
new file mode 100644
index 00000000..5829324d
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/anisette.mdx
@@ -0,0 +1,107 @@
+---
+title: خادم Anisette خاص
+description: دليل حول تشغيل خادم Anisette خاص.
+---
+
+:::note
+من غير المرجح أن يؤدي استخدام أي إصدار من SideStore بعد إصدار 0.4.0 إلى قفل حسابك؛ إذ تمت في ذلك الإصدار إضافة دعم خوادم anisette النسخة الثالة.
+
+وبناءً على ذلك، **يُوصى بشدة** باستخدام خادم نسخة ثالثة للاستخدام العادي لـ SideStore، إذا كان إصدارك يدعم ذلك.
+:::
+
+بيانات "Anisette" هي معلومات تُستخدم في عملية توقيع التطبيقات، وتتطلب التوليد في كل مرة تقوم فيها بتثبيت التطبيقات أو تنشيطها. يحصل تطبيق SideStore على هذه المعلومات من خادم يقوم بمحاكاة جهاز Mac ويرسل إليك بيانات "Anisette"؛ ولا يتم إرسال أي معلومات خاصة بالحساب إلى الخادم مطلقاً خلال هذه العملية.
+
+عندما يستخدم العديد من الأشخاص نفس خادم Anisette (وتحديداً الإصدار الأول منه)، فإن ذلك يثيرأنظمة الحماية لدى Apple، مما يؤدي إلى قفل الحسابات التي كانت تستخدم ذلك الخادم. ولهذا السبب، أوصينا باستخدام حساب Apple منفصل ومؤقت بدلاً من حسابك الأساسي.
+
+لقد عمل فريقنا على تطوير أساليب أفضل لتجنب قفل الحسابات (من خلال الأصدار الثالث من خادم الـ Anisette). ولكن، إذا كنت تستخدم إصداراً قديماً من SideStore، فإن استضافة خادم Anisette خاص بك تُعد وسيلة ممتازة لتجنب قفل الحسابات؛ إذ أصبحت هذه العملية سهلة للغاية بفضل كون خادمنا الحالي مفتوح المصدر ومُصمماً لبيئات Docker، مما يتيح لنا نشر الخادم بمجرد استخدام رابط GitHub.
+
+## بث الخادم على Render
+
+يعد [Render](https://render.com/) خدمةً تتيح إنشاء الخوادم بسهولة، وتدعم تحميل ملفات الخادم من GitHub مباشرة. ورغم أن الخطة المجانية لخدمة Render محدودة إلى حد ما، إلا أن الخادم يمكن أن يعمل عليها بسلاسة ودون أي مشاكل. (للعلم: تتطلب الخدمة بطاقة ائتمان للتحقق من الهوية، لكنها مجانية بالكامل).
+
+نظراً لاستخدام عدد كبير جداً من الأشخاص لنفس رابط GitHub، سيتعين عليك إنشاء نسخة من الملفات من GitHub بنفسك.
+
+1. [أنشئ حساب](https://github.com/signup) لـ GitHub، إذا لم يكن لديك حساب بالفعل.
+2. [افتح](https://github.com/Dadoum/anisette-v3-server) صفحة ملفات الخادم على GitHub.
+3. اضغط على "Fork" في الزاوية اليمنى العليا، وقم بعمل نسخة لملفات الخادم إلى حسابك.
+4. بمجرد إنشاء نسخة من الملفات على حسابك، انقر على زر "Code" الأخضر الموجود في الزاوية العلوية اليمنى، وانسخ رابط .git.
+
+* احفظ هذا لوقت لاحق.
+
+بمجرد الانتهاء من ذلك، يمكن إنشاء الخادم على Render.
+
+1. [أنشئ حساب](https://dashboard.render.com/register/) في Render.
+2. أنشئ [New Web Service](https://dashboard.render.com/select-repo?type=web).
+3. انتقل للأسفل إلى **Public Git repository** وأدخل الرابط الذي نسخته سابقاً.
+4. انقر على "Continue" واملأ النموذج:
+ * **الاسم** - لا يهم ماتضع هنا
+ * **المنطقة** - اختر الأقرب إليك
+ * **Branch** - main (الافتراضي)
+ * **Root Directory** - دعه فارغاً (الافتراضي)
+ * **Environment** - Docker (الافتراضي)
+ * **Instance Type** - مجاناً
+
+5. انتظر حتى يكتمل بناء الخادم. سترى ما يلي عند الانتهاء:
+
+```
+Machine requires provisioning... done !
+Your service is live 🎉
+```
+
+*إذا فشلت عملية البناء لأي سبب، انقر فوق **Manual Deploy**، ثم **Deploy latest commit**.*
+
+6. اعثر على رابط خادمك الجديد في أعلى الصفحة:
+
+```
+https://[اسم-الخادم-الخاص-بك].onrender.com
+```
+
+## إنشاء قائمة مخصصة لخوادم Anisette
+
+بدءاً من الإصدار 0.5.8، يعتمد SideStore نظاماً لقائمة خوادم "anisette"، مما يسهّل إضافة الخوادم المعتمدة رسمياً. وهذا يعني أن الأمر يتطلب بعض الخطوات الإضافية إذا كنت ترغب في استخدام خادمك الخاص دون الحاجة لطلب إدراجه في القائمة الرسمية.
+
+إذا كنت ترغب في الاحتفاظ بخيار استخدام الخوادم المضمنة، فاتبع الخطوات أدناه:
+1. اذهب [هنا](https://servers.sidestore.io/servers.json) للحصول على قائمة الخوادم الحالية.
+2. توجه إلى خدمة استضافة الملفات التي تريدها لاستضافة الملف على الإنترنت. نوصي باستخدام صفحة GitHub للقيام بذلك لأنه الأسهل في التعديل في المستقبل، وسيتم استخدامه كمثال لهذا الدليل. إذا كان لديك طريقتك الخاصة في الاستضافة، فقم بتكييف ما يلي مع الإعداد الخاص بك.
+3. إذا كان لديك صفحة على GitHub بالفعل، فانتقل مباشرةً إلى الخطوة الفرعية السادسة. وإلا، فقم بما يلي:
+* أنشئ صفحة GitHub جديدة باستخدام زر علامة الزائد (+) الموجود في الزاوية العلوية اليمنى في GitHub Desktop، أو عبر خيار New من القائمة الرئيسية، أو من خلال [هذه الصفحة](https://github.com/new).
+* دع الأسم يكون [اسم المستخدم الخاص بك على GitHub].github.io، حدد خيار 'Initialize this repository with a README'، وقم بتعيين الإعدادات المتبقية كما تشاء.
+* بمجرد الإنشاء، انتقل إلى Settings وانتقل إلى خيار Pages تحت قسم Code and automation.
+* اضبط Build و deployment تحت Source إلى 'Deploy from branch'
+* إذا لم يتم الاختيار بشكل تلقائي، اضبط Branch على 'main'.
+* عُد إلى صفحة code (الصفحة التي يوجد فيها مربع اخضر بأسم Code)، واضغط على "Add files" ثم "Upload files"، وبعد ذلك اختر ملف "servers.json" الذي قمت بتنزيله مسبقاً.
+* بمجرد تحميل الملف، انقر عليه واضغط على زر "الذي يحمل شكل قلم" لتعديل الملف.
+* انتقل للأسفل إلى الخادم الأخير في القائمة وأضف فاصلة بعد القوس المتعرج ('}') الخاص بذلك الخادم، ثم أضف الخادم الخاص بك بعده بالتنسيق التالي:
+```
+{
+ "name": "[شيء يمكن التعرف عليه، مثل اسم المستخدم. يجب أن يكون بالغة الأنجليزية]", //لا يهم حقاً ما تسميه، ما لم تكن تشارك قائمة الخوادم هذه مع شخص آخر.
+ "address": "[رابط الخادم الخاص بك]"
+}
+```
+* اضغط على Commit changes، ثم انتقل إلى https://[اسم المستخدم الخاص بك على GitHub].github.io/[المكان الذي وضعت فيه الملف]/servers.json. إذا تم تحميل الملف، فأنت جاهز للانتقال إلى القسم التالي. أما إذا لم يحدث ذلك، فقد تحتاج إلى الانتظار لمدة تصل إلى 10 دقائق حتى يتم إعداد موقعك بشكل صحيح للاستخدام قبل المحاولة مرة أخرى.
+
+إذا كنت ترغب في استخدام خادمك الخاص فقط، فاتبع الخطوات المذكورة أعلاه، ولكن بدلاً من نسخ ملف servers.json الرسمي، قم بإنشاء ملفك الخاص باستخدام هذا التنسيق.:
+```
+{
+ "servers": [
+ {
+ "name": "[كما ورد أعلاه]",
+ "address": "[كما ورد أعلاه ايضاً]"
+ }
+ ]
+}
+```
+وواصل العمل كالمعتاد.
+
+## استخدام خادمك مع SideStore
+
+لاستخدام قائمة الخوادم التي أنشأتها حديثاً في تطبيق SideStore، قم بما يلي:
+
+1. افتح Settings في SideStore..
+2. اسحب الشاشة للأسفل واضغط على 'Anisette Servers'.
+3. اضغط على رابط القائمة واستبدله برابط قائمة الخادم الخاص بك..
+4. اضغط على 'Refresh Servers'، واختر خادمك من القائمة المحدثة.
+
+## النهاية!
+
+سيستخدم SideStore الآن خادم anisette المخصص الجديد الخاص بك.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
new file mode 100644
index 00000000..06b0b76f
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/app-sources.mdx
@@ -0,0 +1,24 @@
+---
+title: مصادر التطبيقات
+description: دليل حول مصادر التطبيقات المخصصة.
+---
+
+# إنشاء مصدر
+
+يتوافق SideStore مع مصادر AltStore (أو AltSources). [دليل](https://faq.altstore.io/developers/make-a-source) إنشاء مصدر على موقع AltSource الرسمي، يوفر كافة التفاصيل التي تحتاجها لإنشاء AltSource الخاص بك. يتيح AltSource لجمهورك إمكانية عرض تطبيقاتك المتاحة وتثبيتها وتحديثها بكل سهولة.
+
+إليك بعض الأدوات من جهات خارجية موصى بها قد تساعدك في إنشاء وعرض مصدر AltSources الخاص بك:
+- يمكنك استخدام [AltStudio](https://altstudio.app/) (WIP) من إنشاء المجتمع لإنشاء AltSource لك تلقائياً باستخدام ملف IPA! (تنبيه: بعد استخدام AltStudio لإنشاء مصدر، يجب عليك إزالة حقلي `marketplaceID` و`Build` اللذين تم إنشاؤهما تلقائياً؛ وإلا فإن SideStore سيعتبر المصدر مُصادقاً عليه وسيمنع إضافته)
+- يمكنك استخدام [AltSource Browser](https://altsource.by.lao.sb/browse/) من إنشاء المجتمع لإنشاء للاطلاع على عرض مرئي لتحديثاتك على مسودة AltSource قبل اعتماد التغييرات النهائية، مما يتيح لك تصحيح أي أخطاء قبل نشرها!
+
+# نشر المصدر الخاص بك
+
+يمكنك إنشاء رابط لإضافة AltSource تلقائياً باستخدام هذا القالب:
+```
+sidestore://المصدر?رابط=[رابط المصدر]
+```
+لمزيد من المعلومات، راجع [مخطط الرابط](/docs/advanced/url-schema). غالبًا ما يكون من المفيد إنشاء الرابط الخاص بـ AltSource بهذا التنسيق، ثم وضعه في خدمة لتقصير الروابط مثل `tinyurl.com`. ومع ذلك، إذا حاول المستخدم استخدام رابط `sidestore://` دون أن يكون تطبيق SideStore مثبتاً بالفعل، فسيؤدي ذلك إلى إجماد الجهاز؛ لذا قد يكون توفير بعض الوثائق التوضيحية أمراً مفيداً.
+
+## هذا كل شيء!
+
+إليك بعض مصادر AltSources الجيدة والمتاحة حالياً، والتي يمكنك نسخها ولصقها في SideStore: [مصدر مجتمع SideStore](https://github.com/SideStore/Community-Source)، [مصدر AltStore الرسمي](https://apps.altstore.io)، [مصدر LiveContainer](https://raw.githubusercontent.com/LiveContainer/LiveContainer/refs/heads/main/apps.json)، و [مصدر DolphiniOS](https://altstore.oatmealdome.me).
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/jit.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/jit.mdx
new file mode 100644
index 00000000..a5169693
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/jit.mdx
@@ -0,0 +1,51 @@
+---
+title: تفعيل JIT
+description: دليل تعليمي حول كيفية تفعيل خاصية في-الوقت-المناسب (JIT) للتطبيقات التي تتطلبها.
+---
+
+:::note
+عطل إصدار iOS 26 ميزة JIT مجدداً، ولا يعمل الإصداران 26.6 و27 إلا مع عدد قليل من التطبيقات. وقد صدر تحديث لأداة StikDebug يتضمن إصلاحاً لهذه المشكلة، إلا أن الدعم لا يزال محدوداً؛ فاعتباراً من وقت كتابة هذا النص (17 يونيو 2026)، تقتصر التطبيقات المدعومة على:
+* UTM
+* Amethyst
+* MeloNX
+* maciOS
+* DolphiniOS (Works up to 26.6)
+* Geode
+* Manic EMU
+* Flycast (iOS 26 fork)
+* MeloCafe
+* ARMSX2
+* DukeX (Works up to 27 on A13/A14/M1 chip)
+
+رجى متابعة قناة announcements في خادم Discord الخاص بنا وكذلك على قناة announcements و قنوات compatibility في [خادم idevice](https://discord.gg/mACqxMxP3X) لمزيد من التحديثات.
+
+توجد طرق عديدة لتفعيل خاصية JIT، وذلك حسب إصدار نظام iOS لديك. سيتناول هذا الشرح استخدام أداة StikDebug (التي كانت تُعرف سابقاً باسم StikJIT)، باعتبارها الطريقة التي نوصي بها حالياً. لمزيد من المعلومات، يرجى الرجوع إلى [الدليل الرسمي لعملية الاقتران الخاصة بـ StikDebug](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
+
+كخيار بديل، يتضمن إصدار SideStore 0.6.2 تحديثات لميزة minimuxer، مما يتيح استخدام وظيفة JIT المدمجة شبيهة بإداة StikDebug على إصدار iOS 16 وما دونه، أو على الأجهزة التي لا تدعم تقنية TXM (أي الأجهزة التي مرّ على إصدارها أكثر من 4 سنوات). لاستخدام هذه الميزة، ما عليك سوى التأكد من تفعيل LocalDevVPN مع أتأمد من الأتصال بالأنرنت عن طريق شبكة Wi-Fi أو يكون الجهاز على وضع الطيران، ثم الانتقال إلى "My Apps"، والضغط مطولاً على التطبيق الذي ترغب في تفعيل JIT له، واختيار "enable JIT".
+:::
+
+## المتطلبات
+جهاز iPhone أو iPad يعمل بنظام iOS/iPadOS (من الإصدار 17.4 وحتى جميع إصدارات iOS 18، باستثناء الإصدار 18.4b1). أما إذا كان جهازك يعمل بإصدار يتراوح بين 17.0 و17.3، فيجب عليك استخدام بديل مثل [SideJITServer](https://github.com/nythepegasus/SideJITServer).
+
+## إجراءات تثبيت StikDebug:
+
+1. **تثبيت StikDebug:**
+ثبت StikDebug من [المصدر AltStore الرسمي](https://intradeus.github.io/http-protocol-redirector?r=sidestore://https://stikdebug.xyz/index.json).
+
+
+2. **ضع ملف الإقتران:**
+استخدم iloader لاستيراد **ملف الإقتران** نفسه الذي تستخدمه مع SideStore. لمزيد من المعلومات حول هذه العملية، راجع [هنا](https://github.com/StephenDev0/StikDebug-Guide/blob/main/pairing_file.md).
+
+
+### إجراء إعداد قياسي (يجب تنفيذه أولاً في كل مرة تعيد فيها تشغيل جهازك)
+
+1. **قم بتركيب وحدة DDI:**
+ افتح تطبيق StikDebug مع تفعيل الاتصال بشبكة Wi-Fi وخدمة VPN ووضع ملف الإقتران في مكانه، ثم أغلق التطبيق من مبدل التطبيقات وأعد فتحه؛ حيث تؤدي هذه الخطوات إلى تحميل ملف DDI.
+
+## لتفعيل JIT:
+
+1. **فعل VPN:**
+ ابدأ بفتح LocalDevVPN أثناء الاتصال بشبكة Wi-Fi أو تفعيل وضع الطيران. أما إذا كنت تستخدم بيانات الهاتف المحمول، فقم بتشغيل VPN، ثم فعّل وضع الطيران، وبعد ذلك عُد إلى استخدام بيانات الهاتف.
+
+2. **تشغيل JIT على تطبيق:**
+ اختر تطبيقاً من القائمة (يجب أن يكون التطبيق مُثبَّتاً خارج المتجر الرسمي ومُعدَّاً بخاصية get-task-allow ليظهر في القائمة) لتفعيل وظيفة JIT.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
new file mode 100644
index 00000000..ff6dddde
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/pairing-file.mdx
@@ -0,0 +1,13 @@
+---
+title: ملف الإقتران
+description: دليل حول إعادة استيراد ملف الاقتران يدوياً.
+---
+:::warning
+قد تنتهي صلاحية ملف الإقتران الخاص بك وتستدعي إعادة استيراده في حال قمت بتحديث أو إعادة تعيين جهاز iPhone أو iPad أو iPod touch؛ كما قد تحدث هذه المشكلة بشكل عشوائي. هذا المشكلة تحدث بسبب شركة Apple، ولا يوجد ما يمكننا القيام به لإصلاحه. يوضح لك هذا الدليل كيفية استبدال ملف الاقتران يدوياً باستخدام أداة iloader.
+:::
+
+## استبدال ملف الإقتران الخاص بك
+1. تأكد من اتباع الخطوات الواردة في [دليل التثبيت](/docs/installation/prerequisites) لتثبيت وإعداد كل من iloader وSideStore. إذا طلب منك iloader تحديثه، فانقر على 'نعم'.
+2. للحصول على أفظل النتائج ، قم بتوصيل جهاز iPhone أو iPad أو iPod touch بالكمبيوتر باستخدام كابل USB. وإذا كان جهازك يظهر لاسلكياً فقط، فينبغي أن تنجح هذه الطريقة أيضاً.
+3. انقر على 'إدارة ملف الإقتران'.
+4. إلى يمين "SideStore" وأي تطبيقات أخرى ترغب بها، انقر على 'ضع'. يجب أن تظهر عبارة "تم وضع ملف الإقتران!" باللون الأخضر.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx
new file mode 100644
index 00000000..ac8d3fbd
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/advanced/url-schema.mdx
@@ -0,0 +1,23 @@
+---
+title: مخطط الرابط
+description: دليل حول مخطط الرابط
+---
+
+# مخطط الرابط
+
+فيما يلي قائمة بمختلف مخططات العناوين (URLs) التي يمكن استخدامها للتفاعل مع SideStore. وتُعد هذه المخططات مفيدة للغاية؛ إذ تتيح للمطورين ببساطة وضع رابط يُفعَّل بنقرة واحدة على وسائل التواصل الاجتماعي أو مواقعهم الإلكترونية، ليقوم نظام iOS بفتح الرابط مباشرةً داخل SideStore وتنفيذ الإجراء (أو الإجراءات) المحدد.
+
+تقتصر الروابط في الوقت الحالي على تثبيت التطبيقات و إضافة المصادر، ولكن سيتم توسيع نطاقها مستقبلاً لتتيح قبول مدخلات متعددة وتنفيذ مجموعة متنوعة من المهام الأخرى.
+
+## تثبيت تطبيق مستضاف عن بُعد
+
+```
+sidestore://رابط التحميل]=رابط?التثبيت]
+```
+
+## أضافة مصدر من AltSource
+
+```
+sidestore://رابط المصدر]=رابط?المصدر]
+
+```
\ No newline at end of file
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
new file mode 100644
index 00000000..3a219adc
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/advanced-formatting.mdx
@@ -0,0 +1,794 @@
+---
+sidebar_position: 3
+---
+
+# إرشادات تنسيق الكود المتقدمة
+
+سنتناول حالات التنسيق المتقدمة، وأنماط البنية البرمجية، وميزات Swift وObjective-C المعقدة الخاصة بمشروع SideStore.
+
+## أنماط لغة Swift المتقدمة
+
+### البرمجة الموجهة بالبروتوكولات
+
+#### تعريفات البروتوكول
+- حافظ على تركيز البروتوكولات وتماسكها
+- استخدم أنواع شائعة للبروتوكولات المرتبطة
+- وفّر تطبيقات افتراضية في الامتدادات عند الحاجة
+
+```swift
+// ✅ جيد
+protocol AppInstalling {
+ associatedtype AppType: App
+
+ func install(_ app: AppType) async throws
+ func uninstall(_ app: AppType) async throws
+}
+
+extension AppInstalling {
+ func validateApp(_ app: AppType) -> Bool {
+ return !app.identifier.isEmpty && app.version.isValid
+ }
+}
+
+// ❌ سيء
+protocol AppManager {
+ func install(_ app: Any) -> Bool
+ func uninstall(_ app: Any) -> Bool
+ func update(_ app: Any) -> Bool
+ func backup(_ app: Any) -> Bool
+ func restore(_ app: Any) -> Bool
+ // وظائف كثيرة جداً
+}
+```
+
+#### تركيب البروتوكولات
+- استخدم بروتوكولات مركبة عند التعامل مع متطلبات معقدة
+- اجعل البروتوكولات الفردية موجزة ومركزة
+
+```swift
+// ✅ جيد
+protocol Downloadable {
+ var downloadURL: URL { get }
+ func download() async throws -> Data
+}
+
+protocol Installable {
+ var installationRequirements: InstallationRequirements { get }
+ func install() async throws
+}
+
+typealias DeployableApp = App & Downloadable & Installable
+
+class AppDeployer {
+ func deploy(_ app: T) async throws {
+ let data = try await app.download()
+ try await app.install()
+ }
+}
+```
+
+### الأنماط الشائعة وقيود الأنواع
+
+#### تعريفات الأنواع الشائعة
+- استخدم أسماء قيود ذات دلالة
+- فضّل استخدام قيود البروتوكولات على قيود الفئات
+- استخدم عبارات `where` للقيود المعقدة
+
+```swift
+// ✅ جيد
+struct Repository {
+ private var entities: [Entity.ID: Entity] = [:]
+
+ func save(_ entity: T) where T == Entity {
+ entities[entity.id] = entity
+ }
+
+ func find(byId id: ID) -> Entity? where ID == Entity.ID {
+ return entities[id]
+ }
+}
+
+// ❌ سيء
+struct Repository {
+ private var items: [String: T] = [:]
+ // لا يوجد أمان لنوع
+}
+```
+
+#### قيود الأنواع الشائعة المتقدمة
+- استخدم المطابقة الشرطية بالشكل المناسب
+- استخدم الأنواع الوهمية عند الحاجة
+
+```swift
+// ✅ جيد
+extension Array: AppCollection where Element: App {
+ var installedApps: [Element] {
+ return filter { $0.isInstalled }
+ }
+
+ func sortedByInstallDate() -> [Element] {
+ return sorted { $0.installDate < $1.installDate }
+ }
+}
+
+// أنواع وهمية لضمان سلامة انوع
+struct AppState {
+ let app: App
+}
+
+enum Downloaded {}
+enum Installed {}
+
+typealias DownloadedApp = AppState
+typealias InstalledApp = AppState
+```
+
+### أنماط Async/Await
+
+#### تصميم الدوال غير المتزامنة (Async)
+- استخدم async/await بشكل باستمرار
+- نظِّم العمليات المتزامنة بوضوح
+- تعامل مع عملية الإلغاء بشكل مناسب
+
+```swift
+// ✅ جيد
+actor AppInstallationManager {
+ private var activeInstallations: [String: Task] = [:]
+
+ func installApp(_ app: App) async throws {
+ // منع تثبيت مكرر
+ if activeInstallations[app.identifier] != nil {
+ throw InstallationError.alreadyInstalling
+ }
+
+ let task = Task {
+ try await performInstallation(app)
+ }
+
+ activeInstallations[app.identifier] = task
+
+ defer {
+ activeInstallations.removeValue(forKey: app.identifier)
+ }
+
+ try await task.value
+ }
+
+ private func performInstallation(_ app: App) async throws {
+ // تحقق من وجود إلغاء عند نقطة مهمة
+ try Task.checkCancellation()
+
+ let data = try await downloadApp(app)
+
+ try Task.checkCancellation()
+
+ try await installData(data, for: app)
+ }
+}
+
+// ❌ سيء
+func installApp(_ app: App, completion: @escaping (Error?) -> Void) {
+ DispatchQueue.global().async {
+ // الجمع بين أسلوب معالجات الإكمال التقليدي وكود async البرمجي الجديد
+ let result = await self.downloadApp(app)
+ DispatchQueue.main.async {
+ completion(nil)
+ }
+ }
+}
+```
+
+#### التزامن المُهيكل
+- استخدم مجموعات المهام للعمليات المتزامنة المترابطة
+- يفضل التزامن المنظم على المهام غير المنظمة
+
+```swift
+// ✅ جيد
+func installMultipleApps(_ apps: [App]) async throws {
+ try await withThrowingTaskGroup(of: Void.self) { group in
+ for app in apps {
+ group.addTask {
+ try await self.installApp(app)
+ }
+ }
+
+ // انتظر حتى تكتمل جميع عمليات التثبيت
+ try await group.waitForAll()
+ }
+}
+
+// للحصول على نتائج مستقلة
+func downloadMultipleApps(_ apps: [App]) async throws -> [App: Data] {
+ try await withThrowingTaskGroup(of: (App, Data).self) { group in
+ for app in apps {
+ group.addTask {
+ let data = try await self.downloadApp(app)
+ return (app, data)
+ }
+ }
+
+ var results: [App: Data] = [:]
+ for try await (app, data) in group {
+ results[app] = data
+ }
+ return results
+ }
+}
+```
+
+### بناء النتائج ولغات النطاق المخصص (DSLs)
+
+#### مُنشِئات النتائج المخصصة
+- أنشئ مُنشئات نتائج مُركّزة ومُخصصة لغرض واحد
+- وفِّر صيغةً واضحةً للعمليات الخاصة بالمجال
+
+```swift
+// ✅ جيد
+@resultBuilder
+struct AppConfigurationBuilder {
+ static func buildBlock(_ components: AppConfigurationComponent...) -> AppConfiguration {
+ return AppConfiguration(components: components)
+ }
+
+ static func buildOptional(_ component: AppConfigurationComponent?) -> AppConfigurationComponent? {
+ return component
+ }
+
+ static func buildEither(first component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+
+ static func buildEither(second component: AppConfigurationComponent) -> AppConfigurationComponent {
+ return component
+ }
+}
+
+// الاستعمال
+func configureApp(@AppConfigurationBuilder builder: () -> AppConfiguration) -> App {
+ let config = builder()
+ return App(configuration: config)
+}
+
+let app = configureApp {
+ AppName("SideStore")
+ AppVersion("1.0.0")
+ if debugMode {
+ DebugSettings()
+ }
+ Permissions {
+ NetworkAccess()
+ FileSystemAccess()
+ }
+}
+```
+
+## أنماط Objective-C المتقدمة
+
+### تنظيم الفئات
+- استخدم الفئات لتنظيم الوظائف المترابطة
+- اجعل أسماء الفئات وصفية ومحددة
+
+```objc
+// ✅ جيد
+@interface NSString (SSValidation)
+- (BOOL)ss_isValidAppIdentifier;
+- (BOOL)ss_isValidVersion;
+@end
+
+@interface UIViewController (SSAppInstallation)
+- (void)ss_presentAppInstallationViewController:(SSApp *)app;
+- (void)ss_showInstallationProgress:(SSInstallationProgress *)progress;
+@end
+
+// ❌ سيء
+@interface NSString (Helpers)
+- (BOOL)isValid; // Too generic
+- (NSString *)cleanup; // Unclear purpose
+@end
+```
+
+### إدارة الذاكرة المتقدمة
+- استخدم الأنماط المناسبة لعلاقات التفويض
+- تعامل مع مخططات الكائنات المعقدة بشكل صحيح
+
+```objc
+// ✅ جيد
+@interface SSAppInstaller : NSObject
+@property (nonatomic, weak) id delegate;
+@property (nonatomic, strong) NSOperationQueue *installationQueue;
+@end
+
+@implementation SSAppInstaller
+
+- (instancetype)init {
+ self = [super init];
+ if (self) {
+ _installationQueue = [[NSOperationQueue alloc] init];
+ _installationQueue.maxConcurrentOperationCount = 3;
+ _installationQueue.name = @"com.sidestore.installation";
+ }
+ return self;
+}
+
+- (void)installApp:(SSApp *)app completion:(void (^)(NSError *))completion {
+ __weak typeof(self) weakSelf = self;
+ NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ NSError *error = nil;
+ [strongSelf performInstallationForApp:app error:&error];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(error);
+ });
+ }];
+
+ [self.installationQueue addOperation:operation];
+}
+
+@end
+```
+
+### أنماط استخدام الكتل البرمجية
+- استخدم أنماط الكتل المناسبة للعمليات غير المتزامنة.
+- تعامل مع إدارة الذاكرة في الكتل بشكل صحيح
+
+```objc
+// ✅ جيد
+typedef void (^SSInstallationProgressBlock)(float progress);
+typedef void (^SSInstallationCompletionBlock)(SSApp *app, NSError *error);
+
+@interface SSAppDownloader : NSObject
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion;
+@end
+
+@implementation SSAppDownloader
+
+- (NSURLSessionTask *)downloadApp:(SSApp *)app
+ progress:(SSInstallationProgressBlock)progressBlock
+ completion:(SSInstallationCompletionBlock)completion {
+
+ NSURLRequest *request = [NSURLRequest requestWithURL:app.downloadURL];
+
+ __weak typeof(self) weakSelf = self;
+ NSURLSessionDownloadTask *task = [[NSURLSession sharedSession]
+ downloadTaskWithRequest:request
+ completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) return;
+
+ if (error) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completion(nil, error);
+ });
+ return;
+ }
+
+ // معالجة الملف الذي تم تنزيله
+ [strongSelf processDownloadedFile:location
+ forApp:app
+ completion:completion];
+ }];
+
+ [task resume];
+ return task;
+}
+
+@end
+```
+
+## الأنماط المعمارية
+
+### تطبيق نمط MVVM
+- افصل بوضوح بين الاهتمامات المتعلقة بالنموذج، والعرض، ونموذج العرض
+- استخدم أنماط ربط البيانات المناسبة
+
+```swift
+// ✅ جيد
+// نموذج
+struct App {
+ let identifier: String
+ let name: String
+ let version: String
+ let isInstalled: Bool
+}
+
+// نموذج العرض
+@MainActor
+class AppListViewModel: ObservableObject {
+ @Published var apps: [App] = []
+ @Published var isLoading = false
+ @Published var errorMessage: String?
+
+ private let appService: AppService
+
+ init(appService: AppService) {
+ self.appService = appService
+ }
+
+ func loadApps() async {
+ isLoading = true
+ errorMessage = nil
+
+ do {
+ apps = try await appService.fetchAvailableApps()
+ } catch {
+ errorMessage = error.localizedDescription
+ }
+
+ isLoading = false
+ }
+
+ func installApp(_ app: App) async {
+ do {
+ try await appService.installApp(app)
+ await loadApps() // Refresh the list
+ } catch {
+ errorMessage = "Failed to install \(app.name): \(error.localizedDescription)"
+ }
+ }
+}
+
+// العرض
+struct AppListView: View {
+ @StateObject private var viewModel: AppListViewModel
+
+ init(appService: AppService) {
+ _viewModel = StateObject(wrappedValue: AppListViewModel(appService: appService))
+ }
+
+ var body: some View {
+ NavigationView {
+ List(viewModel.apps, id: \.identifier) { app in
+ AppRowView(app: app) {
+ Task {
+ await viewModel.installApp(app)
+ }
+ }
+ }
+ .navigationTitle("Available Apps")
+ .overlay {
+ if viewModel.isLoading {
+ ProgressView()
+ }
+ }
+ .alert("Error", isPresented: .constant(viewModel.errorMessage != nil)) {
+ Button("OK") {
+ viewModel.errorMessage = nil
+ }
+ } message: {
+ Text(viewModel.errorMessage ?? "")
+ }
+ }
+ .task {
+ await viewModel.loadApps()
+ }
+ }
+}
+```
+
+### حقن التبعيات
+- استخدم حقن التبعية لضمان قابلية الاختبار والمرونة
+- استخدم حاوية حقن التبعية (DI container) للتطبيقات المعقدة
+
+```swift
+// ✅ جيد
+protocol AppService {
+ func fetchAvailableApps() async throws -> [App]
+ func installApp(_ app: App) async throws
+}
+
+protocol NetworkService {
+ func downloadData(from url: URL) async throws -> Data
+}
+
+class DefaultAppService: AppService {
+ private let networkService: NetworkService
+ private let deviceService: DeviceService
+
+ init(networkService: NetworkService, deviceService: DeviceService) {
+ self.networkService = networkService
+ self.deviceService = deviceService
+ }
+
+ func fetchAvailableApps() async throws -> [App] {
+ let data = try await networkService.downloadData(from: appsURL)
+ return try JSONDecoder().decode([App].self, from: data)
+ }
+
+ func installApp(_ app: App) async throws {
+ guard deviceService.hasSpace(for: app) else {
+ throw InstallationError.insufficientStorage
+ }
+
+ let appData = try await networkService.downloadData(from: app.downloadURL)
+ try await deviceService.installApp(data: appData)
+ }
+}
+
+// حاوية DI
+class ServiceContainer {
+ static let shared = ServiceContainer()
+
+ private init() {}
+
+ lazy var networkService: NetworkService = DefaultNetworkService()
+ lazy var deviceService: DeviceService = DefaultDeviceService()
+ lazy var appService: AppService = DefaultAppService(
+ networkService: networkService,
+ deviceService: deviceService
+ )
+}
+```
+
+### بنية معالجة الأخطاء
+- ضع استراتيجيات شاملة لمعالجة الأخطاء
+- استخدم الأخطاء المكتوبة لتحسين معالجة الأخطاء
+
+```swift
+// ✅ جيد
+enum SideStoreError: Error {
+ case network(NetworkError)
+ case installation(InstallationError)
+ case device(DeviceError)
+ case validation(ValidationError)
+}
+
+enum NetworkError: Error {
+ case noConnection
+ case timeout
+ case serverError(Int)
+ case invalidResponse
+}
+
+enum InstallationError: Error {
+ case insufficientStorage
+ case incompatibleDevice
+ case corruptedFile
+ case alreadyInstalled
+}
+
+extension SideStoreError: LocalizedError {
+ var errorDescription: String? {
+ switch self {
+ case .network(let networkError):
+ return "Network error: \(networkError.localizedDescription)"
+ case .installation(let installError):
+ return "Installation error: \(installError.localizedDescription)"
+ case .device(let deviceError):
+ return "Device error: \(deviceError.localizedDescription)"
+ case .validation(let validationError):
+ return "Validation error: \(validationError.localizedDescription)"
+ }
+ }
+}
+
+// معالجة أخطاء الخدمات
+class AppService {
+ func installApp(_ app: App) async throws {
+ do {
+ try validateApp(app)
+ } catch {
+ throw SideStoreError.validation(error as! ValidationError)
+ }
+
+ do {
+ try await performInstallation(app)
+ } catch let error as NetworkError {
+ throw SideStoreError.network(error)
+ } catch let error as InstallationError {
+ throw SideStoreError.installation(error)
+ }
+ }
+}
+```
+
+## اعتبارات الأداء
+
+### تحسين الذاكرة
+- استخدم التحميل الكسول للموارد المكلفة
+- طبق استراتيجيات التخزين المؤقت المناسبة
+
+```swift
+// ✅ جيد
+class AppImageCache {
+ private let cache = NSCache()
+ private let downloadQueue = DispatchQueue(label: "image-download", qos: .utility)
+
+ init() {
+ cache.countLimit = 50
+ cache.totalCostLimit = 50 * 1024 * 1024 // 50MB
+ }
+
+ func image(for app: App) async -> UIImage? {
+ let key = app.identifier as NSString
+
+ // تحقق من ذاكرة التخزين المؤقت أولاً
+ if let cachedImage = cache.object(forKey: key) {
+ return cachedImage
+ }
+
+ // قم بالتنزيل إذا لم يتم حفظه في ذاكرة التخزين المؤقت
+ return await withCheckedContinuation { continuation in
+ downloadQueue.async { [weak self] in
+ guard let self = self else {
+ continuation.resume(returning: nil)
+ return
+ }
+
+ do {
+ let data = try Data(contentsOf: app.iconURL)
+ let image = UIImage(data: data)
+
+ if let image = image {
+ self.cache.setObject(image, forKey: key)
+ }
+
+ continuation.resume(returning: image)
+ } catch {
+ continuation.resume(returning: nil)
+ }
+ }
+ }
+ }
+}
+```
+
+### أفضل الممارسات لتنفيذ المتعدد (Threading)
+- استخدم أولويات الطابور المناسبة
+- قلل من context switching
+
+```swift
+// ✅ جيد
+actor BackgroundProcessor {
+ private let processingQueue = DispatchQueue(
+ label: "background-processing",
+ qos: .utility,
+ attributes: .concurrent
+ )
+
+ func processLargeDataSet(_ data: [LargeDataItem]) async -> [ProcessedItem] {
+ return await withTaskGroup(of: ProcessedItem?.self, returning: [ProcessedItem].self) { group in
+ let chunkSize = max(data.count / ProcessInfo.processInfo.activeProcessorCount, 1)
+
+ for chunk in data.chunked(into: chunkSize) {
+ group.addTask {
+ return await self.processChunk(chunk)
+ }
+ }
+
+ var results: [ProcessedItem] = []
+ for await result in group {
+ if let processed = result {
+ results.append(processed)
+ }
+ }
+
+ return results
+ }
+ }
+
+ private func processChunk(_ chunk: [LargeDataItem]) async -> ProcessedItem? {
+ // معالجة مكثفة لوحدة المعالجة المركزية
+ return await withCheckedContinuation { continuation in
+ processingQueue.async {
+ let result = chunk.map { self.expensiveOperation($0) }
+ continuation.resume(returning: ProcessedItem(results: result))
+ }
+ }
+ }
+}
+```
+
+## أنماط الاختبار
+
+### الاختبار القائم على البروتوكول
+- استخدم البروتوكولات لحقن التبعيات في الاختبارات
+- أنشئ بدائل اختبار مُركّزة
+
+```swift
+// ✅ جيد
+class MockAppService: AppService {
+ var shouldFailInstallation = false
+ var installedApps: [App] = []
+
+ func fetchAvailableApps() async throws -> [App] {
+ return [
+ App(identifier: "test.app1", name: "Test App 1", version: "1.0.0"),
+ App(identifier: "test.app2", name: "Test App 2", version: "2.0.0")
+ ]
+ }
+
+ func installApp(_ app: App) async throws {
+ if shouldFailInstallation {
+ throw InstallationError.insufficientStorage
+ }
+ installedApps.append(app)
+ }
+}
+
+class AppListViewModelTests: XCTestCase {
+ private var mockAppService: MockAppService!
+ private var viewModel: AppListViewModel!
+
+ override func setUp() {
+ super.setUp()
+ mockAppService = MockAppService()
+ viewModel = AppListViewModel(appService: mockAppService)
+ }
+
+ @MainActor
+ func testLoadAppsSuccess() async {
+ await viewModel.loadApps()
+
+ XCTAssertEqual(viewModel.apps.count, 2)
+ XCTAssertFalse(viewModel.isLoading)
+ XCTAssertNil(viewModel.errorMessage)
+ }
+
+ @MainActor
+ func testInstallAppFailure() async {
+ mockAppService.shouldFailInstallation = true
+
+ let testApp = App(identifier: "test", name: "Test", version: "1.0")
+ await viewModel.installApp(testApp)
+
+ XCTAssertNotNil(viewModel.errorMessage)
+ XCTAssertTrue(viewModel.errorMessage!.contains("insufficient storage"))
+ }
+}
+```
+
+## معايير التوثيق
+
+### اشرح استعمال الـ API المعقد
+- توثيق السلوكيات المعقدة والحالات الاستثنائية
+- قدم أمثلة لستخدام APIs معقدة
+
+```swift
+/**
+ * A thread-safe manager for handling app installations with automatic retry logic.
+ *
+ * This class manages the installation process for iOS applications, handling
+ * network downloads, signature verification, and device communication.
+ * It provides automatic retry functionality for transient failures and
+ * comprehensive error reporting.
+ *
+ * ## Usage Example
+ * ```swift
+ * let installer = AppInstallationManager()
+ *
+ * do {
+ * let result = try await installer.installApp(
+ * from: app.sourceURL,
+ * identifier: app.bundleID,
+ * maxRetries: 3
+ * )
+ * print("Installation completed: \(result.installedPath)")
+ * } catch InstallationError.insufficientStorage {
+ * // معالجة خطأ التخزين
+ * } catch {
+ * // معالجة خطأ التخزين
+ * }
+ * ```
+ *
+ * ## سلامة التنفيذ المتعدد
+ * يجب ان تكون الفئة آمنة للاستخدام المتزامن (thread-safe) ويمكن استدعاؤها من أي طابور
+ * يتم استدعاء المعالِجات في طابور المهام الرئيسي ما لم يُنصَّ على خلاف ذلك.
+ *
+ * ## معالجة الأخطاء
+ * تُصنَّف حالات فشل التثبيت إلى أخطاء قابلة للمعالجة وأخرى غير قابلة للمعالجة.
+ * بالنسبة للأخطاء القابلة للمعالجة (مثل انتهاء مهلة الشبكة أو المشكلات المؤقتة في الجهاز)،
+ * ستتم إعادة المحاولة تلقائياً حتى بلوغ الحد المحدد. أما الأخطاء غير القابلة للمعالجة
+ * (مثل التوقيعات غير الصالحة أو الأجهزة غير المتوافقة)، فستؤدي إلى الفشل فوراً.
+ */
+@MainActor
+class AppInstallationManager {
+ // كود الدالة
+}
+```
+
+تذكر: ينبغي استخدام هذه الأنماط المتقدمة بحكمة. أعطِ الأولوية دائمًا لوضوح الكود وسهولة صيانته بدلًا من اللجوء إلى تنفيذات معقدة أو ذكية أكثر من اللازم. وعند الشك، اختر النهج الأبسط الذي لا يزال يلبّي المتطلبات.
\ No newline at end of file
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/contributing/contributing.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
new file mode 100644
index 00000000..9cd26061
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/contributing.mdx
@@ -0,0 +1,239 @@
+---
+sidebar_position: 1
+---
+
+# المساهمة في SideStore
+
+شكراً لاهتمامك بالمساهمة في SideStore! يُعد SideStore مشروعاً قائماً على جهود المجتمع، ويتحقق بفضل أشخاص مثلك.
+
+بمساهمتك في هذا المشروع (SideStore)، فإنك توافق على إقرار المطوّر بأحقية المساهمة الموجودة في [CERTIFICATE-OF-ORIGIN.md](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md). تخضع أي مساهمات في هذا المشروع تتم بعد إضافة إقرار المطوّر بأحقية المساهمة لسياسة ذلك الترخيص.
+
+هناك طرق عديدة للمساهمة في SideStore؛ لذا، حتى وإن لم تكن مطوِّراً، لا تزال هناك طرق أخرى كثيرة يمكنك من خلالها تقديم المساعدة:
+
+- [كتابة الوثائق](https://github.com/SideStore/SideStore-Docs)
+- [تقديم تقارير مفصلة عن الأخطاء واقتراح ميزات جديدة](https://github.com/SideStore/SideStore/issues/new/choose)
+- المساعدة في تقديم الدعم:
+ - [Discord](https://dis.sidestore.io/)
+ - [GitHub Discussions](https://github.com/SideStore/SideStore/discussions)
+
+ومع ذلك، سيركز هذا الدليل على الجانب المتعلق بالتطوير. في الوقت الحالي، سنكتفي بتوفير معلومات الإعداد هنا، ولكن يمكنك [الانضمام إلى خادم Discord الخاص بنا](https://discord.gg/sidestore-949183273383395328) إذا احتجت إلى المساعدة بعد الانتهاء من الإعداد.
+
+## المتطلبات
+
+يفترض هذا الدليل أنك:
+
+- تستخدم جهاز Mac
+- مثبت برنامج Xcode مسبقاً
+- امتلاك معرفة أساسية باستخدام الأوامر في طرفية (Terminal) (معرفة كيفية تشغيل الأوامر والانتقال إلى المجلدات باستخدام الأمر cd).
+- امتلاك معرفة أساسية بـ Git (يُعد [GitHub Desktop](https://desktop.github.com/) أداة ممتازة للمبتدئين، إذ يسهّل التعامل مع Git بشكل كبير)
+- امتلاك معرفة أساسية بتطوير على Swift/iOS
+
+## الإعداد
+
+1. **قم بعمل نسخة لصفحة SideStore على GitHub**.
+
+2. **استنسخ النسخة عن طريق الأمر التالي في طرفية (Terminal)**:
+ ```bash
+ git clone https://github.com//SideStore.git --recurse
+ cd SideStore
+ ```
+
+ إذا كنت تستخدم GitHub Desktop، فارجع إلى [هذا الدليل](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop).
+
+3. **انسخ `CodeSigning.xcconfig.sample` الى `CodeSigning.xcconfig`** واملأ القيم.
+
+4. **(لأغراض التطوير فقط)** قم بتغيير قيمة `ALTDeviceID` في ملف Info.plist لتطابق رقم UDID الخاص بجهازك. عادةً ما يقوم برنامج iloader بتضمين رقم الـ UDID الخاص بجهازك تلقائياً في ملف Info.plist الخاص بتطبيق SideStore أثناء عملية التثبيت. أما عند التشغيل عبر Xcode، فسيتعين عليك تحديد هذه القيمة بنفسك، وإلا فلن يتمكن SideStore من إعادة توقيع التطبيقات (أو حتى تثبيتها) للجهاز الصحيح.
+
+5. **وأخيراً، افتح `AltStore.xcworkspace` في Xcode**.
+
+بعد ذلك، قم بإجراء التغييرات واختبارها. ثم قم بحفظ التغييرات عن طريق زر commit ورفعها عن طريق زرpush باستخدام Git، وأنشئ طلب رفع عن طريق زر pull request.
+
+## معلومات عن مكتبة الـ Binary الجاهزة
+
+تستخدم كل من minimuxer وem_proxy ملفات لمكتبات الـ Binary ثابتة ومُعدّة مسبقاً بواسطة GitHub Actions، وذلك لتسريع عمليات البناء والاستغناء عن الحاجة لتثبيت Rust عند العمل على SideStore. سيتم تشغيل `SideStore/fetch-prebuilt.sh` بواسطة Xcode قبل كل عملية بناء، وسيقوم بالتحقق مما إذا كانت ملفات الـ binaries المحملة محدثة مرة كل 6 ساعات. وإذا أردت إجباره على التحقق من وجود ملفات binaries جديدة، قم بتشغيل الأمر `bash ./SideStore/fetch-prebuilt.sh force`.
+
+## البناء باستخدام Xcode
+
+قم بتثبيت cocoapods إذا لزم الأمر باستخدام: `brew install cocoapods`
+الآن، ومن خلال سطر الأوامر في مجلد صفحة SideStore المحملة من GitHub، قم بتنفيذ عملية تثبيت الـ Pods باستخدام الأمر `pod install` لتثبيت تبعيات cocoapod.
+بعد ذلك، يمكنك إجراء عمليات البناء المعتادة داخل Xcode.
+
+## بناء ملف IPA لنشر
+
+قم بتثبيت cocoapods إذا لزم الأمر باستخدام: `brew install cocoapods`
+الآن، ومن خلال سطر الأوامر في مجلد صفحة SideStore المحملة من GitHub، قم بتنفيذ عملية تثبيت الـ Pods باستخدام الأمر `pod install` لتثبيت تبعيات cocoapod.
+
+يمكنك بعد ذلك استخدام أمر `make build fakesign ipa` في نفس المجلد الخاص بصفحة SideStore المحملة من GitHub.
+
بشكل افتراضي، يكون إعداد البناء هو `Release`
+
لإصدارات الـ debug استخدم `export BUILD_CONFIG=Debug;make build fakesign ipa` في نفس المجلد الخاص بصفحة SideStore المحملة من GitHub.
+
لإصدارات الـ alpha/beta استخدم `export IS_ALPHA=1;` أو `export IS_BETA=1;` قبل استدعاء أمر البناء.
+سيؤدي هذا إلى إنشاء ملف SideStore.ipa.
+
+```sh
+أمثلة:
+
+ # تثبيت cocoapods
+ brew install cocoapods
+ # pods تنفيذ التثبيت لـ الـ
+ pod install
+
+ # alpha إصدار نسخة
+ export IS_ALPHA=1;make build fakesign ipa
+ # alpha إصدار تجريبي لنسخة
+ export IS_ALPHA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # beta إصدار نسخة
+ export IS_BETA=1;make build fakesign ipa
+ # beta إصدار تجريبي لنسخة
+ export IS_BETA=1;export BUILD_CONFIG=Debug;make build fakesign ipa
+
+ # stable إصدار نسخة
+ make build fakesign ipa
+ # stable إصدار تجريبي لنسخة
+ export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+بشكل افتراضي، سيقوم SideStore بعملية البناء باستخدام مُعرِّف الحزمة (bundleIdentifier) الافتراضي `com.SideStore.SideStore`؛ ولكن إذا كنت بحاجة إلى تحديد مُعرِّف حزمة مخصص لعمليات البناء عبر سطر الأوامر، فيمكنك القيام بذلك عن طريق `BUNDLE_ID_SUFFIX`:
+
+```sh
+ # stable إصدار نسخة
+ export BUNDLE_ID_SUFFIX=XYZ0123456;make build fakesign ipa
+ # stable إصدار تجريبي لنسخة
+ export BUNDLE_ID_SUFFIX=XYZ0123456;export BUILD_CONFIG=Debug;make build fakesign ipa
+```
+
+**ملاحطة**: عند البناء باستخدام Xcode، يتم تعيين `BUNDLE_ID_SUFFIX` افتراضياً بقيمة `DEVELOPMENT_TEAM`.
+
+يمكن تخصيص هذا الأمر من خلال تعيين أو إزالة BUNDLE_ID_SUFFIX في ملف CodeSigning.xcconfig المُنشأ استناداً إلى الملف CodeSigning.xcconfig.sample
+
+:::warning
+سيحتوي ملف الـ binary المُنشأ على مسارات تشير إلى مجلد DerivedData الخاص بـ Xcode، وفي حال قمت ببناء minimuxer على جهازك، فسيحتوي أيضاً على مسارات تشير إلى $HOME/.cargo؛ وتتضمن هذه المسارات اسم المستخدم الخاص بك. لذا، إذا كنت ترغب في الحفاظ على خصوصية اسم المستخدم الخاص بك، فقد تفضل استخدام GitHub Actions لبناء ملف IPA بدلاً من ذلك.
+:::
+
+## تطوير minimuxer بالتزامن مع SideStore
+
+يرجى الاطلاع على [ملف README الخاص بـ minimuxer](https://github.com/SideStore/minimuxer) لمعرفة تعليمات التطوير.
+
+## عملية طلب الرفع Pull Request
+
+### قبل الرفع
+
+1. **اتبع معايير البرمجة**: تأكد من أن الكود الخاص بك تتبع [إرشادات التنسيق](./formatting.mdx) لدينا.
+
+2. **اختبر التغييرات التي أجريتها**:
+ - اختبر على إصدارات iOS مختلفة إذا أمكن ذلك
+ - تأكد من عدم تعطل الوظائف التي تعمل بالفعل
+ - أضف اختبارات للميزات الجديدة إذا أمكن
+
+3. **تحديث الوثائق**: حدِّث الوثائق ذات الصلة إذا كانت التغييرات التي أجريتها تؤثر في الميزات التي يتفاعل معها المستخدمون.
+
+### تقديم طلب الرفع
+
+1. **أنشئ فرعاً (branch) للميزة**:
+ ```bash
+ git checkout -b feature/اسم-الميزة-الخاص-بك
+ ```
+
+2. **أجرِ التعديلات**: التزم بإرشادات البرمجة وأفضل الممارسات.
+
+3. **اعتمد تغييراتك مع إضافة رسالة توضح التعديلات**:
+ ```bash
+ git add .
+ git commit -s -m "اكتب رسالة تصف التغييرات"
+ ```
+
+ **مهم**: يجب توقيع جميع عمليات الأعتماد (commit) بـ إقرار المطوّر بأحقية المساهمة (DCO). يضيف الخيار `-s` تلقائياً السطر المطلوب لـ `التوقيع من قبل` إلى رسالة الأعتماد الخاصة بك.
+
+4. **ارفع الى نسختك من الصفحة**:
+ ```bash
+ git push origin feature/اسم-الميزة-الخاص-بك
+ ```
+
+5. **إنشاء طلب رفع**: انتقل إلى صفحة SideStore الرئيسية على GitHub وأنشئ طلب رفع (Pull Request) من الفرع (branch) الخاص بك.
+
+:::caution تحذير
+نحن **لا** نقبل طلبات الرفع التي يتضح أنها مُنشأة بواسطة الذكاء الاصطناعي أو التي تفتقر إلى الدقة والمنهجية (مثل احتواؤها على تعليقات مفرطة وواضحة، أو كود برمجي يبدو شائع وعاماً، أو ينم عن عدم فهم للمشروع، أو لم يتم إعداده بعناية ليتناسب مع SideStore). يرجى التأكد من أن مساهماتكم أصلية وتعكس فهماً واضحاً لقاعدة الكود وأهداف المشروع.
+:::
+
+### إرشادات طلب الرفع
+
+- **عنوان واضح**: استخدم عنواناً وصفياً يلخص التغيير
+- **وصف تفصيلي**: اشرح التغييرات التي أجريتها والأسباب
+- **ربطها بأي مشكلة مشابهة**: أشر إلى أي مشكلات ذات صلة على GitHub
+- **لقطات الشاشة**: أدرج لقطات شاشة لتغييرات واجهة المستخدم
+- **ملاحظات الاختبار**: صِف كيف اختبرت التغييرات التي أجريتها
+
+## إقرار المطوّر بأحقية المساهمة (DCO)
+
+تُطالب SideStore جميع المساهمين بالمصادقة على التغييرات البرمجية التي يجرونها باستخدام إقرار المطوّر بأحقية المساهمة (DCO). وتُعد هذه الشهادة بمثابة مدونة قواعد سلوك المساهمين لدينا، كما أنها وسيلة بسيطة للإقرار بأنك كاتب الكود البرمجي الذي تساهم به أو أنك تمتلك الحق في تقديمه.
+
+### ما هو إقرار المطوّر بأحقية المساهمة (DCO)؟
+
+بتوقيعك على جميع عمليات الأعتماد، فإنك تُقر بأن:
+
+- **(أ)** تم إنشاء هذا العمل كلياً أو جزئياً من قِبلك، ولك الحق في تقديمه بموجب رخصة المصادر المفتوحة الموضحة في الملف؛ أو
+- **(ب)** تستند هذه المساهمة إلى عمل سابق، وعلى حد علمك، فهو مشمول بترخيص مفتوح المصدر مناسب، ولك الحق بموجب هذا الترخيص في تقديم ذلك العمل مع تعديلات؛ أو
+- **(ج)** قُدِّمت لك المساهمة مباشرةً من قِبَل شخص آخر قام بإجراء المصادقة (أ)، (ب) أو (ج)، ولم تقم أنت بتعديلها.
+- **(د)** أنت تدرك وتوافق على أن هذا المشروع والمساهمة فيه هما أمران علنيان، وأنه يتم الاحتفاظ بسجل للمساهمة إلى أجل غير مسمى.
+
+### كيفية كتابة التوقيع
+
+لتوقيع عمليات الأعتماد الخاصة بك، ما عليك سوى إضافة الخيار `-s` عند إجراء الأعتماد.:
+
+```bash
+git commit -s -m "رسالة الأعتماد"
+```
+
+سيؤدي هذا تلقائياً إلى إضافة سطر `التوقيع من قبل` إلى رسالة الأعتماد الخاصة بك:
+
+```
+رسالة الأعتماد خاصتك
+
+Signed-off-by: SternXD
+```
+
+### ملاحظات هامة
+
+- **يجب توقيع جميع عمليات الأعتماد** - عادةً ما نُفضّل أن تقوم بتوقيع عمليات الأعتماد الخاصة بك.
+- **استخدم البريد الإلكتروني الصحيح** - يجب أن يتطابق البريد الإلكتروني مع حسابك على GitHub.
+- **إعادة التوقيع بأثر رجعي** - إذا نسيت التوقيع، يمكنك تعديل آخر عملية رفع قمت بها باستخدام `git commit --amend -s`
+
+لمزيد من التفاصيل، يرجى الاطلاع على مستند [إقرار بأحقية المساهمة](https://github.com/SideStore/SideStore/blob/develop/CERTIFICATE-OF-ORIGIN.md).
+
+## عملية مراجعة الكود
+
+1. **مراجعة أولية**: سيقوم أحد المشرفين بمراجعة طلب الرفع الخاص بك في غضون بضعة أيام
+2. **التعليق**: معالجة أي تغييرات أو استفسارات مطلوبة
+3. **الموافقة النهائية**: بمجرد الموافقة عليه، سيقوم أحد المشرفين بدمج طلب الرفع الخاص بك
+
+## إرشادات للمساهمات الجيدة
+
+### جودة الكود
+- اكتب كوداً نظيفاً وقابلاً للقراءة
+- اتبع أفضل الممارسات في لغتي Swift وObjective-C.
+- استخدم أسماءً ذات دلالة واضحة للمتغيرات والدوال
+- أضف تعليقات للكود المعقد
+
+### اختبار
+- اختبر على أجهزة فعلية إذا أمكن ذلك.
+- اختبار الحالات الشاذة وحالات الخطأ
+- تحقق من التوافق مع الإصدارات السابقة
+
+### التوثيق
+- تحديث شروحات الكود
+- تحديث الوثائق لذكر الميزات التي يتفاعل معها المستخدم
+- اضف توثيق لطريقة استعمال الـ APIs العامة
+
+## الحصول على المساعدة
+
+إذا كنت بحاجة إلى مساعدة أو كانت لديك أسئلة:
+
+- **خيار Discussions على GitHub**: استخدم مناقشات GitHub للأسئلة العامة.
+- **خيار Issues على GitHub**: أنشئ بلاغاً للأخطاء أو لطلبات الميزات
+- **Discord**: انضم إلى مجتمع SideStore على Discord
+
+## تقدير
+
+سيتم ذكر المساهمين الذين يقدمون مساهمات جوهرية في قائمة المساهمين وسجل التغييرات الخاص بالمشروع.
+
+شكراً لمساهمتك في SideStore!
\ No newline at end of file
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/contributing/formatting.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
new file mode 100644
index 00000000..07d53c62
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/contributing/formatting.mdx
@@ -0,0 +1,492 @@
+---
+sidebar_position: 2
+---
+
+# إرشادات تنسيق الكود
+
+تُحدد هذه الوثيقة معايير تنسيق الكود البرمجي بلغتي Swift وObjective-C في مشروع SideStore؛ إذ يُسهم التنسيق المتسق في جعل قاعدة الكود أكثر قابلية للقراءة والصيانة.
+
+## المبادئ العامة
+
+- **التناسق**: اتبع نمط الكود المعتمد في المشروع
+- **سهولة القراءة**: يجب أن يكون الكود سهل القراءة والفهم
+- **البساطة**: فَضِّل الحلول البسيطة والواضحة على الحلول المبتكرة المبالغ فيها
+- **اتفاقيات Apple**: اتبع اصطلاحات Apple الرسمية للغتي Swift وObjective-C حيثما أمكن ذلكاغع
+
+## تنسيق لغة Swift
+
+### معايير التسمية
+
+#### المتغيرات والدوال
+- استخدم نمط **camelCase** للمتغيرات والدوال والأساليب
+- استخدم أسماءً وصفيةً توضح الغرض بوضوح
+
+```swift
+// ✅ جيد
+let downloadProgress: Float
+func validateUserCredentials() -> Bool
+var isAppInstalling: Bool
+
+// ❌ سيء
+let dp: Float
+func validate() -> Bool
+var installing: Bool
+```
+
+#### الفئات، والبُنى، والتعدادات، والبروتوكولات
+- استخدم نمط **PascalCase** للأنواع
+- استخدم أسماءً وصفية بصيغة الاسم
+
+```swift
+// ✅ جيد
+class AppInstaller // الفئات
+struct InstallationProgress // البُنى
+enum AppState // التعدادات
+protocol AppManaging // البروتوكولات
+
+// ❌ سيء
+class installer // الفئات
+struct progress // البُنى
+enum state // التعدادات
+protocol managing // البروتوكولات
+```
+
+#### الثوابت
+- استخدم نمط **camelCase** لثوابت
+- استخدم نمط **SCREAMING_SNAKE_CASE** للثوابت العامة
+
+```swift
+// ✅ جيد
+let maxRetryAttempts = 3
+private let defaultTimeout: TimeInterval = 30.0
+
+// ثوابت عامة
+let MAX_CONCURRENT_DOWNLOADS = 5
+
+// ❌ سيء
+let MaxRetryAttempts = 3
+let max_retry_attempts = 3
+```
+
+### الإزاحة والتباعد
+
+#### الإزاحة
+- استخدم **4 مسافات** للإزاحة (ليس 4 ضغطات من زر Tab)
+- حاذِ أسطر المتابعة مع رمز الفتح (رمز الفتح مثل "()، []")
+
+```swift
+// ✅ جيد
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) {
+ // كود الدالة
+}
+
+// ❌ سيء
+func installApp(withIdentifier identifier: String,
+sourceURL: URL,
+completion: @escaping (Result) -> Void) {
+// كود الدالة
+}
+```
+
+#### طول السطر
+- اجعل الأسطر أقل من **120 حرفاً** كلما أمكن ذلك
+- قسّم الأسطر الطويلة عند نقاط منطقية
+
+```swift
+// ✅ جيد
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(
+ parameter1: value1,
+ parameter2: value2
+)
+
+// ❌ سيء
+let longVariableName = SomeClass.createInstanceWithVeryLongMethodName(parameter1: value1, parameter2: value2, parameter3: value3)
+```
+
+#### التباعد
+- استخدم مسافات مفردة بين المتغيرات و المعاملات
+- لا تترك مسافة بيضاء زائدة
+- سطر فارغ واحد بين الدوال وأقسام الكود الرئيسية
+
+```swift
+// ✅ جيد
+let result = value1 + value2
+if condition && anotherCondition {
+ // كود
+}
+
+func firstFunction() {
+ // كود الدالة
+}
+
+func secondFunction() {
+ // كود الدالة
+}
+
+// ❌ سيء
+let result=value1+value2
+if condition&&anotherCondition{
+ // كود
+}
+func firstFunction(){
+ // كود الدالة
+}
+func secondFunction(){
+ // كود الدالة
+}
+```
+
+### الأقواس المتعرجة وتدفق التحكم
+
+#### نمط الأقواس المتعرجة
+- القوس يفتح في نفس سطر العبارة
+- قوس الإغلاق في سطر مستقل، ومحاذٍ للعبارة الافتتاحية
+
+```swift
+// ✅ جيد
+if condition {
+ doSomething()
+} else {
+ doSomethingElse()
+}
+
+class MyClass {
+ func myMethod() {
+ // كود الدالة
+ }
+}
+
+// ❌ سيء
+if condition
+{
+ doSomething()
+}
+else
+{
+ doSomethingElse()
+}
+```
+
+#### عبارات الـ Guard
+- استخدم عبارات guard لستخدام returns بشكل مبكر
+- اجعل عبارات guard بسيطة وسهلة القراءة
+
+```swift
+// ✅ جيد
+guard let url = URL(string: urlString) else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+
+guard !apps.isEmpty else {
+ return
+}
+
+// ❌ سيء
+if let url = URL(string: urlString) {
+ // كود طويل ومتداخل
+} else {
+ completion(.failure(ValidationError.invalidURL))
+ return
+}
+```
+
+### توصيفات الأنواع والاستنتاج
+
+#### متى تُستخدم تعليقات توضيح النوع
+- استخدم تعليقات توضيحية للنوع عندما لا يكون النوع واضحاً
+- احذف تعليقات النوع عندما يستطيع Swift استنتاج النوع بوضوح
+
+```swift
+// ✅ جيد
+let name = "SideStore" // النوع واضح
+let timeout: TimeInterval = 30 // النمط يوضح المقصد
+var apps: [App] = [] // تحتاج المصفوفة الفارغة إلى تحديد النوع
+
+// ❌ سيء
+let name: String = "SideStore" // تحديد نوع زائد
+let timeout = 30 // غير واضح ما إذا كان Int أو TimeInterval
+```
+
+### تعريفات الدوال
+
+#### تسميات المعلمات
+- استخدم تسميات وصفية للمعاملات
+- احذف تسمية العامل الأول عندما يبدو صياغته طبيعية
+
+```swift
+// ✅ جيد
+func install(_ app: App, to device: Device)
+func download(from url: URL, completion: @escaping (Data?) -> Void)
+
+// ❌ سيء
+func install(app: App, device: Device)
+func download(url: URL, completion: @escaping (Data?) -> Void)
+```
+
+#### أنواع القيم المُعادة
+- ضع نوع القيمة المُعادة في السطر نفسه كلما أمكن ذلك
+- انتقل إلى سطر جديد في حال كانت المعلمات طويلة جداً
+
+```swift
+// ✅ جيد
+func processData() -> Result
+
+func complexFunction(withManyParameters param1: String,
+ param2: Int,
+ param3: Bool)
+ -> Result {
+ // كود الدالة
+}
+```
+
+## تنسيق لغة Objective-C
+
+### معايير التسمية
+
+#### الأساليب
+- استخدم أسماءً وصفيةً الأساليب مع تسميات واضحة للمعاملات
+- ابدأ بحرف صغير
+- استخدم نمط camelCase
+
+```objc
+// ✅ جيد
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+
+// ❌ سيء
+- (void)install:(NSString *)id url:(NSURL *)url completion:(void (^)(NSError *))completion;
+```
+
+#### المتغيرات والدوال
+- استخدم نمط camelCase
+- استخدم أسماءً وصفية
+- اجعل أسماء متغيرات المثيل تبدأ بشرطة سفلية
+
+```objc
+// ✅ جيد
+@interface AppManager : NSObject
+@property (nonatomic, strong) NSArray *installedApps;
+@property (nonatomic, assign) BOOL isInstalling;
+@end
+
+@implementation AppManager {
+ NSURLSession *_networkSession;
+ dispatch_queue_t _processingQueue;
+}
+```
+
+#### الفئات والبروتوكولات
+- استخدم نمط PascalCase
+- استخدام إختصارات للفئات العامة (مثل SS لـ SideStore)
+
+```objc
+// ✅ جيد
+@interface SSAppInstaller : NSObject
+@protocol SSAppManaging
+
+// ❌ سيء
+@interface appInstaller : NSObject
+@protocol appManaging
+```
+
+### المسافات والتنسيق
+
+#### تعريفات الأساليب
+- محاذاة المعلمات عمودياً
+- استخدم تباعداً متسقاً
+
+```objc
+// ✅ جيد
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ title:(NSString *)title
+ version:(NSString *)version;
+
+// ❌ سيء
+- (instancetype)initWithIdentifier:(NSString *)identifier title:(NSString *)title version:(NSString *)version;
+```
+
+#### الأقواس
+- اجعل قوس الفتح في السطر نفسه
+- اجعل قوس الإغلاق في سطر مستقل
+
+```objc
+// ✅ جيد
+if (condition) {
+ [self doSomething];
+} else {
+ [self doSomethingElse];
+}
+
+// ❌ سيء
+if (condition)
+{
+ [self doSomething];
+}
+else
+{
+ [self doSomethingElse];
+}
+```
+
+## التعليقات والتوثيق
+
+### توثق لغة Swift
+- استخدم `///` لتعليقات
+- قم بتضمين توثيق للمعاملات وقيم الإرجاع لـ APIs العامة
+
+```swift
+/// Downloads and installs an app from the specified URL
+/// - Parameters:
+/// - identifier: The unique identifier for the app
+/// - sourceURL: The URL to download the app from
+/// - completion: Called when installation completes or fails
+/// - Returns: A cancellable operation
+func installApp(withIdentifier identifier: String,
+ sourceURL: URL,
+ completion: @escaping (Result) -> Void) -> Operation {
+ // كود الدالة
+}
+```
+
+### توثق لغة Objective-C
+- استخدم `/** */` لتعليقات
+- اتبع اصطلاحات HeaderDoc أو Doxygen
+
+```objc
+/**
+ * Downloads and installs an app from the specified URL
+ * @param identifier The unique identifier for the app
+ * @param sourceURL The URL to download the app from
+ * @param completion Block called when installation completes or fails
+ */
+- (void)installAppWithIdentifier:(NSString *)identifier
+ sourceURL:(NSURL *)sourceURL
+ completion:(void (^)(NSError *error))completion;
+```
+
+### التعليقات المضمنة
+- استخدم `//` للتعليقات المكونة من سطر واحد
+- اجعل التعليقات موجزة وذات صلة
+- اشرح **السبب**، وليس **لماذا**
+
+```swift
+// ✅ جيد
+// Retry failed downloads up to 3 times to handle temporary network issues
+let maxRetryAttempts = 3
+
+// ❌ سيء
+// Set maxRetryAttempts to 3
+let maxRetryAttempts = 3
+```
+
+## معالجة الأخطاء
+
+### معالجة الأخطاء لغة Swift
+- استخدم آليات معالجة الأخطاء المتواجدة في لغة Swift، مثل أنواع الـ`throws` و `Result`
+- أنشئ أنواع أخطاء ذات دلالة واضحة
+
+```swift
+enum InstallationError: Error {
+ case invalidURL
+ case networkFailure(Error)
+ case insufficientStorage
+ case deviceNotSupported
+}
+
+func installApp() throws -> App {
+ guard let url = URL(string: urlString) else {
+ throw InstallationError.invalidURL
+ }
+ // كود الدالة
+}
+```
+
+### معالجة الأخطاء لغة Objective-C
+- استخدم نمط العامل `NSError **`
+- تحقق دائمًا من أن عامل error ليس nil قبل تعيين قيمته
+
+```objc
+- (BOOL)installAppWithError:(NSError **)error {
+ if (someCondition) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSErrorDomain
+ code:SSErrorCodeInvalidInput
+ userInfo:nil];
+ }
+ return NO;
+ }
+ return YES;
+}
+```
+
+## أفضل الممارسات
+
+### إدارة الذاكرة
+- استخدم ARC بشكل صحيح في كل من Swift و Objective-C.
+- توخَّ الحذر بشأن دورات الاحتفاظ ؛ واستخدم المراجع من نوع `weak` و `unowned` بالشكل المناسب
+
+```swift
+// ✅ جيد
+class AppInstaller {
+ weak var delegate: AppInstallerDelegate?
+
+ private lazy var networkManager: NetworkManager = {
+ let manager = NetworkManager()
+ manager.delegate = self // تُعدّ self مرجعاً قوياً، لكن manager لا يحتفظ بـ self
+ return manager
+ }()
+}
+```
+
+### التنفيذ المتعدد (Threading)
+- احرص دائمًا على تحديث واجهة المستخدم من خلال الطابور الرئيسي
+- استخدم طوابير مناسبة للمهام التي تعمل في الخلفية
+
+```swift
+// ✅ جيد
+DispatchQueue.global(qos: .userInitiated).async {
+ let result = self.processData()
+ DispatchQueue.main.async {
+ self.updateUI(with: result)
+ }
+}
+```
+
+### معالجة اختيارية
+- استخدم أساليب استخراج أمنة
+- استخدم عبارات guard للقيم المعادة بسرعة
+
+```swift
+// ✅ جيد
+guard let data = response.data,
+ let apps = try? JSONDecoder().decode([App].self, from: data) else {
+ completion(.failure(ParsingError.invalidResponse))
+ return
+}
+```
+
+## الأدوات والأتمتة
+
+### SwiftLint
+فكر في استخدام SwiftLint لفرض العديد من قواعد التنسيق هذه تلقائياً:
+
+```yaml
+# .swiftlint.yml
+line_length: 120
+function_body_length: 60
+file_length: 400
+type_body_length: 300
+
+disabled_rules:
+ - trailing_whitespace
+
+opt_in_rules:
+ - empty_count
+ - force_unwrapping
+```
+
+تذكر: من شأن هذه الإرشادات أن تعزز قابلية قراءة الكود البرمجي وسهولة صيانته. وعند الشك، ينبغي إعطاء الأولوية للوضوح والاتساق مع قاعدة الكود البرمجي الحالية.
\ No newline at end of file
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/faq.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/faq.mdx
new file mode 100644
index 00000000..c2de4a17
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/faq.mdx
@@ -0,0 +1,120 @@
+---
+title: الأسئلة الشائعة
+description: A section on the most frequently asked questions for SideStore.
+sidebar_position: 3
+---
+
+# الأسئلة الشائعة
+
+هذه قائمة بالأسئلة الشائعة حول SideStore. فهي تتضمن الأسئلة التي نتلقاها بكثرة أثناء تطويرنا لـ SideStore، بالإضافة إلى أسئلة قد تهم فئات مختلفة من المستخدمين أو أولئك الذين يواجهون مشكلات.
+
+## ما هو SideStore؟
+
+SideStore هو تطبيق لنظام iOS يتيح لك تثبيت التطبيقات [(sideloading)](https://ar.wikipedia.org/wiki/%D8%AA%D8%AD%D9%85%D9%8A%D9%84_%D9%85%D8%AA%D9%88%D8%A7%D8%B2%D9%8A#:~:text=%D8%B9%D9%86%D8%AF%20%D8%A7%D9%84%D8%A5%D8%B4%D8%A7%D8%B1%D8%A9%20%D8%A5%D9%84%D9%89%20%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%20IOS،%D8%B7%D8%B1%D9%82%20Jailbreak%20%D8%A3%D9%88%20%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%20sideloading.) على جهازك باستخدام معرف Apple الخاص بك. يقوم SideStore بإعادة توقيع التطبيقات باستخدام ترخيص المطور الشخصي الخاص بك بستخدم [شبكة افتراضية خاصة (VPN) مصممة خصيصاً لهذا الغرض](https://apps.apple.com/app/localdevvpn/id6755608044) من أجل خداع نظام iOS لتثبيتها. سيقوم SideStore بـ "بتنشيط" تطبيقاتك دورياً في الخلفية، للحفاظ على مدة الـ 7 ايام الخاصة بالمطور من انتهاء صلاحيتها.
+
+يهدف SideStore إلى توفير طريقة تثبيت تطبيقات من مصادر خارجية غير مقيدة. إنه نسخة معدلة من قبل المجتمع من [AltStore](https://github.com/rileytestut/AltStore)، وقد قمنا بالفعل بتنفيذ بعض الميزات الأكثر طلباً من قِبَل المجتمع. لن تحتاج إلى جهاز كمبيوتر سوى مرة واحدة أثناء التثبيت.
+
+(المساهمات في التحسين مرحب بها! 🙂)
+
+### ما هي قيود SideStore؟
+
+عند استخدام حساب Apple مجاني، لا يمكن لـ SideStore تثبيت سوى 3 تطبيقات (بما في ذلك نفسه) في وقت واحد. بالإضافة إلى ذلك، لا يمكن تثبيت سوى 10 تطبيقات مختلفة في الأسبوع. (يُشار إليها بـ App IDs).
+
+### هل يمكنني تفعيل JIT؟
+
+بالنسبة للمستخدمين على نظام iOS/iPadOS 16 أو إصدار أقدم، يمكن تفعيل JIT مباشرةً من صفحة "My Apps" في SideStore، وذلك عن طريق الضغط المطول على التطبيق واختيار "Enable JIT".
+
+يمكن لمستخدمي نظام iOS 17 أو iPadOS 17.4 أو إصدارات أحدث بستخدام حلول مثل SideStore 0.6.2 أو StikDebug (المعروف سابقاً باسم StikJIT). يرجى العودة إلى الشرح المتوجود في قسم [المتقدم](advanced/jit).
+
+### متى سيتم إصدار SideStore؟
+
+لا يوجد حالياً موعد محدد لإصدار SideStore، ولكنه متاح حالياً في مرحلة تجريبية عامة.
+
+### هل يمكنك تثبيت تطبيقات من مصادر خارجية في الوقت الحالي؟
+
+نعم، يمكنك ذلك، تماماً مثل AltStore!
+
+### هل يحتوي SideStore على ميزات النسخة التجريبية من AltStore؟
+
+نحن نُطبّق ميزات النسخة التجريبية من AltStore، لكنها ليست الأحدث دائمًا. نحاول مواكبة التحديثات، أو تطبيقها بطريقتنا الخاصة عند الضرورة.
+
+### هل سيؤدي تشغيل الـ VPN إلى استنزاف البطارية؟
+
+لا، إذ يقتصر الاتصال على جهازك فقط. الجهاز لا يستخدم خوادم خارجية، مما يعني عدم وجود اتصالات خارجية، وبالتالي عدم استهلاك إضافي للبطارية.
+
+### هل ستتتبعني خدمة الـ VPN؟
+
+لا، إذ لا يتم استخدام خادم خارجي.
+
+### هل يمكنني توقيع أكثر من 3 تطبيقات لتكون نشطة؟
+
+عادةً لا، فهذا قيدٌ مرتبط بنظام iOS وحساب المطور. تسمح Apple بتثبيت 3 تطبيقات فقط باستخدام حساب مطور Apple مجاني.
+
+لإزالة هذا القيد (والحصول أيضاً على صلاحية تمتد لـ 365 يوماً)، يمكنك الدفع مقابل الحصول على حساب مطور Apple بتكلفة 99 دولاراً سنوياً.
+
+بدلاً من ذلك، يمكنك استخدام LiveContainer، أو في إصدارات iOS 18 db5/18.0.1 وما دونها، يمكنك الاستفادة من ثغرة SparseRestore لتجاوز حد التطبيقات الثلاثة. (لا يتجاوز حد الـ 10 من app-ids)
+
+يمكن العثور على شرح لاستخدام هذه الطريقة [هنا](advanced/alternative).
+
+### لدي مشكلة، أو خطأ تقني، أو طلب لميزة جديدة، أو اقتراح لتحسين تجربة الاستخدام.
+
+يرجى التحقق من [المشكلات الشائعة](troubleshooting/common-issues) وصفحة issues على GitHub، إذا لم تجد سؤال عن المشكلة التي تواجهك او الاقتراح الذي تريد طرحه في صفحة issues على GitHub، اصنع واحدة جديدة بضغط على New Issue (ضع عنوان مناسب للإقتراح او المشكلة)!
+
+### أنا مطوّر، كيف يؤثر ذلك عليّ؟
+
+لن تحتاج تطبيقاتك إلى أي تعديل لتعمل مع SideStore!
+
+### هل أحتاج إلى تثبيت AltStore لتثبيت SideStore؟
+
+لا، يمكنك تثبيت SideStore مباشرةً باتباع [دليلنا](installation/prerequisites)!
+
+### بصفتي مستخدماً، أواجه مشكلة في تسجيل الدخول إلى SideStore؛ حيث تظهر لي رسالة خطأ.
+هناك أسباب عديدة قد تؤدي إلى ذلك، ولكن السبب الأكثر شيوعاً هو توقف مؤقت في خادم Anisette. يمكنك حالياً تغيير خادم Anisette من خلال قسم الـ Settings في تطبيق SideStore، وتحديداً تحت قسم SideStore تحت خيار "Anisette URL".
+
+### هل سيتوفر لدى SideStore تطبيق اساسي؟
+
+لدينا حالياً مصدر من المجتمع! رابط المصدر: https://community-apps.sidestore.io/sidecommunity.json
+
+لدينا أيضًا خدمة تُدعى [SideStore Connect](https://connect.sidestore.io) تتيح للمطورين نشر تطبيقاتهم الخاصة.
+
+### لماذا يحتوي تطبيقي على تحديث يحمل اسم "pacer test"؟
+
+كان هذا تحديثاً تجريبياً للتحقق من وجود مشكلات بين الإصدارات الرئيسية، ولا ينبغي أن يظهر أثناء الاستخدام العادي. إذا واجهت هذه المشكلة في نسخة الإصدار، فأعد تثبيت SideStore أو أبلغ عنها كخطأ برمجي.
+
+### لماذا لا تقوم تطبيقاتي التي تعتمد على تقنية JIT بتفعيل هذه التقنية تلقائياً؟
+
+لا تتوفر لدينا حالياً طريقة لتفعيل JIT تلقائياً، وعندما تتوفر، فسيتعين عليك تشغيل LocalDevVPN. وكبديل لذلك، يمكنك استخدام StikDebug.
+
+### هل يحتوي SideStore على واجهة مستخدم مخصصة لـ iPadOS؟
+
+بالتأكيد لدينا ذلك!
+
+### لقد رأيت جهاز iMac أو MacBook Pro يُضاف إلى حسابي. هل هذا آمن، وهل هو جهاز Mac حقيقي؟
+
+أجهزة Mac هذه ليست حقيقية، بل يتم إنشاؤها تلقائياً بواسطة خادم Anisette للمساعدة في عملية تسجيل الدخول. كما أنه لا يتم إرسال أي بيانات خاصة إلى خادم Anisette، إذ تُستخدم البيانات التي يوفرها الخادم داخل تطبيق SideStore فقط.
+
+### لماذا يتم أقفال حسابي عند استخدام SideStore؟
+
+من المعروف أن خوادم Anisette القديمة، التي يستخدمها العديد من المستخدمين، تتسبب في قفل مُعرِّفات Apple. يرجى استخدام أحد خوادم Anisette الرسمية، أو استضافة خادمك الخاص [anisette-v3-server](advanced/anisette).
+
+### هل يمكنني نقل تطبيقاتي المتواجدة في AltStore/Sideloadly؟
+
+نعم، ولكن لا تحذف التطبيق الأصلي من جهازك. انتقل إلى SideStore وقم بتثبيت التطبيق عن طريق تحميل ملف IPA الخاص به، سواء كان النسخة نفسها أو نسخة محدثة، وحينها سيُضاف التطبيق إلى قائمتك داخل SideStore مع بقاء بياناتك كما هي دون تغيير.
+
+### لماذا أحتاج إلى تنشيط SideStore مباشرةً بعد تسجيل الدخول؟
+
+يعود ذلك إلى أن برنامج iloader وبرامج أخرى تميل غالباً إلى تثبيت SideStore باستخدام مُعرِّف مجموعة التطبيقات الخاص بها، في حين نستخدم نحن مُعرِّفاً خاصاً بنا. تضمن عملية تنشيط SideStore تغيير المعرّف الخاص به إلى المعرّف الخاص بنا، مما يؤدي إلى اختفاء التطبيقات التي تستخدم معرّفات مجموعات قديمة. وبعد إجراء تثبيت نظيف، يُنصح بعدم تثبيت أي تطبيقات خارجية قبل تنشيط SideStore أولاً.
+
+### هل يدعم SideStore التحديثات لاسلكيا دون الحاجة لتوصيل الجهاز بجهاز كمبيوتر؟
+
+نعم! ما عليك سوى النقر على زر التحديث عند ظهوره!
+
+### أرغب في تجربة إصدار معين من SideStore، وأريد الاحتفاظ ببياناتي عند الانتقال إلى الإصدار التجريبي. هل أقوم بحذف التطبيق الحالي أم أقوم بتثبيت الإصدار التجريبي عبر SideStore؟
+
+يمكنك تثبيت إصدار "nightly" من SideStore يدوياً عبر SideStore أو iloader مع الحفاظ على بياناتك، أو يمكنك تفعيل تحديثات النسخ التجريبية واختيار "nightly" من Settings. لا يمكننا ضمان نقل بياناتك عند تجربة إصدار غير رسمي أو إصدار "nightly".
+
+### المشكلات المعروفة حالياً
+
+إذا كنت تواجه مشكلات حالياً وترغب في معرفة ما إذا كنا على علم بها، فيُرجى الاطلاع على صفحة Issues الخاصة بنا على GitHub، وكذلك صفحة استكشاف الأخطاء وإصلاحها التي تتضمن قائمة بالمشكلات المعروفة وطرقاً للتعامل مع بعض المشكلات التي قد تواجهها. قد تكون بعض المشكلات المعروفة غير موجودة في هذه القائمة، ولكنها موجودة في صفحة issues على GitHub. [صفحة المشكلات المعروفة على GitHub](https://github.com/SideStore/SideStore/issues/490)، [قسم استكشاف الأخطاء وإصلاحها](/docs/troubleshooting/).
+
+إذا واجهت أي مشكلات غير مدرجة في هذه القائمة، فما عليك سوى فتح بلاغ على صفحة Issues في GitHub أو [الانضمام إلى خادم Discord الخاص بنا.](https://dis.sidestore.io/)
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/installation/install.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/installation/install.mdx
new file mode 100644
index 00000000..17535fe2
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/installation/install.mdx
@@ -0,0 +1,73 @@
+---
+title: التثبيت
+description: تثبيت SideStore على جهازك الـ iPhone، iPad، أو iPod touch
+sidebar_position: 2
+---
+
+```mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+```
+
+قبل البدء، تأكد من تنزيل جميع البرامج وإكمال جميع الخطوات الموجودة في [صفحة الوازم](prerequisites)!
+
+:::warning
+الدعم لحل المشكلات المتعلقة بـ iloader، يتواجد في [خادم idevice على ديسكورد](https://discord.gg/mACqxMxP3X)، لا يتعامل خادم SideStore مع المشكلات التي تحصل في iloader.
+:::
+
+## تثبيت SideStore
+### على حاسوبك الشخصي
+1. قم بتوصيل جهازك الـ iPad ،iPhone، أو iPod touch بحاسوبك الشخصي عبر كابل USB. إذا انبثقت نافذة تطلب من الوثوق، ثق بالكمبيوتر وأدخل رمز الدخول الخاص بك.
+2. افتح iloader.
+3. قم بتسجيل الدخول باستخدام حساب Apple الخاص بك. (لا يلزم أن يكون الحساب مرتبطًا بجهازك الشخصي. تذكّر أن حالة الأحرف مهمة!)
+4. اختار جهازك الـ iPad ،iPhone، أو iPod touch.
+5. اختار 'SideStore (Stable)'.
+
+### على جهازك الـ iPad ،iPhone، أو iPod touch
+
+
+ 1. افتح تطبيق الإعدادات.
+ 2. اذهب الى 'عام'، ومن ثم 'VPN و إدارة الأجهزة'.
+ 3. تحت قسم "تطبيق المطور"، حدد الخيار المسمى باسم حساب Apple الخاص بك.
+ 4. اختار "ثق [اسم حساب Apple]"، ثم اختار "ثق" للتأكيد.
+ 5. افتح LocalDevVPN و اختار 'Connect'.
+ 6. افتح SideStore.
+ 7. قم بتسجيل الدخول إلى حساب Apple الذي استخدمته في iloader.
+ 8. اذهب الى 'My Apps'.
+ 9. اضغط على '7 DAYS' الموجود على يمين SideStore لتنشيط بياناته يدويًا والانتهاء من إعداد SideStore. (يمثل الرقم 7 عدد الأيام حتى انتهاء صلاحية التطبيق. سيتم تحديثه ديناميكيًا لإظهار عدد الأيام المتبقية. اضغط عليه لتنشيط التطبيق المقصود.)
+ 10. إذا تلقيت نافذة تطلب إلغاء أو إنشاء ترخيص (certificate) جديد، اضغط على 'Yes' أو 'Refresh Now'.
+
+
+ 1. افتح تطبيق الإعدادات.
+ 2. اذهب الى 'عام'، ومن ثم 'VPN و إدارة الأجهزة'.
+ 3. تحت قسم "تطبيق المطور"، حدد الخيار المسمى باسم حساب Apple الخاص بك.
+ 4. اختار "ثق [اسم حساب Apple]"، ثم اختار "ثق" للتأكيد.
+ 5. اذهب الى 'الخصوصية و الأمان'.
+ 6. اسحب الشاشة الى الأسفل، قم بتشغيل "وضع المطور". سيتم إعادة تشغيل جهازك.
+ 7. افتح LocalDevVPN و اختار 'Connect'.
+ 8. افتح SideStore.
+ 9. قم بتسجيل الدخول إلى حساب Apple الذي استخدمته في iloader.
+ 10. اذهب الى 'My Apps'.
+ 11. اضغط على '7 DAYS' الموجود على يمين SideStore لتنشيط بياناته يدويًا والانتهاء من إعداد SideStore. (يمثل الرقم 7 عدد الأيام حتى انتهاء صلاحية التطبيق. سيتم تحديثه ديناميكيًا لإظهار عدد الأيام المتبقية. اضغط عليه لتنشيط التطبيق المقصود.)
+ 12. إذا تلقيت نافذة تطلب إلغاء أو إنشاء ترخيص (certificate) جديد، اضغط على 'Yes' أو 'Refresh Now'.
+
+
+ 1. افتح تطبيق الإعدادات.
+ 2. اذهب الى 'عام'، ومن ثم 'VPN و إدارة الأجهزة'.
+ 3. تحت قسم "تطبيق المطور"، حدد الخيار المسمى باسم حساب Apple الخاص بك.
+ 4. اختار "ثق [اسم حساب Apple]"، ثم اختار "السماح و إعادة التشغيل".
+ 5. أدخل رمز الدخول لتأكيد رغبتك بالوثوق بالتطبيق.
+ 6. اذهب الى 'الخصوصية و الأمان'.
+ 7. اسحب الشاشة الى الأسفل، قم بتشغيل "وضع المطور". سيتم إعادة تشغيل جهازك.
+ 8. افتح LocalDevVPN و اختار 'Connect'.
+ 9. افتح SideStore.
+ 10. قم بتسجيل الدخول إلى حساب Apple الذي استخدمته في iloader.
+ 11. اذهب الى 'My Apps'.
+ 12. اضغط على '7 DAYS' الموجود على يمين SideStore لتنشيط بياناته يدويًا والانتهاء من إعداد SideStore. (يمثل الرقم 7 عدد الأيام حتى انتهاء صلاحية التطبيق. سيتم تحديثه ديناميكيًا لإظهار عدد الأيام المتبقية. اضغط عليه لتنشيط التطبيق المقصود.)
+ 13. إذا تلقيت نافذة تطلب إلغاء أو إنشاء ترخيص (certificate) جديد، اضغط على 'Yes' أو 'Refresh Now'.
+
+
+
+إذا نجحت هذه العملية، فسيقوم SideStore بفتح جهازك على شاشتك الرئيسية (مصحوبًا بإشعار). سيكون SideStore متاحًا مرة أخرى في غضون ثوانٍ قليلة.
+
+قد تنتهي صلاحية ملف الاقتران الخاص بك إذا قمت بالتحديث أو إعادة التعيين جهازك الـ iPad ،iPhone، أو iPod touch. إذا حدث هذا، فستحتاج إلى استبداله باستخدام [هذا الدليل](/docs/advanced/pairing-file). يحدث هذا أيضًا في أوقات عشوائية بسبب برامج Apple.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
new file mode 100644
index 00000000..223dedf1
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/installation/prerequisites.mdx
@@ -0,0 +1,92 @@
+---
+title: الوازم
+description: 'الخطوات الأولى لتثبيت.'
+sidebar_position: 1
+---
+
+```mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+```
+
+## المتطلبات
+لتثبيت SideStore، ستحتاج الى:
+- إمتلاك جهاز iPhone، iPad، أو iPod touch [مع تفعيل رمز دخول لتفح الجهاز](https://support.apple.com/ar-sa/119586) يعمل على اصدار iOS/iPadOS 15.0 أو أعلى
+- إمتلاك حاسوب يعمل على نظام ويندوز 8 أو أعلى، نظام macOS High Sierra أو أعلى، توزيعة Linux محدثة على أعلى تحديث، أو جهاز Chromebook أُلغي تسجيله مؤخراً؛ للتثبيت الأولي فقط
+- حساب Apple (يسمى ايضا Apple ID)
+- الاتصال بالأنترنت عن طريق Wi-Fi (ليس أي اتصال بالأنترنت، الاتصال يجب ان يكون عن طريق الـ Wi-Fi. استخدام انترنت شبكة الهاتف المحمول غير مناسب)
+- بعض الاحيان! تكون هذه العملية سريعة وسهلة، ولكن ينبغي عليك تخصيص وقت [لاستكشاف الأخطاء وإصلاحها](/docs/troubleshooting)
+
+## إعداد أجهزتك
+يستخدم SideStore شبكة افتراضية خاصة (VPN) تعمل على الجهاز نفسه مما يتيح لـ SideStore التواصل مع الخدمات الداخلية للجهاز.
+
+1. ثبت برنامج LocalDevVPN من [App Store](https://apps.apple.com/app/localdevvpn/id6755608044) أو من [AltStore PAL source](https://api.altstore.io/source/adp.se2crid.me?app=com.jkcoxson.LocalDevVPN).
+2. اتصل بشبكة الـ VPN. إذا ظهرة لك نافذة تقول "يرغب "LocalDevVPN" في إضافة تكوينات VPN"، اضغط على 'السماح' و أدخل رمز الدخول الخاص بك.
+
+يجب تشغيل شبكة الـ VPN من هذا التطبيق في أي وقت ترغب فيه بتثبيت التطبيقات، تحديثها، أو تنشيط بياناتها في SideStore.
+
+الآن، اتبع التعليمات لتثبيت برنامج [iloader](https://iloader.app) بما يتوافق مع نظام تشغيل جهاز الكمبيوتر الخاص بك:
+
+
+
+ حمل و ثبيت [iloader](https://github.com/nab138/iloader/releases/latest/download/iloader-darwin-universal.dmg).
+
+
+ :::warning
+ نسخ ويندوز التي تعمل على 32بت، ونسخ ويندوز 10 التي تعمل على Arm، ليست مدعومة.
+
+
+ **معظم إصدارات نظام ويندوز تعمل على 64بت.** ومع ذلك، إذا كنت ترغب في معرفة ما إذا كنت تستخدم إصداراً غير مدعوم من نظام Windows أم لا، فيمكنك اتباع هذه التعليمات.
+ 1. افتح نافذة Run بضفط على Windows+R (أو Command+R أو Super+R).
+ 2. ادخل `control /name microsoft.system`. ستُفتح لوحة التحكم.
+ 3. تحت خيار "النظام"، عين"نوع النظام".
+
+ * إذا كان لديك "نظام تشغيل 32بت"، فإن إصدار Windows الخاص بك غير مدعوم.
+ * إذا كان لديك "معالج ARM64" وكنت تستخدم Windows 10، فإن إصدار Windows لديك غير مدعوم.
+
+ :::
+
+ 1. حمل و ثبيت iTunes [من Microsoft Store](https://apps.microsoft.com/store/detail/9PB2MZ1ZMB1S) أو [مباشرةً من Apple](https://www.apple.com/itunes/download/win64).
+ 2. حمل مثبت برنامج iloader [كـ MSI](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.msi) (موصى به) أو [كـ EXE](https://github.com/nab138/iloader/releases/latest/download/iloader-windows-x64.exe).
+ 3. شغّل برنامج التثبيت.
+
+
+ :::warning
+ **معظم توزيعات Linux تعمل على 64بت.** لمعرفة نوع التوزيعة لديك، افتح الطرفية (Terminal) و أدخل الأمر `uname -m`. المخرج المتوقع هوا `x86_64` لمعالجات Intel/AMD، أو `aarch64` لـ ARM.
+ :::
+
+ 1. حمل و ثبيت `usbmuxd`. قد يكون مثبتاً مسبقاً مع توزيعتك، وإلا يمكنك تثبيته باستخدام مدير الحزم الخاص بتوزيعتك; قد يساعدك البحث في Google عن "install usbmuxd [اسم توزيعتك]".
+ 2. حمل و ثبيت iloader لتوزيعتك. إنه متوفر كـ [DEB](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.deb) لـ Debian/Ubuntu، و [RPM](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-x86_64.rpm) لـ Fedora/openSUSE، و كـ [AppImage](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage) للآخرين. بالإضافة إلى ذلك، لمعالجات ARM، هناك أيضاً [DEB](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-arm64.deb)، و [RPM](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.rpm)، و [AppImage](https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.AppImage). (توجد أيضاً حزم مصنوعة و محدثة من المجتمع، مثل [هذا الموجود على Arch Linux AUR](https://aur.archlinux.org/packages/iloader-bin)، ولكن يرجى العلم بأننا لا نستطيع ضمان سلامتها أو أمانها. لذا ينبغي عليك دائمًا إجراء البحث والتحقق اللازمين قبل تثبيت حزم غير معروفة على نظامك.)
+
+
+ :::warning
+ **لن تنجح هذه الطريقة مع أجهزة Chromebook المسجلة إذا قام المسؤول بتعطيلها، وقد لا تعمل مع أجهزة Chromebook القديمة.** عادةً ما تكون `Linux development environment` (بيئة تطوير Linux) معطلة في أجهزة Chromebook المُسجَّلة، أو بالنسبة لأجهزة Chromebook القديمة، فهي لا توفر مثل هذه الخيارات.
+ :::
+
+ 1. فعل `Linux development environment`. يمكنك الاطلاع على دليل [إعداد نظام التشغيل Linux على جهاز Chromebook](https://support.google.com/chromebook/answer/9145439) من Google لمعرفة كيفية إعداده، باتباع خطوات `تفعيل نظام التشغيل Linux`.
+ 2. تأكد من تحديث جميع الحزم عن طريق فتح الطرفية (Terminal)، وتشغيل الأمر التالي:
`sudo apt-get update && sudo apt-get dist-upgrade`
+ 3. حمل و ثبيت `usbmuxd`، `curl` و `fuse`. يمكنك تثبيته باستخدام مدير الحزم الخاص بك عن طريق تشغيل الأمر التالي في الطرفية (Terminal):
`sudo apt-get install usbmuxd fuse curl`
+ 4. حمل و ثبيت iloader. انه متاح كـ AppImage. لمعرفة الإصدار الذي تريد تنزيله، حدد بنية Chromebook التي تستخدمها عن طريق استخدام الأمر `uname -m`. إذا مخرج الأمر كان `x86_64`، اكتب هذا الأمر
`curl -fsSLO https://github.com/nab138/iloader/releases/latest/download/iloader-linux-amd64.AppImage` ولكن إذا المخرج كان `aarch64`، اكتب هذا الأمر
`curl -fsSLO https://github.com/nab138/iloader/releases/latest/download/iloader-linux-aarch64.AppImage`.
+ 5. اذا `usbmuxd` لم يبدأ بالفعل، قم بتشغيل الأمر التالي في الطرفية (Terminal): `sudo systemctl restart usbmuxd`.
+ 6. اذهب الى `إدارة أجهزة USB` (في **الإعدادات** -> **حول ChromeOS** -> **مطورين** -> **Linux development environment (بيئة تطوير Linux)**)، ثم قم بتوصيل الـ iPhone، iPad، أو iPod touch الخاص بك (iDevice) إلى Chromebook الخاص بك عبر كابل USB. بمجرد رؤية الجهاز، **بسرعة فعله من القائمة**. إذا تمت مطالبتك في هاتفك او جهازك المحمول بالوثوق (iDevice)، ثق بالكمبيوتر وأدخل رمز الدخول الخاص بك.
+ :::note
+ **تفعيل هاتفك او جهازك المحمول (iDevice) __بسرعة__ في إدارة أجهزة USB ضروري** بسبب خطأ في `Linux development environment` (بيئة تطوير Linux). يتملك ChromeOS هاتفك او جهازك المحمول (iDevice) بشكل تلقائي (ولهذا السبب يظهر في تطبيق الملفات)، ما يمنع حاوية Linux من رؤيته. تفعيله يدويًا في **إدارة أجهزة USB** بسرعة قبل ChromeOS يتملك هاتفك او جهازك المحمول (iDevice) سيقوم بتمرير التحكم إلى الحاوية بدلاً من ذلك. يمكنك اتباع **Step 8** للتحقق من أن الحاوية ترى هاتفك او جهازك المحمول (iDevice).
+ :::
+ 7. تحقق من اذ `Linux development environment` (بيئة تطوير Linux) تتعفرف على هاتفك او جهازك المحمول (iDevice) عن طريق تشغيل الأمر `lsusb` في الطرفية (Terminal). هاتفك او جهازك المحمول (iDevice) يجب أن يظهر في القائمة. إذا لم يظهر في القائمة، حاول فصله وتوصيله مجددا في Chromebook، وتكرار الخطوة السابقة.
+ :::tip
+ المخرج من `lsusb` ينبغي أن يبدو شيئا من هذا القبيل، مع كون iPhone (أو جهاز مشابه) بمثابة مدخل موجود:
+ ```
+ Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
+ Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
+ Bus 001 Device 008: ID 05ac:12a8 Apple، Inc. iPhone 5/5C/5S/6/SE/7/8/X/XR
+ ```
+ قد يختلف اسم الجهاز وأرقام الناقل/الجهاز، ولكنه ليس بالأمر المهم.
+ :::
+ 8. قم بكتابة الأمر التالي في الطرفية (Terminal) للسماح لبرنامج iloader بالتنفيذ، وتشغيل برنامج iloader (تأكد من تطابق اسم الملف مع ما تم تنزيله، إذا كان اسم الملف يحتوي على `amd64`، فاستبدل `aarch64` بـ `amd64`):
+ ```
+ chmod +x ./iloader-linux-aarch64.AppImage
+ ./iloader-linux-aarch64.AppImage
+ ```
+ 9. إذا كان iloader لا يعرض هاتفك او جهازك المحمول (iDevice)، يمكنك تجربة تشغيل `usbmuxd` يدويًا عن طريق كتابة الأوامر التالية في **نافذة طرفية (Terminal) آخرة**: `sudo systemctl stop usbmuxd` و `sudo usbmuxd -v -f`. قد تظهر نافذة منبثقة في هاتفك او جهازك المحمول (iDevice) لمبطالبتك.
+
+
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/intro.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/intro.mdx
new file mode 100644
index 00000000..25185ebb
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/intro.mdx
@@ -0,0 +1,11 @@
+---
+sidebar_position: 1
+---
+
+# مقدمة SideStore
+
+مرحبًا بك في SideStore!
+
+يُسهّل SideStore عملية تثبيت التطبيقات من مصادر خارجيةعلى أجهزة iOS وiPadOS التي تعمل بالإصدار 14 أو أحدث.
+
+للبدء، انتقل إلى [صفحة الوازم](installation/prerequisites.mdx) واتبع التعليمات.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/release-notes.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/release-notes.mdx
new file mode 100644
index 00000000..2d4b4b8a
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/release-notes.mdx
@@ -0,0 +1,72 @@
+---
+title: ملاحظات الإصدار
+description: مجموعة من ملاحظات إصدار SideStore.
+sidebar_position: 6
+---
+
+# ملاحظات الإصدار المستقر (Stable)
+
+## 0.6.2
+
+### سجل التغييرات
+- إيقاف دعم WireGuard، والانتقال الكامل إلى [StosVPN](https://apps.apple.com/us/app/stosvpn/id6744003051)
+- دمج المزيد من AltStore 2.0
+- تمت إضافة دعم لاستيراد وتصدير ترخيص Apple ID لاستخدامها عبر أجهزة متعددة، بالإضافة إلى تعليمات حول كيفية القيام بذلك [هنا](https://github.com/SideStore/SideStore/pull/1008#issue-3138680291)
+- يضيف مخطط الرابط / يتيح تصدير الترخيص (إلى LiveContainer)
+- إصلاح مشكلة توقف تثبيت التطبيقات عند نسبة 75% تقريباً
+- إضافة خيار لإعادة استخدام ملف تعريف الـ App ID الرئيسي للإضافات بدلاً من إزالتها وتسجيلها (معرف تطبيق واحد لكل تطبيق).
+- إصلاحات عامة وتحديثات مرئية
+
+### ما الذي تغير:
+- إعادة Rebase للإصدار 2.0 بواسطة @nythepegasus في [#794](https://github.com/SideStore/SideStore/pull/794)
+- [التنشيط]: قم بإزالة عناصر التثبيت من عملية التنشيط، حيث يجب أن يقتصر التنشيط على تجديد ملفات تعريف التزويد فقط. بواسطة @mahee96 في [#846](https://github.com/SideStore/SideStore/pull/846)
+- [الإعدادات]: إصلاح: مفتاح DisableAppLimit يعود إلى وضع الإيقاف حتى على نظام iOS حيث لم يتم بعد تطبيق التصحيح الخاص بـ sparseRestore. بواسطة @mahee96 في [#850](https://github.com/SideStore/SideStore/pull/850)
+- تحديث ملف trustedapps.json بواسطة @neoarz في [#853](https://github.com/SideStore/SideStore/pull/853)
+- [النسخ الأحتياطي]: إصلاح: تم تدارك منطق التحديث أثناء التثبيت الذي كان مفقوداً بسبب غياب الكلمة المفتاحية override. بواسطة @mahee96 في [#857](https://github.com/SideStore/SideStore/pull/857)
+- معاينات تطبيق Fix Repository بواسطة @neoarz في [#871](https://github.com/SideStore/SideStore/pull/871)
+- ميزة: إضافة ميزة المصادر المجمعة إلى شاشة المصادر، مع إمكانية تجهيز البيانات قبل حفظها نهائياً في قاعدة البيانات بواسطة @mahee96 في [#888](https://github.com/SideStore/SideStore/pull/888)
+- الإصدار 0.6.0: إصلاح ترحيلات Core Data، بما في ذلك xcdatamodels وxcmappingmodels. بواسطة @mahee96 في #894
+- ميزة: عرض وصف التحديث داخل التطبيق بتنسيق Markdown بشكل كامل بواسطة @mahee96 في #897
+- إصلاح: خطأ مطبعي في مقارنة hasUpdate بواسطة @l2dy في [#900](https://github.com/SideStore/SideStore/pull/900)
+- تحديث SettingsViewController.swift بواسطة @neoarz في [#915](https://github.com/SideStore/SideStore/pull/915)
+- قيد العمل: إصلاحات لمشاكل الترحيل عند الانتقال من الإصدار 0.5.9 إلى 0.6.0 بواسطة @mahee96 في #920
+- تصحيح الخطأ المطبعي "levaraging" إلى "leveraging" بواسطة @lafrenierejm في [#926](https://github.com/SideStore/SideStore/pull/926)
+- تمت إضافة StosVPN إلى قسم EM Proxy بواسطة @Br0des في [#940](https://github.com/SideStore/SideStore/pull/940)
+- دمج StosVPN: تمت إزالة وحدة em_proxy ووحدة EmotionalDamage لصالح StosVPN بواسطة @mahee96 [#945](https://github.com/SideStore/SideStore/pull/945)
+- تعطيل فحص الجاهزية في minimuxer الذي يظهر خطأ "لا يوجد اتصال Wi-Fi/VPN"، نظراً لأن stosVPN يمكن أن يعمل عبر شبكة الهاتف المحمول أيضاً بواسطة mahee96 في [#935](https://github.com/SideStore/SideStore/pull/935)
+- أضف ميزة JIT وتركيب نظام iOS 17.4+ بواسطة @jkcoxson في [#953](https://github.com/SideStore/SideStore/pull/953)
+- إضافة ميزة تصدير الترخيص بواسطة @hugeBlack في [#959](https://github.com/SideStore/SideStore/pull/959)
+- ميزة: إضافة استدعاء لرابط تصدير ملف الإقتران واستبدال Wireguard بـ StosVPN بواسطة @stossy11 في [#962](https://github.com/SideStore/SideStore/pull/962)
+- تغيير المراجع الظاهرة في واجهة المستخدم إلى AltStore بواسطة @owoellen في [#987](https://github.com/SideStore/SideStore/pull/987)
+- تحديث ملف OperationError.swift لـ idevice_pair بواسطة @CelloSerenity في [#995](https://github.com/SideStore/SideStore/pull/995)
+- إضافة ميزة استيراد/تصدير الترخيص بواسطة @hugeBlack في [#1008](https://github.com/SideStore/SideStore/pull/1008)
+- تم إصلاح رابط ملف الإقتران بواسطة @CelloSerenity في [#1011](https://github.com/SideStore/SideStore/pull/1011)
+- إضافة خيار لاستخدام تعريف الحزمة الرئيسية لملحقات التطبيق، وتحديث AltSign وlibmd بواسطة @hugeBlack في [#1012](https://github.com/SideStore/SideStore/pull/1012)
+- استخدم الملف الشخصي عند التنشيط بواسطة @hugeBlack في [#1013](https://github.com/SideStore/SideStore/pull/1013)
+
+
+## 0.6.1
+
+### سجل التغييرات
+هل حلّ الربيع بالفعل؟ إليكم تحديث جديد من شأنه معالجة مشكلات الترحيل من الإصدارين 0.5.9 و0.5.10، بالإضافة إلى إصلاح خلل يتعلق بانتهاء الصلاحية. استمتعوا بالتثبيت من مصادر خارجية!
+
+### ما الذي تغير:
+- إصلاح: خطأ مطبعي في مقارنة hasUpdate بواسطة @l2dy في [#900](https://github.com/SideStore/SideStore/pull/900)
+- تحديث SettingsViewController.swift بواسطة @neoarz في [#915](https://github.com/SideStore/SideStore/pull/915)
+- إصلاحات لمشاكل الترحيل عند الانتقال من الإصدار 0.5.9 إلى 0.6.0 بواسطة @mahee96 في [#920](https://github.com/SideStore/SideStore/pull/920)
+- تصحيح الخطأ المطبعي "levaraging" إلى "leveraging" بواسطة @lafrenierejm في [#926](https://github.com/SideStore/SideStore/pull/926)
+- تمت إضافة StosVPN إلى قسم EM Proxy بواسطة @Br0des في [#940](https://github.com/SideStore/SideStore/pull/940)
+
+
+## 0.6.0 - لا تستخدم هذا الإصدار؛ استخدم الإصدار 0.6.1 أو 0.5.10 بدلاً منه
+
+### سجل التغييرات
+لقد حلّ شهر مارس وجلب معه تغييرات كبيرة؛ فقد قمنا أخيراً بدمج التغييرات الخاصة بـ AltStore 2.0 في تطبيق SideStore. وبذلك، ستحصلون على كافة المزايا المترتبة على ذلك، بالإضافة إلى بعض الإصلاحات والتحسينات في SideStore. استمتعوا بالتجربة!
+
+### ما الذي تغير:
+- التغييرات في AltStore 2.0 [#794](https://github.com/SideStore/SideStore/pull/794)
+- [التنشيط]: قم بإزالة عناصر التثبيت من عملية التنشيط، حيث يجب أن يقتصر التنشيط على تجديد ملفات تعريف التزويد فقط. بواسطة @mahee96 في [#846](https://github.com/SideStore/SideStore/pull/846)
+- [الإعدادات]: إصلاح: مفتاح DisableAppLimit يعود إلى وضع الإيقاف حتى على نظام iOS حيث لم يتم بعد تطبيق التصحيح الخاص بـ sparseRestore. بواسطة @mahee96 في [#850](https://github.com/SideStore/SideStore/pull/850)
+- [النسخ الأحتياطي]: إصلاح: تم تدارك منطق التحديث أثناء التثبيت الذي كان مفقوداً بسبب غياب الكلمة المفتاحية override. بواسطة @mahee96 في [#857](https://github.com/SideStore/SideStore/pull/857)
+- ميزة: إضافة ميزة المصادر المجمعة إلى شاشة المصادر، مع إمكانية تجهيز البيانات قبل حفظها نهائياً في قاعدة البيانات بواسطة @mahee96 في [#888](https://github.com/SideStore/SideStore/pull/888)
+- ميزة: عرض وصف التحديث داخل التطبيق بتنسيق Markdown بشكل كامل بواسطة @mahee96 في [#897](https://github.com/SideStore/SideStore/pull/897)
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
new file mode 100644
index 00000000..2a1427bd
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/common-issues.mdx
@@ -0,0 +1,70 @@
+---
+title: المشكلات الشائعة
+description: المشكلات الشائعة عند استخدام SideStore.
+---
+
+:::warning
+
+مازال العمل على إعداد هذه الصفحة قائماً. من المفترض أن تكون المعلومات الواردة دقيقة، ولكن يرجى الرجوع إلى [خادم Discord](https://dis.sidestore.io/) الخاص بنا للحصول على المساعدة عند الحاجة.
+
+:::
+
+
+## المشكلات الشائعة عند استخدام SideStore.
+
+### لدي مشكلة في أحدث إصدار تجريبي (nightly).
+#### السبب
+تتضمن إصداراتنا التجريبية الحديثة (nightly) ميزات وتحسينات متطورة للغاية، قد يتسبب بعضها في عدم الاستقرار.
+#### الحل
+انتقل إلى أحدث إصدار مستقر. يرجى عدم طلب الدعم بخصوص الأخطاء التي تواجهها في الإصدارات التجريبية الحديثة (nightly).
+
+### أتلقى رمز خطأ برقم: "أي رقم"
+#### السبب
+حدث خطأ.
+#### الحل
+اطلع على [قائمتنا لرموز الخطأ](error-codes)!
+
+### فشل الاتصال بـ AFC / عدم وجود اتصال Wi-Fi أو VPN
+#### السبب
+مشاكل في الاتصال بخدمة minimuxer.
+#### الحل
+جرب التنشيط بعد كل خطوة. وإذا لم تنجح، فانتقل إلى الخطوة التالية.
+1. في حال ان كنت تستخدم WireGuard أو StosVPN، استخدم LocalDevVPN بدلاً من ذلك.
+2. أوقف تشغيل أي أدوات تحظر الـ DNS أو تتلاعب به.
+3. تأكد من اتصال كل من LocalDevVPN وشبكة Wi-Fi.
+4. حاول مرة أخرى (قد يساعد الضغط المتكرر على الزر أحياناً)
+5. أعد تشغيل SideStore
+6. أعد تشغيل LocalDevVPN
+7. [استبدل ملف الاقتران الخاص بك](/docs/advanced/pairing-file) باستخدام iloader.
+
+### يتعلق SideStore أثناء التثبيت
+#### السبب
+مشاكل في الذاكرة المؤقتة (cache) أو البروتوكول.
+#### الحل
+1. قم بتحديث SideStore إن أمكن، وإلا فاكتفِ بإعادة التشغيل.
+2. مسح ذاكرة التخزين المؤقت (cache)
+3. غير خادم Anisette
+4. في Settings، اضغط على خيار Anisette Servers ومن ثم أعد ضبط adi.pb، ثم أغلق من SideStore وفتحه مرة أخرى.
+5. أعد تشغيل الجهاز
+6. أنشئ ملف اقتران مرة أخرى
+7. أعد تثبيت SideStore باستخدام iloader
+
+### تعذّر تشغيل SideStore
+#### السبب
+أحتمالات متعددة.
+#### الحل
+1. تأكد من أنك ثبت SideStore عبر iloader.
+2. أعد تثبيت SideStore
+
+إذا لم ينجح ما ورد أعلاه، فقم بما يلي:
+
+1. احذف SideStore وجميع التطبيقات التي قمت بتثبيتها من خلاله.
+2. أعد تثبيت SideStore
+3. استورد ملف الاقتران وسجّل الدخول. (ستظهر لك رسالة تطلب منك تنشيط SideStore، اختر لا)
+4. ثبِّت ملف `SideStore.ipa` على جهازك.
+5. قم باستيراد ملف `SideStore.ipa` إلى SideStore تماماً كما تفعل عند تثبيت أي ملف IPA آخر.
+6. سيسمح هذا لـ SideStore بإجراء عملية تنشيط نظيفة، ومن المأمول أن يحل المشكلة.
+
+### لم أتمكن من العثور على مشكلتي هنا.
+#### الحل
+يرجى الاطلاع على [الدليل الشامل لاستكشاف الأخطاء وإصلاحها](/docs/troubleshooting).
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
new file mode 100644
index 00000000..d1408805
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/error-codes.mdx
@@ -0,0 +1,260 @@
+---
+title: رموز الأخطاء
+description: رموز الأخطاء الموجودة في SideStore.
+---
+
+## أخطاء SideStore
+### خطأ برقم (1000): حدث خطأ غير معروف.
+`SideStore.OperationError 1000`
+
+هذا يعني أن SideStore واجه خطأً غير متوقع. يرجى الاطلاع على [دليل استكشاف الأخطاء وإصلاحها](./)، ويمكنك التواصل معنا مباشرةً إذا استمرت المشكلة.
+
+### خطأ برقم (1001): أعادة العملية نتيجة غير معروفة.
+`SideStore.OperationError 1001`
+
+هذا يعني أن SideStore واجه خطأً غير متوقع. يرجى الاطلاع على [دليل استكشاف الأخطاء وإصلاحها](./)، ويمكنك التواصل معنا مباشرةً إذا استمرت المشكلة.
+
+### خطأ برقم (1002): تم إلغاء العملية.
+`SideStore.OperationError 1002`
+
+هذا يعني أن الإجراء الذي تم تنفيذه قد توقف. يرجى المحاولة مرة أخرى.
+
+### خطأ برقم (1003): انتهت مهلة العملية.
+`SideStore.OperationError 1003`
+
+يعني هذا أن SideStore واجه مشكلات أثناء محاولة إتمام الإجراء المطلوب. يُرجى المحاولة مرة أخرى والاطلاع على [دليل استكشاف الأخطاء وإصلاحها](./) للحصول على مزيد من المساعدة. يمكنك التواصل معنا مباشرةً إذا استمرت المشكلة.
+
+### خطأ برقم (1004): لم تقم بتسجيل الدخول.
+`SideStore.OperationError 1004`
+
+يعني هذا أنه يجب عليك إدخال معلومات حساب Apple الخاص بك في Settings لتنفيذ الإجراء المطلوب.
+
+### خطأ برقم (1005): لم يتم العثور على التطبيق.
+`SideStore.OperationError 1005`
+
+يعني هذا أن SideStore لم يتمكن من العثور على الملف لتنزيله أو تثبيته، ويرجع ذلك على الأرجح إلى عدم وجود الملف في الرابط المدخل.
+
+### خطأ برقم (1006): لم يتمكن SideStore من تحديد الـ UDID لهذا الجهاز.
+`SideStore.OperationError 1006`
+
+في LiveContainer+SideStore، تعمل هذه الميزة *حالياً* فقط مع الإصدار **Nightly**.
+
+**تأكد من قبول جميع الطلابات.**
+1. افتح Settings في SideStore، اسحب الشاشة للأسفل وانقر على Reset Pairing File.
+2. افتح iloader، انقر على حذف ملف الإقتران المحفوظ.
+3. اقرن جهازك (iDevice) بـ iloader.
+4. انقر على إدارة ملف الإقتران ثم ضع ملف الإقتران في كل التطبيقات (أو انقر على ضع بجوار SideStore).
+5. افتح SideStore عند اكتمال تثبيته..
+6. قم بتنشيط SideStore للتحقق مما إذا كان كل شيء يعمل بشكل صحيح.
+7. إذا لم تنجح الخطوة رقم 6، فانتقل إلى Settings في SideStore، اسحب الشاشة للأسفل وانقر على VPN Configuration، ثم اضبط الـ Device IP على 10.7.0.1 (أو إذا قمت بتعديل عناوين IP المستهدفة لـ LocalDevVPN، فسيتم استخدام القيمة التي حددتها لـ Device IP.).
+8. إذا لم تنجح الخطوة 7، فاستبدل ما تستخدمه في Anisette Servers في Settings في SideStore الى Macley.
+9. إذا لم تنجح الخطوة 8، فأعد تشغيل جهازك.
+
+### خطأ برقم (1007): صيغة هذا التطبيق غير صالحة.
+`SideStore.OperationError 1007`
+
+هذا يعني أن التطبيق الذي تحاول تثبيته ليس بصيغة ipa. جرب تنزيل التطبيق من مصدر آخر.
+
+### خطأ برقم (1008): معاملات غير صالحة.
+`SideStore.OperationError 1008`
+
+يعني هذا حدوث خطأ داخلي في SideStore ولا تتوفر المعلومات اللازمة لتنفيذ المهمة المطلوبة. يُرجى المحاولة مرة أخرى والاطلاع على [دليل استكشاف الأخطاء وإصلاحها](./) للحصول على مزيد من المساعدة. كما يمكنك التواصل معنا مباشرةً في حال استمرار المشكلة [عبر خادم Discord الخاص بنا](https://dis.sidestore.io/).
+
+### خطأ برقم (1009): لا يمكنك تسجيل أكثر من 10 App IDs خلال فترة 7 أيام.
+`SideStore.OperationError 1009`
+
+يعني هذا أنك قد وصلت إلى الحد الأقصى لعدد الـ App IDs المتاحة. لا يمكن حذف App IDs يدوياً؛ إذ يتم تجديدها إذا ظل التطبيق موجوداً لمدة 7 أيام بعد تاريخ تثبيته أو آخر تنشيط له، بينما تنتهي صلاحيتها إذا تم حذف التطبيق خلال تلك الفترة. يرجى التحقق من App IDs في My Apps لمعرفة موعد انتهاء صلاحيتها.
+
+### خطأ برقم (1010): لا توجد مصادر لـ SideStore.
+`SideStore.OperationError 1010`
+
+يعني هذا حدوث خطأ داخلي وأن SideStore غير قادر على جلب التحديثات لأي مصادر AltSources قمت بإضافتها. يرجى المحاولة مرة أخرى والاطلاع على [دليل استكشاف الأخطاء وإصلاحها](./). كما يمكنك التواصل معنا مباشرةً في حال استمرار المشكلة [عبر خادم Discord الخاص بنا.](https://dis.sidestore.io/)
+
+### خطأ برقم (1011): رُفض منح SideStore الإذن لتشغيل التطبيق.
+`SideStore.OperationError 1011`
+
+يعني هذا أن SideStore لم يتمكن من تشغيل التطبيق المُثبَّت من مصدر خارجي لأنك ضغط على "الغاء" على "SideStore يريد فتح [اسم التطبيق]"، أو لأنك لا تزال بحاجة إلى الوثوق بحساب Apple الخاص بك في الإعدادات.
+
+### خطأ برقم (1012): تعذر الوصول إلى مجموعة التطبيقات المشتركة الخاصة بـ SideStore.
+`SideStore.OperationError 1012`
+
+يعني هذا أن SideStore لم يتمكن من الوصول إلى المجلد الذي تُحفظ فيه النسخ الاحتياطية للتطبيقات. تأكد من تثبيت SideStore باستخدام أحدث إصدار من AltServer، وليس عبر أي طريقة أخرى.
+
+### خطأ برقم (1403): تعذر الاتصال بـ SideJITServer.
+`SideStore.OperationError 1403`
+
+يُرجى التأكد من اتصالك بنفس شبكة Wi-Fi التي يتصل بها الكمبيوتر الذي يُشغّل SideJITServer، ومن ضبط إعدادات جدار الحماية بشكل صحيح. وكبديل لذلك، يمكنك استخدام خيار "Enable JIT" المدمج لتفعيل JIT على إصدارات iOS 17.4-18.6، مع تفعيل LocalDevVPN واستخدام شبكة Wi-Fi أو وضع الطيران.
+
+### خطأ برقم (1412): تعذر الاتصال بخادم V3 anisette.
+`SideStore.OperationError 1412`
+
+تعذر على جهازك تلقي بيانات من خادم V3 anisette. يرجى المحاولة مرة أخرى أو التبديل إلى خادم anisette آخر.
+
+### خطأ برقم (1414): لا توجد شبكة Wi-Fi/LocalDevVPN.
+`SideStore.OperationError 1414`
+
+يبدو أنك لست متصلاً بشبكة Wi-Fi و/أو LocalDevVPN. لا يمكن لـ SideStore تنشيط التطبيقات أو تثبيتها دون الاتصال بهما؛ لذا تأكد من تفعيل كلا الاتصالين. إذا لم ينجح ذلك، [فاستبدل ملف الإقتران الخاص بك باستخدام iloader](/docs/advanced/pairing-file).
+
+
+## أخطاء Minimuxer
+### خطأ برقم (4): تعذر على AFC إدارة الملفات الموجودة على الجهاز.
+`minimuxer.MinimuxerError 4`
+
+هذا يعني أنك تحاول تفعيل JIT على إصدار iOS غير مدعوم. إذ يدعم SideStore تفعيل JIT فقط على الإصدارات من iOS 17.4 إلى iOS 18.6.
+
+### خطأ برقم (27): تعذر على AFC إدارة الملفات الموجودة على الجهاز.
+`minimuxer.MinimuxerError 27`
+
+تأكد من اتصال كل من شبكة Wi-Fi وشبكة LocalDevVPN. إذا لم يتم حل المشكلة، [استبدل ملف الإقتران الخاص بك من iloader.](/docs/advanced/pairing-file).
+
+إذا كنت تستخدم نظام iOS 26.4 أو أحدث، فقم بالتحديث إلى SideStore (nightly).
+
+
+## أخطاء حساب Apple المطور
+### خطأ برقم (3000): حدث خطأ غير معروف.
+`SideStore.AppleDeveloperError`
+
+Updated information coming soon
+
+### خطأ برقم (3001): المعلومات المقدمة غير صالحة.
+`SideStore.AppleDeveloperError`
+
+Updated information coming soon
+
+### خطأ برقم (3002): مُعرِّف Apple أو كلمة السر غير صحيحة.
+`SideStore.AppleDeveloperError`
+
+هذا يعني أن بيانات حساب Apple التي ادخلتها غير صالحة. تأكد من صحة اسم المستخدم وكلمة المرور.
+
+إذا استمرت المشكلات، يمكنك أيضاً تجربة إنشاء حساب Apple جديد لاستخدامه مع SideStore.
+
+### خطأ برقم (3003): يلزم توفير كلمة سر خاصة بالتطبيق. يمكنك إنشاء واحدة عبر الموقع appleid.apple.com.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3004): لست عضواً في أي فريق تطوير.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3005): الـ UDID لهذا الجهاز غير صالح.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3006): هذا الجهاز مسجل بالفعل بـ UDID آخر.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3007): طلب الترخيص غير صالح.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3008): لا يوجد ترخيص يحمل الرقم التسلسلي المطلوب لهذا الفريق.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3009): اسم هذا التطبيق غير صالح.
+`SideStore.AppleDeveloperError`
+
+تعذر على SideStore تسجيل الـ App ID لدى Apple لأن اسم التطبيق يحتوي على أحرف غير مدرجة في نطاق ASCII. يمكنك محاولة التنزيل من مصدر آخر.
+
+### خطأ برقم (3010): مُعرِّف الحزمة لهذا التطبيق غير صالح.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3011): تم بالفعل تسجيل مُعرِّف الحزمة الخاص بهذا التطبيق.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3012): لا يوجد App ID يحمل المُعرِّف المطلوب ضمن هذا الفريق.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3013): يمكنك تسجيل 10 App IDs فقط كل 7 أيام.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3014): مجموعة التطبيق المقدمة غير صالحة.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3015): مجموعة التطبيق ليست موجودة.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3016): مُعرِّف ملف تعريف التزويد المطلوب غير صالح.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3017): لا يوجد ملف تعريف التزويد المطلوب بالمعرِّف ضمن هذا الفريق.
+`SideStore.AppleDeveloperError`
+
+إذا كنت تواجه هذا الخطأ، فمن المرجح أن يكون ذلك بسبب تغيير أجرته Apple مؤخراً من جانب الخادم. يرجى الاطلاع على الإعلان التالي لمزيد من المعلومات: [https://twitter.com/SideStoreio/status/1638599316762664974?s=20](https://twitter.com/SideStoreio/status/1638599316762664974?s=20)
+
+### خطأ برقم (3018): يتطلب هذا الحساب تسجيل الدخول باستخدام المصادقة الثنائية.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3019): رمز التحقق غير صحيح.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3020): فشل إجراء المصادقة مع الخادم.
+`SideStore.AppleDeveloperError`
+
+معلومات محدَّثة ستتوفر قريباً.
+
+### خطأ برقم (3021): بيانات Anisette المقدمة غير صالحة.
+`SideStore.AppleDeveloperError`
+
+يعني هذا الخطأ أن المعلومات المستخدمة لمصادقة بيانات Apple ID الخاص بك إما منتهية الصلاحية أو غير صالحة. تأكد من دقة التاريخ والوقت على جهاز الكمبيوترالخاص بك، ومن أنك قمت بتثبيت برنامجي iTunes و iCloud من Apple.
+
+### Apple API أخطاء
+### خطأ برقم (1100): انتهت صلاحية جلستك.
+`Apple.APIError`
+
+يعني هذا الخطأ أن المعلومات المستخدمة لمصادقة حساب Apple الخاص بك إما منتهية الصلاحية أو غير صالحة. تأكد من دقة التاريخ والوقت على جهاز الكمبيوتر الخاص بك وحاول مرة أخرى.
+
+### خطأ برقم (1102): لا يمكن استخدام Apple ID هذا كا حساب مطور.
+`Apple.APIError`
+
+قد تحتاج إلى الموافقة على شروط خدمة Apple على [developer.apple.com](https://developer.apple.com). إذا لم ينجح ذلك، يمكنك إنشاء حساب Apple جديد "مؤقت" مخصص للتحميل من مصادر خارجية.
+
+### خطأ برقم (-20101): تم إدخال معلومات حسابك بشكل غير صحيح.
+`Apple.APIError`
+
+يعني هذا الخطأ أن اسم المستخدم أو كلمة المرور المدخلة لمصادقة حساب Apple الخاص بك إما منتهية الصلاحية أو غير صالحة. تأكد من إدخال كليهما بشكل صحيح ومن دقة التاريخ والوقت على جهاز الكمبيوتر الخاص بك.
+
+## أخطاء أخرى
+### خطأ برقم (512): فشل الكتابة على القرص
+`NSCocoaErrorDomain`
+
+يعني هذا حدوث خطأ أثناء كتابة الملفات على القرص. تأكد من توفر مساحة كافية على قرص هاتفك وحاول مرة أخرى.
+
+### خطأ برقم (-1011): NSURLErrorDomain
+انتقل إلى https://developer.apple.com/، وسجّل الدخول، ووافق على شروط خدمة Apple Developer الجديدة.
+
+### خطأ ldid
+`ldid.cpp(X): X`
+
+اتبع الخطوات التالية لإصلاح هذا الخطأ:
+
+1. ثبت [Feather](https://github.com/khcrysalis/Feather/releases/latest).
+2. قم باستيراد ملف IPA المتعلق بهذه المشكلة إلى تطبيق Feather، بالإضافة إلى أي ملف .mobileprovision و .p12 عشوائي. (يمكن أن تكون منتهية الصلاحية، بما أننا نستخدم هذا التطبيق فقط لإعادة تعيين الـ headers لملف الـ IPA.).
+3. وقّع ملف IPA باستخدام الترخيص الذي قمت باستيراده.
+4. افتح التطبيق المُوقَّع في تطبيق الملفات وغير صيغته إلى IPA.
+5. ثبِّت ملف IPA في SideStore.
diff --git a/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
new file mode 100644
index 00000000..f80bb37e
--- /dev/null
+++ b/i18n/ar/docusaurus-plugin-content-docs/current/troubleshooting/troubleshooting.mdx
@@ -0,0 +1,72 @@
+---
+title: دليل استكشاف الأخطاء وإصلاحها
+description: دليل لاستكشاف أخطاء SideStore وإصلاحها في الحالات التي لا يظهر فيها رمز خطأ.
+---
+
+```mdx-code-block
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+```
+
+## التثبيت
+### اتبعتُ التعليمات، لكنني ما زلتُ غير قادر على تثبيت SideStore.
+
+#### تعليمات أجهزة Mac
+1. **ثق بالجهاز**: بعد توصيل جهاز iOS الخاص بك بجهاز Mac، تأكد من اختيار "الوثوق" على كل من جهاز Mac وجهاز iOS. يمكنك التحقق من ذلك عن طريق:
+ - افتح Finder (macOS 10.15 Catalina أو أحدث) أو iTunes (macOS 10.14 Mojave و أقدم).
+ - افصل هاتفك عن جهاز Mac وأعد توصيله، وتحقق مما إذا كان سيظهر مربع حوار يسألك عما إذا كنت ترغب في الوثوق بالجهاز.
+2. **استخدم حساب Apple آخر**: جرب استخدام حساب Apple آخر. وإذا لزم الأمر، يمكنك [يمكنك إنشاء حساب Apple جديد](https://appleid.apple.com/account#!\&page=create) مجانًا خصيصًا لاستخدامه مع SideStore.
+
+#### تعليمات نظام ويندوز
+1. **ثق بالجهاز**: بعد توصيل جهاز iOS الخاص بك بنظام ويندوز، تأكد من اختيار "الوثوق" على كل من كمبيوترك الشخصي وجهاز iOS. يمكنك التحقق من ذلك عن طريق:
+ - افتح برنامج iTunes وتحقق مما إذا كان يظهر مربع حوار يسأل عما إذا كنت ترغب في الوثوق بالجهاز.
+2. **استخدم حساب Apple آخر**: جرب استخدام حساب Apple آخر. وإذا لزم الأمر، يمكنك [يمكنك إنشاء حساب Apple جديد](https://appleid.apple.com/account#!\&page=create) مجانًا خصيصًا لاستخدامه مع SideStore.
+
+### تتوقف عملية تحديث SideStore عن الاستجابة قرب نهايتها.
+
+انتقل إلى الشاشة الرئيسية للسماح للعملية بالاكتمال. لا نعرف سبب حدوث ذلك، ولكن قد يكون للأمر علاقة باستخدام شبكة افتراضية خاصة (VPN) لتوجيه عملية `التثبيت` لتنشيط تطبيق SideStore (نفسه).
+
+## مشكلات تسجيل الدخول
+### تجمّد تطبيق SideStore أو ظهور رمز خطأ أثناء تسجيل الدخول
+
+إذا تجمدة الشاشة أو ظهر رموز خطأ أثناء محاولة تسجيل الدخول إلى SideStore، فقد تكون هناك عدة أسباب محتملة لذلك. اتبع الخطوات التالية لحل المشكلة:
+
+1. **غيّر خادم Anisette:**
+ الحل الأكثر شيوعاً هو الانتقال إلى خادم Anisette مختلف؛ إذ قد تتعرض خوادم Anisette أحياناً لتوقف في الخدمة، وعادةً ما يؤدي الانتقال إلى خادم بديل إلى حل المشكلة. قم بالتالي:
+ - اذهب الى Settings في SideStore.
+ - اسحب الشاشة للأسفل إلى خيار "Anisette Server".
+ - اختر خادماً مختلفاً من القائمة.
+ - قد تحتاج إلى تجربة بضعة خوادم من القائمة لتحديد الخادم الأنسب لك.
+
+2. **استضف خادم Anisette خاص بك على كمبيوترك الشخصي:**
+ إذا كنت تفضل ذلك، يمكنك إعداد خادم Anisette خاص بك. تتوفر تعليمات مفصلة حول استضافة خادم Anisette [هنا](https://docs.sidestore.io/docs/advanced/anisette).
+
+### لم يتم استلام رمز التحقق عند تسجيل الدخول لحساب Apple
+من المشكلات الشائعة الأخرى أثناء تسجيل الدخول عدم استلام رمز التحقق عند استخدام حساب Apple الخاص بك مع SideStore. ويمكن حل هذه المشكلة باتباع الخطوات التالية::
+
+
+ 1. افتح "الإعدادات".
+ 2. اضغط على اسمك/حسابك في أعلى الشاشة.
+ 3. أوقف تشغيل شبكة Wi-Fi وبيانات الهاتف الخلوي.
+ 4. اضغط على "تسجيل الدخول والأمان".
+ 5. اضغط على "الحصول على رمز التحقق".
+ 6. أدخل هذا الرمز في SideStore.
+
+
+
+ 1. افتح "الإعدادات".
+ 2. اضغط على اسمك/حسابك في أعلى الشاشة.
+ 3. اضغط على "تسجيل الدخول والأمان".
+ 4. اختر "المصادقة الثنائية".
+ 5. اختر على "الحصول على رمز التحقق".
+ 6. أدخل هذا الرمز في SideStore.
+
+
+
+## مشاكل اخرى
+### اختفت تطبيقاتي من SideStore ولا أعرف ماذا أفعل!
+لا داعي للقلق! أعد تثبيت التطبيقات كالمعتاد دون حذفها من جهازك، وستبقى بياناتك سليمة. للأسف، من المحتمل أن تكون التطبيقات التي توقفت عن العمل قد فُقدت، ولكن للتأكد من ذلك، ما عليك سوى تحديث تطبيق SideStore لترى ما إذا كانت ستعود للظهور.
+
+### لا أستطيع بدأ Debug Server
+1. تأكد من أنك تستخدم نظام iOS 17.4 أو أحدث.
+2. هناك أوقات لا يعمل فيها Debug Server. ولكن، يمكنك محاولة [استبدال ملف الإقتران الخاص بك باستخدام iloader](/docs/advanced/pairing-file).
diff --git a/i18n/ar/docusaurus-theme-classic/footer.json b/i18n/ar/docusaurus-theme-classic/footer.json
new file mode 100644
index 00000000..e266bba6
--- /dev/null
+++ b/i18n/ar/docusaurus-theme-classic/footer.json
@@ -0,0 +1,46 @@
+{
+ "link.title.Docs": {
+ "message": "المستندات",
+ "description": "The title of the footer links column with title=Docs in the footer"
+ },
+ "link.title.Community": {
+ "message": "المجتمع",
+ "description": "The title of the footer links column with title=Community in the footer"
+ },
+ "link.title.More": {
+ "message": "المزيد",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Introduction": {
+ "message": "المقدمة",
+ "description": "The label of footer link with label=Introduction linking to /docs/intro"
+ },
+ "link.item.label.Discord": {
+ "message": "Discord",
+ "description": "The label of footer link with label=Discord linking to https://dis.sidestore.io"
+ },
+ "link.item.label.X (formerly Twitter)": {
+ "message": "X (Twitter سابقاً)",
+ "description": "The label of footer link with label=X (formerly Twitter) linking to https://x.com/sidestoreio"
+ },
+ "link.item.label.Patreon": {
+ "message": "Patreon",
+ "description": "The label of footer link with label=Patreon linking to https://www.patreon.com/sidestoreIO"
+ },
+ "link.item.label.Bluesky": {
+ "message": "Bluesky",
+ "description": "The label of footer link with label=Bluesky linking to https://bsky.app/profile/sidestore.io"
+ },
+ "link.item.label.Website": {
+ "message": "الموقع إلكتروني",
+ "description": "The label of footer link with label=Website linking to https://sidestore.io/"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/SideStore"
+ },
+ "copyright": {
+ "message": "حقوق النشر © 2026 لـ SideStore, LLC. تم إنشاء الموقع باستخدام Docusaurus.",
+ "description": "The footer copyright"
+ }
+}
diff --git a/i18n/ar/docusaurus-theme-classic/navbar.json b/i18n/ar/docusaurus-theme-classic/navbar.json
new file mode 100644
index 00000000..b76ad383
--- /dev/null
+++ b/i18n/ar/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,26 @@
+{
+ "title": {
+ "message": "SideStore",
+ "description": "The title in the navbar"
+ },
+ "logo.alt": {
+ "message": "SideStore Logo",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.Docs": {
+ "message": "المستندات",
+ "description": "Navbar item with label Docs"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ },
+ "item.label.Patreon": {
+ "message": "Patreon",
+ "description": "Navbar item with label Patreon"
+ },
+ "item.label.Discord": {
+ "message": "Discord",
+ "description": "Navbar item with label Discord"
+ }
+}