diff --git a/core/i18n/i18n.go b/core/i18n/i18n.go index 8d99b407bf5b..cf983075d93d 100644 --- a/core/i18n/i18n.go +++ b/core/i18n/i18n.go @@ -28,6 +28,7 @@ var langFiles = map[string]string{ "ko": "lang/ko.yaml", "tr": "lang/tr.yaml", "es-ES": "lang/es-ES.yaml", + "fa": "lang/fa.yaml", } func GetMsgWithMap(key string, maps map[string]interface{}) string { diff --git a/core/i18n/lang/fa.yaml b/core/i18n/lang/fa.yaml new file mode 100644 index 000000000000..e7198f11cb3f --- /dev/null +++ b/core/i18n/lang/fa.yaml @@ -0,0 +1,353 @@ +ErrInvalidParams: "پارامترهای درخواست نامعتبر: {{ .detail }}" +ErrTokenParse: "خطا در تولید توکن: {{ .detail }}" +ErrInitialPassword: "رمز عبور اولیه اشتباه است" +ErrInternalServer: "خطای داخلی سرور: {{ .detail }}" +ErrRecordExist: "رکورد از قبل وجود دارد" +ErrRecordNotFound: "رکورد یافت نشد" +ErrStructTransform: "تبدیل نوع ناموفق بود: {{ .detail }}" +ErrNotLogin: "کاربر وارد نشده است: {{ .detail }}" +ErrSessionDataNotFound: "جلسه منقضی شده است" +ErrSessionDataFormat: "فرمت داده جلسه نامعتبر است" +ErrPasswordExpired: "رمز عبور منقضی شده است: {{ .detail }}" +ErrNotSupportType: "نوع پشتیبانی نمی‌شود: {{ .detail }}" +ErrProxy: "درخواست ناموفق بود؛ وضعیت این گره را بررسی کنید: {{ .detail }}" +ErrApiConfigStatusInvalid: "دسترسی API غیرفعال است: {{ .detail }}" +ErrApiConfigKeyInvalid: "کلید API نامعتبر است: {{ .detail }}" +ErrApiConfigIPInvalid: "IP درخواست API در لیست سفید نیست: {{ .detail }}" +ErrApiConfigDisable: "این رابط فراخوانی API را ممنوع می‌کند: {{ .detail }}" +ErrApiConfigKeyTimeInvalid: "مهر زمانی API نامعتبر است: {{ .detail }}" +ErrPasskeyDisabled: "کلید عبور نیاز به فعال بودن HTTPS دارد" +ErrPasskeyNotConfigured: "هیچ کلید عبوری پیکربندی نشده است" +ErrPasskeyLimit: "محدودیت کلید عبور رسیده است (حداکثر ۵)" +ErrPasskeySession: "جلسه کلید عبور منقضی یا نامعتبر است" +ErrPasskeyDuplicate: "کلید عبور از قبل وجود دارد" +ErrPasskeyVerify: "تأیید کلید عبور ناموفق بود" +ErrLoginLocked: "تعداد تلاش‌های ناموفق زیاد است. ورود به مدت ۵ دقیقه به طور موقت قفل شده است." + +# request +ErrNoSuchHost: "تفکیک میزبان ناموفق بود: {{ .err }}" +ErrHttpReqNotFound: "منبع درخواستی یافت نشد: {{ .err }}" +ErrHttpReqFailed: "درخواست ناموفق بود {{ .err }}" +ErrHttpReqTimeOut: "زمان درخواست به پایان رسید {{ .err }}" +ErrCreateHttpClient: "ایجاد درخواست ناموفق بود {{ .err }}" +ErrProxySetting: "اطلاعات سرور پروکسی در دسترس نیست {{ .err }}، بررسی و دوباره تلاش کنید!" +ErrEntranceFormat: "ورودی امنیتی {{ .name }} پشتیبانی نمی‌شود. بررسی و دوباره تلاش کنید." + +# common +ErrDemoEnvironment: "سرور آزمایشی، این عملیات ممنوع است!" +ErrCmdTimeout: "زمان اجرای دستور به پایان رسید!" +ErrEntrance: "خطا در اطلاعات ورودی امنیتی، بررسی و دوباره تلاش کنید!" +ErrGroupIsDefault: "گروه پیش‌فرض، قابل حذف نیست" +ErrGroupIsInUse: "گروه در حال استفاده است و قابل حذف نیست." +ErrAIProxyUserGroupIsDefault: "گروه کاربری پیش‌فرض قابل حذف نیست." +ErrAIProxyUserGroupInUse: "گروه کاربری در حال استفاده است و قابل حذف نیست." +ErrAIProxyUserGroupExists: "نام گروه کاربری از قبل وجود دارد." +ErrAIProxyBackendAccountExists: "این حساب مدل قبلاً به مجموعه حساب‌های دروازه AI وارد شده است." +ErrAIProxyModelGroupInUse: "گروه مدل در حال استفاده است و قابل حذف نیست." +ErrAIProxyModelGroupExists: "نام گروه مدل از قبل وجود دارد." +ErrAIProxySensitiveGroupInUse: "گروه کلمات حساس در حال استفاده است و قابل حذف نیست." +ErrAIProxySensitiveGroupExists: "نام گروه کلمات حساس از قبل وجود دارد." +ErrLocalDelete: "گره محلی قابل حذف نیست!" +ErrPortInUsed: "پورت {{ .name }} قبلاً در حال استفاده است!" +ErrInternalServerKey: "خطای داخلی سرور:" +MasterNode: "گره اصلی" + +# app +CustomAppStoreFileValid: "بسته فروشگاه برنامه باید با فرمت .tar.gz باشد" +ErrFileNotFound: "فایل {{ .name }} وجود ندارد" +AppBackup: 'پشتیبان‌گیری از برنامه' +AppBackupPush: 'انتقال فایل پشتیبان برنامه {{.file}} به گره {{ .name }}' +ErrSourceTargetSame: 'گره منبع و گره هدف نمی‌توانند یکسان باشند!' +AppInstall: 'نصب برنامه {{ .name }} روی گره {{ .targetNode }}' +AppInstallCheck: 'بررسی محیط نصب برنامه' + +# backup +ErrBackupInUsed: "این حساب پشتیبان در وظایف زمان‌بندی استفاده می‌شود و قابل حذف نیست" +ErrBackupCheck: "تست اتصال حساب پشتیبان ناموفق بود {{ .err }}" +ErrBackupLocal: "حساب پشتیبان سرور محلی از این عملیات پشتیبانی نمی‌کند!" +ErrBackupPublic: "تشخیص داده شد که این حساب پشتیبان عمومی نیست، بررسی و دوباره تلاش کنید!" +ErrOSSConn: "امکان دریافت آخرین نسخه وجود ندارد. اتصال اینترنت سرور را بررسی کنید." + +#license +LicenseCheck: 'بررسی در دسترس بودن مجوز' +ErrLicenseInUsed: 'مجوز قبلاً متصل شده است. بررسی و دوباره تلاش کنید!' +ErrLicenseExpired: 'مجوز منقضی شده است. بررسی و دوباره تلاش کنید!' +ErrLicense: "خطا در فرمت مجوز، بررسی و دوباره تلاش کنید!" +ErrLicenseCheck: "تأیید مجوز ناموفق بود، بررسی و دوباره تلاش کنید!" +ErrXpackVersion: "تأیید مجوز ناموفق بود، این مجوز محدودیت نسخه دارد، قابل واردات نیست، بررسی و دوباره تلاش کنید!" +ErrLicenseSave: "ذخیره اطلاعات مجوز ناموفق بود، خطا {{ .err }}، دوباره تلاش کنید!" +ErrLicenseSync: "همگام‌سازی مجوز ناموفق بود، هیچ اطلاعات مجوزی در پایگاه داده شناسایی نشد!" +ErrLicenseExist: "این رکورد مجوز از قبل وجود دارد. می‌توانید مستقیماً به صفحه مجوز برای اتصال گره بروید." +ErrXpackNotFound: "این بخش نیاز به نسخه تجاری دارد. در تنظیمات پنل > مجوز یک مجوز وارد کنید." +ErrXpackExceptional: "این بخش نیاز به نسخه تجاری دارد. وضعیت مجوز را در تنظیمات پنل > مجوز همگام‌سازی کنید." +ErrXpackLost: "محدودیت تلاش مجدد مجوز رسیده است. به تنظیمات پنل > مجوز بروید و همگام‌سازی دستی را اجرا کنید." +ErrEnterpriseLicenseRequired: "مجوز نسخه سازمانی وارد نشده است. ابتدا یک مجوز وارد کنید." +ErrDeviceLost: "فایل‌های مورد نیاز برای تأیید مجوز وجود ندارند، بررسی و دوباره تلاش کنید!" +ErrDeviceErr: "محیط فعلی با محیط واردات مجوز مطابقت ندارد. مجوز را ویرایش کرده و دوباره وارد کنید." +ErrXpackTimeout: "زمان درخواست به پایان رسید، ممکن است اتصال شبکه ناپایدار باشد، بعداً دوباره تلاش کنید!" +ErrUnbindMaster: "گره‌هایی در مدیریت گره وجود دارند. ابتدا گره‌ها را حذف کنید، سپس مجوز فعلی را قطع اتصال کنید." +ErrFreeNodeLimit: "تعداد گره‌های قابل افزودن به حد مجاز رسیده است. خرید کرده و دوباره تلاش کنید." +ErrNodeBound: "این مجوز به گره دیگری متصل است، بررسی و دوباره تلاش کنید!" +ErrNodeBoundDelete: "این مجوز متصل است و از عملیات حذف پشتیبانی نمی‌کند. بررسی و دوباره تلاش کنید!" +ErrNodeBoundLimit: "گره رایگان فعلی به حد مجاز رسیده است، بررسی و دوباره تلاش کنید!" +ErrLicenseFree: "گره‌های رایگان فقط زمانی در دسترس هستند که مجوز به درستی به یک گره متصل باشد. تأیید کرده و دوباره تلاش کنید." +ErrLicenseUnbind: "گره‌های نسخه انجمن هنوز به این مجوز متصل هستند. آنها را در تنظیمات پنل > مجوز قطع اتصال کرده و دوباره تلاش کنید." +ErrLicenseBindCount: "تعداد گره‌های رایگان مجوز جدید کمتر از تعداد گره‌های نسخه انجمن متصل فعلی است. بررسی و دوباره تلاش کنید." +ErrNoSuchNode: "اطلاعات گره یافت نشد، بررسی و دوباره تلاش کنید!" +ErrNodeUnbind: "این گره در محدوده اتصال مجوز نیست، بررسی و دوباره تلاش کنید!" +ErrNodeBind: "این گره قبلاً به یک مجوز متصل است، بررسی و دوباره تلاش کنید!" +ErrNodeLocalRollback: "گره اصلی از بازگشت مستقیم پشتیبانی نمی‌کند. برای بازگشت به صورت دستی '1pctl restore' را اجرا کنید." +ErrIntlLicense: "نسخه فعلی از واردات مجوزهای بین‌المللی پشتیبانی نمی‌کند. منتظر به‌روزرسانی‌های بعدی باشید!" + +# user +ErrNoSuchUser: "اطلاعات کاربر یافت نشد، بررسی و دوباره تلاش کنید!" +ErrToMaster: "این کاربر مجوز انجام این عملیات روی گره اصلی را ندارد. بررسی و دوباره تلاش کنید!" +ErrToNode: "این کاربر مجوز انجام این عملیات روی این گره را ندارد. بررسی و دوباره تلاش کنید!" +ErrRBAC: "مجوزهای کاربر ناکافی است. این عملیات قابل انجام نیست. بررسی و دوباره تلاش کنید!" +ErrNoneNode: "این کاربر هیچ مجوز گره‌ای ندارد. با مدیر تماس بگیرید یا بررسی و دوباره تلاش کنید!" +ErrOnlySuperAdmin: "فقط مدیران کل می‌توانند از این ویژگی استفاده کنند!" +ErrRolePresetCannotDelete: "نقش‌های از پیش تعیین شده سیستم قابل حذف نیستند" +ErrRolePresetCannotUpdate: "نقش‌های از پیش تعیین شده سیستم قابل به‌روزرسانی نیستند" +ErrRoleBoundToUser: "این نقش قبلاً به کاربران متصل است و قابل حذف نیست" +ErrRolePresetCannotBind: "نقش‌های از پیش تعیین شده سیستم قابل انتساب به کاربران نیستند" +ErrNodeAdminMasterForbidden: "مجوزهای مدیر گره نمی‌توانند به گره اصلی اضافه شوند" +ErrSuperAdminCannotDelete: "کاربران مدیر کل قابل حذف نیستند" + +InvalidRequestBodyType: "فرمت بدنه درخواست نامعتبر است. اطمینان حاصل کنید که محتوا با فرمت مورد نیاز مطابقت دارد و دوباره تلاش کنید." +InvalidLicenseCodeType: "فرمت کد مجوز ارائه شده نامعتبر است، بررسی و دوباره تلاش کنید!" +LicenseNotFoundType: "مجوز یافت نشد، هیچ رکورد منطبقی در سیستم برای مجوز ارائه شده وجود ندارد. بررسی و دوباره تلاش کنید!" +LicenseRevokedType: "مجوز درخواستی باطل شده است و دیگر قابل استفاده نیست. بررسی و دوباره تلاش کنید!" +LicenseExpiredType: "مجوز منقضی شده است. آن را تمدید کنید یا دوباره در تنظیمات پنل - مجوز وارد کنید و سپس دوباره تلاش کنید." +LicenseProductMismatchType: "مجوز با محصول یا سرویس درخواستی مطابقت ندارد!" +InvalidAssigneeType: "اطلاعات کاربر یا دستگاه هدف برای انتساب مجوز نامعتبر است. بررسی و دوباره تلاش کنید!" +LicenseUsageNotFoundType: "هیچ رکورد استفاده‌ای یافت نشد. این مجوز هنوز فعال یا استفاده نشده است. بررسی و دوباره تلاش کنید!" +LicenseUsageLimitExceededType: "این مجوز قبلاً به گره دیگری متصل است. بررسی و دوباره تلاش کنید!" + +# alert +ErrAlertSync: "خطا در همگام‌سازی اطلاعات هشدار، بررسی و دوباره تلاش کنید!" + +# task +TaskStart: "وظیفه {{ .name }} شروع شد [شروع]" +TaskEnd: "وظیفه {{ .name }} پایان یافت [تکمیل شد]" +TaskFailed: "وظیفه {{ .name }} ناموفق بود" +TaskTimeout: "زمان وظیفه {{ .name }} به پایان رسید" +TaskSuccess: "وظیفه {{ .name }} با موفقیت انجام شد" +TaskRetry: "تلاش مجدد {{ .name }}" +SubTaskSuccess: "{{ .name }} با موفقیت انجام شد" +SubTaskFailed: "{{ .name }} ناموفق بود: {{ .err }}" +TaskInstall: "نصب" +TaskUpgrade: "ارتقاء" +TaskSync: 'همگام‌سازی' +TaskSyncForNode: "همگام‌سازی داده‌های گره" +TaskBackup: "پشتیبان‌گیری" +BatchInstallAgent: "نصب دسته‌ای عامل" +DispatchAgentInstallTasks: "ارسال وظایف نصب عامل" +BatchUpgradeAgent: "ارتقاء دسته‌ای عامل" +DispatchAgentUpgradeTasks: "ارسال وظایف ارتقاء عامل" +BatchAgentInstallDispatchFailed: "گره {{ .node }} در ارسال وظیفه نصب {{ .agentType }} ناموفق بود پیام: {{ .err }}" +BatchAgentInstallSubmitted: "گره {{ .node }} وظیفه نصب {{ .agentType }} را با موفقیت ارسال کرد!" +BatchAgentUpgradeDispatchFailed: "گره {{ .node }} در ارسال وظیفه ارتقاء {{ .agentType }} ناموفق بود پیام: {{ .err }}" +BatchAgentUpgradeAlreadyLatest: "گره {{ .node }} {{ .agent }} از قبل در نسخه هدف است، رد شد" +BatchAgentUpgradeSubmitted: "گره {{ .node }} وظیفه ارتقاء {{ .agent }} را با موفقیت ارسال کرد!" +BatchAgentUpgradeFailed: "گره {{ .node }} در ارسال وظیفه ارتقاء {{ .agent }} ناموفق بود پیام: {{ .err }}" +BatchInstallAgentSkill: "توزیع دسته‌ای مهارت" +DispatchAgentSkillInstallTasks: "ارسال وظایف نصب مهارت" +BatchAgentSkillDispatchFailed: "گره {{ .node }} در ارسال {{ .skill }} به {{ .target }} ناموفق بود پیام: {{ .err }}" +BatchAgentNoAgentsFound: "گره {{ .node }} هیچ عامل {{ .agentType }} پیدا نکرد، رد شد" +BatchAgentSkillSkipped: "گره {{ .node }} {{ .agent }} رد شد پیام: {{ .msg }}" +BatchAgentSkillInstallSubmitted: "گره {{ .node }} وظیفه نصب {{ .skill }} را به {{ .agent }} با موفقیت ارسال کرد!" +BatchAgentSkillInstallFailed: "گره {{ .node }} در ارسال وظیفه نصب {{ .skill }} به {{ .agent }} ناموفق بود پیام: {{ .err }}" +BatchAgentOperateDispatchFailed: "گره {{ .node }} در ارسال وظیفه {{ .operate }} {{ .agentType }} ناموفق بود پیام: {{ .err }}" +BatchAgentOperateSkipped: "گره {{ .node }} {{ .agent }} رد شد پیام: {{ .msg }}" +BatchAgentOperateSubmitted: "گره {{ .node }} وظیفه {{ .operate }} {{ .agent }} را با موفقیت ارسال کرد!" +BatchAgentOperateFailed: "گره {{ .node }} در ارسال وظیفه {{ .operate }} {{ .agent }} ناموفق بود پیام: {{ .err }}" +BatchStartAgent: "شروع دسته‌ای عامل" +DispatchAgentStartTasks: "ارسال وظایف شروع عامل" +BatchStopAgent: "توقف دسته‌ای عامل" +DispatchAgentStopTasks: "ارسال وظایف توقف عامل" +BatchRestartAgent: "راه‌اندازی مجدد دسته‌ای عامل" +DispatchAgentRestartTasks: "ارسال وظایف راه‌اندازی مجدد عامل" +BatchDeleteAgent: "حذف دسته‌ای عامل" +DispatchAgentDeleteTasks: "ارسال وظایف حذف عامل" +AgentOperateStart: "شروع" +AgentOperateStop: "توقف" +AgentOperateRestart: "راه‌اندازی مجدد" +AgentOperateDelete: "حذف" +AIBenchmarkRun: "اجرای معیار سنجش هوش مصنوعی" +SuccessStatus: "{{ .name }} با موفقیت انجام شد" +FailedStatus: "{{ .name }} ناموفق بود {{ .err }}" +Start: "شروع" +SubTask: "وظیفه فرعی" +Skip: "نادیده گرفتن خطاها و ادامه" +PushAppInstallTaskToNode: "ارسال وظیفه نصب برنامه به گره [{{ .name }}]" +TaskPush: "ارسال" +AppInstallTask: "وظیفه نصب برنامه" +PushAppFailed: "ارسال وظیفه نصب برنامه ناموفق بود" +SkillHubInstallTask: "نصب مهارت [{{ .name }}]" +SkillHubInstallToTarget: "نصب مهارت به هدف [{{ .name }}]" +Success: "موفق" + +#script +ScriptLibrary: "کتابخانه اسکریپت" +RemoteScriptLibrary: "کتابخانه اسکریپت از راه دور" +ScriptSyncSkip: "کتابخانه اسکریپت از قبل به‌روز است" +DownloadData: "دانلود فایل داده‌های کتابخانه اسکریپت data.yaml" +DownloadPackage: "دانلود بسته کتابخانه اسکریپت" +AnalyticCompletion: "تحلیل کامل شد، در حال همگام‌سازی با پایگاه داده..." + +Node: "گره" +SyncNode: "همگام‌سازی داده‌ها با گره {{ .name }}" +LocalName: "نام 'local' فقط برای شناسایی محلی سیستم استفاده می‌شود" +SyncPackageData: "همگام‌سازی داده‌های بسته" +SyncPackageEncrypt: "رمزگذاری بسته داده" +SyncRequest: "درخواست API همگام‌سازی گره" +SyncFailedRetry: "زمان همگام‌سازی داده‌های گره به پایان رسید (تلاش {{ .index }})، در حال تلاش مجدد..." +SyncFailed: "همگام‌سازی ناموفق بود، به صورت دستی در لیست گره‌ها همگام‌سازی کنید!" +SyncSystemProxy: "تنظیمات پراکسی سیستم" +SyncScripts: "کتابخانه اسکریپت" +SyncBackupAccounts: "حساب‌های پشتیبان" +SyncAlertSetting: "تنظیمات هشدار" +SyncCustomApp: "برنامه سفارشی" +SyncLanguage: "زبان سیستم" +SyncEdition: "منطقه" + +#upgrade node +NodeUpgrade: "ارتقاء گره {{ .name }}" +UpgradeCheck: "بررسی به‌روزرسانی گره" +UpgradeCheckLocal: "گره‌های محلی از ارتقاء دسته‌ای پشتیبانی نمی‌کنند، رد شد..." +UpgradeCheckLatest: "گره از قبل آخرین نسخه است، رد شد..." +NewSSHClient: "در حال راه‌اندازی اتصال SSH" +BackupBeforeUpgrade: "پشتیبان‌گیری از داده‌ها قبل از ارتقاء" +UploadUpgradeFile: "توزیع فایل‌های ارتقاء" +RestartAfterUpgrade: "شروع سرویس پس از ارتقاء" +LoadAutoUpgradeNodesFailed: "بارگذاری گره‌های ارتقاء خودکار ناموفق بود، خطا: {{ .err }}" +AutoUpgradeNodes: "گره‌های ارتقاء خودکار: {{ .nodes }}" +UpdateAutoUpgradeNodesStatusFailed: "به‌روزرسانی وضعیت گره‌های ارتقاء خودکار ناموفق بود، خطا: {{ .err }}" + +#add node +MasterData: "داده‌های گره اصلی" +LoadSftpClient: "بارگذاری کلاینت SFTP" +PackageMasterData: "تولید بسته پشتیبان گره اصلی" +UploadBackup: "بارگذاری داده‌های پشتیبان" +MvBackup: "انتقال داده‌ها به دایرکتوری پشتیبان" +TaskAddNode: "افزودن گره" +LoadNodeArch: "دریافت اطلاعات معماری گره" +LoadNodeArchDetail: "معماری گره اصلی شناسایی شد: {{ .local }}، معماری گره زیرین: {{ .node }}" +LoadNodeUpgradeDetail: "استفاده از دایرکتوری نصب تاریخی نسخه v1: {{ .baseDir }}، پورت شنود سرویس: {{ .port }}" +SyncAgentBaseInfo: "همگام‌سازی اطلاعات پایه گره" +GenerateSSLInfo: "تولید اطلاعات SSL گره" +ConnInfoNotMatch: "اطلاعات اتصال مطابقت ندارد" +MakeAgentPackage: "تولید بسته نصب گره" +SendAgent: "توزیع بسته نصب گره" +StartService: "شروع سرویس" +NoBackupNode: "گره پشتیبان خالی است. ابتدا یکی را انتخاب کرده و ذخیره کنید" + +#cmd +AppVersion: "نسخه برنامه" +AppCommands: "دستورات مرتبط با برنامه" +AppInit: "راه‌اندازی برنامه" +AppKeyVal: "کلید برنامه (فقط انگلیسی پشتیبانی می‌شود)" +AppCreateFileErr: "ایجاد فایل {{ .name }} ناموفق بود {{ .err }}" +AppCreateDirErr: "ایجاد پوشه {{ .name }} ناموفق بود {{ .err }}" +AppMissKey: "کلید برنامه وجود ندارد، از -k برای مشخص کردن استفاده کنید" +AppMissVersion: "نسخه برنامه وجود ندارد، از -v برای مشخص کردن استفاده کنید" +AppVersionExist: "نسخه از قبل وجود دارد!" +AppCreateSuccessful: "ایجاد با موفقیت انجام شد!" +AppWriteErr: "نوشتن فایل {{ .name }} ناموفق بود {{ .err }}" +SudoHelper: "از {{ .cmd }} استفاده کنید یا به کاربر root تغییر دهید" +UsernameNeed: "نسخه سازمانی باید --username را مشخص کند" +ListenIPCommands: "تغییر IP شنود" +ListenIPv4: "شنود روی IPv4" +ListenIPv6: "شنود روی IPv6" +ListenChangeSuccessful: "تغییر با موفقیت انجام شد! در حال شنود روی {{ .value }}" +ResetCommands: "بازنشانی اطلاعات سیستم" +ResetMFA: "لغو احراز هویت دو مرحله‌ای 1Panel" +ResetHttps: "لغو ورود https 1Panel" +ResetEntrance: "لغو ورودی امنیتی 1Panel" +ResetIPs: "لغو محدودیت‌های IP مجاز 1Panel" +ResetDomain: "لغو اتصال دامنه 1Panel" +ResetPasskey: "پاک‌سازی کلیدهای عبور 1Panel" +UserList: "دریافت لیست کاربران 1Panel" +UserTableName: "نام" +UserTableMFAStatus: "وضعیت MFA" +UserTableSuperAdmin: "مدیر کل" +UserTableCreatedAt: "تاریخ ایجاد" +UserEmptyList: "هیچ کاربری یافت نشد" +RestoreCommands: "بازگشت سرویس و داده‌های 1Panel" +RestoreNoSuchFile: "هیچ فایل بازگشتی یافت نشد" +RestoreStep1: "(۱/۵) شروع بازگشت سرویس و داده‌های 1Panel از دایرکتوری {{ .name }}..." +RestoreStep2: "(۲/۵) بازگشت باینری 1Panel تکمیل شد" +RestoreStep3: "(۳/۵) بازگشت اسکریپت 1Panel تکمیل شد" +RestoreStep4: "(۴/۵) بازگشت سرویس 1Panel تکمیل شد" +RestoreStep5: "(۵/۵) بازگشت داده‌های 1Panel تکمیل شد" +RestoreSuccessful: "بازگشت تکمیل شد. به نسخه {{ .version }} بازگردانده شد. در حال راه‌اندازی مجدد سرویس..." +UpdateCommands: "به‌روزرسانی اطلاعات پنل" +UpdateUser: "به‌روزرسانی اطلاعات کاربر" +UpdatePassword: "به‌روزرسانی رمز عبور کاربر" +UpdatePort: "به‌روزرسانی پورت پنل" +UpdateUserNull: "خطا: کاربر خالی است!" +UpdateUserBlank: "خطا: کاربر شامل فاصله است!" +UpdateUserFormat: "خطا: فرمت کاربر نامعتبر است! فقط انگلیسی، چینی، اعداد و _ با طول ۳-۳۰ پشتیبانی می‌شود" +UpdateUserErr: "خطا: به‌روزرسانی کاربر ناموفق بود، {{ .err }}" +UpdateSuccessful: "به‌روزرسانی با موفقیت انجام شد!" +UpdateUserResult: "کاربر: {{ .name }}" +UpdatePasswordRead: "خطا: خواندن اطلاعات رمز عبور کاربر ناموفق بود، {{ .err }}" +UpdatePasswordNull: "خطا: رمز عبور کاربر خالی است!" +UpdateUPasswordBlank: "خطا: رمز عبور کاربر شامل فاصله است!" +UpdatePasswordFormat: "خطا: رمز عبور کاربر فقط از حروف، اعداد و کاراکترهای ویژه (!@#$%*_,.?) با طول ۸-۳۰ پشتیبانی می‌کند." +UpdatePasswordLen: "خطا: رمز عبور بیشتر از ۶ کاراکتر وارد کنید" +UpdatePasswordRe: "تکرار رمز عبور:" +UpdatePasswordErr: "خطا: به‌روزرسانی رمز عبور کاربر ناموفق بود، {{ .err }}" +UpdatePasswordSame: "خطا: دو رمز عبور مطابقت ندارند، بررسی و دوباره تلاش کنید!" +UpdatePasswordResult: "رمز عبور کاربر: {{ .name }}" +UpdatePortFormat: "خطا: شماره پورت ورودی باید بین ۱ تا ۶۵۵۳۵ باشد!" +UpdatePortUsed: "خطا: شماره پورت قبلاً در حال استفاده است، بررسی و دوباره تلاش کنید!" +UpdatePortErr: "خطا: به‌روزرسانی پورت پنل ناموفق بود، {{ .err }}" +UpdatePortResult: "پورت پنل: {{ .name }}" +UpdatePortFirewallAdd: "افزودن قانون پورت دیواره آتش ناموفق بود، {{ .err }}، پورت {{ .name }} را به صورت دستی به قوانین دیواره آتش اضافه کنید." +UpdatePortFirewallDel: "خطا: حذف پورت دیواره آتش ناموفق بود، {{ .err }}" +UpdatePortFirewallReload: "بارگذاری مجدد دیواره آتش ناموفق بود، {{ .err }}، دیواره آتش را به صورت دستی بارگذاری مجدد کنید." +UserInfo: "دریافت اطلاعات پنل" +UserInfoAddr: "آدرس پنل: " +UserInfoPassHelp: "نکته: برای تغییر رمز عبور، می‌توانید دستور را اجرا کنید: " +DBConnErr: "خطا: راه‌اندازی اتصال پایگاه داده ناموفق بود، {{ .err }}" +SystemVersion: "نسخه: " +SystemMode: "حالت: " + +#exchange +LocalNodeIpFailed: "دریافت IP گره اصلی ناموفق بود. گره اصلی را ویرایش کرده و آدرس IP و اطلاعات احراز هویت SSH را اضافه کنید." +HandlePrivateKey: "مدیریت کلید خصوصی گره" +HandlePublicKey: "مدیریت کلید عمومی گره" +ExchangeFile: "شروع همگام‌سازی {{ .sourcePath }} از گره {{ .source }} به گره {{ .dest }}:{{ .destPath }}" +TaskRsync: "همگام‌سازی" +NodeFile: "فایل گره" +ImageSyncTaskName: "همگام‌سازی تصویر {{ .source }} -> {{ .count }} گره" +ImageSyncSave: "ذخیره تصویر {{ .image }}" +ImageSyncSaveTags: "ذخیره برچسب‌های تصویر {{ .tags }}" +ImageSyncToNode: "همگام‌سازی تصویر {{ .image }} به گره {{ .node }}" +ImageSyncLoad: "بارگذاری تصویر {{ .image }} روی گره {{ .node }}" +ImageSyncClean: "پاک‌سازی فایل‌های موقت تصویر {{ .image }}" +ImageSyncNoTag: "تصویر {{ .image }} هیچ برچسبی ندارد و با شناسه تصویر ذخیره می‌شود" +ImageSyncFrontendTagsIgnored: "هیچ برچسبی برای تصویر {{ .image }} در گره منبع یافت نشد. برچسب‌های فرانت‌اند نادیده گرفته شدند." +ImageSyncHandlePrivateKey: "مدیریت کلید خصوصی گره همگام‌سازی تصویر" +ImageSyncHandlePublicKey: "مدیریت کلید عمومی گره همگام‌سازی تصویر" +ImageSyncTransfer: "شروع انتقال فایل موقت تصویر: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}" + +#mobile app +ErrVerifyToken: 'تأیید توکن ناموفق بود. بازنشانی کرده و دوباره اسکن کنید.' +ErrInvalidToken: 'توکن نامعتبر است. بازنشانی کرده و دوباره اسکن کنید.' +ErrExpiredToken: 'توکن منقضی شده است. بازنشانی کرده و دوباره اسکن کنید.' + +#cluster +ErrMasterDelete: "گره اصلی قابل حذف نیست. ابتدا گره‌های برده را حذف کنید." +ClusterNameIsExist: "نام خوشه از قبل وجود دارد." +AppStatusUnHealthy: "دریافت وضعیت برنامه ناموفق بود. وضعیت گره نصب را در لیست گره‌ها بررسی کنید." +MasterNodePortNotAvailable: "بررسی اتصال پورت {{ .port }} گره {{ .name }} ناموفق بود. تنظیمات دیواره آتش/گروه امنیتی و وضعیت گره اصلی را بررسی کنید." +ClusterMasterNotExist: "گره اصلی خوشه قطع شده است. گره‌های زیرین را حذف کنید." + +#ssl +ErrReqFailed: "درخواست {{.name}} ناموفق بود: {{ .err }}" + +#command +Name: "نام" +Command: "دستور" diff --git a/frontend/src/lang/fu.ts b/frontend/src/lang/fu.ts index 8a2235449edc..5cabad05e1be 100644 --- a/frontend/src/lang/fu.ts +++ b/frontend/src/lang/fu.ts @@ -141,6 +141,20 @@ const fuLocales: Record = { }, }, }, + fa: { + fu: { + table: { + more: 'بیشتر', + custom_table_rows: 'ستون‌های سفارشی', + }, + steps: { + cancel: 'لغو', + prev: 'قبلی', + next: 'بعدی', + finish: 'پایان', + }, + }, + }, }; export const getFuLocaleMessage = (locale: string) => { diff --git a/frontend/src/lang/index.ts b/frontend/src/lang/index.ts index 9902a50ed53a..b68622db6fa4 100644 --- a/frontend/src/lang/index.ts +++ b/frontend/src/lang/index.ts @@ -16,6 +16,7 @@ const LOCALE_LOADERS: Record = { ms: () => import('./modules/ms'), ko: () => import('./modules/ko'), tr: () => import('./modules/tr'), + fa: () => import('./modules/fa'), 'es-ES': () => import('./modules/es-es'), }; diff --git a/frontend/src/lang/modules/fa.ts b/frontend/src/lang/modules/fa.ts new file mode 100644 index 000000000000..d51efd5e5b78 --- /dev/null +++ b/frontend/src/lang/modules/fa.ts @@ -0,0 +1,5573 @@ +import { getFuLocaleMessage } from '@/lang/fu'; + +const message = { + commons: { + true: 'درست', + false: 'نادرست', + colon: ': ', + example: 'مثلاً ', + fit2cloud: 'FIT2CLOUD', + lingxia: 'LXware', + button: { + run: 'اجرا', + prev: 'قبلی', + next: 'بعدی', + create: 'ایجاد', + add: 'افزودن', + save: 'ذخیره', + set: 'تنظیمات', + sync: 'همگام‌سازی', + delete: 'حذف', + edit: 'ویرایش', + enable: 'فعال', + disable: 'غیرفعال', + confirm: 'تأیید', + cancel: 'لغو', + reset: 'بازنشانی', + setDefault: 'بازگردانی پیش‌فرض', + restart: 'راه‌اندازی مجدد', + conn: 'اتصال', + disConn: 'قطع اتصال', + clean: 'پاک‌سازی', + cleanAll: 'پاک‌سازی همه', + selectAll: 'انتخاب همه', + login: 'ورود', + close: 'بستن', + stop: 'متوقف کردن', + start: 'شروع', + view: 'مشاهده', + watch: 'دنبال کردن', + handle: 'اجرا', + clone: 'کلون', + expand: 'باز کردن', + collapse: 'جمع کردن', + log: 'گزارش‌ها', + back: 'بازگشت', + backup: 'پشتیبان‌گیری', + recover: 'بازیابی', + retry: 'تلاش مجدد', + upload: 'بارگذاری', + download: 'دانلود', + init: 'راه‌اندازی', + verify: 'تأیید', + saveAndEnable: 'ذخیره و فعال‌سازی', + import: 'واردات', + export: 'خروجی', + power: 'ارسال', + search: 'جستجو', + refresh: 'بازخوانی', + get: 'دریافت', + upgrade: 'ارتقاء', + update: 'به‌روزرسانی', + ignore: 'رد کردن به‌روزرسانی', + copy: 'کپی', + random: 'تولید', + install: 'نصب', + uninstall: 'حذف نصب', + fullscreen: 'تمام صفحه', + quitFullscreen: 'خروج از تمام صفحه', + showAll: 'نمایش همه', + hideSome: 'مخفی کردن برخی', + agree: 'موافقم', + notAgree: 'مخالفم', + preview: 'پیش‌نمایش', + open: 'باز کردن', + notSave: 'ذخیره نشود', + createNewFolder: 'ایجاد پوشه جدید', + createNewFile: 'ایجاد فایل جدید', + helpDoc: 'مستندات', + bind: 'اتصال', + unbind: 'قطع اتصال', + cover: 'بازنویسی', + skip: 'رد شدن', + fix: 'رفع', + down: 'متوقف کردن', + up: 'شروع', + sure: 'تأیید', + show: 'نمایش', + hide: 'مخفی', + visit: 'باز کردن', + migrate: 'مهاجرت', + tip: 'نکته', + }, + operate: { + start: 'شروع', + stop: 'متوقف کردن', + restart: 'راه‌اندازی مجدد', + reload: 'بارگذاری مجدد', + rebuild: 'بازسازی', + sync: 'همگام‌سازی', + up: 'بالا', + down: 'پایین', + delete: 'حذف', + }, + search: { + timeStart: 'زمان شروع', + timeEnd: 'زمان پایان', + timeRange: 'تا', + dateStart: 'تاریخ شروع', + dateEnd: 'تاریخ پایان', + date: 'تاریخ', + }, + table: { + all: 'همه', + total: 'مجموع {0}', + name: 'نام', + type: 'نوع', + status: 'وضعیت', + statusSuccess: 'موفق', + statusFailed: 'ناموفق', + statusWaiting: 'در انتظار...', + records: 'رکوردها', + group: 'گروه', + default: 'پیش‌فرض', + createdAt: 'تاریخ ایجاد', + creator: 'ایجادکننده', + publishedAt: 'تاریخ انتشار', + date: 'تاریخ', + updatedAt: 'تاریخ بروزرسانی', + updater: 'بروزرسانی‌کننده', + operate: 'عملیات', + message: 'پیام', + description: 'توضیحات', + interval: 'فاصله', + user: 'مالک', + title: 'عنوان', + port: 'پورت', + forward: 'انتقال', + protocol: 'پروتکل', + tableSetting: 'تنظیمات جدول', + refreshRate: 'فاصله بازخوانی', + noRefresh: 'بدون بازخوانی', + selectColumn: 'انتخاب ستون', + local: 'محلی', + serialNumber: 'شماره', + manageGroup: 'مدیریت گروه‌ها', + backToList: 'بازگشت به لیست', + keepEdit: 'ادامه ویرایش', + }, + loadingText: { + Upgrading: 'در حال ارتقاء سیستم، لطفاً صبر کنید...', + Restarting: 'در حال راه‌اندازی مجدد سیستم، لطفاً صبر کنید...', + Recovering: 'در حال بازیابی از تصویر لحظه‌ای، لطفاً صبر کنید...', + Rollbacking: 'در حال بازگشت به تصویر لحظه‌ای، لطفاً صبر کنید...', + }, + msg: { + noneData: 'داده‌ای موجود نیست', + delete: 'این عمل قابل بازگشت نیست. ادامه می‌دهید؟', + clean: 'این پاک‌سازی قابل بازگشت نیست. ادامه می‌دهید؟', + closeDrawerHelper: 'تغییرات ذخیره نشده ممکن است از بین بروند. ادامه می‌دهید؟', + deleteSuccess: 'حذف با موفقیت انجام شد', + loginSuccess: 'ورود با موفقیت انجام شد', + operationSuccess: 'عملیات با موفقیت انجام شد', + copySuccess: 'کپی با موفقیت انجام شد', + notSupportOperation: 'این عملیات پشتیبانی نمی‌شود', + requestTimeout: 'زمان درخواست به پایان رسید، بعداً تلاش کنید', + infoTitle: 'توجه', + notRecords: 'هیچ رکورد اجرایی برای این وظیفه وجود ندارد', + sureLogOut: 'آیا مطمئن هستید که می‌خواهید خارج شوید؟', + createSuccess: 'ایجاد با موفقیت انجام شد', + updateSuccess: 'بروزرسانی با موفقیت انجام شد', + uploadSuccess: 'بارگذاری با موفقیت انجام شد', + operateConfirm: 'برای تأیید، عبارت را تایپ کنید: ', + inputOrSelect: 'انتخاب یا وارد کنید', + selectOne: 'لطفاً یک {0} را انتخاب کنید', + copyFailed: 'کپی ناموفق بود', + operatorHelper: 'اجرای "{1}" روی "{0}". این عمل قابل بازگشت نیست. ادامه می‌دهید؟', + notFound: 'متأسفیم، صفحه مورد نظر شما وجود ندارد.', + unSupportType: 'نوع فایل فعلی پشتیبانی نمی‌شود.', + unSupportSize: 'فایل بارگذاری شده از {0} مگابایت بیشتر است. تأیید کنید.', + fileExist: 'فایل از قبل در پوشه فعلی وجود دارد. بارگذاری مجدد پشتیبانی نمی‌شود.', + fileNameErr: 'نام فایل باید بین ۱ تا ۲۵۶ کاراکتر باشد و فقط شامل حروف، اعداد، نقطه، خط تیره یا زیرخط باشد', + confirmNoNull: 'مطمئن شوید که مقدار {0} خالی نباشد.', + errPort: 'پورت نامعتبر، لطفاً بررسی کنید', + remove: 'حذف', + backupHelper: 'عملیات فعلی از {0} پشتیبان‌گیری می‌کند. ادامه می‌دهید؟', + recoverHelper: 'بازیابی از {0}. این عمل غیرقابل بازگشت است. ادامه می‌دهید؟', + backupSuccess: 'پشتیبان‌گیری با موفقیت انجام شد', + restoreSuccess: 'بازیابی با موفقیت انجام شد', + refreshSuccess: 'بازخوانی با موفقیت انجام شد', + rootInfoErr: 'از قبل در دایرکتوری ریشه هستید', + resetSuccess: 'بازنشانی با موفقیت انجام شد', + creatingInfo: 'در حال ایجاد، نیازی به این عملیات نیست', + installSuccess: 'نصب با موفقیت انجام شد', + uninstallSuccess: 'حذف نصب با موفقیت انجام شد', + offlineTips: 'نسخه آفلاین از این عملیات پشتیبانی نمی‌کند', + errImportFormat: 'داده‌های وارداتی یا فرمت آن غیرعادی است، بررسی کنید و دوباره تلاش کنید!', + importHelper: 'در صورت وجود تضاد، داده‌های وارداتی جایگزین رکوردهای موجود می‌شوند.', + errImport: 'محتوای فایل غیرعادی است:', + }, + login: { + username: 'نام کاربری', + password: 'رمز عبور', + passkey: 'ورود با کلید عبور', + welcome: 'خوش آمدید. با نام کاربری و رمز عبور خود وارد شوید.', + errorAuthInfo: 'نام کاربری یا رمز عبور اشتباه است، دوباره تلاش کنید.', + errorMfaInfo: 'اطلاعات احراز هویت نامعتبر است، دوباره تلاش کنید.', + captchaHelper: 'کد تأیید', + errorCaptcha: 'کد تأیید نامعتبر است', + codeInput: 'کد ۶ رقمی MFA را وارد کنید', + mfaTitle: 'تأیید MFA', + mfaCode: 'کد تأیید MFA', + title: 'پنل مدیریت سرور لینوکس', + licenseHelper: '<قرارداد مجوز انجمن>', + errorAgree: 'لطفاً قرارداد مجوز انجمن را بپذیرید', + logout: 'خروج', + agreeTitle: 'قرارداد', + agreeContent: + 'به منظور حفاظت بهتر از حقوق قانونی شما، لطفاً قرارداد زیر را مطالعه و بپذیرید « قرارداد مجوز انجمن »', + passkeyFailed: 'ورود با کلید عبور ناموفق بود، لطفاً دوباره تلاش کنید', + passkeyNotSupported: + 'مرورگر یا محیط فعلی از کلید عبور پشتیبانی نمی‌کند، مطمئن شوید که دامنه را متصل کرده‌اید و از طریق HTTPS دسترسی دارید', + passkeyToPassword: 'کلید عبور کار نمی‌کند؟ به جای آن از رمز عبور استفاده کنید', + }, + rule: { + username: 'نام کاربری را وارد کنید', + password: 'رمز عبور را وارد کنید', + rePassword: 'تکرار رمز عبور با رمز عبور مطابقت ندارد.', + requiredInput: 'این فیلد الزامی است.', + requiredSelect: 'یک مورد از لیست انتخاب کنید', + illegalChar: 'کاراکترهای & ; $ \' ` ( ) " > < | در حال حاضر پشتیبانی نمی‌شوند', + illegalInput: 'این فیلد نباید شامل کاراکترهای غیرمجاز باشد.', + duplicate: 'این مقدار باید یکتا باشد.', + commonName: + 'این فیلد باید با کاراکترهای غیر ویژه شروع شود و از حروف انگلیسی، چینی، اعداد، ".", "-"، و "_" با طول ۱-۱۲۸ تشکیل شده باشد.', + userName: 'این فیلد باید از حروف انگلیسی، چینی، اعداد و "_" با طول ۳-۳۰ تشکیل شده باشد.', + simpleName: + 'این فیلد نباید با زیرخط شروع شود و باید از حروف انگلیسی، اعداد و "_" با طول ۳-۳۰ تشکیل شده باشد.', + simplePassword: + 'این فیلد نباید با زیرخط شروع شود و باید از حروف انگلیسی، اعداد و "_" با طول ۱-۳۰ تشکیل شده باشد.', + dbName: 'این فیلد نباید با زیرخط شروع شود و باید از حروف انگلیسی، اعداد و "_" با طول ۱-۶۴ تشکیل شده باشد.', + imageName: + 'این فیلد باید از حروف انگلیسی، اعداد، ":", "@", "/", ".", "-"، و "_" با طول ۱-۲۵۶ تشکیل شده باشد.', + volumeName: + 'این فیلد باید از حروف انگلیسی، اعداد، ".", "-"، و "_" با طول ۲-۳۰ تشکیل شده باشد.', + supervisorName: + 'این فیلد باید با کاراکترهای غیر ویژه شروع شود و از حروف انگلیسی، اعداد، "-"، و "_" با طول ۱-۱۲۸ تشکیل شده باشد.', + composeName: + 'پشتیبانی از کاراکترهای غیر ویژه در ابتدا، حروف کوچک، اعداد، - و _، طول ۱-۲۵۶', + complexityPassword: + 'پشتیبانی از ترکیب رمز عبور با طول ۸-۳۰ که حداقل شامل دو مورد از حروف، اعداد و کاراکترهای ویژه باشد.', + commonPassword: 'طول این فیلد باید بیشتر از ۶ باشد.', + linuxName: + 'طول این فیلد باید بین ۱ تا ۱۲۸ باشد. این فیلد نباید شامل کاراکترهای ویژه "{0}" باشد.', + email: 'این فیلد باید یک آدرس ایمیل معتبر باشد.', + number: 'این فیلد باید یک عدد باشد.', + integer: 'این فیلد باید یک عدد صحیح مثبت باشد.', + ip: 'این فیلد باید یک آدرس IP معتبر باشد.', + host: 'این فیلد باید یک آدرس IP یا نام دامنه معتبر باشد.', + hostHelper: 'پشتیبانی از ورودی آدرس IP یا نام دامنه', + port: 'این فیلد باید یک شماره پورت معتبر باشد.', + selectHelper: 'فایل {0} صحیح را انتخاب کنید', + domain: 'این فیلد باید مانند: example.com یا example.com:8080 باشد.', + databaseName: 'این فیلد باید از حروف انگلیسی، اعداد و "_" با طول ۱-۳۰ تشکیل شده باشد.', + ipErr: 'این فیلد باید یک آدرس IP معتبر باشد.', + numberRange: 'این فیلد باید عددی بین {0} و {1} باشد.', + paramName: + 'این فیلد باید از حروف انگلیسی، اعداد، ".", "-"، و "_" با طول ۲-۳۰ تشکیل شده باشد.', + paramComplexity: + 'این فیلد نباید با کاراکترهای ویژه شروع یا پایان یابد و باید از حروف انگلیسی، اعداد، "{0}" با طول ۶-۱۲۸ تشکیل شده باشد.', + paramUrlAndPort: 'این فیلد باید به فرمت "http(s)://(دامنه/ip):(پورت)" باشد.', + nginxDoc: 'این فیلد باید از حروف انگلیسی، اعداد و "." تشکیل شده باشد.', + appName: + 'این فیلد نباید با "-" و "_" شروع یا پایان یابد و باید از حروف انگلیسی، اعداد، "-"، و "_" با طول ۲-۳۰ تشکیل شده باشد.', + containerName: 'پشتیبانی از حروف، اعداد، -، _ و .؛ نمی‌تواند با - _ یا . شروع شود؛ طول: ۲-۱۲۸', + mirror: 'آدرس آینه باید با http(s):// شروع شود، از حروف انگلیسی (کوچک و بزرگ)، اعداد، . / و - پشتیبانی می‌کند و نباید شامل خطوط خالی باشد.', + disableFunction: 'فقط حروف و زیرخط پشتیبانی می‌شوند', + leechExts: 'فقط حروف، اعداد و کاما پشتیبانی می‌شوند', + paramSimple: 'پشتیبانی از حروف کوچک و اعداد، طول ۱-۱۲۸', + filePermission: 'خطا در مجوز فایل', + formatErr: 'خطا در فرمت، لطفاً بررسی و دوباره تلاش کنید', + phpExtension: 'فقط حروف کوچک انگلیسی، اعداد و زیرخط پشتیبانی می‌شود', + paramHttp: 'باید با http:// یا https:// شروع شود', + phone: 'فرمت شماره تلفن اشتباه است', + authBasicPassword: 'پشتیبانی از حروف، اعداد و کاراکترهای ویژه رایج، طول ۱-۷۲', + length128Err: 'طول نمی‌تواند از ۱۲۸ کاراکتر بیشتر باشد', + maxLength: 'طول نمی‌تواند از {0} کاراکتر بیشتر باشد', + alias: 'پشتیبانی از حروف انگلیسی، اعداد، - و _، طول ۱-۱۲۸، و نمی‌تواند با -_ شروع یا پایان یابد.', + }, + res: { + paramError: 'درخواست ناموفق بود. بعداً تلاش کنید.', + forbidden: 'کاربر فعلی مجوز ندارد', + serverError: 'خطای سرویس', + notFound: 'منبع وجود ندارد', + commonError: 'درخواست ناموفق بود', + }, + service: { + serviceNotStarted: 'سرویس {0} راه‌اندازی نشده است.', + }, + status: { + running: 'در حال اجرا', + done: 'انجام شد', + scanFailed: 'ناقص', + success: 'موفق', + waiting: 'در انتظار', + waitForUpgrade: 'در انتظار ارتقاء', + failed: 'ناموفق', + stopped: 'متوقف شده', + error: 'خطا', + created: 'ایجاد شده', + restarting: 'در حال راه‌اندازی مجدد', + uploading: 'در حال بارگذاری', + unhealthy: 'ناسالم', + removing: 'در حال حذف', + paused: 'متوقف موقت', + exited: 'خارج شده', + partial: 'جزئی', + dead: 'از کار افتاده', + installing: 'در حال نصب', + enabled: 'فعال', + disabled: 'غیرفعال', + normal: 'عادی', + building: 'در حال ساخت', + upgrading: 'در حال ارتقاء', + pending: 'در انتظار ویرایش', + rebuilding: 'در حال بازسازی', + deny: 'رد شده', + accept: 'پذیرفته شده', + used: 'استفاده شده', + unused: 'استفاده نشده', + starting: 'در حال شروع', + recreating: 'در حال بازآفرینی', + creating: 'در حال ایجاد', + init: 'در انتظار برنامه', + ready: 'آماده', + applying: 'در حال اعمال', + uninstalling: 'در حال حذف نصب', + lost: 'ارتباط قطع شده', + bound: 'متصل', + unbind: 'قطع اتصال', + exceptional: 'استثنایی', + free: 'رایگان', + enable: 'فعال', + disable: 'غیرفعال', + deleted: 'حذف شده', + downloading: 'در حال دانلود', + packing: 'در حال بسته‌بندی', + sending: 'در حال ارسال', + healthy: 'عادی', + executing: 'در حال اجرا', + installerr: 'نصب ناموفق', + applyerror: 'اعمال ناموفق', + systemrestart: 'قطع شده', + starterr: 'شروع ناموفق', + uperr: 'شروع ناموفق', + new: 'جدید', + conflict: 'تضاد', + duplicate: 'تکراری', + unexecuted: 'اجرا نشده', + canceled: 'لغو شده', + }, + units: { + second: 'ثانیه', + minute: 'دقیقه', + hour: 'ساعت', + day: 'روز', + week: 'هفته', + month: 'ماه', + year: 'سال', + time: 'rqm', + core: 'هسته', + millisecond: 'میلی‌ثانیه', + secondUnit: 'ثانیه', + minuteUnit: 'دقیقه', + hourUnit: 'ساعت', + dayUnit: 'روز', + semicolon: '؛', + }, + log: { + noLog: 'گزارشی موجود نیست', + }, + }, + menu: { + home: 'نمای کلی', + apps: 'فروشگاه برنامه', + website: 'وب‌سایت | وب‌سایت‌ها', + project: 'پروژه | پروژه‌ها', + config: 'پیکربندی | پیکربندی‌ها', + ssh: 'تنظیمات SSH', + firewall: 'دیواره آتش', + filter: 'فیلتر', + ssl: 'گواهی | گواهی‌ها', + database: 'پایگاه داده | پایگاه‌های داده', + aiTools: 'هوش مصنوعی', + mcp: 'MCP', + container: 'کانتینر | کانتینرها', + cronjob: 'وظیفه زمان‌بندی شده | وظایف زمان‌بندی شده', + system: 'سیستم', + security: 'امنیت', + files: 'مدیریت فایل', + monitor: 'نظارت', + terminal: 'ترمینال | ترمینال‌ها', + settings: 'تنظیمات', + toolbox: 'جعبه ابزار', + logs: 'گزارش | گزارش‌ها', + runtime: 'محیط اجرا | محیط‌های اجرا', + processManage: 'فرآیند | فرآیندها', + process: 'فرآیند | فرآیندها', + network: 'شبکه | شبکه‌ها', + supervisor: 'سرپرست', + tamper: 'ضد دستکاری', + app: 'برنامه', + msgCenter: 'وظایف', + disk: 'دیسک', + }, + home: { + recommend: 'پیشنهادی', + dir: 'دایرکتوری', + alias: 'نام مستعار', + quickDir: 'دسترسی سریع', + minQuickJump: 'حداقل یک ورودی دسترسی سریع اضافه کنید', + maxQuickJump: 'می‌توانید حداکثر چهار ورودی دسترسی سریع اضافه کنید', + database: 'پایگاه داده - همه', + restart_1panel: 'راه‌اندازی مجدد پنل', + restart_system: 'راه‌اندازی مجدد سرور', + operationSuccess: 'عملیات با موفقیت انجام شد. در حال راه‌اندازی مجدد، بعداً مرورگر را بازخوانی کنید.', + entranceHelper: + 'ورودی امنیتی فعال نیست. می‌توانید آن را در "تنظیمات -> امنیت" فعال کنید تا امنیت سیستم افزایش یابد.', + appInstalled: 'برنامه‌ها', + systemInfo: 'اطلاعات سیستم', + hostname: 'نام میزبان', + platformVersion: 'سیستم عامل', + kernelVersion: 'هسته', + kernelArch: 'معماری', + network: 'شبکه', + io: 'I/O دیسک', + ip: 'IP محلی', + proxy: 'پروکسی سیستم', + baseInfo: 'اطلاعات پایه', + totalSend: 'مجموع ارسال', + totalRecv: 'مجموع دریافت', + rwPerSecond: 'عملیات I/O', + ioDelay: 'تأخیر I/O', + uptime: 'زمان روشن بودن', + runningTime: 'روشن از', + mem: 'حافظه سیستم', + swapMem: 'حافظه swap', + runSmoothly: 'بار کم', + runNormal: 'بار متوسط', + runSlowly: 'بار زیاد', + runJam: 'بار سنگین', + core: 'هسته‌های فیزیکی', + logicCore: 'هسته‌های منطقی', + corePercent: 'استفاده از هسته', + cpuFrequency: 'فرکانس CPU', + cpuDetailedPercent: 'جزئیات استفاده از CPU', + cpuUser: 'کاربر', + cpuSystem: 'سیستم', + cpuIdle: 'بیکار', + cpuIrq: 'IRQ', + cpuSoftirq: 'نرم‌افزار IRQ', + cpuSteal: 'ربایش', + cpuTop: '۵ فرآیند برتر بر اساس مصرف CPU', + memTop: '۵ فرآیند برتر بر اساس مصرف حافظه', + loadAverage: 'میانگین بار در دقیقه آخر | میانگین بار در {n} دقیقه گذشته', + load: 'بار', + mount: 'نقطه اتصال', + fileSystem: 'سیستم فایل', + total: 'مجموع', + used: 'استفاده شده', + cache: 'کش', + free: 'آزاد', + shard: 'تقسیم شده', + available: 'موجود', + percent: 'درصد استفاده', + goInstall: 'رفتن به نصب', + networkCard: 'کارت شبکه', + disk: 'دیسک', + memo: 'یادداشت', + memoPlaceholder: 'برای ویرایش روی دکمه ویرایش کلیک کنید.', + carouselSetting: 'تنظیمات چرخ‌فلک', + tooltipSensitiveInfo: 'نمایش/مخفی کردن اطلاعات حساس', + }, + tabs: { + more: 'بیشتر', + hide: 'مخفی', + closeLeft: 'بستن سمت چپ', + closeRight: 'بستن سمت راست', + closeCurrent: 'بستن جاری', + closeOther: 'بستن سایر', + closeAll: 'بستن همه', + }, + header: { + logout: 'خروج', + }, + database: { + manage: 'مدیریت پایگاه داده', + deleteBackupHelper: 'همزمان پشتیبان‌های پایگاه داده را حذف کنید', + delete: 'عملیات حذف قابل بازگشت نیست، لطفاً عبارت "', + deleteHelper: '" را برای حذف این پایگاه داده وارد کنید', + noMysql: 'سرویس پایگاه داده (MySQL یا MariaDB)', + noPostgresql: 'سرویس پایگاه داده PostgreSQL', + goUpgrade: 'رفتن به ارتقاء', + goInstall: 'رفتن به نصب', + isDelete: 'حذف شده', + permission: 'تغییر مجوزها', + format: 'مجموعه کاراکتر', + collation: 'ترتیب', + collationHelper: 'در صورت خالی بودن، از ترتیب پیش‌فرض مجموعه کاراکتر {0} استفاده می‌شود', + permissionForIP: 'IP', + permissionAll: 'همه (%)', + localhostHelper: + 'پیکربندی مجوزهای پایگاه داده به عنوان "localhost" برای استقرار کانتینر، از دسترسی خارجی به کانتینر جلوگیری می‌کند. با دقت انتخاب کنید!', + databaseConnInfo: 'اتصال', + rootPassword: 'رمز عبور ریشه', + serviceName: 'نام سرویس', + serviceNameHelper: 'دسترسی بین کانتینرها در یک شبکه.', + backupList: 'پشتیبان‌گیری', + loadBackup: 'واردات', + localUpload: 'بارگذاری محلی', + hostSelect: 'انتخاب سرور', + selectHelper: 'آیا مطمئن هستید که می‌خواهید فایل پشتیبان {0} را وارد کنید؟', + remoteAccess: 'دسترسی از راه دور', + remoteHelper: 'برای جدا کردن چندین IP از کاما استفاده کنید، مثلاً 172.16.10.111,172.16.10.112', + remoteConnHelper: 'ورود از راه دور MySQL با ریشه خطرناک است. با احتیاط ادامه دهید.', + changePassword: 'تغییر رمز عبور', + changeConnHelper: 'این کار پایگاه داده {0} را تغییر می‌دهد. ادامه می‌دهید؟', + changePasswordHelper: + 'پایگاه داده با یک برنامه مرتبط شده است. تغییر رمز عبور، رمز عبور پایگاه داده برنامه را نیز تغییر می‌دهد. تغییر پس از راه‌اندازی مجدد برنامه اعمال می‌شود.', + recoverTimeoutHelper: '-1 به معنای بدون محدودیت زمانی است', + confChange: 'پیکربندی', + confNotFound: + 'فایل پیکربندی پیدا نشد. لطفاً برنامه را در فروشگاه برنامه به آخرین نسخه ارتقاء دهید و دوباره تلاش کنید!', + portHelper: + 'این پورت، پورت نمایش داده شده کانتینر است. باید تغییرات را جداگانه ذخیره و کانتینر را مجدداً راه‌اندازی کنید!', + loadFromRemote: 'همگام‌سازی از سرور', + userBind: 'اتصال کاربر', + pgBindHelper: + 'این عملیات برای ایجاد کاربر جدید و اتصال آن به پایگاه داده هدف استفاده می‌شود. در حال حاضر انتخاب کاربرانی که از قبل در پایگاه داده وجود دارند پشتیبانی نمی‌شود.', + pgSuperUser: 'کاربر فوق‌العاده', + loadFromRemoteHelper: 'همگام‌سازی اطلاعات پایگاه داده از سرور به 1Panel. ادامه می‌دهید؟', + passwordHelper: 'در دسترس نیست، برای به‌روزرسانی کلیک کنید', + remote: 'از راه دور', + remoteDB: 'سرور از راه دور | سرورهای از راه دور', + createRemoteDB: 'اتصال @.lower:database.remoteDB', + unBindRemoteDB: 'قطع اتصال @.lower:database.remoteDB', + unBindForce: 'قطع اجباری', + unBindForceHelper: 'نادیده گرفتن همه خطاها در طول فرآیند قطع اتصال برای اطمینان از موفقیت نهایی عملیات', + unBindRemoteHelper: + 'قطع اتصال پایگاه داده از راه دور فقط رابطه اتصال را حذف می‌کند و پایگاه داده از راه دور را مستقیماً حذف نمی‌کند', + editRemoteDB: 'ویرایش سرور از راه دور', + localDB: 'پایگاه داده محلی', + address: 'آدرس پایگاه داده', + version: 'نسخه پایگاه داده', + userHelper: 'از root یا کاربری با مجوزهای root برای دسترسی به پایگاه داده از راه دور استفاده کنید.', + mongodbPermissionDbOwner: 'مالک پایگاه داده', + mongodbPermissionRead: 'خواندن داده', + mongodbPermissionReadWrite: 'خواندن و نوشتن داده', + mongodbPermissionUserAdmin: 'مدیر کاربر', + pgUserHelper: 'از یک حساب کاربری فوق‌العاده پایگاه داده استفاده کنید.', + ssl: 'استفاده از SSL', + clientKey: 'کلید خصوصی مشتری', + clientCert: 'گواهی مشتری', + caCert: 'گواهی CA', + hasCA: 'دارای گواهی CA', + skipVerify: 'رد کردن تأیید گواهی', + initialDB: 'پایگاه داده اولیه', + formatHelper: + 'مجموعه کاراکتر فعلی پایگاه داده {0} است، ناهماهنگی مجموعه کاراکتر ممکن است باعث خرابی بازیابی شود', + dropHelper: 'می‌توانید فایل بارگذاری شده را به اینجا بکشید و رها کنید یا', + clickHelper: 'برای بارگذاری کلیک کنید', + supportUpType: + 'فقط فرمت‌های فایل sql، sql.gz، tar.gz، .zip پشتیبانی می‌شوند. فایل فشرده وارد شده باید فقط شامل یک فایل .sql یا شامل test.sql باشد', + currentStatus: 'وضعیت فعلی', + baseParam: 'پارامتر پایه', + performanceParam: 'پارامتر عملکرد', + runTime: 'زمان شروع', + connections: 'اتصال‌های کل', + bytesSent: 'بایت ارسال شده', + bytesReceived: 'بایت دریافت شده', + queryPerSecond: 'پرس و جو در ثانیه', + txPerSecond: 'تراکنش در ثانیه', + connInfo: 'اتصال فعال/اوج', + connInfoHelper: 'اگر مقدار خیلی زیاد است، "max_connections" را افزایش دهید.', + threadCacheHit: 'برخورد کش رشته', + threadCacheHitHelper: 'اگر خیلی کم است، "thread_cache_size" را افزایش دهید.', + indexHit: 'برخورد ایندکس', + indexHitHelper: 'اگر خیلی کم است، "key_buffer_size" را افزایش دهید.', + innodbIndexHit: 'نرخ برخورد ایندکس Innodb', + innodbIndexHitHelper: 'اگر خیلی کم است، "innodb_buffer_pool_size" را افزایش دهید.', + cacheHit: 'نرخ برخورد کش پرس و جو', + cacheHitHelper: 'اگر خیلی کم است، "query_cache_size" را افزایش دهید.', + tmpTableToDB: 'جدول موقت به دیسک', + tmpTableToDBHelper: 'اگر خیلی بزرگ است، سعی کنید "tmp_table_size" را افزایش دهید.', + openTables: 'جدول‌های باز', + openTablesHelper: 'مقدار پیکربندی "table_open_cache" باید بزرگتر یا مساوی این مقدار باشد.', + selectFullJoin: 'انتخاب پیوند کامل', + selectFullJoinHelper: 'اگر این مقدار ۰ نیست، ایندکس‌های جدول را بررسی کنید.', + selectRangeCheck: 'تعداد پیوندهای بدون ایندکس', + selectRangeCheckHelper: 'اگر این مقدار ۰ نیست، ایندکس‌های جدول را بررسی کنید.', + sortMergePasses: 'تعداد ادغام‌های مرتب‌شده', + sortMergePassesHelper: 'اگر مقدار خیلی زیاد است، "sort_buffer_size" را افزایش دهید.', + tableLocksWaited: 'تعداد قفل جدول', + tableLocksWaitedHelper: 'اگر مقدار خیلی زیاد است، افزایش عملکرد پایگاه داده را در نظر بگیرید.', + performanceTuning: 'بهینه‌سازی عملکرد', + optimizationScheme: 'طرح بهینه‌سازی', + keyBufferSizeHelper: 'اندازه بافر برای ایندکس', + queryCacheSizeHelper: 'کش پرس و جو. اگر این عملکرد غیرفعال است، این پارامتر را روی ۰ قرار دهید.', + tmpTableSizeHelper: 'اندازه کش جدول موقت', + innodbBufferPoolSizeHelper: 'اندازه بافر Innodb', + innodbLogBufferSizeHelper: 'اندازه بافر لاگ Innodb', + sortBufferSizeHelper: '* اتصالات، اندازه بافر برای هر رشته مرتب‌سازی', + readBufferSizeHelper: '* اتصالات، اندازه بافر خواندن', + readRndBufferSizeHelper: '* اتصالات، اندازه بافر خواندن تصادفی', + joinBufferSizeHelper: '* اتصالات، اندازه کش جدول ارتباطی', + threadStackelper: '* اتصالات، اندازه پشته برای هر رشته', + binlogCacheSizeHelper: '* اتصالات، اندازه کش باینری لاگ (مضرب ۴۰۹۶)', + threadCacheSizeHelper: 'اندازه مجموعه رشته‌ها', + tableOpenCacheHelper: 'کش جدول', + maxConnectionsHelper: 'حداکثر اتصالات', + restart: 'راه‌اندازی مجدد', + slowLog: 'لاگ‌های کند', + noData: 'هنوز لاگ کندی وجود ندارد.', + isOn: 'روشن', + longQueryTime: 'آستانه (ثانیه)', + thresholdRangeHelper: 'آستانه صحیح را وارد کنید (۱ - ۶۰۰).', + timeout: 'مهلت (ثانیه)', + timeoutHelper: 'دوره مهلت اتصال بیکار. ۰ به معنای ادامه اتصال است.', + maxclients: 'حداکثر مشتریان', + requirepassHelper: + 'خالی گذاشتن به معنای عدم تنظیم رمز عبور است. تغییرات باید جداگانه ذخیره و کانتینر مجدداً راه‌اندازی شود!', + databases: 'تعداد پایگاه‌های داده', + maxmemory: 'حداکثر استفاده از حافظه', + maxmemoryHelper: '۰ به معنای بدون محدودیت است.', + tcpPort: 'پورت شنود فعلی.', + uptimeInDays: 'روزهای فعالیت.', + connectedClients: 'تعداد مشتریان متصل.', + usedMemory: 'مصرف حافظه فعلی Redis.', + usedMemoryRss: 'اندازه حافظه درخواستی از سیستم عامل.', + usedMemoryPeak: 'اوج مصرف حافظه Redis.', + memFragmentationRatio: 'نسبت تکه‌تکه شدن حافظه.', + totalConnectionsReceived: 'تعداد کل مشتریان متصل از زمان اجرا.', + totalCommandsProcessed: 'تعداد کل دستورات اجرا شده از زمان اجرا.', + instantaneousOpsPerSec: 'تعداد دستورات اجرا شده توسط سرور در ثانیه.', + keyspaceHits: 'تعداد دفعاتی که کلید پایگاه داده با موفقیت پیدا شد.', + keyspaceMisses: 'تعداد دفعات ناموفق در یافتن کلید پایگاه داده.', + hit: 'نسبت برخورد کلید پایگاه داده.', + latestForkUsec: 'تعداد میکروثانیه‌های صرف شده برای آخرین عملیات fork().', + redisCliHelper: '"redis-cli" شناسایی نشد. ابتدا سرویس را فعال کنید.', + redisQuickCmd: 'دستورات سریع Redis', + recoverHelper: 'این کار داده‌ها را با [{0}] بازنویسی می‌کند. ادامه می‌دهید؟', + mongodbRecoverDropAllCollections: 'پاک کردن پایگاه داده جاری قبل از بازیابی', + mongodbRecoverDropAllCollectionsHelper: + 'به‌طور پیش‌فرض، فقط مجموعه‌های موجود بازنویسی می‌شوند و مجموعه‌های تازه اضافه شده حفظ می‌شوند. در صورت فعال بودن، پایگاه داده جاری پاک شده و سپس از پشتیبان بازیابی می‌شود.', + submitIt: 'بازنویسی داده', + baseConf: 'پایه', + allConf: 'همه', + restartNow: 'همین حالا راه‌اندازی مجدد', + restartNowHelper1: + 'برای اعمال تغییرات پیکربندی، باید سیستم را مجدداً راه‌اندازی کنید. اگر داده‌های شما نیاز به ماندگاری دارند، ابتدا عملیات ذخیره را انجام دهید.', + restartNowHelper: 'این فقط پس از راه‌اندازی مجدد سیستم اعمال می‌شود.', + persistence: 'ماندگاری', + rdbHelper1: 'ثانیه، درج', + rdbHelper2: 'تکه داده', + rdbHelper3: 'برآورده شدن هر یک از شرایط، باعث ایجاد RDB می‌شود.', + rdbInfo: 'اطمینان حاصل کنید که مقدار در لیست قوانین بین ۱ تا ۱۰۰۰۰۰ است', + containerConn: 'اتصال کانتینر', + copyConnURL: 'کپی URL اتصال', + connAddress: 'آدرس', + containerConnHelper: + 'این آدرس اتصال توسط برنامه‌هایی استفاده می‌شود که در محیط اجرای PHP/نصب کانتینر اجرا می‌شوند.', + remoteConn: 'اتصال خارجی', + remoteConnHelper2: + 'این آدرس اتصال می‌تواند توسط برنامه‌هایی که روی غیر کانتینر یا برنامه‌های خارجی اجرا می‌شوند استفاده شود.', + remoteConnHelper3: + 'آدرس دسترسی پیش‌فرض IP میزبان است. برای تغییر آن، به آیتم پیکربندی "آدرس دسترسی پیش‌فرض" در صفحه تنظیمات پنل بروید.', + localIP: 'IP محلی', + }, + aiTools: { + agents: { + agent: 'عامل', + account: 'حساب مدل', + batchOperation: 'عملیات دسته‌ای', + operationType: 'نوع عملیات', + batchAction: 'دسته‌ای {0}', + installSkillAction: 'توزیع مهارت', + batchAgentTask: 'دسته‌ای {0} عامل', + dispatchAgentTask: 'ارسال {0} وظیفه به عامل', + dispatchTask: 'ارسال {0} وظیفه', + taskSubmitted: 'وظیفه {0} ارسال شد', + allNodes: 'همه گره‌ها', + targetVersion: 'نسخه هدف', + skillSource: 'منبع مهارت', + skillKeyword: 'کلیدواژه مهارت', + clawHubSkillPlaceholder: 'ابتدا یک مهارت را جستجو و انتخاب کنید', + noAccountHint: 'یک حساب مدل موجود انتخاب کنید یا یک حساب جدید اضافه کنید.', + accountCount: '{0} حساب مدل', + syncAgents: 'همگام‌سازی عامل‌های مرتبط', + syncAgentsHelper: 'به‌روزرسانی openclaw.json برای عامل‌هایی که از این حساب مدل استفاده می‌کنند', + appVersion: 'نسخه برنامه', + webuiPort: 'پورت WebUI', + allowedOrigins: 'آدرس‌های دسترسی', + allowedOriginsRequired: 'حداقل یک آدرس دسترسی وارد کنید', + allowedOriginsInvalid: 'از فرمت http(s)://host-or-ip[:port] استفاده کنید', + provider: 'ارائه‌دهنده', + accountModelsHelper: + 'انتخاب کنید که این حساب چه مدل‌هایی را برای OpenClaw جهت انتخاب و پیکربندی در دسترس قرار دهد', + accountModelsRequired: 'حداقل یک مدل انتخاب کنید', + accountModelsDuplicate: 'مدل‌های تکراری در کاتالوگ یافت شد', + modelPool: 'مجموعه مدل‌ها', + fallbackModels: 'مدل‌های جایگزین', + addFallbackModel: 'افزودن مدل جایگزین', + fallbackModelsEmpty: 'هیچ مدل جایگزینی پیکربندی نشده است', + modelInputTypes: 'انواع ورودی', + reasoning: 'مدل استدلالی', + verified: 'تأیید شده', + verifySkipped: 'بدون تأیید', + skillsTab: 'مهارت‌ها', + securityTab: 'امنیت', + otherTab: 'سایر', + timeZone: 'منطقه زمانی', + browserEnabled: 'مرورگر فعال', + npmRegistry: 'ثبت‌نامه NPM', + npmRegistryHelper: + 'برای نصب افزونه OpenClaw استفاده می‌شود. می‌توانید یک ثبت‌نامه از پیش تعیین شده انتخاب کنید یا یک ثبت‌نامه سفارشی وارد کنید.', + npmRegistryInvalid: 'یک URL معتبر برای ثبت‌نامه NPM وارد کنید که با http:// یا https:// شروع شود', + pluginInstallNPMRegistryHelper: + 'به تنظیمات -> سایر بروید تا ثبت‌نامه NPM را پیکربندی کرده و نصب افزونه را سرعت بخشید', + skillsSearchPlaceholder: 'جستجوی مهارت‌ها...', + skillsEmpty: 'هیچ مهارتی وجود ندارد', + skillsMarket: 'بازار مهارت', + skillsMarketHint: 'یک منبع انتخاب کنید و مهارت‌ها را جستجو کنید', + skillsMarketEmpty: 'هیچ مهارت منطبقی یافت نشد', + skillsMarketSourceClawhubGlobal: 'ClawHub (جهانی)', + skillsMarketSourceClawhubChina: 'ClawHub (چین)', + skillsMarketSourceSkillhub: 'SkillHub (Tencent)', + skillsMarketSourceLocalHub: 'فروشگاه محلی مهارت', + skillsScore: 'امتیاز', + skillsMarketSourceOfficial: 'رسمی', + versionUnsupportedTitle: 'این ویژگی در نسخه فعلی پشتیبانی نمی‌شود', + versionUnsupportedHelper: 'لطفاً OpenClaw را به نسخه {0} یا بالاتر ارتقاء دهید.', + skillsGroupBuiltIn: 'داخلی', + skillsGroupExternal: 'خارجی', + skillsGroupWorkspace: 'فضای کار', + switchModelSuccess: 'مدل با موفقیت تغییر کرد', + channelsTab: 'کانال‌ها', + agentRoleTab: 'عامل‌ها', + agentRoleUnsupported: 'مدیریت نقش در حال حاضر فقط برای OpenClaw پشتیبانی می‌شود.', + workspace: 'دایرکتوری فضای کار', + agentDir: 'دایرکتوری عامل', + roleMarkdownDescriptions: { + 'AGENTS.md': [ + 'دستورالعمل‌های عملیاتی برای عامل و نحوه استفاده از حافظه.', + 'در ابتدای هر جلسه بارگذاری می‌شود.', + 'مکان خوب برای قوانین، اولویت‌ها و جزئیات "نحوه رفتار".', + ], + 'SOUL.md': ['شخصیت، لحن و مرزها.', 'هر جلسه بارگذاری می‌شود.'], + 'USER.md': ['کاربر کیست و چگونه خطاب شود.', 'هر جلسه بارگذاری می‌شود.'], + 'IDENTITY.md': [ + 'نام، حالت و ایموجی عامل.', + 'در طول مراسم بوت‌استرپ ایجاد یا به‌روزرسانی می‌شود.', + ], + 'TOOLS.md': [ + 'یادداشت‌هایی درباره ابزارها و قراردادهای محلی شما.', + 'کنترل در دسترس بودن ابزار را ندارد؛ فقط راهنما است.', + ], + 'HEARTBEAT.md': ['لیست کوچک اختیاری برای اجرای ضربان قلب.', 'برای جلوگیری از سوختن توکن، کوتاه نگه دارید.'], + 'BOOT.md': [ + 'لیست شروع اختیاری که هنگام راه‌اندازی مجدد دروازه و فعال بودن هوک‌های داخلی اجرا می‌شود.', + 'کوتاه نگه دارید؛ برای ارسال‌های خروجی از ابزار پیام استفاده کنید.', + ], + 'BOOTSTRAP.md': [ + 'مراسم یک‌باره اولین اجرا.', + 'فقط برای یک فضای کار کاملاً جدید ایجاد می‌شود.', + 'پس از اتمام مراسم، آن را حذف کنید.', + ], + }, + duplicateBinding: 'ترکیب کانال و شناسه حساب باید یکتا باشد', + accountIdOptional: 'شناسه حساب (اختیاری)', + saveAllMd: 'ذخیره همه', + roleMarkdownRestartHelper: + 'ذخیره همه فایل‌های مارک‌داون فعلی نیاز به راه‌اندازی مجدد کانتینر دارد تا اعمال شود. انتخاب کنید که اکنون یا بعداً راه‌اندازی مجدد شود.', + configFileRestartHelper: + 'ذخیره فایل پیکربندی نیاز به راه‌اندازی مجدد فوری کانتینر دارد تا اعمال شود.', + overviewSnapshot: 'تصویر لحظه‌ای', + primaryModel: 'مدل اصلی', + defaultModel: 'مدل پیش‌فرض', + channelCount: 'کانال‌های پیکربندی شده', + skillCount: 'مهارت‌ها', + jobCount: 'وظایف زمان‌بندی شده', + sessionCount: 'جلسات', + hermesChatAction: 'گفتگو', + hermesChatTitle: 'گفتگوی هرمس', + hermesChatDialogTitle: 'گفتگوی هرمس - {0}', + hermesChatNewChat: 'گفتگوی جدید', + hermesChatNoSessions: 'هیچ جلسه‌ای', + hermesChatMessageCount: '{0} پیام', + hermesChatEmptyHint: 'یک جلسه انتخاب کنید یا روی گفتگوی جدید کلیک کنید', + hermesChatTitlePlaceholder: 'عنوان جلسه را وارد کنید', + hermesChatRenameSuccess: 'عنوان جلسه به‌روزرسانی شد', + hermesChatDeleteConfirm: 'جلسه {0} حذف شود؟', + hermesChatDeleteSuccess: 'جلسه حذف شد', + weixin: 'وی‌چت', + wecom: 'WeCom', + dingtalk: 'دینگ‌تاک', + feishu: 'فیشو', + pluginNotInstalled: 'افزونه نصب نشده است. لطفاً ابتدا آن را نصب کنید.', + dmPolicy: 'خط مشی DM', + threadSession: 'جلسه رشته', + replyMode: 'حالت پاسخ', + requireMention: 'نیاز به ذکر', + requireMentionTrue: "نیاز به {'@'}", + requireMentionFalse: "بدون نیاز به {'@'}", + requireMentionOpen: 'بر اساس پیکربندی گروه', + groupPolicy: 'خط مشی گروه', + policyAllowlist: 'لیست سفید', + policyOpen: 'باز', + policyDisabled: 'غیرفعال', + bots: 'ربات‌ها', + addBot: 'افزودن ربات', + accountId: 'شناسه حساب', + accountIdPlaceholder: 'یک شناسه یکتا برای تشخیص ربات‌ها و برای پیکربندی و مسیریابی بعدی.', + setDefaultBot: 'تنظیم به عنوان پیش‌فرض', + botDuplicateField: '{field} از قبل وجود دارد', + botRequired: 'حداقل یک ربات اضافه کنید', + botId: 'شناسه ربات', + allowFrom: 'لیست سفید DM', + allowFromPlaceholder: 'یک شناسه فرستنده در هر خط', + allowlistPolicyHelper: '{0}. فقط زمانی استفاده می‌شود که {1} لیست سفید باشد.', + systemPrompt: 'راهنمای سیستم', + groupAllowFrom: 'لیست سفید گروه', + groupAllowFromPlaceholder: 'یک شناسه گروه در هر خط', + separateSessionByConversation: 'جلسه جداگانه بر اساس گفتگو', + groupSessionScope: 'دامنه جلسه گروه', + groupSessionScopeGroup: 'مشترک در گروه', + groupSessionScopeGroupSender: 'به ازای هر فرستنده', + sharedMemoryAcrossConversations: 'اشتراک حافظه در بین گفتگوها', + asyncMode: 'حالت ناهمزمان', + ackText: 'متن تأیید', + ackTextDefault: 'وظیفه دریافت شد، در حال پردازش...', + streaming: 'پخش جریانی', + streamingOff: 'خاموش', + streamingPartial: 'جزئی', + streamingBlock: 'مسدود', + streamingProgress: 'پیشرفت', + allowFromRequired: 'حداقل یک ورودی لیست سفید وارد کنید', + pairingCode: 'کد جفت‌سازی', + pairingCodePlaceholder: 'کد جفت‌سازی را وارد کنید', + approvePairing: 'تأیید جفت‌سازی', + saveSuccess: 'ذخیره با موفقیت انجام شد', + successAndRestart: '{0}. کانتینر به طور خودکار در حال راه‌اندازی مجدد است.', + pairingApproveSuccess: 'جفت‌سازی با موفقیت تأیید شد', + scanConnect: 'اسکن برای اتصال', + scanConnectHelper: + 'برای شروع کار ورود با QR کلیک کنید. کد QR در لاگ وظیفه ظاهر می‌شود و پس از اسکان موفق، کانتینر به طور خودکار مجدداً راه‌اندازی می‌شود.', + channelAutoRestartHelper: 'ذخیره به طور خودکار کانتینر را مجدداً راه‌اندازی می‌کند تا تغییرات اعمال شوند.', + channelDeleteConfirm: 'پیکربندی کانال {0} حذف شود؟', + customProviderHelper: 'ارائه‌دهندگان مدل سفارشی در دسترس بودن حساب را تأیید نمی‌کنند.', + }, + model: { + model: 'مدل‌ها', + localModel: 'مدل‌های محلی', + create_helper: 'دریافت "{0}"', + ollama_doc: 'می‌توانید از وب‌سایت رسمی Ollama دیدن کنید و مدل‌های بیشتری را جستجو کنید.', + container_conn_helper: 'از این آدرس برای دسترسی بین کانتینرها یا اتصال استفاده کنید', + ollama_sync: 'همگام‌سازی مدل Ollama نشان داد که مدل‌های زیر وجود ندارند، آیا می‌خواهید آنها را حذف کنید؟', + from_remote: 'این مدل از طریق 1Panel دانلود نشده است، لاگ مربوط به دریافت وجود ندارد.', + no_logs: 'لاگ دریافت این مدل حذف شده است و قابل مشاهده نیست.', + vllmVersionHelper: 'برای سرورهای FusionXpark GB 10، لطفاً نسخه -cu130 را انتخاب کنید.', + syncModelAccount: 'همگام‌سازی با حساب مدل', + modelAccountAddressHelper: + 'آدرس کانتینر برای کانتینرهای عامل است؛ 127.0.0.1، IP سیستم یا آدرس سفارشی برای دروازه AI یا خدمات خارجی است.', + containerAddress: 'آدرس کانتینر', + customAddress: 'آدرس سفارشی', + downloader: 'دانلودکننده', + modelDir: 'دایرکتوری مدل', + manualDownload: 'دانلود دستی', + modelSource: 'منبع مدل', + repoID: 'شناسه مخزن', + endpointLabel: 'نقطه پایانی {0}', + acceleratedEndpointLabel: 'نقطه پایانی شتاب‌دهنده {0}', + tokenOptionalLabel: 'توکن {0} (اختیاری)', + searchSource: 'جستجوی {0}', + hfEndpointHelper: + 'هنگامی که دسترسی به HuggingFace ناپایدار است، یک نقطه پایانی شتاب‌دهنده پیکربندی کنید. جستجو، جزئیات و دانلود از آن استفاده خواهند کرد.', + sortTrending: 'محبوب‌ترین', + sortLikes: 'بیشترین لایک', + sortDownloads: 'بیشترین دانلود', + sortUpdated: 'اخیراً به‌روزرسانی شده', + sortCreated: 'جدیدترین', + downloadsCount: 'دانلودها', + likes: 'لایک‌ها', + taskQueue: 'صف دانلود', + progress: 'پیشرفت', + localDownloaded: 'دانلود شده', + modelInfo: 'جزئیات مدل', + downloading: 'در حال دانلود', + canceled: 'لغو شده', + downloadQueued: 'به صف دانلود اضافه شد', + cancelTaskConfirm: 'این وظیفه دانلود لغو شود؟', + deleteLocalModelConfirm: 'مدل محلی {0} حذف شود؟', + }, + proxy: { + proxy: 'ارتقاء دروازه AI', + proxyHelper1: 'دامنه را متصل کرده و HTTPS را فعال کنید تا امنیت انتقال افزایش یابد', + proxyHelper2: 'دسترسی IP را محدود کنید تا از قرار گرفتن در اینترنت عمومی جلوگیری شود', + proxyHelper3: 'فعال‌سازی پخش جریانی', + proxyHelper4: 'پس از ایجاد، می‌توانید آن را در لیست وب‌سایت‌ها مشاهده و مدیریت کنید', + proxyHelper5: + 'پس از فعال‌سازی، می‌توانید دسترسی خارجی به پورت را در فروشگاه برنامه - نصب شده - Ollama - پارامترها غیرفعال کنید تا امنیت بهبود یابد.', + proxyHelper6: 'برای غیرفعال کردن پیکربندی پروکسی، می‌توانید آن را از لیست وب‌سایت‌ها حذف کنید.', + whiteListHelper: 'دسترسی را فقط به IP‌های موجود در لیست سفید محدود کنید', + }, + aiProxy: { + title: 'دروازه AI', + notInstalled: 'نصب نشده', + usage: 'استفاده', + accountPool: 'مجموعه حساب‌ها', + importModelAccount: 'واردات حساب مدل', + editModelAccount: 'ویرایش حساب مدل', + selectModelAccount: 'یک حساب مدل موجود انتخاب کنید', + upstreamApiAddress: 'آدرس API بالادست', + priority: 'اولویت', + healthStatus: 'سلامت', + failureCount: 'تعداد شکست‌ها', + lastError: 'آخرین خطا', + modelMap: 'نگاشت مدل', + qpsLimit: 'محدودیت QPS', + tokenLimit: 'محدودیت توکن', + tokenUsed: 'توکن استفاده شده', + tokenRemaining: 'توکن باقی‌مانده', + resetToken: 'بازنشانی توکن‌ها', + resetTokenConfirm: 'استفاده از توکن برای {0} بازنشانی شود؟', + unlimited: 'نامحدود', + apiKeyCount: 'کلیدهای API', + lastUsedAt: 'آخرین استفاده', + settingTitle: 'تنظیمات دروازه AI', + basicSetting: 'تنظیمات پایه', + performanceSetting: 'تنظیمات عملکرد', + logSetting: 'تنظیمات لاگ', + lbPolicy: 'خط مشی توزیع بار', + lbPolicyRoundRobin: 'چرخه‌ای', + lbPolicyRoundRobinDesc: + 'حساب‌های مدل موجود را به ترتیب انتخاب کنید. زمانی استفاده شود که بک‌اندها ظرفیت مشابهی دارند.', + lbPolicyWeightedRoundRobin: 'چرخه‌ای وزنی', + lbPolicyWeightedRoundRobinDesc: + 'درخواست‌ها را بر اساس وزن حساب مدل توزیع کنید. وزن بالاتر ترافیک بیشتری دریافت می‌کند؛ زمانی که ظرفیت بک‌اند متفاوت است استفاده شود.', + lbPolicyFailover: 'خرابی', + lbPolicyFailoverDesc: + 'ابتدا از حساب مدل با بالاترین اولویت استفاده کنید، سپس پس از خرابی یا دوره خنک‌سازی به حساب بعدی موجود تغییر دهید.', + maxConcurrency: 'حداکثر هم‌روندی', + queueSize: 'اندازه صف', + queueTimeoutSeconds: 'مهلت انتظار در صف (ثانیه)', + requestTimeoutSeconds: 'مهلت درخواست غیر جریانی (ثانیه)', + streamIdleTimeoutSeconds: 'مهلت بیکاری جریان (ثانیه)', + maxBodyMb: 'حداکثر اندازه بدنه (MB)', + runtimeRefreshSeconds: 'فاصله بازخوانی زمان اجرا (ثانیه)', + usageRetentionDays: 'مدت نگهداری آمار استفاده (روز)', + contentAuditRetentionDays: 'مدت نگهداری حسابرسی انطباق محتوا (روز)', + logCleanupIntervalHours: 'فاصله پاک‌سازی لاگ (ساعت)', + requestBodyLog: 'لاگ بدنه درخواست', + requestBodyLogIndexPrefix: 'پیشوند ایندکس', + requestBodyLogRetentionDays: 'مدت نگهداری لاگ بدنه درخواست (روز)', + requestBodyLogMaxBodyKb: 'حداکثر اندازه بدنه درخواست (KB)', + requestBody: 'بدنه درخواست', + requestBodySize: 'اندازه بدنه درخواست', + requestBodyTruncated: 'کوتاه شده', + requestBodyHash: 'هش بدنه درخواست', + responseBody: 'بدنه پاسخ', + responseBodySize: 'اندازه بدنه پاسخ', + responseBodyTruncated: 'کوتاه شده', + responseBodyHash: 'هش بدنه پاسخ', + readableContent: 'محتوا قابل خواندن', + rawResponse: 'پاسخ خام', + replyContent: 'محتوا پاسخ', + reasoningContent: 'محتوا استدلال', + statusTitle: 'وضعیت دروازه AI', + serviceEnabled: 'شروع خودکار سرویس', + proxyEnabled: 'دروازه فعال', + statusMessage: 'پیام وضعیت', + esLogDropped: 'لاگ ES حذف شده', + esLogLastSuccessAt: 'آخرین نوشته ES', + esLogCircuitOpen: 'مدار باز', + esLogCircuitUntil: 'مدار ES تا', + serviceOperateConfirm: 'تأیید {0} سرویس دروازه AI؟', + deleteTargetConfirm: 'حذف {0} {1}؟', + deleteBackendTitle: 'حذف حساب مدل', + userFallback: 'کاربر حذف شده (شناسه: {0})', + requestModel: 'مدل درخواست', + upstreamModel: 'مدل بالادست', + requestModelPlaceholder: 'مثلاً qwen2.5-coder', + upstreamModelPlaceholder: 'مثلاً Qwen/Qwen2.5-Coder-32B-Instruct', + addMapping: 'افزودن نگاشت', + overview: 'نمای کلی', + distribution: 'توزیع', + usageTrend: 'روند استفاده', + distributionBy: 'توزیع {0}', + unmatched: 'بدون تطابق', + modelAccount: 'حساب مدل', + serviceProvider: 'ارائه‌دهنده', + tokenUsage: 'استفاده از توکن', + percent: 'درصد', + ranking: 'رتبه‌بندی', + rank: 'رتبه', + promptToken: 'توکن‌های راهنما', + completionToken: 'توکن‌های تکمیل', + totalToken: 'مجموع توکن‌ها', + cachedToken: 'توکن‌های کش شده', + cacheHitRate: 'نرخ برخورد کش', + activeUsers: 'کاربران فعال', + activeModels: 'مدل‌های فعال', + failedRequests: 'درخواست‌های ناموفق', + averageTokenPerRequest: 'میانگین توکن در هر درخواست', + callLogs: 'لاگ‌های فراخوانی', + usageKeywordPlaceholder: 'جستجوی شناسه درخواست / مدل / مدل بالادست / پیام خطا', + attemptChain: 'زنجیره تلاش', + attemptIndex: 'ترتیب فراخوانی', + noAttemptDetails: 'این درخواست یک بار انجام شده است؛ جزئیات خرابی وجود ندارد', + input: 'ورودی', + output: 'خروجی', + total: 'مجموع', + healthHealthy: 'سالم', + healthCooldown: 'در حال خنک‌سازی', + healthUnhealthy: 'ناسالم', + healthDeleted: 'حذف شده', + healthUnknown: 'ناشناخته', + validationModelMapEmpty: 'نام‌های نگاشت مدل نمی‌توانند خالی باشند', + validationModelMapDuplicate: 'مدل درخواست {0} تکراری است', + modelGroup: 'گروه مدل', + availableModels: 'مدل‌های موجود', + modelGroupModels: 'مدل‌های درخواست', + modelGroupModelsPlaceholder: 'نام‌های مدل درخواست را انتخاب یا وارد کنید', + modelGroupModelCount: '{0} مدل', + contentCompliance: 'انطباق محتوا', + contentAction: 'اقدام', + actionBlock: 'مسدود', + actionAuditOnly: 'فقط حسابرسی', + actionDropHistory: 'حذف تاریخچه', + severity: 'شدت', + severityHigh: 'بالا', + severityMedium: 'متوسط', + severityLow: 'پایین', + sensitiveWord: 'کلمه حساس', + sensitiveGroup: 'گروه کلمات حساس', + sensitiveWordCount: 'کلمات', + normalizedWord: 'کلمه نرمال شده', + matchedWords: 'کلمات تطابق یافته', + matchedGroups: 'گروه‌های تطابق یافته', + importResult: 'وارد شد {0}، تکراری {1}، نامعتبر {2}', + auditLogs: 'لاگ‌های حسابرسی', + }, + skillsHub: { + title: 'مرکز مهارت', + skillList: 'لیست مهارت', + serverTab: 'سرور', + upload: 'بارگذاری مهارت', + importSkill: 'واردات مهارت', + repositoryAddress: 'آدرس مخزن', + repositoryGithubOnly: 'فقط آدرس مخزن گیت‌هاب پشتیبانی می‌شود', + repositoryRef: 'شاخه یا برچسب', + repositoryRefPlaceholder: 'پیش‌فرض main، در صورت شکست master را امتحان می‌کند', + repositoryDownloadPreview: 'URL دانلود هدف:', + packageURL: 'آدرس بسته', + packageURLPlaceholder: 'آدرس فایل .zip را وارد کنید', + importSuccess: 'مهارت با موفقیت وارد شد و در انتظار بررسی است.', + source: 'منبع', + applicableAgent: 'عامل قابل اجرا', + riskLevel: 'سطح ریسک', + riskReferenceHint: + 'سطح ریسک به طور خودکار از محتوای بسته مهارت تولید می‌شود و فقط برای مرجع بررسی است.\nکم: هیچ ریسک آشکاری یافت نشد\nمتوسط: اسکریپت، وابستگی‌ها، URL‌های خارجی یا متغیرهای محیطی\nبالا: اجرای از راه دور، اطلاعات حساس یا دستورات خطرناک', + riskCheckResult: 'نتیجه بررسی امنیت', + noRiskFound: 'هیچ ریسک آشکاری یافت نشد.', + riskFilePath: 'مسیر فایل', + riskKeyword: 'کلیدواژه یا قاعده مطابق', + riskDescription: 'توضیح ریسک', + publishHighRiskConfirm: + 'این مهارت دارای موارد پرخطر است و ممکن است شامل اجرای اسکریپت، دانلود خارجی یا دسترسی به اطلاعات حساس باشد. با این حال منتشر شود؟', + approve: 'تأیید', + reject: 'رد', + publish: 'انتشار', + disable: 'لغو انتشار', + customTarget: 'عامل سفارشی', + addCustomTarget: 'افزودن عامل', + installToTarget: 'نصب در عامل سفارشی', + hostSkillDir: 'دایرکتوری مهارت', + hostSkillDirHelper: 'مسیر دایرکتوری مهارت را روی گره وارد کنید.', + installMethod: 'روش نصب', + copy: 'کپی', + extract: 'استخراج', + postInstallCommand: 'دستور پس از نصب', + localSource: 'بارگذاری محلی', + uploadDragTitle: 'یک بسته مهارت را اینجا رها کنید، یا برای بارگذاری کلیک کنید', + uploadFormatLabel: 'فرمت‌ها:', + uploadFormatValue: '.zip, .7z, .tar, .tar.gz', + uploadSizeLabel: 'اندازه فایل:', + uploadSizeValue: 'حداکثر ۵ مگابایت در هر فایل', + uploadRequirementLabel: 'نیاز بسته:', + uploadRequirementPrefix: 'بسته مهارت باید شامل', + onlySupportedArchive: 'فقط بسته‌های مهارت .zip, .7z, .tar, .tar.gz قابل بارگذاری هستند', + uploadSizeExceeded: 'یک بسته مهارت نباید از ۵ مگابایت بیشتر باشد', + uploadSuccess: 'مهارت با موفقیت بارگذاری شد و در انتظار بررسی است.', + offlineNotice: 'محیط فعلی آفلاین است. فقط مهارت‌های فروشگاه محلی مهارت قابل نصب هستند.', + publishConfirm: 'این مهارت منتشر شود؟ مهارت‌های منتشر شده از فروشگاه محلی مهارت قابل نصب هستند.', + disableConfirm: 'انتشار این مهارت لغو شود؟ مهارت‌های نصب شده در عامل‌ها تحت تأثیر قرار نمی‌گیرند.', + deleteConfirm: + 'این مهارت حذف شود؟ این عمل قابل بازگشت نیست. مهارت‌های نصب شده در عامل‌ها تحت تأثیر قرار نمی‌گیرند.', + rejectConfirm: 'بررسی این مهارت رد شود؟ به وضعیت رد شده منتقل می‌شود.', + downloadPublishedOnly: 'فقط بسته‌های مهارت منتشر شده قابل دانلود هستند.', + deleteTargetConfirm: 'این عامل سفارشی حذف شود؟ کاربران دیگر نمی‌توانند آن را انتخاب کنند.', + noInstallTarget: 'هیچ عامل سفارشی در دسترس نیست. ابتدا یک هدف نصب پیکربندی کنید.', + postInstallConfirm: + 'این هدف دارای دستور پس از نصب است. قبل از اجرا مطمئن شوید که دستور قابل اعتماد است.', + serverStatusTitle: 'سرور مرکز مهارت', + serverServiceOperateConfirm: 'آیا مطمئن هستید که می‌خواهید سرور مرکز مهارت را {0} کنید؟', + serverAccessSetting: 'تنظیمات دسترسی سرویس', + serverInfo: 'اطلاعات سرور', + tokenSetting: 'تنظیمات توکن', + externalUrl: 'URL خارجی', + externalUrlRequired: 'ابتدا URL خارجی را وارد کنید.', + skillctlDownloadUrl: 'URL دانلود skillctl', + skillctlArchitecture: 'معماری سرور', + registryUrl: 'URL ثبت‌نامه', + loginCommand: 'دستور ورود', + installCommand: 'دستور نصب', + createToken: 'ایجاد توکن', + tokenCreated: 'توکن ایجاد شد', + tokenVisibleOnce: 'توکن فقط یک بار نشان داده می‌شود. اکنون آن را کپی و ذخیره کنید.', + disableTokenConfirm: 'این توکن غیرفعال شود؟ کلاینت‌های skillctl که از آن استفاده می‌کنند دیگر نمی‌توانند مهارت نصب کنند.', + deleteTokenConfirm: 'این توکن حذف شود؟ این عمل قابل بازگشت نیست.', + status: { + pending: 'در انتظار', + approved: 'تأیید شده', + published: 'منتشر شده', + disabled: 'لغو انتشار', + rejected: 'رد شده', + deleted: 'حذف شده', + }, + agent: { + common: 'عمومی', + }, + risk: { + low: 'کم', + medium: 'متوسط', + high: 'بالا', + }, + riskType: { + script_file: 'فایل اسکریپت', + dependency_manifest: 'بیانیه وابستگی', + external_url: 'URL خارجی', + environment_variable: 'متغیر محیطی', + dockerfile: 'Dockerfile', + command_execution: 'اجرای دستور', + remote_script_execution: 'اجرای اسکریپت از راه دور', + eval_execution: 'اجرای پویا', + base64_execution: 'اجرای پس از کدگشایی Base64', + privileged_command: 'دستور با مجوز بالا', + dangerous_delete: 'حذف خطرناک', + world_writable_permission: 'مجوز پرخطر', + credential: 'مشکوک به اعتبارنامه', + sensitive_path: 'مسیر حساس', + suspicious_download_execute: 'دانلود و اجرای مشکوک', + binary_content: 'محتوای باینری', + scan_truncated: 'اسکن کوتاه شده', + }, + riskDescriptionText: { + script_file: 'شامل فایل‌های اسکریپت است که ممکن است دستورات محلی را اجرا کنند.', + dependency_manifest: + 'شامل بیانیه‌های وابستگی است که ممکن است در حین نصب وابستگی‌های خارجی را دریافت کنند.', + external_url: 'شامل URL‌های خارجی است. تأیید کنید که آدرس‌های خروجی قابل اعتماد هستند.', + environment_variable: 'متغیرهای محیطی را اعلام می‌کند. هدف و مقادیر پیش‌فرض آنها را تأیید کنید.', + dockerfile: 'شامل Dockerfile است که ممکن است منطق ساخت یا اجرای تصویر را تعریف کند.', + command_execution: + 'شامل فراخوانی‌های مربوط به اجرای دستور است. تأیید کنید که منطق اجرا قابل اعتماد است.', + remote_script_execution: 'شامل منطقی است که یک اسکریپت از راه دور را دانلود و مستقیماً اجرا می‌کند.', + eval_execution: 'شامل اجرای پویا از طریق eval است.', + base64_execution: 'شامل منطقی است که محتوا را پس از کدگشایی Base64 اجرا می‌کند.', + privileged_command: 'شامل دستورات sudo با مجوز بالا است.', + dangerous_delete: 'شامل دستورات حذف خطرناک است.', + world_writable_permission: 'شامل تغییر مجوز chmod 777 است.', + credential: 'شامل API Key، Token، Secret یا Password مشکوک است.', + sensitive_path: 'شامل دسترسی به دایرکتوری‌ها یا فایل‌های حساس است.', + suspicious_download_execute: 'شامل دانلود خروجی مشکوک یا منطق دانلود و اجرا است.', + binary_content: 'فایل شامل بایت‌های NUL است و ممکن است محتوای اجرایی یا باینری را پنهان کند.', + scan_truncated: 'فایل از حد اسکن فراتر رفته است. محتوای اسکن نشده همچنان نیاز به بررسی دستی دارد.', + }, + }, + benchmark: { + title: 'معیار سنجش', + launchCommand: 'دستور راه‌اندازی', + retest: 'آزمایش مجدد', + statusRunning: 'در حال اجرا', + statusWaiting: 'در انتظار', + base: 'اطلاعات پایه', + backend: 'بک‌اند', + baseUrl: 'URL پایه', + endpoint: 'نقطه پایانی', + tokenizer: 'توکن‌ساز', + tokenizerPlaceholder: + 'یک دایرکتوری توکن‌ساز محلی را انتخاب یا وارد کنید، مثلاً /opt/1panel/tokenizers/DeepSeek-V3', + runConfig: 'پیکربندی اجرا', + rawResult: 'نتیجه خام', + resultMetrics: 'معیارهای نتیجه', + contextTokens: 'طول زمینه', + contextTokensHelper: 'محدودیت توکن ورودی به اضافه محدودیت توکن خروجی برای این معیار سنجش.', + outputThroughput: 'توان خروجی', + outputThroughputHelper: 'توکن‌های خروجی تولید شده در ثانیه. بیشتر به معنای تولید سریع‌تر است.', + totalThroughput: 'توان کل', + totalThroughputHelper: 'توکن‌های ورودی و خروجی پردازش شده در ثانیه. برای اندازه‌گیری ظرفیت کلی استفاده می‌شود.', + firstTokenLatency: 'تأخیر اولین توکن', + firstTokenLatencyHelper: + 'زمان از ارسال درخواست تا دریافت اولین توکن. کمتر به معنای پاسخ سریع‌تر است.', + tokenValueHelper: 'یک عدد صحیح مثبت یا مقدار k وارد کنید، مثلاً 512، 1k، 32k', + numPrompts: 'راهنماها', + concurrency: 'هم‌روندی', + requestRate: 'نرخ درخواست', + requestRateUnlimited: 'نامحدود (حداکثر توان)', + requestRateCustom: 'QPS سفارشی', + requestRateCustomPlaceholder: 'درخواست در ثانیه، مثلاً 2.5', + successfulRequests: 'درخواست‌های موفق', + requestThroughput: 'توان درخواست', + mean: 'میانگین', + median: 'میانه', + timeout: 'مهلت (ثانیه)', + image: 'تصویر vLLM', + ignoreEos: 'نادیده گرفتن EOS', + extraHeaders: 'هدرهای اضافی', + }, + gpu: { + gpu: 'نظارت بر GPU', + gpuHelper: 'سیستم دستورات NVIDIA-SMI یا XPU-SMI را شناسایی نکرد. لطفاً بررسی و دوباره تلاش کنید!', + process: 'اطلاعات فرآیند', + processCount: 'تعداد فرآیندها', + type: 'نوع', + typeG: 'گرافیک', + typeC: 'محاسباتی', + typeCG: 'محاسباتی+گرافیک', + processName: 'نام فرآیند', + shr: 'حافظه مشترک', + temperatureHelper: 'دمای بالای GPU ممکن است باعث کاهش فرکانس GPU شود', + gpuUtil: 'استفاده از GPU', + temperature: 'دما', + performanceState: 'وضعیت عملکرد', + powerUsage: 'مصرف برق', + memoryUsage: 'استفاده از حافظه', + fanSpeed: 'سرعت فن', + power: 'برق', + powerCurrent: 'برق فعلی', + powerLimit: 'محدودیت برق', + memory: 'حافظه', + memoryUsed: 'حافظه استفاده شده', + memoryTotal: 'حافظه کل', + percent: 'درصد استفاده', + base: 'اطلاعات پایه', + driverVersion: 'نسخه درایور', + cudaVersion: 'نسخه CUDA', + processMemoryUsage: 'استفاده از حافظه', + performanceStateHelper: 'از P0 (حداکثر عملکرد) تا P12 (حداقل عملکرد)', + busID: 'آدرس گذرگاه', + persistenceMode: 'حالت ماندگاری', + enabled: 'فعال', + disabled: 'غیرفعال', + persistenceModeHelper: + 'حالت ماندگاری سریع‌تر به وظایف پاسخ می‌دهد، اما مصرف برق در حالت آماده به کار افزایش می‌یابد', + displayActive: 'راه‌اندازی GPU', + displayActiveT: 'بله', + displayActiveF: 'خیر', + ecc: 'فناوری تصحیح و بررسی خطا', + computeMode: 'حالت محاسبه', + default: 'پیش‌فرض', + exclusiveProcess: 'فرآیند انحصاری', + exclusiveThread: 'رشته انحصاری', + prohibited: 'ممنوع', + defaultHelper: 'پیش‌فرض: فرآیندها می‌توانند به طور همزمان اجرا شوند', + exclusiveProcessHelper: + 'فرآیند انحصاری: فقط یک متن CUDA می‌تواند از GPU استفاده کند، اما می‌تواند توسط چندین رشته به اشتراک گذاشته شود', + exclusiveThreadHelper: 'رشته انحصاری: فقط یک رشته در یک متن CUDA می‌تواند از GPU استفاده کند', + prohibitedHelper: 'ممنوع: اجرای همزمان فرآیند مجاز نیست', + migModeHelper: 'برای ایجاد نمونه‌های MIG استفاده می‌شود و ایزوله‌سازی فیزیکی GPU را در لایه کاربر پیاده‌سازی می‌کند.', + migModeNA: 'پشتیبانی نمی‌شود', + current: 'نظارت بلادرنگ', + history: 'سوابق تاریخی', + notSupport: 'نسخه فعلی یا درایور از نمایش این پارامتر پشتیبانی نمی‌کند.', + }, + mcp: { + server: 'سرور MCP', + baseUrl: 'مسیر دسترسی خارجی', + baseUrlHelper: 'مثلاً: http://192.168.1.2:8000', + ssePath: 'مسیر SSE', + ssePathHelper: 'مثلاً: /sse، توجه کنید که با سایر سرورها تکراری نشود', + environment: 'متغیرهای محیطی', + envKey: 'نام متغیر', + envValue: 'مقدار متغیر', + externalUrl: 'آدرس اتصال خارجی', + operatorHelper: 'عملیات {1} روی {0} انجام خواهد شد، ادامه می‌دهید؟', + domain: 'آدرس دسترسی پیش‌فرض', + domainHelper: 'مثلاً: 192.168.1.1 یا example.com', + bindDomain: 'اتصال وب‌سایت', + commandPlaceHolder: 'در حال حاضر فقط از دستورات راه‌اندازی npx و باینری پشتیبانی می‌شود', + importMcpJson: 'واردات پیکربندی سرور MCP', + importMcpJsonError: 'ساختار mcpServers نادرست است', + bindDomainHelper: + 'پس از اتصال وب‌سایت، آدرس دسترسی همه سرورهای MCP نصب شده را تغییر می‌دهد و دسترسی خارجی به پورت‌ها را می‌بندد', + outputTransport: 'نوع خروجی', + streamableHttpPath: 'مسیر جریانی', + streamableHttpPathHelper: 'مثلاً: /mcp، توجه کنید که با سایر سرورها تکراری نشود', + npxHelper: 'مناسب برای mcp راه‌اندازی شده با npx یا باینری', + uvxHelper: 'مناسب برای mcp راه‌اندازی شده با uvx', + protocolVersion: 'نسخه پروتکل', + protocolVersionHelper: + 'فقط برای Streamable HTTP بدون حالت استفاده می‌شود تا سرور MCP stdio پایین‌دست را به طور خودکار راه‌اندازی کند', + testConnection: 'تست اتصال', + connectionSuccess: 'اتصال با موفقیت برقرار شد', + connectionFailed: 'اتصال ناموفق بود', + }, + tensorRT: { + llm: 'TensorRT LLM', + modelDir: 'دایرکتوری مدل', + commandHelper: + 'در صورت نیاز به دسترسی خارجی، پورت را در دستور به همان پورت برنامه تنظیم کنید', + imageAlert: + 'به دلیل حجم زیاد تصویر، توصیه می‌شود تصویر را به صورت دستی قبل از نصب به سرور دانلود کنید', + modelSpeedup: 'فعال‌سازی شتاب مدل', + modelType: 'نوع مدل', + }, + }, + container: { + createByCommand: 'ایجاد با دستور', + importContainerBackupTip: 'واردات فایل پشتیبان کانتینر، فقط .tar.gz پشتیبانی می‌شود', + importComposeBackupTip: 'واردات فایل پشتیبان compose، فقط .tar.gz پشتیبانی می‌شود', + stopContainerBeforeBackup: 'متوقف کردن کانتینر قبل از پشتیبان‌گیری', + stopComposeBeforeBackup: 'متوقف کردن compose قبل از پشتیبان‌گیری', + stopBeforeBackupHelper: + 'در صورت فعال بودن، کانتینر یا سرویس compose قبل از پشتیبان‌گیری متوقف شده و پس از اتمام به طور خودکار بازیابی می‌شود تا سازگاری داده تضمین شود.', + commandInput: 'ورودی دستور', + commandRule: 'دستور صحیح ایجاد کانتینر docker run را وارد کنید!', + commandHelper: 'این دستور روی سرور اجرا می‌شود تا کانتینر ایجاد شود. ادامه می‌دهید؟', + updateHelper1: 'تشخیص داده شد که این کانتینر از فروشگاه برنامه است. لطفاً به دو نکته زیر توجه کنید:', + updateHelper2: + '۱. تغییرات فعلی به برنامه‌های نصب شده در فروشگاه برنامه همگام‌سازی نمی‌شود.', + updateHelper3: + '۲. اگر برنامه را در صفحه نصب شده ویرایش کنید، محتوای ویرایش شده فعلی بی‌اعتبار می‌شود.', + updateHelper4: 'ویرایش کانتینر نیاز به بازسازی دارد و هر داده غیر پایدار از بین خواهد رفت. ادامه می‌دهید؟', + containerList: 'لیست کانتینرها', + operatorHelper: 'اجرای {0} روی کانتینر زیر. ادامه می‌دهید؟', + operatorAppHelper: 'اجرای "{0}" روی کانتینر(های) زیر. سرویس‌های در حال اجرا ممکن است تحت تأثیر قرار گیرند. ادامه می‌دهید؟', + containerDeleteHelper: + 'تشخیص داده شد که کانتینر از فروشگاه برنامه است. حذف کانتینر آن را به طور کامل از 1Panel حذف نمی‌کند. برای حذف کامل، به فروشگاه برنامه -> "نصب شده" یا "محیط اجرا" بروید. ادامه می‌دهید؟', + start: 'شروع', + stop: 'متوقف کردن', + restart: 'راه‌اندازی مجدد', + kill: 'پایان دادن', + pause: 'مکث', + unpause: 'ادامه', + rename: 'تغییر نام', + remove: 'حذف', + removeAll: 'حذف همه', + containerPrune: 'پاک‌سازی', + containerPruneHelper1: 'این کار همه کانتینرهایی که در حالت متوقف شده هستند را حذف می‌کند.', + containerPruneHelper2: + 'اگر کانتینرها از فروشگاه برنامه هستند، پس از انجام پاک‌سازی، باید به "فروشگاه برنامه -> نصب شده" بروید و روی دکمه "بازسازی" کلیک کنید تا دوباره نصب شوند.', + containerPruneHelper3: 'این عملیات قابل بازگشت نیست. ادامه می‌دهید؟', + imagePrune: 'پاک‌سازی', + imagePruneSome: 'پاک‌سازی بدون برچسب', + imagePruneSomeEmpty: 'هیچ تصویری با برچسب "none" قابل پاک‌سازی نیست.', + imagePruneSomeHelper: 'تصاویر با برچسب "none" که توسط هیچ کانتینری استفاده نمی‌شوند را پاک‌سازی کنید.', + imagePruneAll: 'پاک‌سازی استفاده نشده', + imagePruneAllEmpty: 'هیچ تصویر استفاده نشده‌ای قابل پاک‌سازی نیست.', + imagePruneAllHelper: 'تصاویری که توسط هیچ کانتینری استفاده نمی‌شوند را پاک‌سازی کنید.', + networkPrune: 'پاک‌سازی', + networkPruneHelper: 'این کار همه شبکه‌های استفاده نشده را حذف می‌کند. ادامه می‌دهید؟', + volumePrune: 'پاک‌سازی', + volumePruneHelper: 'این کار همه حجم‌های محلی استفاده نشده را حذف می‌کند. ادامه می‌دهید؟', + cleanSuccess: 'با موفقیت انجام شد، تعداد پاک‌سازی این بار: {0}!', + cleanSuccessWithSpace: + 'با موفقیت انجام شد. تعداد دیسک‌های پاک‌سازی شده این بار {0} است. فضای دیسک آزاد شده {1}!', + unExposedPort: 'آدرس نگاشت پورت فعلی 127.0.0.1 است، نمی‌توان دسترسی خارجی را فعال کرد.', + upTime: 'زمان فعالیت', + fetch: 'دریافت', + lines: 'خطوط', + linesHelper: 'تعداد صحیح خطوط لاگ برای دریافت را وارد کنید!', + downloadLinesHelper: 'تعداد خطوط لاگ را برای دانلود انتخاب یا وارد کنید.', + lastDay: 'روز گذشته', + last4Hour: '۴ ساعت گذشته', + lastHour: 'ساعت گذشته', + last10Min: '۱۰ دقیقه گذشته', + cleanLog: 'پاک‌سازی لاگ', + cleanLogscope: 'نوع پاک‌سازی', + downLogHelper1: 'همه لاگ‌های کانتینر {0} دانلود می‌شوند. ادامه می‌دهید؟', + downLogHelper2: 'آخرین {1} لاگ کانتینر {0} دانلود می‌شود. ادامه می‌دهید؟', + cleanLogHelper: 'این کار نیاز به راه‌اندازی مجدد کانتینر دارد و قابل بازگشت نیست. ادامه می‌دهید؟', + newName: 'نام جدید', + workingDir: 'دایرکتوری کار', + composeFileMissing: 'فایل Compose شناسایی نشد', + source: 'استفاده از منابع', + cpuUsage: 'استفاده از CPU', + cpuTotal: 'کل CPU', + core: 'هسته', + memUsage: 'استفاده از حافظه', + memTotal: 'محدودیت حافظه', + memCache: 'کش حافظه', + loadSize: 'دریافت اندازه کانتینر', + ip: 'آدرس IP', + cpuShare: 'سهم CPU', + cpuShareHelper: + 'موتور کانتینر از مقدار پایه ۱۰۲۴ برای سهم CPU استفاده می‌کند. می‌توانید آن را افزایش دهید تا کانتینر زمان CPU بیشتری دریافت کند.', + inputIpv4: 'مثال: 192.168.1.1', + inputIpv6: 'مثال: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', + diskUsage: 'استفاده از دیسک', + localVolume: 'حجم ذخیره‌سازی محلی', + buildCache: 'کش ساخت', + usage: 'استفاده شده: {0}، قابل آزادسازی: {1}', + clean: 'آزادسازی', + imageClean: 'پاک‌سازی تصاویر همه تصاویر استفاده نشده را حذف می‌کند. این عملیات قابل بازگشت نیست. ادامه می‌دهید؟', + containerClean: + 'پاک‌سازی کانتینرها همه کانتینرهای متوقف شده (از جمله برنامه‌های متوقف شده از فروشگاه برنامه) را حذف می‌کند. این عملیات قابل بازگشت نیست. ادامه می‌دهید؟', + sizeRw: 'اندازه لایه', + sizeRwHelper: 'اندازه لایه قابل نوشتن منحصر به کانتینر', + sizeRootFs: 'اندازه مجازی', + sizeRootFsHelper: 'مجموع اندازه همه لایه‌های تصویر که کانتینر به آن وابسته است + لایه کانتینر', + containerFromAppHelper: + 'تشخیص داده شد که این کانتینر از فروشگاه برنامه است. عملیات برنامه ممکن است باعث بی‌اعتبار شدن ویرایش‌های فعلی شود.', + containerFromAppHelper1: + 'برای ویرایش نام کانتینر، در لیست برنامه‌های نصب شده روی دکمه [پارامتر] کلیک کنید تا وارد صفحه ویرایش شوید.', + command: 'دستور', + console: 'تعامل با کانتینر', + tty: 'اختصاص یک شبه-TTY (-t)', + openStdin: 'حتی در صورت عدم اتصال، STDIN را باز نگه دارید (-i)', + custom: 'سفارشی', + emptyUser: 'در صورت خالی بودن، به عنوان کاربر پیش‌فرض وارد می‌شوید', + privileged: 'مجاز', + privilegedHelper: + 'به کانتینر اجازه می‌دهد تا برخی عملیات مجاز را روی میزبان انجام دهد، که ممکن است خطرات کانتینر را افزایش دهد. با احتیاط استفاده کنید!', + upgradeHelper: 'نام مخزن/نام تصویر: نسخه تصویر', + upgradeWarning2: + 'عملیات ارتقاء نیاز به بازسازی کانتینر دارد، هر داده غیر پایدار از بین خواهد رفت. ادامه می‌دهید؟', + oldImage: 'تصویر فعلی', + sameImageContainer: 'کانتینرهای با تصویر یکسان', + sameImageHelper: 'کانتینرهایی که از یک تصویر استفاده می‌کنند را می‌توان پس از انتخاب به صورت دسته‌ای ارتقاء داد', + targetImage: 'تصویر هدف', + imageLoadErr: 'هیچ نام تصویری برای کانتینر شناسایی نشد', + imageUpdateTagEmpty: 'هیچ برچسب تصویر قابل ارتقاء شناسایی نشد', + appHelper: 'کانتینر از فروشگاه برنامه است و ارتقاء ممکن است سرویس را از دسترس خارج کند.', + resource: 'منبع', + input: 'ورودی دستی', + forcePull: 'همیشه تصویر را دریافت کنید', + forcePullHelper: 'این کار تصاویر موجود روی سرور را نادیده گرفته و آخرین تصویر را از مخزن دریافت می‌کند.', + imageUpdateHelper: 'بررسی برچسب یکسان در مخزن، و در صورت تغییر، تصویر محلی را به‌روزرسانی کنید.', + server: 'میزبان', + serverExample: '80, 80-88, ip:80 یا ip:80-88', + containerExample: '80 یا 80-88', + exposePort: 'نمایش پورت', + exposeAll: 'نمایش همه', + cmdHelper: 'مثال: nginx -g "daemon off;"', + entrypointHelper: 'مثال: docker-entrypoint.sh', + autoRemove: 'حذف خودکار', + cpuQuota: 'تعداد هسته‌های CPU', + memoryLimit: 'حافظه', + limitHelper: 'اگر ۰ تنظیم شود، به معنای بدون محدودیت است. حداکثر مقدار {0} است', + macAddr: 'آدرس MAC', + mount: 'نصب', + volumeOption: 'حجم', + hostOption: 'میزبان', + serverPath: 'مسیر سرور', + containerDir: 'مسیر کانتینر', + volumeHelper: 'اطمینان حاصل کنید که محتوای حجم ذخیره‌سازی صحیح است', + networkEmptyHelper: 'لطفاً انتخاب شبکه کانتینر را تأیید کنید', + modeRW: 'RW', + modeR: 'R', + sharedLabel: 'حالت انتشار', + private: 'خصوصی', + privateHelper: 'تغییرات نصب در کانتینر و میزبان بر یکدیگر تأثیری ندارند', + rprivate: 'خصوصی بازگشتی', + rprivateHelper: 'همه نصب‌های کانتینر کاملاً از میزبان ایزوله هستند', + shared: 'مشترک', + sharedHelper: 'تغییرات نصب در میزبان و کانتینر برای یکدیگر قابل مشاهده است', + rshared: 'مشترک بازگشتی', + rsharedHelper: 'همه تغییرات نصب در میزبان و کانتینر برای یکدیگر قابل مشاهده است', + slave: 'برده', + slaveHelper: 'کانتینر می‌تواند تغییرات نصب میزبان را ببیند، اما تغییرات خود بر میزبان تأثیری نمی‌گذارد', + rslave: 'برده بازگشتی', + rslaveHelper: 'همه نصب‌های کانتینر می‌توانند تغییرات میزبان را ببینند، اما بر میزبان تأثیری نمی‌گذارند', + mode: 'حالت', + env: 'محیط‌ها', + restartPolicy: 'خط مشی راه‌اندازی مجدد', + always: 'همیشه', + unlessStopped: 'مگر اینکه متوقف شده باشد', + onFailure: 'در صورت شکست (به طور پیش‌فرض پنج بار)', + no: 'هرگز', + refreshTime: 'فاصله بازخوانی', + cache: 'کش', + image: 'تصویر | تصاویر', + imagePull: 'دریافت', + imagePullHelper: + 'پشتیبانی از انتخاب چندین تصویر برای دریافت، پس از وارد کردن هر تصویر Enter را فشار دهید تا ادامه دهید', + imagePush: 'ارسال', + imagePushHelper: + 'تشخیص داده شد که این تصویر دارای چندین برچسب است. لطفاً تأیید کنید که نام تصویر مورد استفاده برای ارسال: {0} است', + imageDelete: 'حذف تصویر', + repoName: 'مخزن کانتینر', + imageName: 'نام تصویر', + pull: 'دریافت', + path: 'مسیر', + importImage: 'واردات', + buildArgs: 'آرگومان‌های ساخت', + imageBuild: 'ساخت', + pathSelect: 'مسیر', + label: 'برچسب', + imageTag: 'برچسب تصویر', + imageTagHelper: 'پشتیبانی از تنظیم چندین برچسب تصویر، پس از وارد کردن هر برچسب Enter را فشار دهید', + push: 'ارسال', + fileName: 'نام فایل', + export: 'خروجی', + exportImage: 'خروجی تصویر', + size: 'اندازه', + tag: 'برچسب‌ها', + tagHelper: 'هر خط یک برچسب. مثلاً،\nkey1=value1\nkey2=value2', + imageNameHelper: 'نام تصویر و برچسب، مثلاً: nginx:latest', + cleanBuildCache: 'پاک‌سازی کش ساخت', + delBuildCacheHelper: + 'این کار همه مصنوعات کش شده که در حین ساخت تولید می‌شوند را حذف می‌کند و قابل بازگشت نیست. ادامه می‌دهید؟', + urlWarning: 'پیشوند URL نیازی به شامل http:// یا https:// ندارد. لطفاً اصلاح کنید.', + network: 'شبکه | شبکه‌ها', + networkHelper: 'این ممکن است باعث شود برخی برنامه‌ها و محیط‌های اجرایی به درستی کار نکنند. ادامه می‌دهید؟', + networkName: 'نام', + driver: 'درایور', + option: 'گزینه', + attachable: 'قابل اتصال', + parentNetworkCard: 'کارت شبکه والد', + subnet: 'زیرشبکه', + scope: 'محدوده IP', + gateway: 'دروازه', + auxAddress: 'حذف IP', + volume: 'حجم | حجم‌ها', + volumeDir: 'دایرکتوری حجم', + nfsEnable: 'فعال‌سازی ذخیره‌سازی NFS', + nfsAddress: 'آدرس', + mountpoint: 'نقطه اتصال', + mountpointNFSHelper: 'مثلاً /nfs، /nfs-share', + options: 'گزینه‌ها', + repo: 'مخزن | مخازن', + httpRepoHelper: 'عملیات روی مخزن از نوع HTTP نیاز به راه‌اندازی مجدد سرویس Docker دارد.', + httpRepo: 'انتخاب پروتکل HTTP نیاز به راه‌اندازی مجدد سرویس Docker برای افزودن به مخازن ناامن دارد.', + delInsecure: 'حذف اعتبار', + delInsecureHelper: 'این کار سرویس Docker را مجدداً راه‌اندازی می‌کند تا از مخازن ناامن حذف شود. ادامه می‌دهید؟', + downloadUrl: 'سرور', + imageRepo: 'مخزن تصویر', + repoHelper: 'آیا شامل مخزن/سازمان/پروژه آینه است؟', + auth: 'نیاز به احراز هویت', + mirrorHelper: + 'در صورت وجود چندین آینه، باید با خطوط جدید نمایش داده شوند، مثلاً:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', + registrieHelper: + 'در صورت وجود چندین مخزن خصوصی، باید با خطوط جدید نمایش داده شوند، مثلاً:\n172.16.10.111:8081 \n172.16.10.112:8081', + compose: 'Compose | Compose‌ها', + composeFile: 'فایل Compose', + fromChangeHelper: 'تغییر منبع محتوای ویرایش شده فعلی را پاک می‌کند. ادامه می‌دهید؟', + composePathHelper: 'مسیر ذخیره فایل پیکربندی: {0}', + composeHelper: + 'ترکیب ایجاد شده از طریق ویرایشگر یا قالب 1Panel در دایرکتوری {0}/docker/compose ذخیره می‌شود.', + deleteFile: 'حذف فایل', + deleteComposeHelper: + 'همه فایل‌های مربوط به compose کانتینر، از جمله فایل‌های پیکربندی و فایل‌های پایدار را حذف می‌کند. لطفاً با احتیاط ادامه دهید!', + deleteCompose: '" این ترکیب را حذف کنید.', + composeDirectory: 'دایرکتوری Compose', + template: 'قالب', + composeTemplate: 'قالب Compose | قالب‌های Compose', + content: 'محتوا', + contentEmpty: 'محتوای Compose نمی‌تواند خالی باشد، وارد کنید و دوباره تلاش کنید!', + containerNumber: 'تعداد کانتینر', + containerStatus: 'وضعیت کانتینر', + exited: 'خارج شده', + running: 'در حال اجرا ( {0} / {1} )', + composeDetailHelper: + 'این compose خارج از 1Panel ایجاد شده است. عملیات شروع و توقف پشتیبانی نمی‌شوند.', + composeOperatorHelper: 'عملیات {1} روی {0} انجام خواهد شد. ادامه می‌دهید؟', + composeDownHelper: 'این کار همه کانتینرها و شبکه‌های زیر compose {0} را متوقف و حذف می‌کند. ادامه می‌دهید؟', + composeEnvHelper2: + 'این ارکستراسیون توسط فروشگاه برنامه 1Panel ایجاد شده است. لطفاً متغیرهای محیطی را در برنامه‌های نصب شده تغییر دهید.', + composeContentPlaceholder: 'محتوای فایل docker-compose خود را اینجا بنویسید یا بچسبانید', + + setting: 'تنظیمات | تنظیمات', + goSetting: 'رفتن به تنظیمات', + restartHelper: 'تغییرات پیکربندی نیاز به راه‌اندازی مجدد سرویس Docker برای اعمال دارند', + operatorStatusHelper: 'سرویس Docker "{0}" خواهد شد. ادامه می‌دهید؟', + dockerStatus: 'سرویس Docker', + daemonJsonPathHelper: 'اطمینان حاصل کنید که مسیر پیکربندی با مسیر مشخص شده در docker.service یکسان است.', + mirrors: 'آینه‌های مخزن', + mirrorsHelper: '', + mirrorsHelper2: 'برای جزئیات، به مستندات رسمی مراجعه کنید.', + registries: 'مخازن ناامن', + ipv6Helper: + 'هنگام فعال‌سازی IPv6، باید یک شبکه کانتینر IPv6 اضافه کنید. برای مراحل پیکربندی خاص به مستندات رسمی مراجعه کنید.', + ipv6CidrHelper: 'محدوده آدرس IPv6 برای کانتینرها', + ipv6TablesHelper: 'پیکربندی خودکار IPv6 Docker برای قوانین iptables.', + experimentalHelper: + 'فعال‌سازی ip6tables نیاز به روشن بودن این پیکربندی دارد؛ در غیر این صورت ip6tables نادیده گرفته می‌شود', + cutLog: 'گزینه لاگ', + cutLogHelper1: 'پیکربندی فعلی فقط بر کانتینرهای تازه ایجاد شده تأثیر می‌گذارد.', + cutLogHelper2: 'کانتینرهای موجود باید برای اعمال پیکربندی مجدداً ایجاد شوند.', + cutLogHelper3: + 'لطفاً توجه داشته باشید که بازآفرینی کانتینرها ممکن است منجر به از دست رفتن داده شود. اگر کانتینرهای شما حاوی داده‌های مهم هستند، قبل از انجام عملیات بازسازی حتماً پشتیبان‌گیری کنید.', + maxSize: 'حداکثر اندازه', + maxFile: 'حداکثر فایل', + liveHelper: + 'به‌طور پیش‌فرض، وقتی دیمون Docker خاتمه می‌یابد، کانتینرهای در حال اجرا را خاموش می‌کند. می‌توانید دیمون را پیکربندی کنید تا در صورت در دسترس نبودن دیمون، کانتینرها در حال اجرا باقی بمانند. این قابلیت بازیابی زنده نامیده می‌شود. گزینه بازیابی زنده به کاهش زمان توقف کانتینر به دلیل خرابی دیمون، قطعی برنامه‌ریزی شده یا ارتقاء کمک می‌کند.', + liveWithSwarmHelper: 'پیکربندی دیمون live-restore با حالت swarm ناسازگار است.', + iptablesDisable: 'غیرفعال‌سازی iptables', + iptablesHelper1: 'پیکربندی خودکار قوانین iptables برای Docker.', + iptablesHelper2: + 'غیرفعال‌سازی iptables باعث می‌شود کانتینرها نتوانند با شبکه‌های خارجی ارتباط برقرار کنند.', + daemonJsonPath: 'مسیر پیکربندی', + serviceUnavailable: 'سرویس Docker در حال حاضر راه‌اندازی نشده است.', + startIn: ' برای شروع', + sockPath: 'سوکت دامنه یونیکس', + sockPathHelper: 'کانال ارتباطی بین دیمون Docker و کلاینت.', + sockPathHelper1: 'مسیر پیش‌فرض: /var/run/docker-x.sock', + sockPathMsg: 'ذخیره مسیر سوکت ممکن است Docker را غیرقابل دسترس کند. ادامه می‌دهید؟', + sockPathErr: 'مسیر فایل سوکت Docker صحیح را انتخاب یا وارد کنید', + related: 'مرتبط', + includeAppstore: 'نمایش کانتینرهای فروشگاه برنامه', + excludeAppstore: 'مخفی کردن کانتینرهای فروشگاه برنامه', + cleanDockerDiskZone: 'پاک‌سازی فضای دیسک استفاده شده توسط Docker', + cleanImagesHelper: '( پاک‌سازی همه تصاویری که توسط هیچ کانتینری استفاده نمی‌شوند )', + cleanContainersHelper: '( پاک‌سازی همه کانتینرهای متوقف شده )', + cleanVolumesHelper: '( پاک‌سازی همه حجم‌های محلی استفاده نشده )', + makeImage: 'ایجاد تصویر', + newImageName: 'نام تصویر جدید', + commitMessage: 'پیام commit', + author: 'نویسنده', + ifPause: 'مکث کانتینر در حین ایجاد', + ifMakeImageWithContainer: 'آیا تصویر جدیدی از این کانتینر ایجاد شود؟', + finishTime: 'آخرین زمان توقف', + exportHelper: 'تصاویر انتخاب شده را در یک فایل tar صادر کنید.', + }, + cronjob: { + importHelper: + 'وظایف زمان‌بندی تکراری به طور خودکار در هنگام واردات رد می‌شوند. وظایف به طور پیش‌فرض روی وضعیت [غیرفعال] تنظیم می‌شوند و در صورت غیرعادی بودن ارتباط داده، به وضعیت [در انتظار ویرایش] تغییر می‌یابند.', + changeStatus: 'تغییر وضعیت', + disableMsg: 'این کار از اجرای خودکار وظیفه زمان‌بندی جلوگیری می‌کند. ادامه می‌دهید؟', + enableMsg: 'این کار به وظیفه زمان‌بندی اجازه می‌دهد به طور خودکار اجرا شود. ادامه می‌دهید؟', + taskType: 'نوع', + nextTime: '۵ اجرای بعدی', + record: 'رکوردها', + viewRecords: 'مشاهده رکوردها', + shell: 'اسکریپت شل', + stop: 'توقف دستی', + stopHelper: 'این عملیات اجرای فعلی وظیفه را به زور متوقف می‌کند. ادامه می‌دهید؟', + log: 'پشتیبان‌گیری از لاگ‌ها', + logHelper: 'پشتیبان‌گیری از لاگ سیستم', + logHelper1: '۱. لاگ سیستم 1Panel', + logHelper2: '۲. لاگ ورود SSH سرور', + logHelper3: '۳. همه لاگ‌های وب‌سایت', + containerCheckBox: 'در کانتینر (نیازی به وارد کردن دستور کانتینر نیست)', + containerName: 'نام کانتینر', + ntp: 'همگام‌سازی زمان', + ntp_helper: 'می‌توانید سرور NTP را در صفحه تنظیمات سریع جعبه ابزار پیکربندی کنید.', + app: 'پشتیبان‌گیری از برنامه', + website: 'پشتیبان‌گیری از وب‌سایت', + rulesHelper: + 'هنگامی که چندین قانون حذف فشرده‌سازی وجود دارد، باید با خطوط جدید نمایش داده شوند. مثلاً،\n*.log \n*.sql', + lastRecordTime: 'آخرین زمان اجرا', + all: 'همه', + failedRecord: 'رکوردهای ناموفق', + successRecord: 'رکوردهای موفق', + database: 'پشتیبان‌گیری از پایگاه داده', + backupArgs: 'آرگومان‌های پشتیبان‌گیری', + backupArgsHelper: + 'آرگومان‌های پشتیبان‌گیری که در لیست نیستند را می‌توان به صورت دستی وارد و انتخاب کرد. مثلاً: --no-data را وارد کرده و اولین گزینه را از لیست کشویی انتخاب کنید.', + singleTransaction: 'پشتیبان‌گیری از جداول InnoDB با استفاده از یک تراکنش واحد، مناسب برای پشتیبان‌گیری داده‌های حجیم', + quick: 'خواندن داده‌ها سطر به سطر به جای بارگذاری کل جدول در حافظه، مناسب برای پشتیبان‌گیری داده‌های حجیم و ماشین‌های با حافظه کم', + skipLockTables: 'پشتیبان‌گیری بدون قفل کردن همه جداول، مناسب برای پایگاه‌های داده با هم‌روندی بالا', + missBackupAccount: 'حساب پشتیبان پیدا نشد', + syncDate: 'زمان همگام‌سازی', + clean: 'پاک‌سازی کش', + curl: 'دسترسی به URL', + taskName: 'نام', + cronSpec: 'چرخه اجرا', + cronSpecDoc: + 'چرخه‌های اجرای سفارشی فقط از فرمت [دقیقه ساعت روز ماه هفته] پشتیبانی می‌کنند، مثلاً 0 0 * * *. برای جزئیات به مستندات رسمی مراجعه کنید.', + cronSpecHelper: 'دوره اجرای صحیح را وارد کنید', + cleanHelper: 'این عمل همه اجرای وظایف، فایل‌های پشتیبان و فایل‌های لاگ را ثبت می‌کند. ادامه می‌دهید؟', + backupContent: 'محتوای پشتیبان', + directory: 'دایرکتوری پشتیبان', + sourceDir: 'دایرکتوری پشتیبان', + snapshot: 'تصویر لحظه‌ای سیستم', + allOptionHelper: + 'وظیفه زمان‌بندی فعلی برای پشتیبان‌گیری از همه [{0}] است. در حال حاضر دانلود مستقیم پشتیبانی نمی‌شود. می‌توانید لیست پشتیبان‌های منوی [{0}] را بررسی کنید.', + exclusionRules: 'قوانین حذف', + exclusionRulesHelper: + 'قوانین حذف را انتخاب یا وارد کنید، پس از هر مجموعه Enter را فشار دهید. قوانین حذف برای همه عملیات فشرده‌سازی این پشتیبان اعمال می‌شود', + default_download_path: 'لینک دانلود پیش‌فرض', + saveLocal: 'نگهداری پشتیبان‌های محلی (به تعداد کپی‌های ذخیره‌سازی ابری)', + url: 'آدرس URL', + urlHelper: 'یک آدرس URL معتبر وارد کنید', + targetHelper: 'حساب‌های پشتیبان در تنظیمات پنل نگهداری می‌شوند.', + withImageHelper: 'پشتیبان‌گیری از تصاویر فروشگاه برنامه، اما این کار اندازه فایل تصویر لحظه‌ای را افزایش می‌دهد.', + ignoreApp: 'رد کردن برنامه‌ها', + withImage: 'پشتیبان‌گیری از تصویر برنامه', + retainCopies: 'نگهداری رکوردها', + retryTimes: 'تعداد تلاش مجدد', + timeout: 'مهلت', + ignoreErr: 'نادیده گرفتن خطاها', + ignoreErrHelper: 'نادیده گرفتن خطاها در حین پشتیبان‌گیری برای اطمینان از تکمیل همه وظایف پشتیبان', + retryTimesHelper: '۰ به معنای بدون تلاش مجدد پس از شکست', + retainCopiesHelper: 'تعداد کپی‌های نگهداری شده برای رکوردهای اجرا و لاگ‌ها', + retainCopiesHelper1: 'تعداد کپی‌های نگهداری شده برای فایل‌های پشتیبان', + retainCopiesUnit: ' کپی (مشاهده)', + cronSpecRule: 'فرمت دوره اجرا در خط {0} نادرست است. لطفاً بررسی و دوباره تلاش کنید!', + cronSpecRule2: 'فرمت دوره اجرا نادرست است، بررسی و دوباره تلاش کنید!', + perMonthHelper: 'اجرا در روز {0} هر ماه در ساعت {1}:{2}', + perWeekHelper: 'اجرا هر هفته در {0} ساعت {1}:{2}', + perDayHelper: 'اجرا هر روز در ساعت {0}:{1}', + perHourHelper: 'اجرا هر ساعت در دقیقه {0}', + perNDayHelper: 'اجرا هر {0} روز در ساعت {1}:{2}', + perNHourHelper: 'اجرا هر {0} ساعت در {1}', + perNMinuteHelper: 'اجرا هر {0} دقیقه', + perNSecondHelper: 'اجرا هر {0} ثانیه', + perMonth: 'هر ماه', + perWeek: 'هر هفته', + perHour: 'هر ساعت', + perNDay: 'هر N روز', + perDay: 'هر روز', + perNHour: 'هر N ساعت', + perNMinute: 'هر N دقیقه', + perNSecond: 'هر N ثانیه', + day: 'روز', + monday: 'دوشنبه', + tuesday: 'سه‌شنبه', + wednesday: 'چهارشنبه', + thursday: 'پنج‌شنبه', + friday: 'جمعه', + saturday: 'شنبه', + sunday: 'یک‌شنبه', + shellContent: 'اسکریپت', + executor: 'اجراکننده', + errRecord: 'ثبت اشتباه', + errHandle: 'شکست در اجرای وظیفه زمان‌بندی', + noRecord: 'وظیفه زمان‌بندی را اجرا کنید تا رکوردها را در اینجا مشاهده کنید.', + cleanData: 'پاک‌سازی داده', + cleanRemoteData: 'حذف داده از راه دور', + cleanDataHelper: 'فایل پشتیبان تولید شده در این وظیفه را حذف کنید.', + noLogs: 'هنوز خروجی وظیفه‌ای وجود ندارد...', + errPath: 'خطا در مسیر پشتیبان [{0}]، نمی‌توان دانلود کرد!', + cutWebsiteLog: 'چرخش لاگ وب‌سایت', + cutWebsiteLogHelper: 'فایل‌های لاگ چرخش یافته به دایرکتوری پشتیبان 1Panel پشتیبان‌گیری می‌شوند.', + syncIpGroup: 'همگام‌سازی گروه‌های IP WAF', + requestExpirationTime: 'زمان انقضای درخواست بارگذاری (ساعت)', + unitHours: 'واحد: ساعت', + alertTitle: 'وظیفه زمان‌بندی - {0} «{1}» هشدار شکست وظیفه', + library: { + script: 'اسکریپت', + syncNow: 'همگام‌سازی اکنون', + turnOnSync: 'فعال‌سازی همگام‌سازی خودکار', + turnOnSyncHelper: + 'فعال‌سازی همگام‌سازی خودکار، همگام‌سازی را در ساعات اولیه صبح به صورت روزانه انجام می‌دهد', + turnOffSync: 'غیرفعال‌سازی همگام‌سازی خودکار', + turnOffSyncHelper: 'غیرفعال‌سازی همگام‌سازی خودکار ممکن است باعث تأخیر در همگام‌سازی اسکریپت شود، تأیید می‌کنید؟', + isInteractive: 'تعاملی', + interactive: 'اسکریپت تعاملی', + interactiveHelper: 'نیاز به ورودی کاربر در حین اجرا دارد و نمی‌تواند در وظایف زمان‌بندی استفاده شود.', + library: 'کتابخانه اسکریپت', + remoteLibrary: 'کتابخانه اسکریپت از راه دور', + create: 'افزودن اسکریپت', + edit: 'ویرایش اسکریپت', + groupHelper: + 'گروه‌های مختلف بر اساس ویژگی‌های اسکریپت تنظیم کنید که امکان عملیات فیلتر سریع‌تر اسکریپت را فراهم می‌کند.', + handleHelper: 'اجرای اسکریپت {1} روی {0}، ادامه می‌دهید؟', + noSuchApp: 'سرویس {0} شناسایی نشد. لطفاً ابتدا با استفاده از کتابخانه اسکریپت آن را سریعاً نصب کنید!', + syncHelper: 'در حال همگام‌سازی کتابخانه اسکریپت سیستم. این عملیات فقط اسکریپت‌های سیستم را تحت تأثیر قرار می‌دهد. ادامه می‌دهید؟', + }, + cleanLog: 'پاک‌سازی خودکار لاگ', + cleanLogscope: 'نگهداری لاگ', + }, + monitor: { + globalFilter: 'فیلتر جهانی', + enableMonitor: 'وضعیت نظارت', + storeDays: 'روزهای نگهداری', + defaultNetwork: 'کارت شبکه پیش‌فرض', + defaultNetworkHelper: 'گزینه کارت شبکه پیش‌فرض که در رابط‌های نظارت و نمای کلی نمایش داده می‌شود', + defaultIO: 'دیسک پیش‌فرض', + defaultIOHelper: 'گزینه دیسک پیش‌فرض که در رابط‌های نظارت و نمای کلی نمایش داده می‌شود', + cleanMonitor: 'پاک‌سازی رکوردهای نظارت', + cleanHelper: 'این عملیات همه رکوردهای نظارت از جمله GPU را پاک می‌کند. ادامه می‌دهید؟', + avgLoad: 'میانگین بار', + loadDetail: 'جزئیات بار', + resourceUsage: 'استفاده از منابع', + networkCard: 'رابط شبکه', + read: 'خواندن', + write: 'نوشتن', + readWriteCount: 'عملیات I/O', + readWriteTime: 'تأخیر I/O', + today: 'امروز', + yesterday: 'دیروز', + lastNDay: 'آخرین {0} روز', + lastNMonth: 'آخرین {0} ماه', + lastHalfYear: 'نیم سال گذشته', + memory: 'حافظه', + percent: 'درصد', + cache: 'کش', + disk: 'دیسک', + network: 'شبکه', + up: 'بالا', + down: 'پایین', + interval: 'فاصله جمع‌آوری', + intervalHelper: 'فاصله جمع‌آوری نظارت مناسب را وارد کنید (۱۰ ثانیه - ۱۲ ساعت)', + }, + terminal: { + local: 'محلی', + defaultConn: 'اتصال پیش‌فرض', + defaultConnHelper: + 'این عملیات پس از باز کردن ترمینال برای 【{0}】 به طور خودکار به ترمینال گره متصل می‌شود. ادامه می‌دهید؟', + withReset: 'بازنشانی اطلاعات اتصال', + localConnJump: + 'اطلاعات اتصال پیش‌فرض در [ترمینال - تنظیمات] نگهداری می‌شود. در صورت شکست اتصال، لطفاً در آنجا ویرایش کنید!', + nodeAdminLocalOnly: 'مدیران گره فقط از ترمینال محلی پشتیبانی می‌کنند.', + localHelper: 'نام `local` فقط برای شناسایی محلی سیستم استفاده می‌شود', + connLocalErr: 'امکان احراز هویت خودکار وجود ندارد، اطلاعات ورود به سرور محلی را پر کنید.', + testConn: 'تست اتصال', + saveAndConn: 'ذخیره و اتصال', + connTestOk: 'اطلاعات اتصال در دسترس است', + connTestFailed: 'اتصال در دسترس نیست، لطفاً اطلاعات اتصال را بررسی کنید.', + host: 'میزبان | میزبان‌ها', + createConn: 'اتصال جدید', + noHost: 'هیچ میزبان', + groupChange: 'تغییر گروه', + expand: 'باز کردن همه', + fold: 'جمع کردن همه', + batchInput: 'پردازش دسته‌ای', + quickCommand: 'دستور سریع | دستورات سریع', + noSuchCommand: 'هیچ داده دستور سریعی در فایل CSV وارد شده یافت نشد، بررسی و دوباره تلاش کنید!', + quickCommandHelper: 'می‌توانید از دستورات سریع در پایین "ترمینال‌ها -> ترمینال‌ها" استفاده کنید.', + quickCommandBatchHelper: + 'هر خط یک دستور سریع، با فرمت Name---Command، مثلاً: بررسی دیسک---df -h', + groupDeleteHelper: + 'پس از حذف گروه، همه اتصالات موجود در گروه به گروه پیش‌فرض منتقل می‌شوند. ادامه می‌دهید؟', + command: 'دستور', + quickCmd: 'دستور سریع', + addHost: 'افزودن', + localhost: 'میزبان محلی', + ip: 'آدرس', + authMode: 'حالت احراز هویت', + passwordMode: 'رمز عبور', + rememberPassword: 'ذخیره اطلاعات احراز هویت', + keyMode: 'کلید خصوصی', + key: 'کلید خصوصی', + keyPassword: 'رمز عبور کلید خصوصی', + emptyTerminal: 'در حال حاضر هیچ ترمینالی متصل نیست.', + lineHeight: 'ارتفاع خط', + letterSpacing: 'فاصله بین حروف', + fontSize: 'اندازه قلم', + fontFamily: 'مجموعه قلم', + fontFamilySupportHelper: + 'قلم‌ها را انتخاب یا وارد کنید. رندرینگ واقعی به قلم‌های نصب شده در سیستم عامل/مرورگر مشتری بستگی دارد. در صورت خالی بودن، از قلم پیش‌فرض استفاده می‌شود.', + backgroundColor: 'رنگ پس‌زمینه', + foregroundColor: 'رنگ پیش‌زمینه', + cursorBlink: 'چشمک زدن مکان‌نما', + cursorStyle: 'سبک مکان‌نما', + cursorUnderline: 'زیرخط', + cursorBlock: 'بلوک', + cursorBar: 'نوار', + scrollback: 'بازگشت اسکرول', + scrollSensitivity: 'حساسیت اسکرول', + aiAssistant: 'دستیار هوش مصنوعی', + aiAccountHelper: + 'از حساب مدل انتخاب شده برای تولید و پر کردن دستورات استفاده کنید. برای مدل‌های محلی مانند Ollama و vLLM، از یک حساب مدل سفارشی استفاده کنید.', + aiPrefix: 'پیشوند محرک', + aiPrefixHelper: + '"{0} + space" را وارد کرده و Enter را بزنید تا تولید دستور AI فعال شود، مثلاً: {0} کمک کن استفاده از دیسک را بررسی کنم.', + aiRiskCommands: 'راه‌اندازی دستورات پرخطر', + aiRiskCommandsHelper: + 'دستورات پرخطر را برای راه‌اندازی پیکربندی کنید، هر خط یک دستور. در صورت تطابق، تولید مسدود شده و به عنوان نظر بازگردانده می‌شود.', + aiSummary: 'وقتی خطی با پیشوند {0} شروع شود و Enter را بزنید، تولید دستور AI فعال می‌شود.', + aiPrefixAsciiVisible: + 'فقط کاراکترهای قابل مشاهده ASCII پشتیبانی می‌شوند. فاصله، کاراکترهای CJK و نمادهای تمام‌عرض مجاز نیستند.', + saveHelper: 'آیا مطمئن هستید که می‌خواهید پیکربندی ترمینال فعلی را ذخیره کنید؟', + }, + toolbox: { + common: { + toolboxHelper: 'برای برخی از مشکلات نصب و استفاده، به', + }, + swap: { + swap: 'پارتیشن Swap', + swapHelper1: + 'اندازه swap باید ۱ تا ۲ برابر حافظه فیزیکی باشد، با توجه به نیازهای خاص قابل تنظیم است؛', + swapHelper2: + 'قبل از ایجاد فایل swap، اطمینان حاصل کنید که دیسک سیستم فضای کافی در دسترس دارد، زیرا اندازه فایل swap فضای دیسک متناظر را اشغال می‌کند؛', + swapHelper3: + 'Swap می‌تواند به کاهش فشار حافظه کمک کند، اما فقط یک جایگزین است. اتکای بیش از حد به swap ممکن است منجر به کاهش عملکرد سیستم شود. توصیه می‌شود در وهله اول حافظه را افزایش دهید یا استفاده از حافظه برنامه را بهینه کنید؛', + swapHelper4: 'توصیه می‌شود به طور منظم استفاده از swap را نظارت کنید تا عملکرد عادی سیستم تضمین شود.', + swapDeleteHelper: + 'این عملیات پارتیشن Swap {0} را حذف می‌کند. به دلایل امنیتی سیستم، فایل مربوطه به طور خودکار حذف نمی‌شود. در صورت نیاز به حذف، لطفاً به صورت دستی اقدام کنید!', + saveHelper: 'لطفاً ابتدا تنظیمات فعلی را ذخیره کنید!', + saveSwap: 'ذخیره پیکربندی فعلی اندازه پارتیشن Swap {0} را به {1} تنظیم می‌کند. ادامه می‌دهید؟', + swapMin: 'حداقل اندازه پارتیشن ۴۰ کیلوبایت است. لطفاً اصلاح و دوباره تلاش کنید!', + swapMax: 'حداکثر مقدار اندازه پارتیشن {0} است. لطفاً اصلاح و دوباره تلاش کنید!', + swapOff: 'حداقل اندازه پارتیشن ۴۰ کیلوبایت است. تنظیم آن روی ۰ پارتیشن Swap را غیرفعال می‌کند.', + }, + device: { + dnsHelper: 'سرور DNS', + dnsAlert: + 'توجه! تغییر پیکربندی فایل /etc/resolv.conf پس از راه‌اندازی مجدد سیستم، فایل را به مقادیر پیش‌فرض بازمی‌گرداند.', + dnsHelper1: + 'هنگامی که چندین ورودی DNS وجود دارد، باید در خطوط جدید نمایش داده شوند. مثلاً\n114.114.114.114\n8.8.8.8', + hostsHelper: 'تفکیک نام میزبان', + hosts: 'دامنه', + hostAlert: 'رکوردهای توضیح‌دار مخفی شده، برای مشاهده یا تنظیم روی دکمه همه پیکربندی کلیک کنید', + toolbox: 'تنظیمات سریع', + hostname: 'نام میزبان', + passwd: 'رمز عبور سیستم', + passwdHelper: 'کاراکترهای ورودی نمی‌توانند شامل $ و & باشند', + timeZone: 'منطقه زمانی سیستم', + localTime: 'زمان سرور', + timeZoneChangeHelper: 'تغییر منطقه زمانی سیستم نیاز به راه‌اندازی مجدد سرویس دارد. ادامه می‌دهید؟', + timeZoneHelper: + 'اگر دستور "timedatectl" را نصب نکرده‌اید، ممکن است نتوانید منطقه زمانی را تغییر دهید. زیرا سیستم از آن دستور برای تغییر منطقه زمانی استفاده می‌کند.', + timeZoneCN: 'پکن', + timeZoneAM: 'لس آنجلس', + timeZoneNY: 'نیویورک', + ntpALi: 'علی بابا', + ntpGoogle: 'گوگل', + syncSite: 'سرور NTP', + hostnameHelper: + 'تغییر نام میزبان به دستور "hostnamectl" وابسته است. اگر دستور نصب نشده باشد، تغییر ممکن است ناموفق باشد.', + userHelper: + 'نام کاربری به دستور "whoami" برای بازیابی وابسته است. اگر دستور نصب نشده باشد، بازیابی ممکن است ناموفق باشد.', + passwordHelper: + 'تغییر رمز عبور به دستور "chpasswd" وابسته است. اگر دستور نصب نشده باشد، تغییر ممکن است ناموفق باشد.', + hostHelper: + 'یک مقدار خالی در محتوای ارائه شده وجود دارد. لطفاً بررسی و پس از اصلاح دوباره تلاش کنید!', + dnsCheck: 'تست در دسترس بودن', + dnsOK: 'اطلاعات پیکربندی DNS در دسترس است!', + dnsTestFailed: 'اطلاعات پیکربندی DNS در دسترس نیست.', + syncSiteHelper: 'همگام‌سازی زمان سیستم با {0}. ادامه می‌دهید؟', + }, + fail2ban: { + sshPort: 'شنود پورت SSH', + sshPortHelper: 'Fail2ban فعلی به پورت اتصال SSH میزبان گوش می‌دهد', + unActive: 'سرویس Fail2ban در حال حاضر فعال نیست.', + operation: 'شما عملیات "{0}" را روی سرویس Fail2ban انجام خواهید داد. ادامه می‌دهید؟', + fail2banChange: 'تغییر پیکربندی Fail2ban', + ignoreHelper: 'لیست IP‌های موجود در لیست سفید برای مسدودسازی نادیده گرفته می‌شوند. ادامه می‌دهید؟', + bannedHelper: 'لیست IP‌های موجود در لیست سیاه توسط سرور مسدود خواهند شد. ادامه می‌دهید؟', + maxRetry: 'حداکثر تلاش مجدد', + banTime: 'زمان مسدودسازی', + banTimeHelper: 'زمان مسدودسازی پیش‌فرض ۱۰ دقیقه است، -۱ به معنای مسدودسازی دائمی است', + banTimeRule: 'زمان مسدودسازی معتبر یا -1 را وارد کنید', + banAllTime: 'مسدودسازی دائمی', + findTime: 'دوره کشف', + banAction: 'اقدام مسدودسازی', + banActionOption: 'مسدودسازی آدرس‌های IP مشخص شده با استفاده از {0}', + allPorts: ' (همه پورت‌ها)', + ignoreIP: 'لیست سفید IP', + bannedIP: 'لیست سیاه IP', + logPath: 'مسیر لاگ', + logPathHelper: 'پیش‌فرض /var/log/secure یا /var/log/auth.log است', + }, + ftp: { + ftp: 'حساب FTP | حساب‌های FTP', + notStart: 'سرویس FTP در حال حاضر اجرا نمی‌شود، ابتدا آن را راه‌اندازی کنید!', + operation: 'این عمل عملیات "{0}" را روی سرویس FTP انجام می‌دهد. ادامه می‌دهید؟', + noPasswdMsg: 'نمی‌توان رمز عبور حساب FTP فعلی را دریافت کرد. رمز عبور را تنظیم کرده و دوباره تلاش کنید.', + enableHelper: 'فعال‌سازی حساب FTP انتخاب شده مجوزهای دسترسی آن را بازیابی می‌کند. ادامه می‌دهید؟', + disableHelper: 'غیرفعال‌سازی حساب FTP انتخاب شده مجوزهای دسترسی آن را لغو می‌کند. ادامه می‌دهید؟', + syncHelper: 'همگام‌سازی داده‌های حساب FTP بین سرور و پایگاه داده. ادامه می‌دهید؟', + dirSystem: + 'این دایرکتوری توسط سیستم رزرو شده است. تغییر ممکن است باعث خرابی سیستم شود، لطفاً اصلاح و دوباره تلاش کنید!', + dirHelper: 'فعال‌سازی FTP نیاز به تغییر مجوز دایرکتوری دارد - لطفاً با دقت انتخاب کنید', + dirMsg: 'فعال‌سازی FTP مجوزهای کل دایرکتوری {0} را تغییر می‌دهد. ادامه می‌دهید؟', + }, + clam: { + clam: 'اسکن ویروس', + cron: 'اسکن زمان‌بندی شده', + cronHelper: 'نسخه تجاری از اسکن زمان‌بندی شده پشتیبانی می‌کند', + specErr: 'فرمت برنامه اجرایی اشتباه است، لطفاً بررسی و دوباره تلاش کنید!', + disableMsg: + 'توقف اجرای زمان‌بندی شده از اجرای خودکار این وظیفه اسکن جلوگیری می‌کند. ادامه می‌دهید؟', + enableMsg: + 'فعال‌سازی اجرای زمان‌بندی شده به این وظیفه اسکن اجازه می‌دهد به طور منظم اجرا شود. ادامه می‌دهید؟', + showFresh: 'نمایش سرویس به‌روزرسانی امضا', + hideFresh: 'مخفی کردن سرویس به‌روزرسانی امضا', + clamHelper: + 'حداقل پیکربندی توصیه شده برای ClamAV: ۳ گیگابایت رم یا بیشتر، CPU تک هسته‌ای با ۲.۰ گیگاهرتز یا بالاتر، و حداقل ۵ گیگابایت فضای دیسک موجود.', + notStart: 'سرویس ClamAV در حال حاضر اجرا نمی‌شود، ابتدا آن را راه‌اندازی کنید!', + removeRecord: 'حذف فایل‌های گزارش', + noRecords: 'برای شروع اسکن روی دکمه "اجرا" کلیک کنید تا رکوردها را در اینجا مشاهده کنید.', + removeInfected: 'حذف فایل‌های ویروس', + removeInfectedHelper: + 'فایل‌های ویروس شناسایی شده در طول وظیفه را حذف کنید تا امنیت سرور و عملکرد عادی تضمین شود.', + clamCreate: 'ایجاد قانون اسکن', + infectedStrategy: 'استراتژی آلوده', + removeHelper: 'حذف فایل‌های ویروس، با دقت انتخاب کنید!', + move: 'انتقال', + moveHelper: 'انتقال فایل‌های ویروس به دایرکتوری مشخص شده', + copyHelper: 'کپی فایل‌های ویروس به دایرکتوری مشخص شده', + none: 'هیچ کاری', + noneHelper: 'هیچ اقدامی روی فایل‌های ویروس انجام ندهید', + scanDir: 'دایرکتوری اسکن', + infectedDir: 'دایرکتوری آلوده', + scanDate: 'تاریخ اسکن', + scanResult: 'دنباله لاگ اسکن', + tail: 'خطوط', + infectedFiles: 'فایل‌های آلوده', + log: 'جزئیات', + clamConf: 'سرویس Clam AV', + clamLog: '@:toolbox.clam.clamConf لاگ‌ها', + freshClam: 'FreshClam', + freshClamLog: '@:toolbox.clam.freshClam لاگ‌ها', + alertHelper: 'نسخه تجاری از اسکن زمان‌بندی شده و هشدارهای پیامکی پشتیبانی می‌کند', + alertTitle: 'وظیفه اسکن ویروس «{0}» هشدار فایل آلوده شناسایی شد', + }, + }, + logs: { + core: 'سرویس پنل', + agent: 'نظارت گره', + panelLog: 'لاگ پنل', + operation: 'لاگ عملیات', + login: 'لاگ ورود', + loginIP: 'IP ورود', + loginAddress: 'آدرس ورود', + loginAgent: 'مرورگر ورود', + loginStatus: 'وضعیت', + system: 'لاگ سیستم', + deleteLogs: 'پاک‌سازی لاگ‌ها', + resource: 'منبع', + detail: { + dashboard: 'نمای کلی', + ai: 'هوش مصنوعی', + skills_hub: 'مرکز مهارت', + ai_proxy: 'پروکسی هوش مصنوعی', + ai_benchmark: 'معیار سنجش', + groups: 'گروه', + hosts: 'میزبان', + apps: 'برنامه', + openresty: 'OpenResty', + websites: 'وب‌سایت', + monitor: 'نظارت وب‌سایت', + containers: 'کانتینر', + files: 'فایل', + runtimes: 'محیط اجرا', + process: 'فرآیند', + toolbox: 'جعبه ابزار', + backups: 'پشتیبان‌گیری / بازیابی', + tampers: 'ضد دستکاری', + xsetting: 'تنظیمات رابط', + logs: 'لاگ', + settings: 'تنظیمات', + cronjobs: 'وظیفه زمان‌بندی', + databases: 'پایگاه داده', + waf: 'WAF', + licenses: 'مجوز', + nodes: 'گره', + commands: 'دستورات سریع', + opsReport: 'گزارش عملیات', + users: 'مدیریت کاربران', + roles: 'نقش', + auth: 'احراز هویت ورود', + alert: 'هشدارها', + }, + websiteLog: 'لاگ وب‌سایت', + runLog: 'لاگ اجرا', + errLog: 'لاگ خطا', + task: 'لاگ وظیفه', + taskName: 'نام وظیفه', + taskRunning: 'در حال اجرا', + }, + file: { + fileDirNum: '{0} دایرکتوری، {1} فایل،', + currentDir: 'دایرکتوری', + dir: 'پوشه', + fileName: 'نام فایل', + search: 'جستجو', + aiSearch: 'جستجوی هوشمند', + aiSearchTitle: 'جستجوی هوشمند', + aiSearchHint: + 'جستجوی خط به خط در محتوای فایل. از دکمه‌های موجود در ردیف جستجو و گزینه‌های پیشرفته زیر استفاده کنید. در صورت فعال بودن هوش مصنوعی فایل و ذخیره شدن، یک مدل می‌تواند خلاصه‌ای به صورت مارک‌داون نیز برگرداند.', + aiSearchAccountTitle: 'حساب هوش مصنوعی', + aiSearchAccountIntro: 'یک حساب عامل برای خلاصه اختیاری انتخاب کنید و پس از تغییرات ذخیره کنید.', + aiSearchAccountEnable: 'فعال‌سازی جستجوی هوشمند فایل', + aiSearchSaveAccount: 'ذخیره حساب', + aiSearchSectionQuery: 'جستجو', + aiSearchSectionConditions: 'معیارهای جستجو', + aiSearchResultsSection: 'نتایج', + aiSearchContentLabel: 'جستجو', + aiSearchDirLabel: 'دایرکتوری', + aiSearchExtLabel: 'پسوندها', + aiSearchModifiedPreset: 'تاریخ تغییر', + aiSearchSizePresetLabel: 'اندازه فایل', + aiSearchTimeAny: 'هر زمانی', + aiSearchTime3h: '۳ ساعت گذشته', + aiSearchTime1d: '۱ روز گذشته', + aiSearchTime7d: '۷ روز گذشته', + aiSearchTime30d: '۳۰ روز گذشته', + aiSearchTimeCustom: 'بازه سفارشی', + aiSearchSizeAny: 'هر اندازه', + aiSearchSize0_10mb: '۰ ~ ۱۰ مگابایت', + aiSearchSize10_100mb: '۱۰ مگابایت ~ ۱۰۰ مگابایت', + aiSearchSize100_1gb: '۱۰۰ مگابایت ~ ۱ گیگابایت', + aiSearchSizeGte1gb: '≥ ۱ گیگابایت', + aiSearchSizeCustom: 'سفارشی (بایت)', + aiSearchPlaceholder: 'کلیدواژه یا یک سوال کوتاه، مثلاً فایل‌های مرتبط با لاگ', + aiSearchContainSub: 'بازگشتی', + aiSearchMaxItems: 'سقف تعداد مسیرها/فایل‌های گنجانده شده در جستجو (لیست دایرکتوری، ۱–۲۰۰۰)', + aiSearchRun: 'تحلیل', + aiSearchTruncated: 'تعداد ورودی‌ها زیاد است؛ فقط بخشی از لیست ارسال شد. نتایج ممکن است ناقص باشند.', + aiSearchPreFiltered: 'مسیرها با کلیدواژه پیش‌فیلتر شدند تا مجموعه ارسال شده به مدل کاهش یابد.', + aiSearchMeta: 'موارد تحلیل شده: {0} | مدت زمان {1} | توکن‌ها {2}', + aiSearchQueryRequired: 'کلیدواژه یا توضیح کوتاه وارد کنید', + aiSearchContentHits: 'تطابق محتوا', + aiSearchContentScanMeta: 'اسکن محتوا: {0} فایل(ها) خوانده شد (بر اساس گزینه‌های جستجوی شما؛ محدودیت‌ها اعمال می‌شوند).', + aiSearchNoLineHits: + 'هیچ خطی با جستجوی شما در فایل‌های متنی اسکن شده مطابقت نداشت. خلاصه بالا ممکن است همچنان نام مسیرها و فراداده را منعکس کند.', + aiSearchHitsTruncated: 'برخی فایل‌ها اسکن نشدند یا لیست تطابق‌ها توسط محدودیت‌ها کوتاه شد.', + aiSearchHitFiles: 'فایل‌های دارای تطابق', + aiSearchHitLines: 'خطوط تطابق', + aiSearchOpenFile: 'باز کردن در ویرایشگر', + aiSearchOpenAtLine: 'باز کردن در این خط', + aiSearchGrepOnlyHint: + 'هوش مصنوعی فایل خاموش است: فقط جستجوی محتوای قطعی اجرا می‌شود — بدون مدل. برای خلاصه، یک حساب هوش مصنوعی را در بالا فعال کنید. ردیف جستجو و گزینه‌های زیر همچنان اعمال می‌شوند.', + aiSearchMatchCase: 'حساس به بزرگ/کوچکی', + aiSearchWholeWord: 'کل کلمه (مرز کلمه ASCII)', + aiSearchUseRegex: 'عبارت منظم (سینتکس RE2)', + aiSearchExtensions: 'پسوند فایل‌ها (با کاما جدا شده، مثلاً go,ts,md)', + aiSearchMinSize: 'حداقل اندازه فایل (بایت، ۰ = بدون محدودیت)', + aiSearchMaxSize: 'حداکثر اندازه فایل (بایت، ۰ = بدون محدودیت)', + aiSearchSectionAdvanced: 'گزینه‌های پیشرفته', + aiSearchLimitMaxItems: 'مجموع فایل‌های جستجو (سقف)', + aiSearchLimitMaxScan: 'فایل‌های اسکن', + aiSearchLimitMaxBytes: 'سقف خواندن هر فایل (اسکن محتوا)', + aiSearchLimitHitsPerFile: 'تطابق در هر فایل', + aiSearchLimitTotalHits: 'سقف کل تطابق‌ها', + aiSearchLimitUnitEntries: 'ورودی', + aiSearchLimitUnitFiles: 'فایل', + aiSearchLimitUnitBytes: 'بایت', + aiSearchLimitUnitLines: 'خط', + aiSearchMaxScanFiles: 'حداکثر فایل‌های اسکن محتوا', + aiSearchMaxFileBytes: + 'حداکثر بایت خوانده شده از هر فایل در حین اسکن محتوا. برخلاف فیلتر اندازه بالا (که اندازه روی دیسک را برای لیست کردن تعیین می‌کند)، این میزان خوانده شده برای تطابق را محدود می‌کند.', + aiSearchMaxHitsPerFile: 'حداکثر تطابق در هر فایل', + aiSearchMaxTotalHits: 'حداکثر کل تطابق‌ها', + aiSearchGrepMetaContent: + 'اسکن محتوا: {0} ورودی کل لیست شده، {1} فایل متنی خوانده شد (فیلترهای فعلی؛ محدودیت‌های اندازه/تعداد اعمال می‌شوند). مدت زمان {2}', + aiSearchAdvancedResetDefaults: 'بازنشانی به پیش‌فرض', + mode: 'مجوزها', + editPermissions: 'ویرایش مجوزها', + owner: 'مالک', + file: 'فایل', + remoteFile: 'دانلود از راه دور', + share: 'اشتراک‌گذاری', + sync: 'همگام‌سازی داده', + size: 'اندازه', + updateTime: 'تاریخ تغییر', + rename: 'تغییر نام', + role: 'مجوزها', + info: 'مشاهده ویژگی‌ها', + linkFile: 'لینک نرم', + shareList: 'لیست اشتراک‌ها', + fileTools: 'ابزارهای فایل', + zip: 'فشرده', + group: 'گروه', + path: 'مسیر', + public: 'سایر', + setRole: 'تنظیم مجوزها', + link: 'لینک فایل', + rRole: 'خواندن', + wRole: 'نوشتن', + xRole: 'قابل اجرا', + name: 'نام', + compress: 'فشرده‌سازی', + deCompress: 'باز کردن فشرده', + compressType: 'فرمت فشرده', + compressDst: 'مسیر فشرده', + replace: 'بازنویسی فایل‌های موجود', + compressSuccess: 'فشرده‌سازی با موفقیت انجام شد', + deCompressSuccess: 'باز کردن فشرده با موفقیت انجام شد', + deCompressDst: 'مسیر باز کردن فشرده', + linkType: 'نوع لینک', + softLink: 'لینک نرم', + hardLink: 'لینک سخت', + linkPath: 'مسیر لینک', + selectFile: 'انتخاب فایل', + downloadUrl: 'URL از راه دور', + downloadStart: 'دانلود شروع شد', + wgetUrlInvalid: 'لطفاً یک URL دانلود معتبر http(s) وارد کنید', + moveSuccess: 'انتقال با موفقیت انجام شد', + copySuccess: 'کپی با موفقیت انجام شد', + pasteMsg: 'برای چسباندن، در دایرکتوری هدف روی دکمه [چسباندن] در گوشه بالا سمت راست کلیک کنید', + move: 'انتقال', + calculate: 'محاسبه', + remark: 'یادداشت', + setRemark: 'تنظیم یادداشت', + remarkPrompt: 'یادداشت را وارد کنید', + remarkPlaceholder: 'یادداشت', + remarkToggle: 'یادداشت‌ها', + remarkToggleTip: 'بارگذاری یادداشت‌های فایل', + canNotDeCompress: 'نمی‌توان این فایل را باز کرد', + uploadSuccess: 'بارگذاری با موفقیت انجام شد', + downloadProcess: 'پیشرفت دانلود', + downloading: 'در حال دانلود...', + stopWgetConfirm: 'آیا مطمئن هستید که می‌خواهید این وظیفه دانلود را متوقف کنید؟', + infoDetail: 'ویژگی‌های فایل', + root: 'دایرکتوری ریشه', + list: 'لیست فایل', + sub: 'بازگشتی', + downloadSuccess: 'دانلود با موفقیت انجام شد', + theme: 'پوسته', + language: 'زبان', + eol: 'پایان خط', + history: 'تاریخچه نسخه', + historyTitle: 'تاریخچه نسخه', + historyHint: + 'این تاریخچه نسخه قبل از هر تغییر فایل را ثبت می‌کند، به شما امکان می‌دهد تاریخچه تغییرات محتوا را مرور کرده و نسخه‌ها را بازگردانی کنید.', + historySettingTitle: 'تنظیمات نسخه', + historyEnable: 'فعال‌سازی ثبت نسخه', + historyMaxPerPath: 'نگهداری به ازای هر فایل', + historyDiskQuota: 'سهمیه دیسک جهانی (مگابایت)', + historyCurrentScope: 'فایل جاری', + historyAllScope: 'همه فایل‌ها', + historyDeleteConfirm: 'آیا مطمئن هستید که می‌خواهید رکوردهای تاریخچه انتخاب شده را حذف کنید؟', + historyNeedFile: 'ابتدا یک فایل باز کنید', + historyRestore: 'بازگردانی این نسخه', + historyOperationOnlyHint: 'مورد انتخاب شده یک عملیات فایل است و از بازگردانی نسخه پشتیبانی نمی‌کند.', + historyCurrentFile: 'فایل جاری', + historyLatestVersion: + 'سمت چپ محتوای نسخه تاریخچه را نشان می‌دهد، سمت راست محتوای آخرین نسخه فایل انتخاب شده را نشان می‌دهد', + historyCompareTarget: 'هدف مقایسه', + historyCompareTargetPath: 'مسیر مقایسه', + historyRestoreConfirm: 'این نسخه به فایل جاری بازگردانی شود؟', + historyRestoreDirtyConfirm: 'فایل جاری تغییرات ذخیره نشده دارد. بازگردانی آنها را بازنویسی می‌کند. ادامه می‌دهید؟', + historyRestoreSuccess: 'بازگردانی نسخه با موفقیت انجام شد', + historyDirtyHint: 'ویرایشگر فعلی تغییرات ذخیره نشده دارد. بازگردانی یک نسخه آنها را بازنویسی می‌کند.', + historyDiffHintCurrent: + 'سمت چپ نسخه تاریخچه و سمت راست محتوای فایل جاری را نشان می‌دهد', + historyDiffHintAll: + 'سمت چپ نسخه تاریخچه و سمت راست آخرین نسخه فایل انتخاب شده را نشان می‌دهد', + copyDir: 'کپی', + shareFile: 'اشتراک‌گذاری فایل', + shareExpire: 'زمان انقضا', + shareExpire1h: '۱ ساعت', + shareExpire6h: '۶ ساعت', + shareExpire24h: '۲۴ ساعت', + shareExpire3d: '۳ روز', + shareExpire7d: '۷ روز', + sharePassword: 'رمز عبور', + sharePasswordPlaceholder: 'در صورت خالی بودن، بدون رمز عبور', + shareMaxDownloads: 'حداکثر دانلود', + shareMaxDownloadsHint: '۰ به معنای نامحدود', + shareGenerate: 'ایجاد لینک', + shareRegenerate: 'اشتراک‌گذاری مجدد', + shareClose: 'بستن', + shareCancel: 'لغو اشتراک‌گذاری', + shareCancelConfirm: 'آیا مطمئن هستید که می‌خواهید اشتراک‌گذاری این فایل را لغو کنید؟', + shareDetail: 'جزئیات', + shareCopyLink: 'کپی لینک', + shareLinkLabel: 'لینک اشتراک', + shareQrCode: 'کد QR', + shareQrDialogTitle: 'کد QR لینک اشتراک', + shareQrDialogHelper: 'این کد QR را با دستگاه موبایل خود اسکن کنید', + shareSaveImage: 'ذخیره تصویر', + shareOpenImage: 'باز کردن تصویر', + shareExtractFile: 'استخراج فایل', + shareDownloadingHint: 'فایل شما در حال آماده‌سازی است، دانلود به زودی شروع می‌شود.', + shareInvalid: 'لینک اشتراک نامعتبر یا منقضی شده است', + shareDownloadFailed: 'دانلود ناموفق بود، لطفاً بعداً تلاش کنید', + sharePasswordRequired: 'رمز عبور', + sharePasswordRequiredInput: 'لطفاً رمز عبور اشتراک را وارد کنید', + sharePasswordLengthHint: 'طول رمز عبور اشتراک باید ۴-۲۵۶ کاراکتر باشد', + shareDownloadPasswordTip: 'این لینک با رمز عبور محافظت می‌شود. قبل از دانلود، رمز عبور را وارد کنید.', + shareRiskAlert: + 'لینک‌های اشتراک‌گذاری ممکن است خطرات امنیتی داشته باشند. فقط با افراد مورد اعتماد به اشتراک بگذارید و از افشای اطلاعات حساس خودداری کنید.', + sharePasswordSeparate: + 'رمز عبور تنظیم شده است. آن را به طور امن به اشتراک بگذارید. گیرندگان باید &password=... را به URL اضافه کنند یا از کلاینت‌هایی استفاده کنند که از پارامتر password در کوئری پشتیبانی می‌کنند.', + shareExpiresAt: 'انقضا در', + paste: 'چسباندن', + changeOwner: 'تغییر کاربر و گروه کاربری', + containSub: 'اعمال تغییر مجوز به صورت بازگشتی', + ownerHelper: + 'کاربر پیش‌فرض محیط اجرای PHP: گروه کاربری ۱۰۰۰:۱۰۰۰ است، طبیعی است که کاربران داخل و خارج از کانتینر ناهماهنگی نشان دهند', + searchHelper: 'پشتیبانی از کاراکترهای عام مانند *', + uploadFailed: '[{0}] بارگذاری فایل ناموفق بود', + fileUploadStart: 'در حال بارگذاری [{0}]...', + uploadOverallProgress: 'پیشرفت کلی', + uploadCurrentFileProgress: 'فایل جاری', + currentSelect: 'انتخاب فعلی: ', + unsupportedType: 'نوع فایل پشتیبانی نمی‌شود', + deleteHelper: + 'آیا مطمئن هستید که می‌خواهید فایل‌های زیر را حذف کنید؟ به طور پیش‌فرض، پس از حذف به سطل زباله منتقل می‌شوند', + fileHelper: "توجه:\n۱. نتایج جستجو قابل مرتب‌سازی نیستند.\n۲. پوشه‌ها بر اساس اندازه قابل مرتب‌سازی نیستند.", + forceDeleteHelper: 'حذف دائمی فایل (بدون انتقال به سطل زباله، مستقیماً حذف می‌شود)', + recycleBin: 'سطل زباله', + sourcePath: 'مسیر اصلی', + deleteTime: 'زمان حذف', + confirmReduce: 'آیا مطمئن هستید که می‌خواهید فایل‌های زیر را بازیابی کنید؟', + reduceSuccess: 'بازیابی با موفقیت انجام شد', + reduce: 'بازیابی', + reduceHelper: + 'اگر فایل یا دایرکتوری با همین نام در مسیر اصلی وجود داشته باشد، بازنویسی می‌شود. ادامه می‌دهید؟', + clearRecycleBin: 'پاک‌سازی', + clearRecycleBinHelper: 'سطل زباله پاک‌سازی شود؟', + favorite: 'نشان‌ها', + removeFavorite: 'حذف از نشان‌ها؟', + addFavorite: 'افزودن/حذف به نشان‌ها', + addFavoriteAction: 'افزودن به نشان‌ها', + removeFavoriteAction: 'حذف از نشان‌ها', + clearList: 'پاک‌سازی لیست', + deleteRecycleHelper: 'آیا مطمئن هستید که می‌خواهید فایل‌های زیر را به طور دائمی حذف کنید؟', + typeErrOrEmpty: 'نوع فایل [{0}] اشتباه است یا پوشه خالی است', + dropHelper: 'فایل‌های مورد نظر برای بارگذاری را اینجا بکشید و رها کنید', + fileRecycleBin: 'فعال‌سازی سطل زباله', + fileRecycleBinMsg: 'سطل زباله {0}', + wordWrap: 'پیچش خودکار', + deleteHelper2: + 'آیا مطمئن هستید که می‌خواهید فایل انتخاب شده را حذف کنید؟ عملیات حذف قابل بازگشت نیست', + ignoreCertificate: 'اجازه اتصالات ناامن به سرور', + ignoreCertificateHelper: + 'اجازه اتصالات ناامن به سرور ممکن است منجر به نشت یا دستکاری داده شود. این گزینه را فقط زمانی استفاده کنید که به منبع دانلود اعتماد دارید.', + useProxy: 'استفاده از پروکسی برای دانلود', + useProxyHelper: 'برای دسترسی به URL دانلود از راه دور از سرور پروکسی پیکربندی شده در تنظیمات پنل استفاده کنید', + uploadOverLimit: 'تعداد فایل‌ها از ۱۰۰۰ بیشتر است! لطفاً فشرده و بارگذاری کنید', + clashDidNotSupport: 'نام فایل‌ها نباید شامل .1panel_clash باشد', + clashDeleteAlert: 'پوشه "سطل زباله" قابل حذف نیست', + clashOpenAlert: 'برای باز کردن دایرکتوری سطل زباله روی دکمه "سطل زباله" کلیک کنید', + right: 'به جلو', + back: 'بازگشت', + top: 'بازگشت به بالا', + up: 'بازگشت', + openWithVscode: 'باز کردن با VS Code', + vscodeHelper: + 'حالت احراز هویت، میزبان، پورت و نام کاربری را تأیید کنید. احراز هویت کلید نیاز به پیکربندی SSH در رایانه‌ای که VS Code روی آن اجرا می‌شود قبل از استفاده دارد.', + vscodeCopyConfig: 'کپی اسکریپت راه‌اندازی', + vscodeKeyHelper: + 'نام دانلود کلید خصوصی از مسیر پیکربندی شده گرفته می‌شود. فایل را در آن مسیر ذخیره کنید؛ اسکریپت راه‌اندازی آن را تأیید کرده و مجوزها را اعمال می‌کند.', + vscodeKeyPath: 'مسیر کلید خصوصی SSH', + vscodeKeyPathPlaceholder: 'مثلاً: ~/.ssh/id_ed25519', + vscodeSelectKey: 'کلید خصوصی SSH', + vscodeScriptPreview: 'اسکریپت راه‌اندازی SSH', + vscodePasswordHelper: + 'احراز هویت رمز عبور در پیکربندی SSH محلی نوشته نمی‌شود. هنگام اتصال به میزبان از راه دور، رمز عبور را در VS Code وارد کنید.', + vscodePasswordHint: + 'احراز هویت رمز عبور با میزبان، پورت و نام کاربری پیکربندی شده متصل می‌شود. هیچ اسکریپت راه‌اندازی یا فایل کلید خصوصی مورد نیاز نیست.', + vscodeScriptPreviewHint: + 'اسکریپت راه‌اندازی را روی رایانه‌ای که VS Code روی آن اجرا می‌شود اجرا کنید تا نام مستعار SSH برای اتصالات از راه دور ثبت شود. پس از تغییر میزبان، پورت، نام کاربری، کلید خصوصی یا مسیر کلید، دوباره اجرا کنید.', + vscodePasswordModeTitle: 'احراز هویت رمز عبور', + vscodePasswordModeHint: + 'احراز هویت رمز عبور با میزبان، پورت و نام کاربری پیکربندی شده متصل می‌شود. هیچ اسکریپت راه‌اندازی یا فایل کلید خصوصی مورد نیاز نیست.', + vscodePasswordStep1: 'میزبان، پورت و نام کاربری را تأیید کنید.', + vscodePasswordStep2: 'VS Code را باز کنید و هنگام درخواست، رمز عبور را وارد کنید.', + vscodePasswordStep3: 'در این حالت نیازی به دانلود کلید خصوصی نیست.', + saveContentAndClose: 'فایل تغییر کرده است، آیا می‌خواهید ذخیره و ببندید؟', + saveAndOpenNewFile: 'فایل تغییر کرده است، آیا می‌خواهید ذخیره و فایل جدید را باز کنید؟', + noEdit: 'فایل تغییری نکرده است، نیازی به این کار نیست!', + noNameFolder: 'پوشه بدون نام', + noNameFile: 'فایل بدون نام', + minimap: 'نقشه کوچک کد', + fileCanNotRead: 'فایل قابل خواندن نیست', + previewTruncated: 'فایل خیلی بزرگ است، فقط بخش آخر نشان داده می‌شود', + previewEmpty: 'فایل خالی است یا یک فایل متنی نیست', + previewLargeFile: 'پیش‌نمایش', + panelInstallDir: "دایرکتوری نصب 1Panel قابل حذف نیست", + wgetTask: 'وظیفه دانلود', + existFileTitle: 'تذکر فایل همنام', + existFileHelper: 'فایل بارگذاری شده شامل یک فایل همنام است، آیا می‌خواهید بازنویسی کنید؟', + existFileSize: 'اندازه فایل (جدید -> قدیمی)', + existFileDirHelper: 'فایل/پوشه انتخاب شده دارای نام تکراری است. لطفاً با احتیاط ادامه دهید! \n', + coverDirHelper: 'پوشه‌های انتخاب شده برای جایگزینی به مسیر هدف کپی می‌شوند!', + noSuchFile: 'فایل یا دایرکتوری پیدا نشد. لطفاً بررسی و دوباره تلاش کنید.', + setting: 'تنظیمات', + showHide: 'نمایش فایل‌های مخفی', + noShowHide: 'نمایش فایل‌های مخفی نده', + cancelUpload: 'لغو بارگذاری', + cancelUploadHelper: 'آیا بارگذاری لغو شود؟ پس از لغو، لیست بارگذاری پاک می‌شود.', + keepOneTab: 'حداقل یک زبانه نگه دارید', + notCanTab: 'نمی‌توان زبانه بیشتری اضافه کرد', + convert: 'تبدیل فرمت', + converting: 'تبدیل به', + fileCanNotConvert: 'این فایل از تبدیل فرمت پشتیبانی نمی‌کند', + formatType: 'نوع فرمت', + sourceFormat: 'فرمت منبع', + sourceFile: 'فایل منبع', + saveDir: 'دایرکتوری ذخیره', + deleteSourceFile: 'حذف فایل منبع', + convertHelper: 'تبدیل فایل‌های انتخاب شده به فرمت دیگر', + convertHelper1: 'فایل‌های مورد نظر برای تبدیل را انتخاب کنید', + execConvert: 'شروع تبدیل. می‌توانید لاگ‌های تبدیل را در وظایف مشاهده کنید', + convertLogs: 'لاگ‌های تبدیل', + formatConvert: 'تبدیل فرمت', + }, + ssh: { + autoStart: 'شروع خودکار', + enable: 'فعال‌سازی شروع خودکار', + disable: 'غیرفعال‌سازی شروع خودکار', + sshAlert: + 'داده‌های لیست بر اساس تاریخ ورود مرتب می‌شوند. تغییر منطقه زمانی یا انجام سایر عملیات ممکن است باعث انحراف در تاریخ لاگ‌های ورود شود.', + sshAlert2: + 'می‌توانید از "Fail2ban" در "جعبه ابزار" برای مسدود کردن IP‌هایی که تلاش حمله brute-force می‌کنند استفاده کنید و این کار امنیت میزبان را افزایش می‌دهد.', + sshOperate: 'عملیات "{0}" روی سرویس SSH انجام خواهد شد. ادامه می‌دهید؟', + sshChange: 'تنظیمات SSH', + sshChangeHelper: 'این عمل "{0}" را به "{1}" تغییر داد. ادامه می‌دهید؟', + sshFileChangeHelper: + 'تغییر فایل پیکربندی ممکن است باعث در دسترس نبودن سرویس شود. در انجام این عملیات احتیاط کنید. ادامه می‌دهید؟', + port: 'پورت', + portHelper: 'پورتی را که سرویس SSH به آن گوش می‌دهد مشخص کنید.', + listenAddress: 'آدرس شنود', + allV4V6: '0.0.0.0:{0}(IPv4) و :::{0}(IPv6)', + listenHelper: + 'خالی گذاشتن هر دو تنظیمات IPv4 و IPv6 به معنای شنود روی "0.0.0.0:{0}(IPv4)" و ":::{0}(IPv6)" است.', + addressHelper: 'آدرسی را که سرویس SSH به آن گوش می‌دهد مشخص کنید.', + permitRootLogin: 'مجوز ریشه', + rootSettingHelper: 'روش ورود پیش‌فرض برای کاربر ریشه "اجازه ورود SSH" است.', + rootHelper1: 'اجازه ورود SSH', + rootHelper2: 'غیرفعال‌سازی ورود SSH', + rootHelper3: 'فقط ورود با کلید مجاز است', + rootHelper4: 'فقط دستورات از پیش تعیین شده قابل اجرا هستند. هیچ عملیات دیگری قابل انجام نیست.', + passwordAuthentication: 'احراز هویت رمز عبور', + pwdAuthHelper: 'آیا احراز هویت رمز عبور فعال باشد. این پارامتر به طور پیش‌فرض فعال است.', + pubkeyAuthentication: 'احراز هویت کلید', + privateKey: 'کلید خصوصی', + publicKey: 'کلید عمومی', + password: 'رمز عبور', + createMode: 'روش ایجاد', + generate: 'تولید خودکار', + unSyncPass: 'رمز عبور کلید قابل همگام‌سازی نیست', + syncHelper: 'عملیات همگام‌سازی کلیدهای نامعتبر را پاک کرده و کلیدهای کامل جدید را همگام می‌کند. ادامه می‌دهید؟', + input: 'ورودی دستی', + import: 'بارگذاری فایل', + authKeys: 'کلیدهای مجوز', + authKeysHelper: 'اطلاعات کلید عمومی فعلی ذخیره شود؟', + pubkey: 'اطلاعات کلید', + pubKeyHelper: 'اطلاعات کلید فعلی فقط برای کاربر {0} معتبر است', + encryptionMode: 'حالت رمزگذاری', + passwordHelper: 'می‌تواند شامل ۶ تا ۱۰ رقم و حروف بزرگ/کوچک انگلیسی باشد', + reGenerate: 'بازتولید کلید', + keyAuthHelper: 'آیا احراز هویت کلید فعال باشد.', + useDNS: 'استفاده از DNS', + dnsHelper: + 'کنترل اینکه آیا عملکرد تفکیک DNS روی سرور SSH فعال باشد تا هویت اتصال تأیید شود.', + confFileOrderHelper: + 'برای جابجایی بین فایل‌های پیکربندی از لیست کشویی استفاده کنید و مستقیماً ویرایش/ذخیره کنید؛ تنظیمات بر اساس ترتیب بارگذاری اعمال می‌شوند و مقادیر بارگذاری شده قبلی اولویت دارند.', + confFileOrderLabel: '{0} (ترتیب بارگذاری #{1})', + analysis: 'اطلاعات آماری', + denyHelper: + "انجام عملیات 'رد' روی آدرس‌های زیر. پس از تنظیم، IP از دسترسی به سرور منع می‌شود. ادامه می‌دهید؟", + acceptHelper: + "انجام عملیات 'پذیرش' روی آدرس‌های زیر. پس از تنظیم، IP دسترسی عادی را بازمی‌یابد. ادامه می‌دهید؟", + noAddrWarning: 'در حال حاضر هیچ آدرس [{0}] انتخاب نشده است. لطفاً بررسی و دوباره تلاش کنید!', + loginLogs: 'لاگ‌های SSH', + loginMode: 'حالت', + authenticating: 'کلید', + publickey: 'کلید', + belong: 'متعلق به', + local: 'محلی', + session: 'جلسه | جلسات', + loginTime: 'زمان ورود', + loginIP: 'IP ورود', + stopSSHWarn: 'آیا این اتصال SSH قطع شود؟', + remote: 'SSH از راه دور', + }, + setting: { + panel: 'پنل', + user: 'کاربر پنل', + userChange: 'تغییر کاربر پنل', + userChangeHelper: 'تغییر کاربر پنل باعث خروج شما می‌شود. ادامه می‌دهید؟', + passwd: 'رمز عبور پنل', + emailHelper: 'برای بازیابی رمز عبور', + watermark: 'تنظیمات واترمارک', + watermarkContent: 'محتوای واترمارک', + contentHelper: + '{0} نشان‌دهنده نام گره، {1} نشان‌دهنده آدرس گره است. می‌توانید از متغیرها استفاده کنید یا نام سفارشی پر کنید.', + watermarkColor: 'رنگ واترمارک', + watermarkFont: 'اندازه قلم واترمارک', + watermarkHeight: 'ارتفاع واترمارک', + watermarkWidth: 'عرض واترمارک', + watermarkRotate: 'زاویه چرخش', + watermarkGap: 'فاصله', + watermarkCloseHelper: 'آیا مطمئن هستید که می‌خواهید تنظیمات واترمارک سیستم را غیرفعال کنید؟', + watermarkOpenHelper: 'آیا مطمئن هستید که می‌خواهید تنظیمات واترمارک سیستم فعلی را ذخیره کنید؟', + title: 'نام مستعار پنل', + panelPort: 'پورت پنل', + titleHelper: + 'پشتیبانی از طول ۳ تا ۳۰ کاراکتر، شامل حروف انگلیسی، چینی، اعداد، فاصله و کاراکترهای ویژه رایج', + portHelper: + 'محدوده پورت پیشنهادی ۸۸۸۸ تا ۶۵۵۳۵ است. توجه: اگر سرور دارای گروه امنیتی است، از قبل پورت جدید را در گروه امنیتی مجاز کنید', + portChange: 'تغییر پورت', + portChangeHelper: 'پورت سرویس را تغییر داده و سرویس را مجدداً راه‌اندازی کنید. ادامه می‌دهید؟', + theme: 'پوسته', + menuTabs: 'زبانه‌های منو', + componentSize: 'اندازه کامپوننت', + dark: 'تاریک', + darkGold: 'تاریک طلایی', + light: 'روشن', + auto: 'پیروی از سیستم', + language: 'زبان', + runtimeEnv: 'محیط اجرا', + docSource: 'منبع مستندات', + withByRegion: 'مطابقت با تنظیمات منطقه (پیش‌فرض)', + withByLang: 'مطابقت با زبان سیستم', + region: 'منطقه', + cn: 'سرزمین اصلی چین', + intl: 'جهانی', + regionHelper: 'تغییر منطقه منابع زیر را تغییر می‌دهد:', + regionHelper1: 'بسته‌های نصب سیستم', + regionHelper2: 'فروشگاه برنامه و کتابخانه اسکریپت', + regionHelper3: 'راهنمای کاربر و مستندات مرتبط', + regionHelper4: 'این ممکن است بر دانلودها و دسترسی‌های آینده تأثیر بگذارد. با احتیاط ادامه دهید.', + regionTip: 'منطقه بر منبع به‌روزرسانی سیستم و آدرس دانلود بسته تأثیر می‌گذارد.', + docSourceTip: 'منبع مستندات زبانی را که برای لینک‌های مستندات و یادداشت‌های انتشار استفاده می‌شود تعیین می‌کند.', + languageHelper: + 'به طور پیش‌فرض از زبان مرورگر پیروی می‌کند. این پارامتر فقط در مرورگر فعلی اعمال می‌شود', + sessionTimeout: 'مهلت جلسه', + sessionTimeoutError: 'حداقل مهلت جلسه ۳۰۰ ثانیه است', + sessionTimeoutHelper: + 'در صورت عدم فعالیت برای بیش از {0} ثانیه، پنل به طور خودکار خارج می‌شود.', + systemIP: 'آدرس سیستم', + systemIPHelper: + 'این آدرس برای تغییر مسیر برنامه، دسترسی کانتینر و سایر عملکردها استفاده می‌شود. هر گره می‌تواند آدرس متفاوتی داشته باشد.', + proxy: 'پروکسی سرور', + proxyHelper: 'پس از تنظیم سرور پروکسی در سناریوهای زیر مؤثر خواهد بود:', + proxyHelper1: 'دانلود بسته‌های نصب و همگام‌سازی فروشگاه برنامه (فقط نسخه تجاری)', + proxyHelper2: 'به‌روزرسانی سیستم و بررسی به‌روزرسانی (فقط نسخه تجاری)', + proxyHelper3: 'تأیید و همگام‌سازی مجوز سیستم', + proxyHelper4: + 'درخواست‌های شبکه مانند دریافت تصاویر Docker از سرور پروکسی عبور می‌کنند (فقط نسخه تجاری)', + proxyHelper5: 'دانلود و همگام‌سازی یکپارچه کتابخانه‌های اسکریپت سیستم (نسخه تجاری)', + proxyHelper6: 'درخواست‌های گواهی (نسخه تجاری)', + proxyType: 'نوع پروکسی', + proxyUrl: 'آدرس پروکسی', + proxyPort: 'پورت پروکسی', + proxyPasswdKeep: 'ذخیره رمز عبور', + proxyDocker: 'پروکسی Docker', + proxyDockerHelper: + 'همگام‌سازی پیکربندی سرور پروکسی با Docker، پشتیبانی از دریافت تصاویر در سرورهای آفلاین و سایر عملیات', + syncToNode: 'همگام‌سازی با گره', + syncToNodeHelper: 'همگام‌سازی تنظیمات با سایر گره‌ها', + nodes: 'گره', + selectNode: 'انتخاب گره', + selectNodeError: 'یک گره انتخاب کنید', + apiInterface: 'فعال‌سازی API', + apiInterfaceClose: 'پس از بسته شدن، دسترسی به رابط‌های API امکان‌پذیر نیست. ادامه می‌دهید؟', + apiInterfaceHelper: 'اجازه دسترسی برنامه‌های شخص ثالث به API را بدهید.', + apiInterfaceAlert1: "در محیط‌های تولیدی فعال نکنید زیرا ممکن است خطرات امنیتی سرور را افزایش دهد.", + apiInterfaceAlert2: "از برنامه‌های شخص ثالث برای فراخوانی API استفاده نکنید تا از تهدیدات امنیتی بالقوه جلوگیری شود.", + apiInterfaceAlert3: 'مستندات API', + apiInterfaceAlert4: 'راهنمای استفاده', + apiKey: 'کلید API', + apiKeyHelper: 'کلید API برای دسترسی برنامه‌های شخص ثالث به API استفاده می‌شود.', + ipWhiteList: 'لیست سفید IP', + ipWhiteListEgs: 'هر خط یک IP. مثلاً،\n172.161.10.111\n172.161.10.0/24', + ipWhiteListHelper: 'IP‌های موجود در لیست سفید می‌توانند به API دسترسی داشته باشند، 0.0.0.0/0 (همه IPv4)، ::/0 (همه IPv6)', + apiKeyValidityTime: 'مدت اعتبار کلید رابط', + apiKeyValidityTimeEgs: 'مدت اعتبار کلید رابط (به دقیقه)', + apiKeyValidityTimeHelper: + 'مهر زمانی رابط در صورتی معتبر است که اختلاف آن با مهر زمانی فعلی (به دقیقه) در محدوده مجاز باشد. مقدار ۰ تأیید را غیرفعال می‌کند.', + apiKeyReset: 'بازنشانی کلید رابط', + apiKeyResetHelper: 'سرویس کلید مرتبط بی‌اعتبار می‌شود. لطفاً کلید جدیدی به سرویس اضافه کنید', + confDockerProxy: 'پیکربندی پروکسی Docker', + restartNowHelper: 'پیکربندی پروکسی Docker نیاز به راه‌اندازی مجدد سرویس Docker دارد.', + restartNow: 'راه‌اندازی مجدد فوری', + restartLater: 'بعداً به صورت دستی راه‌اندازی مجدد کنید', + systemIPWarning: 'آدرس سرور در حال حاضر تنظیم نشده است. ابتدا در پنل کنترل تنظیم کنید.', + systemIPWarning1: 'آدرس سرور فعلی روی {0} تنظیم شده است و تغییر مسیر سریع امکان‌پذیر نیست!', + syncTime: 'زمان سرور', + timeZone: 'منطقه زمانی', + timeZoneChangeHelper: 'تغییر منطقه زمانی نیاز به راه‌اندازی مجدد سرویس دارد. ادامه می‌دهید؟', + timeZoneHelper: + 'تغییر منطقه زمانی به سرویس timedatectl سیستم وابسته است. پس از راه‌اندازی مجدد سرویس 1Panel اعمال می‌شود.', + timeZoneCN: 'پکن', + timeZoneAM: 'لس آنجلس', + timeZoneNY: 'نیویورک', + ntpALi: 'علی بابا', + ntpGoogle: 'گوگل', + syncSite: 'سرور NTP', + syncSiteHelper: 'این عملیات از {0} به عنوان منبع همگام‌سازی زمان سیستم استفاده می‌کند. ادامه می‌دهید؟', + changePassword: 'تغییر رمز عبور', + oldPassword: 'رمز عبور قبلی', + newPassword: 'رمز عبور جدید', + retryPassword: 'تکرار رمز عبور', + passwordEmptyTip: 'خالی بگذارید تا رمز عبور فعلی بدون تغییر بماند', + noSpace: 'اطلاعات ورودی نمی‌تواند شامل فاصله باشد', + duplicatePassword: 'رمز عبور جدید نمی‌تواند با رمز عبور قبلی یکسان باشد، دوباره وارد کنید!', + diskClean: 'پاک‌سازی کش', + developerMode: 'برنامه پیش‌نمایش', + developerModeHelper: + "شما می‌توانید ویژگی‌ها و رفع‌های جدید را قبل از انتشار گسترده تجربه کنید و بازخورد اولیه دهید.", + thirdParty: 'حساب‌های شخص ثالث', + scope: 'حوزه', + public: 'عمومی', + publicHelper: + 'حساب‌های پشتیبان از نوع عمومی به هر گره زیرین همگام‌سازی می‌شوند و گره‌های زیرین می‌توانند از آنها استفاده کنند', + private: 'خصوصی', + privateHelper: + 'حساب‌های پشتیبان از نوع خصوصی فقط روی گره فعلی ایجاد می‌شوند و فقط برای استفاده گره فعلی هستند', + noTypeForCreate: 'در حال حاضر هیچ نوع پشتیبان ایجاد نشده است', + LOCAL: 'دیسک سرور', + OSS: 'علی OSS', + S3: 'آمازون S3', + mode: 'حالت', + MINIO: 'MinIO', + SFTP: 'SFTP', + WebDAV: 'WebDAV', + WebDAVAlist: 'اتصال WebDAV به Alist را می‌توانید در مستندات رسمی مشاهده کنید', + UPYUN: 'UPYUN', + ALIYUN: 'درایو علی‌یون', + ALIYUNHelper: + 'حداکثر محدودیت فعلی برای دانلودهای غیر کلاینت در درایو علی‌یون ۱۰۰ مگابایت است. فراتر از این محدودیت نیاز به دانلود از طریق کلاینت دارد.', + ALIYUNRecover: + 'حداکثر محدودیت فعلی برای دانلودهای غیر کلاینت در درایو علی‌یون ۱۰۰ مگابایت است. فراتر از این محدودیت نیاز به دانلود از طریق کلاینت به دستگاه محلی و سپس همگام‌سازی تصویر لحظه‌ای برای بازیابی دارد.', + GoogleDrive: 'گوگل درایو', + analysis: 'تحلیل', + analysisHelper: + 'برای تجزیه خودکار بخش‌های مورد نیاز، کل محتوای توکن را بچسبانید. برای عملیات خاص، به مستندات رسمی مراجعه کنید.', + serviceName: 'نام سرویس', + operator: 'اپراتور', + OneDrive: 'مایکروسافت OneDrive', + isCN: 'اینترنت قرن', + isNotCN: 'نسخه بین‌المللی', + client_id: 'شناسه مشتری', + client_secret: 'راز مشتری', + redirect_uri: 'URL تغییر مسیر', + onedrive_helper: 'پیکربندی سفارشی را می‌توانید در مستندات رسمی مشاهده کنید', + clickToRefresh: 'برای بازخوانی کلیک کنید', + refreshTime: 'زمان بازخوانی توکن', + refreshStatus: 'وضعیت بازخوانی توکن', + backupDir: 'دایرکتوری پشتیبان', + codeWarning: 'فرمت کد مجوز فعلی اشتباه است، دوباره تأیید کنید!', + code: 'کد مجوز', + codeHelper: + 'روی دکمه "دریافت" کلیک کنید، سپس وارد {0} شوید و محتوای بعد از "code" را در لینک تغییر مسیر کپی کنید. آن را در این کادر ورودی بچسبانید. برای دستورالعمل‌های خاص به مستندات رسمی مراجعه کنید.', + googleHelper: + 'لطفاً ابتدا یک برنامه گوگل ایجاد کرده و اطلاعات مشتری را دریافت کنید، فرم را پر کرده و روی دکمه دریافت کلیک کنید. برای عملیات خاص به مستندات رسمی مراجعه کنید.', + loadCode: 'دریافت', + COS: 'تنسنت COS', + ap_beijing_1: 'منطقه پکن ۱', + ap_beijing: 'پکن', + ap_nanjing: 'نانجینگ', + ap_shanghai: 'شانگهای', + ap_guangzhou: 'گوانگژو', + ap_chengdu: 'چنگدو', + ap_chongqing: 'چونگ‌چینگ', + ap_shenzhen_fsi: 'مالی شنژن', + ap_shanghai_fsi: 'مالی شانگهای', + ap_beijing_fsi: 'مالی پکن', + ap_hongkong: 'هنگ کنگ، چین', + ap_singapore: 'سنگاپور', + ap_mumbai: 'بمبئی', + ap_jakarta: 'جاکارتا', + ap_seoul: 'سئول', + ap_bangkok: 'بانکوک', + ap_tokyo: 'توکیو', + na_siliconvalley: 'سیلیکون ولی (غرب آمریکا)', + na_ashburn: 'اشبرن (شرق آمریکا)', + na_toronto: 'تورنتو', + sa_saopaulo: 'سائوپائولو', + eu_frankfurt: 'فرانکفورت', + KODO: 'Qiniu Kodo', + scType: ' نوع ذخیره‌سازی', + typeStandard: 'استاندارد', + typeStandard_IA: 'Standard_IA', + typeArchive: 'بایگانی', + typeDeep_Archive: 'Deep_Archive', + scLighthouse: 'پیش‌فرض، ذخیره‌سازی اشیاء سبک فقط از این نوع ذخیره‌سازی پشتیبانی می‌کند', + scStandard: + 'ذخیره‌سازی استاندارد، مناسب برای سناریوهای تجاری با حجم زیادی از فایل‌های داغ پرتکرار و تعاملات مکرر داده.', + scStandard_IA: + 'ذخیره‌سازی با دسترسی کم‌تکرار، مناسب برای سناریوهای تجاری با فرکانس دسترسی پایین‌تر (مثلاً میانگین دسترسی ماهانه ۱-۲ بار)، حداقل مدت ذخیره‌سازی ۳۰ روز.', + scArchive: 'ذخیره‌سازی بایگانی مناسب برای سناریوهای تجاری با فرکانس دسترسی بسیار پایین است.', + scDeep_Archive: 'ذخیره‌سازی سرد پایدار مناسب برای سناریوهای تجاری با فرکانس دسترسی بسیار پایین است.', + archiveHelper: + 'فایل‌های ذخیره‌سازی بایگانی قابل دانلود مستقیم نیستند و ابتدا باید از طریق وب‌سایت ارائه‌دهنده سرویس ابری مربوطه بازیابی شوند. لطفاً با احتیاط استفاده کنید!', + backupAlert: + 'اگر یک ارائه‌دهنده ابری با پروتکل S3 سازگار است، می‌توانید مستقیماً از آمازون S3 برای پشتیبان‌گیری استفاده کنید.', + domain: 'دامنه شتاب‌دهنده', + backupAccount: 'حساب پشتیبان | حساب‌های پشتیبان', + loadBucket: 'دریافت سطل', + accountName: 'نام حساب', + accountKey: 'کلید حساب', + address: 'آدرس', + path: 'مسیر', + safe: 'امنیت', + passkey: 'کلید عبور', + passkeyManage: 'مدیریت', + passkeyKeyManagement: 'مدیریت کلید', + passkeyHelper: 'برای ورود سریع، حداکثر ۵ کلید عبور قابل اتصال است', + passkeyRequireSSL: 'کلیدهای عبور نیاز به دامنه متصل و دسترسی HTTPS دارند', + passkeyTrustedProxies: 'پروکسی‌های قابل اعتماد', + passkeyTrustedProxiesHelper: + 'فقط درخواست‌هایی از این منابع IP/CIDR هنگام تعیین HTTPS، به Forwarded و X-Forwarded-Proto اعتماد می‌کنند', + passkeyNotSupported: 'مرورگر یا محیط فعلی از کلیدهای عبور پشتیبانی نمی‌کند', + passkeyPrereqTitle: 'پیش‌نیازهای زیر برای کلید عبور لازم است', + passkeyPrereqBindDomain: 'پیکربندی اتصال دامنه 1Panel', + passkeyPrereqHttps: 'دسترسی امن از طریق HTTPS', + passkeyPrereqBrowser: 'محیط از کلید عبور پشتیبانی می‌کند (WebAuthn + authenticator پلتفرم)', + passkeyPrereqBrowserDetailWebAuthnUnavailable: + 'از مرورگر سیستم استفاده کنید و مطمئن شوید که پنل از طریق HTTPS با دامنه متصل باز شده است.', + passkeyPrereqBrowserDetailPlatformCapabilityUnavailable: + 'این محیط نمی‌تواند از احراز هویت دستگاه استفاده کند. مرورگر سیستم را در نسخه جدیدتر سیستم عامل امتحان کنید.', + passkeyPrereqBrowserDetailNoPlatformAuthenticator: + 'قفل صفحه / اثر انگشت / تشخیص چهره / Windows Hello را فعال کنید، سپس دوباره تلاش کنید.', + passkeyPrereqBrowserDetailDetectFailed: 'تشخیص ناموفق بود. بازخوانی و دوباره تلاش کنید، یا به مرورگر سیستم تغییر دهید.', + passkeyPrereqGoSetup: 'پیکربندی', + passkeyCount: 'متصل شده {0}/{1}', + passkeyName: 'نام', + passkeyNameHelper: 'برای تشخیص دستگاه‌ها، یک نام وارد کنید', + passkeyAdd: 'افزودن کلید عبور', + passkeyCreatedAt: 'تاریخ ایجاد', + passkeyLastUsedAt: 'آخرین استفاده', + passkeyDeleteConfirm: 'پس از حذف، این کلید عبور قابل استفاده برای ورود نیست. ادامه می‌دهید؟', + passkeyLimit: 'حداکثر ۵ کلید عبور قابل اتصال است', + passkeyFailed: 'ثبت کلید عبور ناموفق بود، تأیید کنید که گواهی SSL پنل یک گواهی معتبر است', + bindInfo: 'اطلاعات اتصال', + bindAll: 'گوش دادن به همه', + bindInfoHelper: + 'تغییر آدرس شنود سرویس یا پروتکل ممکن است باعث در دسترس نبودن سرویس شود. ادامه می‌دهید؟', + ipv6: 'گوش دادن به IPv6', + bindAddress: 'آدرس شنود', + entrance: 'ورودی', + showEntrance: 'نمایش هشدار غیرفعال در صفحه "نمای کلی"', + entranceHelper: + 'فعال‌سازی ورودی امنیتی فقط از طریق ورودی امنیتی مشخص شده اجازه ورود به پنل را می‌دهد.', + entranceError: 'یک نقطه ورودی امنیتی به طول ۵-۱۱۶ کاراکتر، فقط اعداد یا حروف پشتیبانی می‌شوند.', + entranceInputHelper: 'خالی بگذارید تا ورودی امنیتی غیرفعال شود.', + randomGenerate: 'تصادفی', + expirationTime: 'تاریخ انقضا', + unSetting: 'تنظیم نشده', + noneSetting: + 'مدت انقضای رمز عبور پنل را تنظیم کنید. پس از انقضا، باید رمز عبور را بازنشانی کنید', + expirationHelper: 'اگر مدت انقضای رمز عبور ۰ روز باشد، عملکرد انقضای رمز عبور غیرفعال است', + days: 'روزهای انقضای رمز عبور', + expiredHelper: 'رمز عبور فعلی منقضی شده است. لطفاً دوباره رمز عبور را تغییر دهید.', + timeoutHelper: 'رمز عبور پنل در {0} روز منقضی می‌شود. پس از انقضا، باید رمز عبور را بازنشانی کنید', + complexity: 'تأیید پیچیدگی', + complexityHelper: + 'پس از فعال‌سازی، رمز عبور باید ۸-۳۰ کاراکتر باشد و حداقل شامل دو مورد از حروف، اعداد و کاراکترهای ویژه باشد.', + bindDomain: 'اتصال دامنه', + unBindDomain: 'قطع اتصال دامنه', + panelSSL: 'SSL پنل', + unBindDomainHelper: 'عملیات قطع اتصال دامنه ممکن است باعث ناامنی سیستم شود. ادامه می‌دهید؟', + bindDomainHelper: 'پس از اتصال دامنه، فقط آن دامنه می‌تواند به سرویس 1Panel دسترسی داشته باشد.', + bindDomainHelper1: 'خالی بگذارید تا اتصال دامنه غیرفعال شود.', + bindDomainWarning: + 'پس از اتصال دامنه، شما خارج می‌شوید و فقط از طریق نام دامنه مشخص شده در تنظیمات می‌توانید به سرویس 1Panel دسترسی داشته باشید. ادامه می‌دهید؟', + allowIPs: 'IP مجاز', + unAllowIPs: 'IP غیرمجاز', + unAllowIPsWarning: + 'مجاز کردن IP خالی به همه IP‌ها اجازه دسترسی به سیستم را می‌دهد که ممکن است باعث ناامنی سیستم شود. ادامه می‌دهید؟', + allowIPsHelper: + 'پس از تنظیم لیست آدرس‌های IP مجاز، فقط آدرس IP موجود در لیست می‌تواند به سرویس پنل دسترسی داشته باشد.', + allowIPsWarning: + 'پس از تنظیم لیست آدرس‌های IP مجاز، فقط آدرس IP موجود در لیست می‌تواند به سرویس پنل دسترسی داشته باشد. ادامه می‌دهید؟', + allowIPsHelper1: 'خالی بگذارید تا محدودیت IP غیرفعال شود.', + allowIPEgs: 'هر خط یک IP. مثلاً،\n172.16.10.111\n172.16.10.0/24', + mfa: 'احراز هویت دو مرحله‌ای', + mfaClose: 'غیرفعال‌سازی MFA امنیت سرویس را کاهش می‌دهد. ادامه می‌دهید؟', + secret: 'راز', + mfaInterval: 'فاصله بازخوانی (ثانیه)', + mfaTitleHelper: + 'عنوان برای تشخیص میزبان‌های مختلف 1Panel استفاده می‌شود. پس از تغییر عنوان، دوباره اسکن کنید یا کلید راز را به صورت دستی اضافه کنید.', + mfaIntervalHelper: + 'پس از تغییر فاصله بازخوانی، دوباره اسکن کنید یا کلید راز را به صورت دستی اضافه کنید.\nبرخی از برنامه‌های احراز هویت فقط از فاصله ۳۰ ثانیه پشتیبانی می‌کنند (مثلاً Google/Microsoft Authenticator).', + mfaAlert: + 'توکن یک‌بار مصرف یک عدد ۶ رقمی است که به صورت پویا تولید شده و بر اساس زمان فعلی است. مطمئن شوید که زمان سرور همگام است.', + mfaHelper: 'پس از فعال‌سازی، توکن یک‌بار مصرف باید تأیید شود.', + mfaHelper1: 'یک برنامه احراز هویت دانلود کنید، مثلاً،', + mfaHelper2: + 'برای دریافت توکن یک‌بار مصرف، کد QR زیر را با برنامه احراز هویت خود اسکن کنید یا کلید راز را در برنامه احراز هویت خود کپی کنید.', + mfaHelper3: 'شش رقم از برنامه را وارد کنید', + mfaCode: 'توکن یک‌بار مصرف', + sslChangeHelper: 'تنظیمات https را تغییر داده و سرویس را مجدداً راه‌اندازی کنید. ادامه می‌دهید؟', + sslDisable: 'غیرفعال', + sslDisableHelper: + 'اگر سرویس https غیرفعال شود، برای اعمال نیاز به راه‌اندازی مجدد پنل است. ادامه می‌دهید؟', + noAuthSetting: 'تنظیمات عدم مجوز', + noAuthSettingHelper: + "هنگامی که کاربران با ورودی امنیتی مشخص شده وارد نمی‌شوند، یا از IP یا دامنه مشخص شده به پنل دسترسی ندارند، این پاسخ می‌تواند ویژگی پنل را پنهان کند.", + responseSetting: 'تنظیمات پاسخ', + help200: 'صفحه راهنما', + error400: 'درخواست نادرست', + error401: 'غیرمجاز', + error403: 'ممنوع', + error404: 'یافت نشد', + error408: 'زمان درخواست به پایان رسید', + error416: 'محدوده راضی‌کننده نیست', + error444: 'اتصال بسته شد', + error500: 'خطای داخلی سرور', + https: 'تنظیم HTTPS برای پنل امنیت دسترسی را بهبود می‌بخشد', + strictHelper: 'ترافیک غیر HTTPS نمی‌تواند به پنل متصل شود', + muxHelper: + "پنل به هر دو پروتکل HTTP و HTTPS گوش می‌دهد و ترافیک HTTP را به HTTPS تغییر مسیر می‌دهد، اما این ممکن است امنیت پنل را کاهش دهد", + certType: 'نوع گواهی', + selfSigned: 'خود امضا', + selfSignedHelper: 'مرورگرها ممکن است به گواهی‌های خود امضا اعتماد نکنند و هشدارهای امنیتی نشان دهند.', + select: 'انتخاب', + domainOrIP: 'دامنه یا IP:', + timeOut: 'مهلت', + rootCrtDownload: 'دانلود گواهی ریشه', + primaryKey: 'کلید اصلی', + certificate: 'گواهی', + backupJump: + 'فایل‌های پشتیبان در لیست پشتیبان فعلی نیستند، لطفاً از دایرکتوری فایل دانلود کرده و برای پشتیبان‌گیری وارد کنید.', + snapshot: 'تصویر لحظه‌ای | تصاویر لحظه‌ای', + noAppData: 'هیچ برنامه سیستمی برای انتخاب موجود نیست', + noBackupData: 'هیچ داده پشتیبان برای انتخاب موجود نیست', + stepBaseData: 'داده پایه', + stepAppData: 'برنامه سیستم', + stepPanelData: 'داده سیستم', + stepBackupData: 'داده پشتیبان', + stepOtherData: 'سایر داده‌ها', + operationLog: 'نگهداری لاگ عملیات', + loginLog: 'نگهداری لاگ دسترسی', + systemLog: 'نگهداری لاگ سیستم', + taskLog: 'نگهداری لاگ وظیفه', + monitorData: 'نگهداری داده‌های نظارت', + dockerConf: 'نگهداری پیکربندی Docker', + selectAllImage: 'پشتیبان‌گیری از همه تصاویر برنامه', + logLabel: 'لاگ', + agentLabel: 'پیکربندی گره', + appDataLabel: 'داده برنامه', + appImage: 'تصویر برنامه', + appBackup: 'پشتیبان برنامه', + backupLabel: 'دایرکتوری پشتیبان', + confLabel: 'فایل پیکربندی', + dockerLabel: 'کانتینر', + taskLabel: 'وظیفه زمان‌بندی', + resourceLabel: 'دایرکتوری منابع برنامه', + runtimeLabel: 'محیط اجرا', + appLabel: 'برنامه', + databaseLabel: 'پایگاه داده', + snapshotLabel: 'فایل تصویر لحظه‌ای', + websiteLabel: 'وب‌سایت', + directoryLabel: 'دایرکتوری', + appStoreLabel: 'فروشگاه برنامه', + shellLabel: 'اسکریپت', + tmpLabel: 'دایرکتوری موقت', + sslLabel: 'دایرکتوری گواهی', + reCreate: 'ایجاد تصویر لحظه‌ای ناموفق بود', + reRollback: 'بازگشت تصویر لحظه‌ای ناموفق بود', + deleteHelper: 'همه فایل‌های تصویر لحظه‌ای از جمله موارد موجود در حساب پشتیبان شخص ثالث حذف می‌شوند. ادامه می‌دهید؟', + status: 'وضعیت تصویر لحظه‌ای', + ignoreRule: 'قانون نادیده گرفتن', + editIgnoreRule: '@:commons.button.edit @.lower:setting.ignoreRule', + ignoreHelper: + 'این قانون برای فشرده‌سازی و پشتیبان‌گیری از دایرکتوری داده 1Panel در هنگام ایجاد تصویر لحظه‌ای استفاده می‌شود. به طور پیش‌فرض، فایل‌های سوکت نادیده گرفته می‌شوند.', + ignoreHelper1: 'هر خط یک قانون. مثلاً،\n*.log\n/opt/1panel/cache', + panelInfo: 'نوشتن اطلاعات پایه 1Panel', + panelBin: 'پشتیبان‌گیری از فایل‌های سیستم 1Panel', + daemonJson: 'پشتیبان‌گیری از فایل پیکربندی Docker', + appData: 'پشتیبان‌گیری از برنامه‌های نصب شده 1Panel', + panelData: 'پشتیبان‌گیری از دایرکتوری داده 1Panel', + backupData: 'پشتیبان‌گیری از دایرکتوری پشتیبان محلی 1Panel', + compress: 'ایجاد فایل تصویر لحظه‌ای', + upload: 'بارگذاری فایل تصویر لحظه‌ای', + recoverDetail: 'جزئیات بازیابی', + recoverFailed: 'بازیابی تصویر لحظه‌ای ناموفق بود', + importHelper: 'دایرکتوری تصویر لحظه‌ای: ', + lastRecoverAt: 'آخرین زمان بازیابی', + lastRollbackAt: 'آخرین زمان بازگشت', + reDownload: 'دانلود مجدد فایل پشتیبان', + recoverErrArch: 'بازیابی تصویر لحظه‌ای بین معماری‌های مختلف سرور پشتیبانی نمی‌شود!', + recoverErrSize: 'فضای دیسک ناکافی تشخیص داده شد، لطفاً بررسی یا پاک‌سازی کرده و دوباره تلاش کنید!', + recoverHelper: 'شروع بازیابی از تصویر لحظه‌ای {0}، قبل از ادامه اطلاعات زیر را تأیید کنید:', + recoverHelper1: 'بازیابی نیاز به راه‌اندازی مجدد سرویس‌های Docker و 1Panel دارد', + recoverHelper2: + 'لطفاً اطمینان حاصل کنید که فضای دیسک کافی روی سرور وجود دارد (اندازه فایل تصویر لحظه‌ای: {0}، فضای موجود: {1})', + recoverHelper3: + 'لطفاً اطمینان حاصل کنید که معماری سرور با معماری سروری که تصویر لحظه‌ای روی آن ایجاد شده مطابقت دارد (معماری سرور فعلی: {0})', + recoverHelper4: + 'این عملیات فقط گره اصلی را بازگردانی می‌کند. اگر گره‌های ثانویه ارتقاء یافته وجود دارند، ابتدا آنها را بازگردانی کنید سپس ادامه دهید.', + rollback: 'بازگشت', + rollbackHelper: + 'بازگشت این بازیابی همه فایل‌های این بازیابی را جایگزین می‌کند و ممکن است نیاز به راه‌اندازی مجدد سرویس‌های Docker و 1Panel داشته باشد. ادامه می‌دهید؟', + upgradeRecord: 'سابقه ارتقاء', + upgrading: 'در حال ارتقاء، لطفاً صبر کنید...', + upgradeHelper: 'ارتقاء نیاز به راه‌اندازی مجدد سرویس 1Panel دارد. ادامه می‌دهید؟', + noUpgrade: 'در حال حاضر آخرین نسخه است', + versionHelper: + 'قوانین نام‌گذاری: [نسخه اصلی].[نسخه عملکردی].[نسخه رفع اشکال]، همانطور که در مثال زیر نشان داده شده است:', + rollbackLocalHelper: + 'گره اصلی از بازگشت مستقیم پشتیبانی نمی‌کند. لطفاً برای بازگشت به صورت دستی دستور [1pctl restore] را اجرا کنید!', + upgradeCheck: 'بررسی به‌روزرسانی', + upgradeNotes: 'یادداشت انتشار', + upgradeNow: 'ارتقاء اکنون', + source: 'منبع دانلود', + versionNotSame: 'نسخه گره با گره اصلی مطابقت ندارد. لطفاً قبل از تلاش مجدد در مدیریت گره ارتقاء دهید.', + versionCompare: + 'تشخیص داده شد که گره {0} در حال حاضر به آخرین نسخه قابل ارتقاء رسیده است. لطفاً نسخه گره اصلی را بررسی کرده و دوباره تلاش کنید!', + about: 'درباره', + versionItem: 'نسخه فعلی', + backupCopies: 'تعداد کپی‌های پشتیبان', + backupCopiesHelper: 'تعداد کپی‌های پشتیبان ارتقاء را برای بازگشت نسخه تنظیم کنید. ۰ به معنای نگهداری همه است.', + backupCopiesRule: 'لطفاً حداقل ۳ رکورد پشتیبان ارتقاء نگهداری کنید', + release: 'یادداشت‌های انتشار', + releaseHelper: + 'دریافت یادداشت‌های انتشار برای محیط فعلی ناموفق بود. می‌توانید به صورت دستی مستندات رسمی را بررسی کنید.', + project: 'گیت‌هاب', + issue: 'بازخورد', + doc: 'مستندات رسمی', + star: 'ستاره', + description: 'پنل مدیریت سرور لینوکس', + forum: 'گفتگوها', + doc2: 'مستندات', + currentVersion: 'نسخه', + license: 'مجوز', + bindNode: 'اتصال گره', + menuSetting: 'تنظیمات منو', + menuSettingHelper: 'زمانی که فقط ۱ زیرمنو وجود دارد، نوار منو فقط آن زیرمنو را نمایش می‌دهد', + showAll: 'نمایش همه', + hideALL: 'مخفی کردن همه', + ifShow: 'آیا نمایش داده شود', + menu: 'منو', + confirmMessage: 'صفحه برای به‌روزرسانی لیست منوی پیشرفته بازخوانی می‌شود. ادامه می‌دهید؟', + recoverMessage: 'صفحه بازخوانی می‌شود و لیست منو به حالت اولیه بازگردانده می‌شود. ادامه می‌دهید؟', + compressPassword: 'رمز عبور فشرده‌سازی', + backupRecoverMessage: 'رمز عبور فشرده‌سازی یا باز کردن فشرده را وارد کنید (خالی بگذارید تا تنظیم نشود)', + }, + license: { + offLine: 'آفلاین', + community: 'OSS', + oss: 'نرم‌افزار منبع باز', + ee: 'نسخه سازمانی', + pro: 'حرفه‌ای', + trial: 'آزمایشی', + add: 'افزودن نسخه انجمن', + licenseBindHelper: 'سهمیه گره‌های رایگان فقط زمانی قابل استفاده است که مجوز به گره متصل باشد', + licenseAlert: + 'گره‌های نسخه انجمن فقط زمانی قابل افزودن هستند که مجوز به درستی به گره متصل باشد. فقط گره‌هایی که به درستی به مجوز متصل هستند از تغییر پشتیبانی می‌کنند.', + licenseUnbindHelper: 'گره‌های نسخه انجمن برای این مجوز شناسایی شدند. لطفاً ابتدا آنها را قطع اتصال کرده و دوباره تلاش کنید!', + subscription: 'اشتراک', + perpetual: 'دائمی', + product: 'محصول', + versionConstraint: 'خرید نسخه {0}', + forceUnbind: 'قطع اجباری', + forceUnbindHelper: + 'قطع اجباری هر گونه خطایی که در طول فرآیند قطع اتصال رخ دهد را نادیده گرفته و در نهایت اتصال مجوز را آزاد می‌کند.', + updateForce: 'به‌روزرسانی اجباری (نادیده گرفتن همه خطاها در طول قطع اتصال برای اطمینان از موفقیت نهایی عملیات)', + trialInfo: 'نسخه', + authorizationId: 'شناسه اشتراک', + authorizedUser: 'کاربر مجاز', + lostHelper: + 'مجوز به محدودیت تلاش مجدد رسیده است. برای اطمینان از ادامه کار ویژگی‌های نسخه تجاری، روی همگام‌سازی دستی کلیک کنید.', + exceptionalHelper: + 'تأیید همگام‌سازی مجوز ناموفق بود. برای اطمینان از عملکرد صحیح ویژگی‌های نسخه تجاری، روی همگام‌سازی دستی کلیک کنید. جزئیات: ', + quickUpdate: 'به‌روزرسانی سریع', + import: 'واردات', + power: 'مجوز', + unbindHelper: 'همه تنظیمات مرتبط با نسخه تجاری پس از قطع اتصال پاک می‌شوند. ادامه می‌دهید؟ ', + importLicense: 'واردات مجوز', + securityWarningTitle: 'از مجوزهای کرک شده یا مجوزهای منابع ناشناخته استفاده نکنید.', + securityWarningContent: + '1Panel با مجوزهای مدیریت سیستم اجرا می‌شود. مجوزهای غیررسمی یا ساخت‌های دستکاری شده ممکن است باعث تصاحب سرور، نشت داده و سایر خطرات امنیتی جدی شوند. مجوزها و نصب‌کننده‌ها را فقط از کانال‌های رسمی FIT2CLOUD تهیه کنید.', + importHelper: 'برای بارگذاری مجوز، کلیک کنید یا فایل را اینجا بکشید', + licenseRequiredTip: + 'مجوز هنوز وارد نشده است. شناسه دستگاه را کپی کنید، مجوز را دریافت کرده و قبل از ورود وارد کنید.', + licenseRequiredShortTip: + 'لطفاً ابتدا شناسه دستگاه را کپی کنید تا مجوز دریافت کنید. پس از وارد کردن مجوز می‌توانید وارد شوید.', + licenseRequiredUserTip: + 'مجوز نسخه سازمانی متصل نیست. برای وارد کردن مجوز با ابرمدیر تماس بگیرید.', + levelUpPro: 'ارتقاء به نسخه تجاری', + licenseSync: 'همگام‌سازی مجوز', + knowMorePro: 'بیشتر بدانید', + closeAlert: 'صفحه فعلی را می‌توان در تنظیمات پنل بست', + introduce: 'معرفی ویژگی‌ها', + deviceID: 'شناسه دستگاه', + corporation: 'شرکت مجوز', + expired: 'زمان انقضا', + edition: 'نسخه', + standard: 'استاندارد', + enterprise: 'سازمانی', + count: 'تعداد مجوز', + serialNo: 'شماره سریال', + remark: 'یادداشت', + waf: 'برای باز کردن نقشه‌های رهگیری، لاگ‌ها، رکوردهای مسدودسازی، محدودیت جغرافیایی، قوانین سفارشی، صفحات مسدودسازی سفارشی و موارد دیگر به نسخه تجاری ارتقاء دهید.', + tamper: 'برای محافظت از وب‌سایت‌ها در برابر تغییرات یا دستکاری غیرمجاز به نسخه تجاری ارتقاء دهید.', + tamperHelper: 'عملیات ناموفق بود، فایل یا پوشه دارای محافظت در برابر دستکاری است. لطفاً بررسی و دوباره تلاش کنید!', + setting: 'برای سفارشی‌سازی لوگوی پنل، پیام خوش‌آمدگویی و موارد دیگر به نسخه تجاری ارتقاء دهید.', + monitor: + 'برای مشاهده وضعیت بلادرنگ وب‌سایت، روند بازدیدکنندگان، منابع ترافیک، لاگ‌های درخواست و موارد دیگر به نسخه تجاری ارتقاء دهید.', + alert: 'برای دریافت هشدارهای پیامکی، مرور لاگ‌های هشدار و آگاهی از رویدادهای کلیدی به نسخه تجاری ارتقاء دهید.', + node: 'برای مدیریت چندین سرور لینوکس در 1Panel به نسخه تجاری ارتقاء دهید.', + nodeApp: 'برای ارتقاء نسخه برنامه‌های چند گره بدون نیاز به جابجایی دستی بین گره‌ها به نسخه تجاری ارتقاء دهید.', + nodeDashboard: + 'برای مدیریت متمرکز برنامه‌ها، وب‌سایت‌ها، پایگاه‌های داده و وظایف زمان‌بندی شده چند گره به نسخه تجاری ارتقاء دهید.', + fileExchange: 'برای انتقال سریع فایل‌ها بین سرورها به نسخه تجاری ارتقاء دهید.', + app: 'برای مشاهده جزئیات سرویس، نظارت بر ناهنجاری‌ها و موارد دیگر در برنامه موبایل به نسخه تجاری ارتقاء دهید.', + cluster: 'برای مدیریت خوشه‌های اصلی-برده MySQL/Postgres/Redis به نسخه تجاری ارتقاء دهید.', + vllm: 'برای مدیریت سرویس‌های vLLM در 1Panel با استقرار متمرکز، پیکربندی، عملیات چرخه حیات و ردیابی وظایف به نسخه تجاری ارتقاء دهید.', + 'model-downloader': + 'برای جستجو، دانلود و مدیریت فایل‌های مدل محلی از HuggingFace، ModelScope یا آینه‌های سازگار با دایرکتوری‌های مدل متمرکز و وظایف دانلود به نسخه تجاری ارتقاء دهید.', + }, + clean: { + scan: 'شروع اسکن', + scanHelper: 'به راحتی فایل‌های زباله تولید شده در حین اجرای 1Panel را پاک‌سازی کنید', + clean: 'پاک‌سازی اکنون', + reScan: 'اسکن مجدد', + cleanHelper: 'فایل‌ها و دایرکتوری‌های انتخاب شده پس از پاک‌سازی قابل بازگشت نیستند. ادامه می‌دهید؟', + statusSuggest: '(توصیه به پاک‌سازی)', + statusClean: '(بسیار تمیز)', + statusEmpty: 'بسیار تمیز، نیازی به پاک‌سازی نیست!', + statusWarning: '(با احتیاط ادامه دهید)', + lastCleanTime: 'آخرین پاک‌سازی: {0}', + lastCleanHelper: 'فایل‌ها و دایرکتوری‌های پاک‌سازی شده: {0}، مجموع پاک‌سازی: {1}', + cleanSuccessful: 'پاک‌سازی با موفقیت انجام شد', + currentCleanHelper: 'فایل‌ها و دایرکتوری‌های پاک‌سازی شده در این جلسه: {0}، مجموع پاک‌سازی: {1}', + suggest: '(توصیه شده)', + totalScan: 'مجموع فایل‌های زباله برای پاک‌سازی: ', + selectScan: 'مجموع فایل‌های زباله انتخاب شده: ', + system: 'فایل‌های زباله سیستم', + systemHelper: 'فایل‌های موقت تولید شده در طول تصویر لحظه‌ای، ارتقاء و سایر فرآیندها', + panelOriginal: 'فایل‌های پشتیبان قبل از بازیابی تصویر لحظه‌ای سیستم', + upgrade: 'فایل‌های پشتیبان ارتقاء سیستم', + agentPackages: 'بسته‌های نصب/ارتقاء گره‌های زیرین نسخه قبلی', + upgradeHelper: '(توصیه می‌شود آخرین پشتیبان ارتقاء را برای بازگشت سیستم نگهداری کنید)', + snapshot: 'فایل‌های موقت تصویر لحظه‌ای سیستم', + rollback: 'فایل‌های پشتیبان قبل از بازیابی', + backup: 'پشتیبان سیستم', + backupHelper: 'فایل‌های پشتیبان که با حساب‌های پشتیبان محلی مرتبط نیستند', + unknownBackup: 'پشتیبان سیستم', + tmpBackup: 'پشتیبان موقت', + unknownApp: 'پشتیبان برنامه غیرمرتبط', + unknownDatabase: 'پشتیبان پایگاه داده غیرمرتبط', + unknownWebsite: 'پشتیبان وب‌سایت غیرمرتبط', + unknownSnapshot: 'پشتیبان تصویر لحظه‌ای غیرمرتبط', + upload: 'فایل‌های موقت بارگذاری شده', + uploadHelper: 'فایل‌های موقت بارگذاری شده از لیست پشتیبان سیستم', + download: 'فایل‌های موقت دانلود شده', + downloadHelper: 'فایل‌های موقت دانلود شده از حساب‌های پشتیبان شخص ثالث توسط سیستم', + directory: 'دایرکتوری', + systemLog: 'فایل لاگ', + systemLogHelper: 'لاگ‌های سیستم، لاگ‌های وظیفه، فایل‌های لاگ وب‌سایت', + dockerLog: 'فایل‌های لاگ عملیات کانتینر', + taskLog: 'فایل‌های لاگ اجرای وظایف زمان‌بندی', + shell: 'وظایف زمان‌بندی اسکریپت شل', + containerShell: 'وظایف زمان‌بندی اسکریپت شل اجرا شده در داخل کانتینر', + curl: 'وظایف زمان‌بندی CURL', + docker: 'زباله کانتینر', + dockerHelper: 'فایل‌هایی مانند کانتینرها، تصاویر، حجم‌ها، کش ساخت و غیره.', + volumes: 'حجم‌ها', + buildCache: 'کش ساخت کانتینر', + appTmpDownload: 'فایل دانلود موقت برنامه', + unknownWebsiteLog: 'فایل پشتیبان لاگ وب‌سایت غیرمرتبط', + }, + app: { + app: 'برنامه | برنامه‌ها', + installName: 'نام', + installed: 'نصب شده', + all: 'همه', + version: 'نسخه', + detail: 'جزئیات', + params: 'پارامترها', + author: 'نویسنده', + source: 'منبع', + appName: 'نام برنامه', + deleteWarn: + 'عملیات حذف همه داده‌ها و پشتیبان‌ها را با هم حذف می‌کند. این عملیات قابل بازگشت نیست. ادامه می‌دهید؟ ', + syncSuccess: 'همگام‌سازی با موفقیت انجام شد', + canUpgrade: 'به‌روزرسانی', + backupName: 'نام فایل', + backupPath: 'مسیر فایل', + backupdate: 'زمان پشتیبان‌گیری', + versionSelect: 'انتخاب نسخه', + operatorHelper: 'عملیات {0} روی برنامه انتخاب شده انجام خواهد شد. ادامه می‌دهید؟', + startOperatorHelper: 'برنامه شروع خواهد شد. ادامه می‌دهید؟', + stopOperatorHelper: 'برنامه متوقف خواهد شد. ادامه می‌دهید؟', + restartOperatorHelper: 'برنامه مجدداً راه‌اندازی خواهد شد. ادامه می‌دهید؟', + reloadOperatorHelper: 'برنامه مجدداً بارگذاری خواهد شد. ادامه می‌دهید؟', + checkInstalledWarn: '"{0}" شناسایی نشد. به "فروشگاه برنامه" بروید تا نصب کنید.', + limitHelper: 'برنامه از قبل نصب شده است.', + deleteHelper: '"{0}" با منبع(های) زیر مرتبط است و قابل حذف نیست', + checkTitle: 'نکته', + defaultConfig: 'پیکربندی پیش‌فرض', + defaultConfigHelper: 'به پیکربندی پیش‌فرض بازگردانده شد، پس از ذخیره اعمال می‌شود', + forceDelete: 'حذف اجباری', + forceDeleteHelper: + 'حذف اجباری خطاهای حین حذف را نادیده گرفته و در نهایت فراداده را حذف می‌کند.', + deleteBackup: 'حذف پشتیبان', + deleteBackupHelper: 'همچنین پشتیبان برنامه را حذف کنید', + deleteDB: 'حذف پایگاه داده', + deleteDBHelper: 'همچنین پایگاه داده را حذف کنید', + noService: 'بدون {0}', + toInstall: 'رفتن به نصب', + param: 'پارامترها', + alreadyRun: 'نصب شده', + syncAppList: 'همگام‌سازی', + less1Minute: 'کمتر از ۱ دقیقه', + appOfficeWebsite: 'وب‌سایت رسمی', + github: 'گیت‌هاب', + document: 'مستندات', + updatePrompt: 'هیچ به‌روزرسانی موجود نیست', + installPrompt: 'هنوز هیچ برنامه‌ای نصب نشده است', + updateHelper: 'ویرایش پارامترها ممکن است باعث شود برنامه راه‌اندازی نشود. لطفاً با احتیاط اقدام کنید.', + updateWarn: 'به‌روزرسانی پارامترها نیاز به بازسازی برنامه دارد، ادامه می‌دهید؟ ', + busPort: 'پورت', + syncStart: 'شروع همگام‌سازی! لطفاً بعداً فروشگاه برنامه را بازخوانی کنید', + advanced: 'تنظیمات پیشرفته', + cpuCore: 'هسته', + containerName: 'نام کانتینر', + containerNameHelper: 'در صورت عدم تنظیم، نام کانتینر به طور خودکار تولید می‌شود', + allowPort: 'دسترسی خارجی', + allowPortHelper: 'اجازه دسترسی خارجی به پورت، پورت دیواره آتش را آزاد می‌کند', + appInstallWarn: + 'این برنامه به طور پیش‌فرض پورت خارجی را نمایش نمی‌دهد. برای نمایش آن روی "تنظیمات پیشرفته" کلیک کنید.', + upgradeStart: 'شروع ارتقاء! لطفاً بعداً صفحه را بازخوانی کنید', + toFolder: 'باز کردن دایرکتوری نصب', + editCompose: 'ویرایش فایل compose', + editComposeHelper: 'ویرایش فایل compose ممکن است باعث شکست نصب نرم‌افزار شود', + composeNullErr: 'compose نمی‌تواند خالی باشد', + takeDown: 'بازنشسته', + allReadyInstalled: 'نصب شده', + installHelper: 'اگر در دریافت تصویر مشکل دارید، شتاب تصویر را پیکربندی کنید.', + sortMode: 'مرتب‌سازی', + installWarn: + 'دسترسی خارجی انتخاب نشده است، این کار باعث می‌شود برنامه از طریق شبکه خارجی قابل دسترسی نباشد. ادامه می‌دهید؟', + showIgnore: 'مشاهده برنامه‌های نادیده گرفته شده', + cancelIgnore: 'لغو نادیده گرفتن', + ignoreList: 'برنامه‌های نادیده گرفته شده', + appHelper: 'برای یادگیری دستورالعمل‌های نصب برای برخی برنامه‌های خاص به صفحه جزئیات برنامه بروید.', + backupApp: 'پشتیبان‌گیری از برنامه قبل از ارتقاء', + backupAppHelper: + 'اگر ارتقاء ناموفق باشد، پشتیبان به طور خودکار بازگردانی می‌شود. لطفاً دلیل شکست را در لاگ حسابرسی-لاگ سیستم بررسی کنید', + openrestyDeleteHelper: 'حذف اجباری OpenResty همه وب‌سایت‌ها را حذف می‌کند. ادامه می‌دهید؟', + downloadLogHelper1: 'همه لاگ‌های برنامه {0} دانلود می‌شوند. ادامه می‌دهید؟ ', + downloadLogHelper2: 'آخرین {1} لاگ برنامه {0} دانلود می‌شود. ادامه می‌دهید؟ ', + syncAllAppHelper: 'همه برنامه‌ها همگام‌سازی می‌شوند. ادامه می‌دهید؟ ', + hostModeHelper: + 'حالت شبکه برنامه فعلی حالت host است. در صورت نیاز به باز کردن پورت، لطفاً به صورت دستی در صفحه دیواره آتش باز کنید.', + showLocal: 'نمایش برنامه‌های محلی', + reload: 'بارگذاری مجدد', + upgradeWarn: + 'ارتقاء برنامه فایل docker-compose.yml را جایگزین می‌کند. در صورت وجود تغییرات، می‌توانید برای مشاهده مقایسه فایل کلیک کنید', + openclawHttpsUpgradeNoticeTitle: + 'توجه: دستورالعمل‌های زیر فقط هنگام ارتقاء OpenClaw از نسخه‌های 2026.3.13 تا 2026.3.22 به 2026.3.23 یا بالاتر اعمال می‌شوند:', + openclawHttpsUpgradeNoticeItem1: + 'پس از ارتقاء، دسترسی عامل به HTTP بازمی‌گردد. به پیکربندی -> تنظیمات -> امنیت بروید و آدرس دسترسی را تأیید کنید.', + openclawHttpsUpgradeNoticeItem2: + 'اگر قبلاً از یک وب‌سایت پراکسی معکوس استفاده می‌کردید، هدف پراکسی را به http://IP:Port تغییر دهید.', + newVersion: 'نسخه جدید', + oldVersion: 'نسخه فعلی', + composeDiff: 'مقایسه فایل', + showDiff: 'مشاهده مقایسه', + useNew: 'استفاده از نسخه سفارشی', + useDefault: 'استفاده از نسخه پیش‌فرض', + useCustom: 'سفارشی‌سازی docker-compose.yml', + useCustomHelper: + 'استفاده از فایل docker-compose.yml سفارشی ممکن است باعث شکست ارتقاء برنامه شود. در صورت عدم نیاز، آن را انتخاب نکنید.', + diffHelper: + 'سمت چپ نسخه قدیمی، سمت راست نسخه جدید است. پس از ویرایش، برای ذخیره نسخه سفارشی کلیک کنید', + pullImage: 'دریافت تصویر', + pullImageHelper: 'قبل از شروع برنامه، docker pull را برای دریافت تصویر اجرا کنید', + deleteImage: 'حذف تصویر', + deleteImageHelper: 'تصویر مرتبط با برنامه را حذف کنید. در صورت شکست حذف، وظیفه متوقف نمی‌شود', + requireMemory: 'حافظه', + supportedArchitectures: 'معماری‌ها', + link: 'لینک', + showCurrentArch: 'معماری', + syncLocalApp: 'همگام‌سازی برنامه محلی', + memoryRequiredHelper: 'نیاز حافظه برنامه فعلی {0}', + gpuConfig: 'فعال‌سازی پشتیبانی GPU', + gpuConfigHelper: + 'لطفاً اطمینان حاصل کنید که دستگاه دارای GPU NVIDIA است و درایورهای NVIDIA و NVIDIA Docker Container Toolkit نصب شده‌اند', + webUI: 'آدرس دسترسی وب', + webUIPlaceholder: 'مثلاً: example.com:8080/login', + defaultWebDomain: 'آدرس دسترسی پیش‌فرض', + defaultWebDomainHepler: + 'اگر پورت برنامه ۸۰۸۰ باشد، آدرس تغییر مسیر http(s)://آدرس دسترسی پیش‌فرض:8080 خواهد بود', + webUIConfig: + 'گره فعلی آدرس دسترسی پیش‌فرضی پیکربندی نکرده است. لطفاً آن را در پارامترهای برنامه تنظیم کنید یا به تنظیمات پنل بروید!', + toLink: 'باز کردن', + customAppHelper: + 'قبل از نصب بسته فروشگاه برنامه سفارشی، لطفاً اطمینان حاصل کنید که هیچ برنامه‌ای نصب نشده است.', + forceUninstall: 'حذف اجباری نصب', + syncCustomApp: 'همگام‌سازی برنامه سفارشی', + ignoreAll: 'نادیده گرفتن همه نسخه‌های بعدی', + ignoreVersion: 'نادیده گرفتن نسخه مشخص', + specifyIP: 'اتصال IP میزبان', + specifyIPHelper: + 'آدرس میزبان/رابط شبکه را برای اتصال پورت تنظیم کنید (در صورت عدم اطمینان، آن را پر نکنید)', + uninstallDeleteBackup: 'حذف نصب برنامه - حذف پشتیبان', + uninstallDeleteImage: 'حذف نصب برنامه - حذف تصویر', + upgradeBackup: 'پشتیبان‌گیری از برنامه قبل از ارتقاء', + upgradeDeleteImage: 'ارتقاء برنامه - حذف تصویر قدیمی', + installAllowPort: 'هنگام نصب برنامه‌ها به طور پیش‌فرض دسترسی به پورت خارجی را باز کنید', + noAppHelper: 'هیچ برنامه‌ای شناسایی نشد، برای مشاهده لاگ همگام‌سازی فروشگاه برنامه به مرکز وظایف بروید', + isEdirWarn: 'تغییرات در docker-compose.yml شناسایی شد. لطفاً تفاوت را بررسی کنید.', + }, + website: { + primaryDomain: 'دامنه اصلی', + otherDomains: 'سایر دامنه‌ها', + static: 'ایستا', + deployment: 'استقرار', + supportUpType: 'فقط فرمت فایل .tar.gz پشتیبانی می‌شود و بسته فشرده باید شامل فایل {0}.json باشد', + proxy: 'پراکسی معکوس', + alias: 'نام مستعار', + ftpUser: 'حساب FTP', + ftpPassword: 'رمز عبور FTP', + ftpHelper: + 'پس از ایجاد وب‌سایت، یک حساب FTP مربوطه ایجاد می‌شود و دایرکتوری FTP به دایرکتوری وب‌سایت لینک می‌شود.', + remark: 'یادداشت', + groupSetting: 'مدیریت گروه', + createGroup: 'ایجاد گروه', + appNew: 'برنامه جدید', + appInstalled: 'برنامه نصب شده', + delete: 'حذف وب‌سایت', + deleteApp: 'حذف برنامه', + deleteBackup: 'حذف پشتیبان', + domain: 'دامنه', + domainHelper: 'هر خط یک دامنه.\nپشتیبانی از کاراکتر عام "*" و آدرس IP.\nپشتیبانی از افزودن پورت.', + addDomain: 'افزودن', + domainConfig: 'دامنه‌ها', + defaultDoc: 'سند پیش‌فرض', + perserver: 'هم‌روندی', + perserverHelper: 'حداکثر هم‌روندی سایت فعلی را محدود کنید', + perip: 'IP تکی', + peripHelper: 'حداکثر تعداد دسترسی هم‌زمان به یک IP را محدود کنید', + rate: 'محدودیت ترافیک', + rateLimit: 'محدودیت نرخ در هر درخواست', + rateHelper: 'محدودیت ترافیک هر درخواست (واحد: کیلوبایت)', + rateLimitHelper: 'محدودیت نرخ انتقال در هر درخواست (واحد: کیلوبایت/ثانیه)', + limitHelper: 'فعال‌سازی کنترل ترافیک', + other: 'سایر', + currentSSL: 'گواهی فعلی', + dnsAccount: 'حساب DNS', + applySSL: 'درخواست گواهی', + SSLList: 'لیست گواهی', + createDnsAccount: 'حساب DNS', + aliyun: 'DNS علی‌یون', + aliEsa: 'علی ESA', + awsRoute53: 'آمازون Route 53', + manual: 'تحلیل دستی', + key: 'کلید', + check: 'مشاهده', + acmeAccountManage: 'مدیریت حساب‌های ACME', + email: 'ایمیل', + acmeAccount: 'حساب ACME', + provider: 'روش تأیید', + dnsManual: 'تحلیل دستی', + expireDate: 'تاریخ انقضا', + brand: 'سازمان', + deploySSL: 'استقرار', + deploySSLHelper: 'آیا مطمئن هستید که می‌خواهید گواهی را مستقر کنید؟ ', + ssl: 'گواهی | گواهی‌ها', + dnsAccountManage: 'مدیریت ارائه‌دهندگان DNS', + renewSSL: 'تمدید', + renewHelper: 'آیا مطمئن هستید که می‌خواهید گواهی را تمدید کنید؟ ', + renewSuccess: 'تمدید گواهی', + enableHTTPS: 'فعال', + aliasHelper: 'نام مستعار نام دایرکتوری وب‌سایت است', + lastBackupAt: 'آخرین زمان پشتیبان‌گیری', + null: 'هیچکدام', + nginxConfig: 'پیکربندی Nginx', + websiteConfig: 'تنظیمات وب‌سایت', + proxySettings: 'تنظیمات پراکسی', + advancedSettings: 'تنظیمات پیشرفته', + cacheSettings: 'تنظیمات کش', + sniSettings: 'تنظیمات SNI', + basic: 'پایه', + source: 'پیکربندی', + security: 'امنیت', + nginxPer: 'بهینه‌سازی عملکرد', + neverExpire: 'هرگز', + setDefault: 'تنظیم به عنوان پیش‌فرض', + deleteHelper: 'وضعیت برنامه مرتبط غیرعادی است، لطفاً بررسی کنید', + toApp: 'رفتن به لیست نصب شده', + cycle: 'چرخه', + frequency: 'فرکانس', + ccHelper: + 'درخواست انباشته به همان URL بیش از {1} بار در {0} ثانیه، باعث فعال‌سازی دفاع CC می‌شود و این IP را مسدود می‌کند', + mustSave: 'تغییرات باید ذخیره شوند تا اعمال شوند', + fileExt: 'پسوند فایل', + fileExtBlock: 'لیست سیاه پسوند فایل', + value: 'مقدار', + enable: 'فعال', + proxyAddress: 'آدرس پراکسی', + proxyHelper: 'مثال: 127.0.0.1:8080', + forceDelete: 'حذف اجباری', + forceDeleteHelper: + 'حذف اجباری خطاهای حین حذف را نادیده گرفته و در نهایت فراداده را حذف می‌کند.', + deleteAppHelper: 'همزمان برنامه‌های مرتبط و پشتیبان‌های برنامه را حذف کنید', + deleteBackupHelper: 'همچنین پشتیبان‌های وب‌سایت را حذف کنید.', + deleteDatabaseHelper: 'همچنین پایگاه داده مرتبط با وب‌سایت را حذف کنید', + deleteConfirmHelper: + 'عملیات حذف قابل بازگشت نیست. "{0}" را برای تأیید حذف وارد کنید.', + staticPath: 'دایرکتوری اصلی مربوطه ', + limit: 'طرح', + blog: 'انجمن/وبلاگ', + imageSite: 'سایت تصویر', + downloadSite: 'سایت دانلود', + shopSite: 'فروشگاه', + doorSite: 'پورتال', + qiteSite: 'سازمانی', + videoSite: 'ویدئو', + errLog: 'لاگ خطا', + stopHelper: + 'پس از توقف سایت، امکان دسترسی عادی وجود ندارد و کاربر هنگام بازدید، صفحه توقف سایت فعلی را مشاهده می‌کند. ادامه می‌دهید؟ ', + startHelper: 'پس از فعال‌سازی سایت، کاربران می‌توانند به طور عادی به محتوای سایت دسترسی داشته باشند، ادامه می‌دهید؟ ', + sitePath: 'دایرکتوری', + siteAlias: 'نام مستعار سایت', + primaryPath: 'دایرکتوری ریشه', + folderTitle: 'وب‌سایت عمدتاً شامل پوشه‌های زیر است', + wafFolder: 'قوانین دیواره آتش', + indexFolder: 'دایرکتوری ریشه وب‌سایت', + sslFolder: 'گواهی وب‌سایت', + enableOrNot: 'فعال', + oldSSL: 'گواهی موجود', + manualSSL: 'واردات گواهی', + select: 'انتخاب', + selectSSL: 'انتخاب گواهی', + privateKey: 'کلید (KEY)', + certificate: 'گواهی (فرمت PEM)', + HTTPConfig: 'گزینه‌های HTTP', + HTTPSOnly: 'مسدود کردن درخواست‌های HTTP', + HTTPToHTTPS: 'تغییر مسیر به HTTPS', + HTTPAlso: 'اجازه درخواست‌های مستقیم HTTP', + sslConfig: 'گزینه‌های SSL', + disableHTTPS: 'غیرفعال‌سازی HTTPS', + disableHTTPSHelper: 'غیرفعال‌سازی HTTPS پیکربندی مرتبط با گواهی را حذف می‌کند، ادامه می‌دهید؟', + SSLHelper: + "توجه: از گواهی‌های SSL برای وب‌سایت‌های غیرقانونی استفاده نکنید.\nاگر پس از باز کردن، دسترسی HTTPS کار نمی‌کند، بررسی کنید که گروه امنیتی پورت ۴۴۳ را به درستی آزاد کرده است.", + SSLConfig: 'تنظیمات گواهی', + SSLProConfig: 'تنظیمات پروتکل', + supportProtocol: 'نسخه پروتکل', + encryptionAlgorithm: 'الگوریتم رمزگذاری', + notSecurity: '(ناامن)', + encryptHelper: + "Let's Encrypt محدودیت فرکانسی برای صدور گواهی دارد، اما برای رفع نیازهای عادی کافی است. عملیات بسیار مکرر باعث شکست صدور می‌شود. برای محدودیت‌های خاص، مستندات رسمی را ببینید", + ipValue: 'مقدار', + wafValueHelper: 'مقدار', + ext: 'پسوند فایل', + wafInputHelper: 'داده‌ها را خط به خط وارد کنید، هر خط یک ورودی', + data: 'داده', + ever: 'دائمی', + nextYear: 'یک سال بعد', + noLog: 'هیچ لاگی یافت نشد', + defaultServer: 'تنظیم سایت پیش‌فرض', + noDefaultServer: 'تنظیم نشده', + defaultServerHelper: + 'پس از تنظیم سایت پیش‌فرض، همه دامنه‌ها و IP‌های متصل نشده به سایت پیش‌فرض تغییر مسیر داده می‌شوند\nاین می‌تواند به طور مؤثر از تحلیل مخرب جلوگیری کند\nبا این حال، همچنین باعث می‌شود که رهگیری دامنه غیرمجاز WAF از کار بیفتد', + restoreHelper: 'آیا مطمئن هستید که می‌خواهید با استفاده از این پشتیبان بازیابی کنید؟', + websiteDeploymentHelper: 'برای ایجاد وب‌سایت از یک برنامه نصب شده استفاده کنید یا یک برنامه جدید ایجاد کنید.', + websiteStatictHelper: 'یک دایرکتوری وب‌سایت روی میزبان ایجاد کنید.', + websiteProxyHelper: + 'برای پراکسی کردن سرویس موجود از پراکسی معکوس استفاده کنید. به عنوان مثال، اگر سرویسی روی پورت ۸۰۸۰ نصب و اجرا می‌شود، آدرس پراکسی "http://127.0.0.1:8080" خواهد بود.', + runtimeProxyHelper: 'برای ایجاد وب‌سایت از یک محیط اجرای وب‌سایت استفاده کنید.', + runtime: 'محیط اجرا', + deleteRuntimeHelper: + 'برنامه محیط اجرا باید همراه با وب‌سایت حذف شود، لطفاً با احتیاط رفتار کنید', + proxyType: 'نوع شبکه', + unix: 'شبکه یونیکس', + tcp: 'شبکه TCP/IP', + phpFPM: 'پیکربندی FPM', + phpConfig: 'پیکربندی PHP', + updateConfig: 'به‌روزرسانی پیکربندی', + isOn: 'روشن', + isOff: 'خاموش', + rewrite: 'شبه استاتیک', + rewriteMode: 'طرح', + current: 'فعلی', + rewriteHelper: + 'اگر تنظیم شبه استاتیک باعث غیرقابل دسترس شدن وب‌سایت شد، سعی کنید به تنظیمات پیش‌فرض بازگردید.', + runDir: 'دایرکتوری اجرا', + runUserHelper: + 'برای وب‌سایت‌های مستقر شده از طریق محیط اجرای کانتینر PHP، باید مالک و گروه کاربری همه فایل‌ها و پوشه‌های زیر ایندکس و زیردایرکتوری‌ها را روی ۱۰۰۰ تنظیم کنید. برای محیط PHP محلی، به تنظیمات کاربر و گروه کاربری PHP-FPM محلی مراجعه کنید', + userGroup: 'کاربر/گروه', + uGroup: 'گروه', + proxyPath: 'مسیر پراکسی', + proxyPass: 'URL هدف', + cache: 'کش', + cacheTime: 'مدت زمان کش', + enableCache: 'کش', + proxyHost: 'میزبان پراکسی', + disabled: 'متوقف شده', + startProxy: 'این کار پراکسی معکوس را شروع می‌کند. ادامه می‌دهید؟', + stopProxy: 'این کار پراکسی معکوس را متوقف می‌کند. ادامه می‌دهید؟', + sourceFile: 'مشاهده منبع', + proxyHelper1: 'هنگام دسترسی به این دایرکتوری، محتوای URL هدف بازگردانده شده و نمایش داده می‌شود.', + proxyPassHelper: 'URL هدف باید معتبر و قابل دسترس باشد.', + proxyHostHelper: 'نام دامنه را در هدر درخواست به سرور پراکسی ارسال کنید.', + modifier: 'قوانین تطابق', + modifierHelper: + 'مثال: "=" تطابق دقیق، "~" تطابق منظم، "^~" تطابق ابتدای مسیر و غیره.', + replace: 'جایگزینی متن', + replaceHelper: + 'ویژگی جایگزینی متن nginx امکان جایگزینی رشته در محتوای پاسخ در حین پراکسی معکوس را فراهم می‌کند. معمولاً برای تغییر لینک‌ها، آدرس‌های API و غیره در فایل‌های HTML، CSS، JavaScript و سایر فایل‌های برگشتی از بک‌اند استفاده می‌شود. از تطابق عبارات منظم برای نیازهای پیچیده جایگزینی محتوا پشتیبانی می‌کند.', + addReplace: 'افزودن', + replaced: 'رشته جستجو (نمی‌تواند خالی باشد)', + replaceText: 'رشته جایگزین', + replacedErr: 'رشته جستجو نمی‌تواند خالی باشد', + replacedErr2: 'رشته جستجو نمی‌تواند تکراری باشد', + replacedListEmpty: 'هیچ قانون جایگزینی متنی وجود ندارد', + proxySslName: 'نام SNI پراکسی', + basicAuth: 'احراز هویت پایه', + editBasicAuthHelper: + 'رمز عبور به صورت نامتقارن رمزگذاری شده است و قابل بازگشت نیست. ویرایش نیاز به بازنشانی رمز عبور دارد', + antiLeech: 'ضد دزدی', + extends: 'پسوند', + browserCache: 'کش مرورگر', + noModify: 'بدون تغییر', + serverCache: 'کش سرور', + leechLog: 'ثبت لاگ ضد دزدی', + accessDomain: 'دامنه‌های مجاز', + leechReturn: 'منبع پاسخ', + noneRef: 'اجازه ارجاع دهنده خالی', + disable: 'فعال نشده', + disableLeechHelper: 'آیا ضد دزدی غیرفعال شود؟', + disableLeech: 'غیرفعال‌سازی ضد دزدی', + ipv6: 'شنود IPv6', + leechReturnError: 'کد وضعیت HTTP را پر کنید', + blockedRef: 'اجازه Referer غیر استاندارد', + accessControl: 'کنترل ضد دزدی', + leechcacheControl: 'کنترل کش', + logEnableControl: 'ثبت درخواست‌های منابع استاتیک', + leechSpecialValidHelper: + "هنگامی که 'اجازه Referer خالی' فعال باشد، درخواست‌های بدون Referer (دسترسی مستقیم و غیره) مسدود نمی‌شوند؛ فعال‌سازی 'اجازه Referer غیر استاندارد' به هر Referer که با http/https شروع نمی‌شود اجازه می‌دهد (درخواست‌های مشتری و غیره).", + leechInvalidReturnHelper: 'کد وضعیت HTTP بازگردانده شده پس از مسدودسازی درخواست‌های دزدی', + leechlogControlHelper: + 'درخواست‌های منابع استاتیک را ثبت می‌کند؛ معمولاً در محیط تولید غیرفعال می‌شود تا از لاگ‌های بیش از حد و مزاحم جلوگیری شود', + selectAcme: 'انتخاب حساب Acme', + imported: 'ایجاد دستی', + importType: 'نوع واردات', + pasteSSL: 'چسباندن کد', + localSSL: 'انتخاب فایل سرور', + privateKeyPath: 'فایل کلید خصوصی', + certificatePath: 'فایل گواهی', + ipWhiteListHelper: 'نقش لیست سفید IP: همه قوانین برای IP‌های موجود در لیست سفید نامعتبر هستند', + redirect: 'تغییر مسیر', + sourceDomain: 'دامنه منبع', + targetURL: 'آدرس URL هدف', + keepPath: 'پارامترهای URI', + path: 'مسیر', + redirectType: 'نوع تغییر مسیر', + redirectWay: 'روش', + keep: 'نگهداری', + notKeep: 'عدم نگهداری', + redirectRoot: 'تغییر مسیر به صفحه اصلی', + redirectHelper: 'تغییر مسیر دائمی ۳۰۱، تغییر مسیر موقت ۳۰۲', + changePHPVersionWarn: 'این عملیات قابل بازگشت نیست، ادامه می‌دهید؟', + changeVersion: 'تغییر نسخه', + retainConfig: 'آیا فایل‌های php-fpm.conf و php.ini نگهداری شوند', + runDirHelper2: 'لطفاً اطمینان حاصل کنید که دایرکتوری اجرای ثانویه در زیر دایرکتوری ایندکس قرار دارد', + openrestyHelper: + 'پورت HTTP پیش‌فرض OpenResty: {0} پورت HTTPS: {1}، که ممکن است بر دسترسی به دامنه وب‌سایت و تغییر مسیر اجباری HTTPS تأثیر بگذارد', + primaryDomainHelper: 'مثال: example.com یا example.com:8080', + acmeAccountType: 'نوع حساب', + keyType: 'الگوریتم کلید', + tencentCloud: 'تنسنت کلود', + containWarn: 'دامنه شامل دامنه اصلی است، دوباره وارد کنید', + rewriteHelper2: + 'برنامه‌هایی مانند وردپرس نصب شده از فروشگاه برنامه معمولاً دارای پیکربندی شبه استاتیک از پیش تنظیم هستند. پیکربندی مجدد آنها ممکن است منجر به خطا شود.', + websiteBackupWarn: + 'فقط واردات پشتیبان‌های محلی پشتیبانی می‌شود، واردات پشتیبان از ماشین‌های دیگر ممکن است باعث شکست بازیابی شود', + ipWebsiteWarn: 'وب‌سایت‌هایی با IP به عنوان دامنه باید به عنوان سایت پیش‌فرض تنظیم شوند تا به طور عادی قابل دسترسی باشند.', + hstsHelper: 'فعال‌سازی HSTS می‌تواند امنیت وب‌سایت را افزایش دهد', + includeSubDomains: 'زیردامنه‌ها', + hstsIncludeSubDomainsHelper: + 'پس از فعال‌سازی، خط مشی HSTS برای همه زیردامنه‌های دامنه فعلی اعمال می‌شود.', + defaultHtml: 'تنظیم صفحه پیش‌فرض', + website404: 'صفحه خطای ۴۰۴ وب‌سایت', + domain404: 'صفحه وب‌سایت وجود ندارد', + indexHtml: 'صفحه پیش‌فرض وب‌سایت استاتیک', + stopHtml: 'صفحه توقف وب‌سایت', + indexPHP: 'صفحه پیش‌فرض وب‌سایت PHP', + sslExpireDate: 'تاریخ انقضای SSL', + website404Helper: 'صفحه خطای ۴۰۴ وب‌سایت فقط برای وب‌سایت‌های محیط اجرای PHP و وب‌سایت‌های استاتیک پشتیبانی می‌شود', + sni: 'SNI مبدا', + sniHelper: + "زمانی که بک‌اند پراکسی معکوس HTTPS باشد، ممکن است نیاز به تنظیم SNI مبدا داشته باشید. برای جزئیات به مستندات ارائه‌دهنده سرویس CDN مراجعه کنید.", + proxySslVerify: 'تأیید گواهی SSL بک‌اند', + proxySslVerifyHelper: + 'هنگام فعال‌سازی، پراکسی به طور دقیق گواهی SSL بالادست را تأیید می‌کند (به طور پیش‌فرض غیرفعال است).', + huaweicloud: 'هوآوی کلود', + createDb: 'ایجاد پایگاه داده', + enableSSLHelper: 'عدم فعال‌سازی بر ایجاد وب‌سایت تأثیری نمی‌گذارد', + batchAdd: 'افزودن دسته‌ای دامنه‌ها', + batchInput: 'ورودی دسته‌ای', + domainNotFQDN: 'این دامنه ممکن است در شبکه عمومی قابل دسترسی نباشد', + domainInvalid: 'فرمت دامنه نامعتبر است', + domainBatchHelper: 'هر خط یک دامنه، فرمت: domain:port@ssl\nمثال: example.com:443@ssl یا example.com', + generateDomain: 'تولید', + global: 'جهانی', + subsite: 'زیرسایت', + subsiteHelper: 'یک زیرسایت می‌تواند یک دایرکتوری وب‌سایت PHP یا استاتیک موجود را به عنوان دایرکتوری اصلی انتخاب کند.', + parentWbeiste: 'وب‌سایت والد', + deleteSubsite: 'برای حذف وب‌سایت فعلی، ابتدا باید زیرسایت‌های {0} را حذف کنید', + loadBalance: 'تعادل بار', + server: 'سرور', + algorithm: 'الگوریتم', + ipHash: 'هش IP', + ipHashHelper: + 'درخواست‌ها را بر اساس آدرس IP مشتری به یک سرور خاص توزیع می‌کند و تضمین می‌کند که یک مشتری خاص همیشه به همان سرور هدایت شود.', + leastConn: 'کمترین اتصال', + leastConnHelper: 'درخواست‌ها را به سروری با کمترین اتصال فعال ارسال می‌کند.', + leastTime: 'کمترین زمان', + leastTimeHelper: 'درخواست‌ها را به سروری با کوتاه‌ترین زمان اتصال فعال ارسال می‌کند.', + defaultHelper: + 'روش پیش‌فرض، درخواست‌ها به طور مساوی بین هر سرور توزیع می‌شوند. اگر سرورها وزن‌هایی پیکربندی شده باشند، درخواست‌ها بر اساس وزن‌های مشخص شده توزیع می‌شوند و سرورهای با وزن بالاتر درخواست‌های بیشتری دریافت می‌کنند.', + weight: 'وزن', + maxFails: 'حداکثر شکست', + maxConns: 'حداکثر اتصالات', + strategy: 'استراتژی', + strategyDown: 'پایین', + strategyBackup: 'پشتیبان', + ipHashBackupErr: 'هش IP از گره‌های پشتیبان پشتیبانی نمی‌کند', + failTimeout: 'مهلت شکست', + failTimeoutHelper: + 'طول پنجره زمانی برای بررسی سلامت سرور. هنگامی که تعداد شکست‌های تجمعی در این دوره به آستانه می‌رسد، سرور به طور موقت حذف شده و پس از همان مدت دوباره تلاش می‌شود. پیش‌فرض ۱۰ ثانیه', + staticChangePHPHelper: 'در حال حاضر یک وب‌سایت استاتیک است، می‌توانید به وب‌سایت PHP تغییر دهید', + proxyCache: 'کش پراکسی معکوس', + cacheLimit: 'محدودیت فضای کش', + shareCahe: 'اندازه حافظه کش شمارش', + cacheExpire: 'زمان انقضای کش', + shareCaheHelper: 'تقریباً ۸۰۰۰ شیء کش در هر ۱ مگابایت حافظه قابل ذخیره است', + cacheLimitHelper: 'کش قدیمی در صورت تجاوز از حد به طور خودکار حذف می‌شود', + cacheExpireJHelper: 'کش در صورت عدم بازدید پس از زمان انقضا حذف می‌شود', + realIP: 'IP واقعی', + ipFrom: 'منبع IP', + ipFromHelper: + "با پیکربندی منابع IP قابل اعتماد، OpenResty اطلاعات IP را در هدرهای HTTP تجزیه و تحلیل می‌کند، آدرس IP واقعی بازدیدکنندگان را به طور دقیق شناسایی و ثبت می‌کند، از جمله در لاگ‌های دسترسی", + ipFromExample1: "اگر فرانت‌اند ابزاری مانند Frp است، می‌توانید آدرس IP Frp را وارد کنید، مثلاً 127.0.0.1", + ipFromExample2: "اگر فرانت‌اند CDN است، می‌توانید محدوده آدرس IP CDN را وارد کنید", + ipFromExample3: + 'اگر مطمئن نیستید، می‌توانید 0.0.0.0/0 (ipv4) ::/0 (ipv6) را وارد کنید [توجه: اجازه هر منبع IP ناامن است]', + http3Helper: + 'HTTP/3 یک ارتقاء نسبت به HTTP/2 است که سرعت اتصال سریع‌تر و عملکرد بهتر را ارائه می‌دهد، اما همه مرورگرها از HTTP/3 پشتیبانی نمی‌کنند. فعال‌سازی آن ممکن است باعث شود برخی مرورگرها نتوانند به سایت دسترسی داشته باشند.', + cors: 'CORS', + enableCors: 'فعال‌سازی CORS', + allowOrigins: 'دامنه‌های مجاز', + allowMethods: 'روش‌های درخواست مجاز', + allowHeaders: 'هدرهای درخواست مجاز', + allowCredentials: 'اجازه ارسال کوکی‌ها', + preflight: 'پاسخ سریع به درخواست پیش‌پرواز', + preflightHleper: + 'هنگام فعال‌سازی، هنگامی که مرورگر یک درخواست پیش‌پرواز بین‌منبعی (درخواست OPTIONS) ارسال می‌کند، سیستم به طور خودکار یک کد وضعیت ۲۰۴ بازگردانده و هدرهای پاسخ متقاطع لازم را تنظیم می‌کند', + changeDatabase: 'تغییر پایگاه داده', + changeDatabaseHelper1: 'ارتباط پایگاه داده برای پشتیبان‌گیری و بازیابی وب‌سایت استفاده می‌شود.', + changeDatabaseHelper2: 'تغییر به پایگاه داده دیگر باعث می‌شود پشتیبان‌های قبلی قابل بازیابی نباشند.', + saveCustom: 'ذخیره به عنوان قالب', + rainyun: 'Rain Yun', + volcengine: 'Volcengine', + runtimePortHelper: 'محیط اجرای فعلی دارای چندین پورت است. یک پورت پراکسی انتخاب کنید.', + runtimePortWarn: 'محیط اجرای فعلی هیچ پورتی ندارد، قادر به پراکسی نیست', + cacheWarn: 'لطفاً ابتدا کلید کش را در پراکسی معکوس خاموش کنید', + loadBalanceHelper: + 'پس از ایجاد تعادل بار، به "پراکسی معکوس" بروید، یک پراکسی اضافه کرده و آدرس بک‌اند را به: http://<نام تعادل بار> تنظیم کنید', + favorite: 'نشان کردن', + cancelFavorite: 'لغو نشان کردن', + useProxy: 'استفاده از پراکسی', + useProxyHelper: 'از آدرس سرور پراکسی در تنظیمات پنل استفاده کنید', + westCN: 'وست دیجیتال', + openBaseDir: 'جلوگیری از حملات بین‌سایتی', + openBaseDirHelper: + 'open_basedir برای محدود کردن مسیر دسترسی فایل PHP استفاده می‌شود که به جلوگیری از دسترسی بین‌سایتی و افزایش امنیت کمک می‌کند', + serverCacheTime: 'زمان کش سرور', + serverCacheTimeHelper: + 'زمانی که یک درخواست در سرور کش می‌شود. در این مدت، درخواست‌های یکسان بدون درخواست از سرور مبدا، نتیجه کش شده را برمی‌گردانند.', + browserCacheTime: 'زمان کش مرورگر', + browserCacheTimeHelper: + 'زمانی که منابع استاتیک به صورت محلی در مرورگر کش می‌شوند و درخواست‌های اضافی را کاهش می‌دهند. کاربران هنگام بازخوانی صفحه قبل از انقضا از کش محلی استفاده می‌کنند.', + donotLinkeDB: 'اتصال به پایگاه داده انجام نشود', + toWebsiteDir: 'ورود به دایرکتوری وب‌سایت', + execParameters: 'پارامترهای اجرا', + extCommand: 'دستور تکمیلی', + mirror: 'منبع آینه', + execUser: 'کاربر اجراکننده', + execDir: 'دایرکتوری اجرا', + packagist: 'آینه کامل چین', + batchOperate: 'عملیات دسته‌ای', + batchOperateHelper: 'عملیات دسته‌ای {0} وب‌سایت، ادامه عملیات؟', + stream: 'پراکسی TCP/UDP', + streamPorts: 'پورت‌های شنود', + streamPortsHelper: + 'پورت شماره گوش دادن خارجی را تنظیم کنید، کلاینت‌ها از طریق این پورت به سرویس دسترسی خواهند داشت، با کاما جدا کنید، مثلاً 5222,5223', + streamHelper: 'انتقال پورت TCP/UDP و تعادل بار', + udp: 'فعال‌سازی UDP', + syncHtmlHelper: 'همگام‌سازی با وب‌سایت‌های PHP و استاتیک', + }, + php: { + short_open_tag: 'پشتیبانی از برچسب کوتاه', + max_execution_time: 'حداکثر زمان اجرای اسکریپت', + max_input_time: 'حداکثر زمان ورودی', + memory_limit: 'محدودیت حافظه اسکریپت', + post_max_size: 'حداکثر اندازه داده POST', + file_uploads: 'آیا اجازه بارگذاری فایل داده شود', + upload_max_filesize: 'حداکثر اندازه مجاز برای بارگذاری فایل', + max_file_uploads: 'حداکثر تعداد فایل‌های مجاز برای بارگذاری همزمان', + default_socket_timeout: 'مهلت سوکت', + error_reporting: 'سطح خطا', + display_errors: 'آیا اطلاعات دقیق خطا نمایش داده شود', + cgi_fix_pathinfo: 'آیا pathinfo باز شود', + date_timezone: 'منطقه زمانی', + disableFunction: 'غیرفعال‌سازی تابع', + disableFunctionHelper: 'تابعی که باید غیرفعال شود را وارد کنید، مانند exec، لطفاً چندین مورد را با کاما جدا کنید', + uploadMaxSize: 'محدودیت بارگذاری', + indexHelper: + 'برای اطمینان از عملکرد عادی وب‌سایت PHP، لطفاً کد را در دایرکتوری index قرار دهید و از تغییر نام خودداری کنید', + extensions: 'قالب‌های پسوند', + extension: 'پسوند', + extensionsHelper: 'برای چندین پسوند، با کاما جدا کنید', + extensionHelper: 'لطفاً چندین پسوند را با کاما جدا کنید', + toExtensionsList: 'مشاهده لیست پسوندها', + containerConfig: 'پیکربندی کانتینر', + containerConfigHelper: + 'متغیرهای محیطی و سایر اطلاعات را می‌توان در پیکربندی - پیکربندی کانتینر پس از ایجاد تغییر داد', + dateTimezoneHelper: 'مثال: TZ=Asia/Shanghai (در صورت نیاز اضافه کنید)', + }, + nginx: { + serverNamesHashBucketSizeHelper: 'اندازه جدول هش نام سرور', + clientHeaderBufferSizeHelper: 'اندازه بافر هدر درخواست مشتری', + clientMaxBodySizeHelper: 'حداکثر آپلود فایل', + keepaliveTimeoutHelper: 'مهلت اتصال', + gzipMinLengthHelper: 'حداقل فایل فشرده', + gzipCompLevelHelper: 'نرخ فشرده‌سازی', + gzipHelper: 'فعال‌سازی فشرده‌سازی برای انتقال', + connections: 'اتصال‌های فعال', + accepts: 'پذیرش‌ها', + handled: 'مدیریت شده', + requests: 'درخواست‌ها', + reading: 'در حال خواندن', + writing: 'در حال نوشتن', + waiting: 'در انتظار', + status: 'وضعیت فعلی', + configResource: 'پیکربندی', + saveAndReload: 'ذخیره و بارگذاری مجدد', + clearProxyCache: 'پاک‌سازی کش پراکسی معکوس', + clearProxyCacheWarn: 'این عمل همه فایل‌های موجود در دایرکتوری کش را حذف می‌کند. ادامه می‌دهید؟', + create: 'افزودن یک ماژول جدید', + update: 'ویرایش یک ماژول', + params: 'پارامترها', + packages: 'بسته‌ها', + script: 'اسکریپت‌ها', + module: 'ماژول‌ها', + build: 'ساخت', + buildWarn: + 'ساخت OpenResty نیاز به رزرو مقدار مشخصی از CPU و حافظه دارد که ممکن است زمان‌بر باشد، لطفاً صبور باشید', + mirrorUrl: 'منبع نرم‌افزار', + paramsHelper: 'مثال: --add-module=/tmp/ngx_brotli', + packagesHelper: 'مثال: git, curl (با کاما جدا کنید)', + scriptHelper: + 'اسکریپت‌هایی که قبل از کامپایل اجرا می‌شوند، معمولاً برای دانلود کد منبع ماژول، نصب وابستگی‌ها و غیره.', + buildHelper: + 'پس از افزودن/تغییر ماژول، روی ساخت کلیک کنید. OpenResty در صورت موفقیت آمیز بودن ساخت به طور خودکار راه‌اندازی مجدد می‌شود.', + defaultHttps: 'ضد دستکاری HTTPS', + defaultHttpsHelper1: 'فعال‌سازی این گزینه می‌تواند مشکلات دستکاری HTTPS را حل کند.', + sslRejectHandshake: 'رد دست دادن SSL پیش‌فرض', + sslRejectHandshakeHelper: + 'فعال‌سازی این گزینه می‌تواند از نشت گواهی جلوگیری کند، تنظیم یک وب‌سایت پیش‌فرض این تنظیم را بی‌اثر می‌کند', + }, + ssl: { + create: 'درخواست', + provider: 'نوع', + manualCreate: 'ایجاد دستی', + acmeAccount: 'حساب ACME', + resolveDomain: 'تحلیل دامنه', + err: 'خطا', + value: 'مقدار رکورد', + dnsResolveHelper: 'برای افزودن رکوردهای تحلیل زیر به ارائه‌دهنده خدمات تحلیل DNS بروید:', + detail: 'مشاهده جزئیات', + msg: 'اطلاعات', + ssl: 'گواهی', + key: 'کلید خصوصی', + startDate: 'زمان اعتبار', + organization: 'سازمان صادرکننده', + renewConfirm: 'این کار یک گواهی جدید برای دامنه {0} تمدید می‌کند. ادامه می‌دهید؟', + autoRenew: 'تمدید خودکار', + autoRenewHelper: '۳۰ روز قبل از انقضا به طور خودکار تمدید می‌شود', + renewSuccess: 'تمدید با موفقیت انجام شد', + renewWebsite: + 'این گواهی با وب‌سایت‌های زیر مرتبط است و به طور همزمان روی این وب‌سایت‌ها اعمال می‌شود', + createAcme: 'ایجاد حساب', + acmeHelper: 'حساب Acme برای درخواست گواهی‌های رایگان استفاده می‌شود', + upload: 'واردات', + applyType: 'روش درخواست', + apply: 'تمدید', + applyStart: 'درخواست گواهی شروع شد', + getDnsResolve: 'دریافت مقدار تحلیل DNS، لطفاً صبر کنید...', + selfSigned: 'مدیریت CA خود امضا', + ca: 'مرجع گواهی', + commonName: 'نام رایج', + caName: 'نام مرجع گواهی', + company: 'نام سازمان', + department: 'نام واحد سازمانی', + city: 'نام شهر', + province: 'نام استان یا ایالت', + country: 'نام کشور (کد دو حرفی)', + commonNameHelper: 'مثلاً، ', + selfSign: 'صدور گواهی', + days: 'مدت اعتبار', + domainHelper: 'هر خط یک نام دامنه، پشتیبانی از * و آدرس IP', + pushDir: 'ارسال گواهی به دایرکتوری محلی', + dir: 'دایرکتوری', + pushDirHelper: + 'فایل گواهی "fullchain.pem" و فایل کلید "privkey.pem" در این دایرکتوری تولید می‌شوند.', + organizationDetail: 'جزئیات سازمان', + fromWebsite: 'از وب‌سایت', + dnsMauanlHelper: + 'در حالت تحلیل دستی، پس از ایجاد، باید روی دکمه درخواست کلیک کنید تا مقدار تحلیل DNS را دریافت کنید', + httpHelper: + 'استفاده از حالت HTTP نیاز به نصب OpenResty دارد و از درخواست گواهی دامنه عام پشتیبانی نمی‌کند.', + buypassHelper: 'Buypass در سرزمین اصلی چین قابل دسترسی نیست', + googleHelper: 'نحوه دریافت EAB HmacKey و EAB kid', + googleCloudHelper: 'API گوگل کلود در بیشتر مناطق سرزمین اصلی چین قابل دسترسی نیست', + skipDNSCheck: 'رد کردن بررسی DNS', + skipDNSCheckHelper: 'فقط در صورت مواجهه با مشکل مهلت در حین درخواست گواهی، این گزینه را علامت بزنید.', + cfHelper: 'از Global API Key استفاده نکنید', + deprecated: 'منسوخ خواهد شد', + deprecatedHelper: + 'نگهداری متوقف شده است و ممکن است در نسخه آینده کنار گذاشته شود. لطفاً از روش تنسنت کلود برای تحلیل استفاده کنید', + dnsPodRemoved: 'حذف شده', + dnsPodRemovedTip: + 'DnsPod در lego v5 حذف شده است؛ این حساب نمی‌تواند برای گواهی‌های جدید یا تمدید استفاده شود. لطفاً به حساب DNS تنسنت کلود تغییر دهید.', + dnsPodRemovedSSLTip: + 'این گواهی به یک حساب DNS DnsPod متصل است که دیگر در lego v5 قابل استفاده نیست. تمدید خودکار شکست خواهد خورد. لطفاً حساب DNS را به تنسنت کلود تغییر دهید.', + disableCNAME: 'غیرفعال‌سازی CNAME', + disableCNAMEHelper: 'در صورت وجود رکورد CNAME برای دامنه و شکست درخواست، این گزینه را علامت بزنید.', + nameserver: 'سرور DNS', + nameserverHelper: 'از یک سرور DNS سفارشی برای تأیید دامنه استفاده کنید.', + edit: 'ویرایش گواهی', + execShell: 'پس از درخواست گواهی، اسکریپت را اجرا کنید.', + shell: 'محتوای اسکریپت', + shellHelper: + 'دایرکتوری اجرای پیش‌فرض اسکریپت، دایرکتوری نصب 1Panel است. در صورت ارسال گواهی به دایرکتوری محلی، دایرکتوری اجرا، دایرکتوری ارسال گواهی خواهد بود. مهلت اجرای پیش‌فرض ۳۰ دقیقه است.', + customAcme: 'سرویس ACME سفارشی', + customAcmeURL: 'URL سرویس ACME', + baiduCloud: 'بایدو کلود', + pushNode: 'همگام‌سازی با سایر گره‌ها', + pushNodeHelper: 'پس از درخواست/تمدید به گره‌های انتخاب شده ارسال کنید', + fromMaster: 'ارسال از گره اصلی', + hostedZoneID: 'شناسه منطقه میزبان', + isIP: 'گواهی IP', + useEAB: 'استفاده از احراز هویت EAB', + }, + firewall: { + create: 'ایجاد قانون', + edit: 'ویرایش قانون', + advancedControl: 'کنترل پیشرفته', + advancedControlNotAvailable: 'در حال حاضر از دیواره آتش {0} استفاده می‌شود، قوانین پیشرفته فقط از iptables پشتیبانی می‌کنند', + ccDeny: 'محافظت CC', + ipWhiteList: 'لیست سفید IP', + ipBlockList: 'لیست سیاه IP', + fileExtBlockList: 'لیست سیاه پسوند فایل', + urlWhiteList: 'لیست سفید URL', + urlBlockList: 'لیست سیاه URL', + argsCheck: 'بررسی پارامتر GET', + postCheck: 'بررسی پارامتر POST', + cookieBlockList: 'لیست سیاه کوکی', + dockerHelper: + 'دیواره آتش فعلی نمی‌تواند نگاشت پورت کانتینر را غیرفعال کند. برنامه‌های نصب شده می‌توانند به صفحه [نصب شده] بروند تا پارامترهای برنامه را ویرایش کرده و قوانین انتشار پورت را پیکربندی کنند.', + iptablesHelper: + 'تشخیص داده شد که سیستم از دیواره آتش {0} استفاده می‌کند. برای تغییر به iptables، لطفاً ابتدا آن را به صورت دستی حذف کنید!', + quickJump: 'دسترسی سریع', + used: 'استفاده شده', + unUsed: 'استفاده نشده', + dockerRestart: 'عملیات دیواره آتش نیاز به راه‌اندازی مجدد سرویس Docker دارد', + firewallHelper: 'دیواره آتش سیستم {0}', + firewallNotStart: 'دیواره آتش سیستم در حال حاضر فعال نیست. ابتدا آن را فعال کنید.', + restartFirewallHelper: 'این عملیات دیواره آتش فعلی را مجدداً راه‌اندازی می‌کند. ادامه می‌دهید؟', + stopFirewallHelper: 'این کار باعث می‌شود سرور حفاظت امنیتی را از دست بدهد. ادامه می‌دهید؟', + startFirewallHelper: 'پس از فعال‌سازی دیواره آتش، امنیت سرور بهتر محافظت می‌شود. ادامه می‌دهید؟', + noPing: 'غیرفعال‌سازی ping', + enableBanPing: 'مسدود کردن Ping', + disableBanPing: 'رفع مسدودیت Ping', + noPingTitle: 'غیرفعال‌سازی ping', + noPingHelper: "این کار ping را غیرفعال می‌کند و سرور به پاسخ ICMP پاسخ نمی‌دهد. ادامه می‌دهید؟", + onPingHelper: 'این کار ping را فعال می‌کند و هکرها ممکن است سرور شما را کشف کنند. ادامه می‌دهید؟', + changeStrategy: 'تغییر استراتژی {0}', + changeStrategyIPHelper1: + 'تغییر استراتژی آدرس IP به [رد]. پس از تنظیم IP، دسترسی به سرور ممنوع می‌شود. ادامه می‌دهید؟', + changeStrategyIPHelper2: + 'تغییر استراتژی آدرس IP به [اجازه]. پس از تنظیم IP، دسترسی عادی بازمی‌گردد. ادامه می‌دهید؟', + changeStrategyPortHelper1: + 'تغییر استراتژی پورت به [رد]. پس از تنظیم، دسترسی خارجی ممنوع می‌شود. ادامه می‌دهید؟', + changeStrategyPortHelper2: + 'تغییر استراتژی پورت به [پذیرش]. پس از تنظیم، دسترسی عادی به پورت بازمی‌گردد. ادامه می‌دهید؟', + stop: 'متوقف کردن', + portFormatError: 'این فیلد باید یک پورت معتبر باشد.', + portHelper1: 'چندین پورت، مثلاً 8080 و 8081', + portHelper2: 'محدوده پورت، مثلاً 8080-8089', + changeStrategyHelper: + 'تغییر استراتژی [{1}] {0} به [{2}]. پس از تنظیم، {0} به صورت {2} به بیرون دسترسی خواهد داشت. ادامه می‌دهید؟', + strategy: 'استراتژی', + accept: 'پذیرش', + drop: 'رد', + anyWhere: 'هر جا', + address: 'IP‌های مشخص', + addressHelper: 'پشتیبانی از آدرس IP یا محدوده IP', + allow: 'اجازه', + deny: 'رد', + addressFormatError: 'این فیلد باید یک آدرس IP معتبر باشد.', + addressHelper1: 'پشتیبانی از آدرس IP یا محدوده IP. مثلاً "172.16.10.11" یا "172.16.10.0/24".', + addressHelper2: 'برای چندین آدرس IP، با کاما جدا کنید. مثلاً "172.16.10.11, 172.16.0.0/24".', + allIP: 'همه IP', + portRule: 'قانون پورت | قوانین پورت', + forwardRule: 'قانون انتقال پورت | قوانین انتقال پورت', + ipRule: 'قانون IP | قوانین IP', + userAgent: 'فیلتر User-Agent', + destination: 'مقصد', + sourcePort: 'پورت مبدأ', + targetIP: 'IP مقصد', + targetPort: 'پورت مقصد', + forwardHelper1: 'اگر می‌خواهید به پورت محلی انتقال دهید، آدرس مقصد باید "127.0.0.1" تنظیم شود.', + forwardHelper2: 'آدرس مقصد را خالی بگذارید تا به پورت محلی انتقال دهید.', + forwardPortHelper: 'پشتیبانی از محدوده پورت، مثلاً 8080-8089', + forwardInboundInterface: 'رابط شبکه ورودی انتقال', + exportHelper: 'در حال خروجی {0} قوانین دیواره آتش. ادامه می‌دهید؟', + importSuccess: 'واردات {0} قانون با موفقیت انجام شد', + importPartialSuccess: 'واردات انجام شد: {0} موفق، {1} ناموفق', + ipv4Limit: 'عملیات فعلی فقط از آدرس‌های IPv4 پشتیبانی می‌کند', + basicStatus: 'زنجیره فعلی {0} متصل نیست، لطفاً ابتدا آن را متصل کنید!', + baseIptables: 'سرویس iptables', + forwardIptables: 'سرویس انتقال پورت iptables', + advanceIptables: 'سرویس پیکربندی پیشرفته iptables', + initMsg: 'در حال راه‌اندازی {0}، ادامه می‌دهید؟', + initHelper: + 'تشخیص داده شد که {0} راه‌اندازی نشده است. برای پیکربندی روی دکمه راه‌اندازی در نوار وضعیت بالا کلیک کنید!', + bindHelper: 'اتصال - قوانین دیواره آتش فقط در صورت متصل بودن وضعیت اعمال می‌شوند. تأیید می‌کنید؟', + unbindHelper: + 'قطع اتصال - در صورت قطع اتصال، همه قوانین دیواره آتش اضافه شده بی‌اثر می‌شوند. با احتیاط ادامه دهید. تأیید می‌کنید؟', + whiteList: 'لیست سفید', + portWhiteList: 'لیست سفید پورت', + portWhiteListAlter: + 'پورت‌های موجود در لیست سفید هنگام راه‌اندازی یا شروع دیواره آتش به طور خودکار باز می‌شوند.', + portWhiteListHelper: 'پروتکل را می‌توان مشخص کرد، مثلاً 80/tcp یا 443/udp. در صورت عدم مشخص شدن، پیش‌فرض tcp است.', + defaultStrategy: 'استراتژی پیش‌فرض برای زنجیره فعلی {0} برابر است با {1}', + defaultStrategy2: + 'استراتژی پیش‌فرض برای زنجیره فعلی {0} برابر است با {1}، وضعیت فعلی قطع اتصال است. قوانین دیواره آتش اضافه شده پس از اتصال اعمال می‌شوند!', + filterRule: 'قانون فیلتر', + filterHelper: + 'قوانین فیلتر به شما امکان کنترل ترافیک شبکه در سطح INPUT/OUTPUT را می‌دهند. با احتیاط پیکربندی کنید تا از قفل شدن سیستم جلوگیری شود.', + chain: 'زنجیره', + targetChain: 'زنجیره هدف', + sourceIP: 'IP مبدأ', + destIP: 'IP مقصد', + inboundDirection: 'جهت ورودی', + outboundDirection: 'جهت خروجی', + destPort: 'پورت مقصد', + action: 'اقدام', + reject: 'رد', + sourceIPHelper: 'فرمت CIDR، مثلاً 192.168.1.0/24. برای همه آدرس‌ها خالی بگذارید', + destIPHelper: 'فرمت CIDR، مثلاً 10.0.0.0/8. برای همه آدرس‌ها خالی بگذارید', + portHelper: '۰ به معنای هر پورتی است', + allPorts: 'همه پورت‌ها', + deleteRuleConfirm: '{0} قانون حذف خواهند شد. ادامه می‌دهید؟', + }, + runtime: { + runtime: 'محیط اجرا', + workDir: 'دایرکتوری کاری', + localHelper: 'برای مشکلات نصب محیط محلی و استفاده در محیط آفلاین، به ', + versionHelper: 'نسخه PHP، مثلاً v8.0', + buildHelper: + 'اگر پسوندهای بیشتری انتخاب شوند، استفاده از CPU در طول فرآیند ایجاد تصویر بیشتر خواهد بود. از انتخاب همه پسوندها خودداری کنید.', + openrestyWarn: 'PHP نیاز به ارتقاء OpenResty به نسخه ۱.۲۱.۴.۱ یا بالاتر دارد تا استفاده شود', + toupgrade: 'برای ارتقاء', + edit: 'ویرایش محیط اجرا', + extendHelper: + 'اگر پسوندهای مورد نیاز شما در لیست نیست، می‌توانید نام پسوند را به صورت دستی وارد کنید. مثلاً "sockets" را وارد کرده و سپس اولین مورد را انتخاب کنید.', + rebuildHelper: 'پس از ویرایش پسوند، باید برنامه PHP را بازسازی کنید تا اعمال شود', + rebuild: 'بازسازی برنامه PHP', + source: 'منبع پسوند PHP', + ustc: 'دانشگاه علم و فناوری چین', + netease: 'نت‌ایز', + aliyun: 'علی‌بابا', + tsinghua: 'دانشگاه تسینگهوا', + xtomhk: 'ایستگاه آینه XTOM (هنگ کنگ)', + xtom: 'ایستگاه آینه XTOM (جهانی)', + phpsourceHelper: 'با توجه به شرایط شبکه خود، منبع مناسبی را انتخاب کنید.', + appPort: 'پورت برنامه', + externalPort: 'پورت خارجی', + packageManager: 'مدیر بسته', + codeDir: 'دایرکتوری کد', + appPortHelper: 'پورت استفاده شده توسط برنامه.', + externalPortHelper: 'پورت نمایش داده شده به بیرون.', + runScript: 'اسکریپت اجرا', + runScriptHelper: 'لیست دستورات راه‌اندازی از فایل package.json در دایرکتوری منبع تجزیه می‌شود.', + open: 'باز کردن', + operatorHelper: 'عملیات {0} روی محیط اجرای انتخاب شده انجام خواهد شد. ادامه می‌دهید؟ ', + taobao: 'تائوبائو', + tencent: 'تنسنت', + imageSource: 'منبع تصویر', + moduleManager: 'مدیریت ماژول', + module: 'ماژول', + nodeOperatorHelper: + 'آیا {0} ماژول {1} است؟ عملیات ممکن است باعث ناهنجاری در محیط اجرا شود، قبل از ادامه تأیید کنید', + customScript: 'دستور راه‌اندازی سفارشی', + customScriptHelper: + 'دستور راه‌اندازی کامل را وارد کنید، مثلاً: npm run start. برای دستورات راه‌اندازی PM2، لطفاً با pm2-runtime جایگزین کنید، در غیر این صورت راه‌اندازی ناموفق خواهد بود.', + portError: "پورت تکراری نباشد.", + systemRestartHelper: 'توضیح وضعیت: وقفه - به دلیل راه‌اندازی مجدد سیستم، وضعیت قابل دریافت نیست', + javaScriptHelper: 'یک دستور راه‌اندازی کامل ارائه دهید. مثلاً "java -jar halo.jar -Xmx1024M -Xms256M".', + javaDirHelper: 'دایرکتوری باید شامل فایل‌های jar باشد، زیردایرکتوری‌ها نیز مجاز هستند', + goHelper: 'یک دستور راه‌اندازی کامل ارائه دهید. مثلاً "go run main.go" یا "./main".', + goDirHelper: 'دایرکتوری یا زیردایرکتوری باید شامل فایل‌های Go یا باینری باشد.', + extension: 'پسوند', + installExtension: 'آیا نصب پسوند {0} تأیید می‌شود', + loadedExtension: 'پسوند بارگذاری شده', + popularExtension: 'پسوند محبوب', + uninstallExtension: 'آیا مطمئن هستید که می‌خواهید پسوند {0} را حذف کنید', + phpConfigHelper: + 'تغییر پیکربندی نیاز به راه‌اندازی مجدد محیط اجرا دارد، آیا ادامه می‌دهید', + operateMode: 'حالت عملیات', + dynamic: 'پویا', + static: 'ایستا', + ondemand: 'بر اساس تقاضا', + dynamicHelper: + 'تعداد فرآیندها را به صورت پویا تنظیم می‌کند، انعطاف‌پذیری بالا، مناسب برای وب‌سایت‌های با نوسانات ترافیک بالا یا حافظه کم', + staticHelper: + 'تعداد فرآیند ثابت، مناسب برای وب‌سایت‌های با هم‌روندی بالا و ترافیک پایدار، مصرف منابع بالا', + ondemandHelper: + 'فرآیندها بر اساس تقاضا شروع و از بین می‌روند، استفاده از منابع بهینه است، اما پاسخ اولیه ممکن است کند باشد', + max_children: 'حداکثر تعداد فرآیندهای مجاز برای ایجاد', + start_servers: 'تعداد فرآیندهای ایجاد شده در زمان شروع', + min_spare_servers: 'حداقل تعداد فرآیندهای بیکار', + max_spare_servers: 'حداکثر تعداد فرآیندهای بیکار', + envKey: 'نام', + envValue: 'مقدار', + environment: 'متغیر محیطی', + pythonHelper: + 'یک دستور راه‌اندازی کامل ارائه دهید. مثلاً "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:5000".', + dotnetHelper: 'یک دستور راه‌اندازی کامل ارائه دهید. مثلاً "dotnet MyWebApp.dll".', + dirHelper: 'توجه: مسیر دایرکتوری داخل کانتینر را پر کنید', + concurrency: 'طرح هم‌روندی', + loadStatus: 'وضعیت بار', + extraHosts: 'نگاشت میزبان', + }, + process: { + pid: 'شناسه فرآیند', + ppid: 'شناسه فرآیند والد', + numThreads: 'تعداد رشته‌ها', + memory: 'حافظه', + diskRead: 'خواندن دیسک', + diskWrite: 'نوشتن دیسک', + netSent: 'ارسال شبکه', + netRecv: 'دریافت شبکه', + numConnections: 'اتصال‌ها', + startTime: 'زمان شروع', + running: 'در حال اجرا', + sleep: 'خواب', + stop: 'متوقف', + idle: 'بیکار', + zombie: 'فرآیند زامبی', + wait: 'در انتظار', + lock: 'قفل', + blocked: 'مسدود', + cmdLine: 'دستور شروع', + basic: 'پایه', + mem: 'حافظه', + openFiles: 'فایل‌های باز', + env: 'محیط‌ها', + noenv: 'هیچکدام', + net: 'اتصال‌های شبکه', + laddr: 'آدرس/پورت محلی', + raddr: 'آدرس/پورت راه دور', + stopProcess: 'پایان', + viewDetails: 'مشاهده جزئیات', + stopProcessWarn: 'آیا مطمئن هستید که می‌خواهید این فرآیند (PID:{0}) را پایان دهید؟', + kill: 'کشتن فرآیند', + killNow: 'همین حالا بکش', + killHelper: 'کشتن فرآیند {0} ممکن است باعث خرابی برخی برنامه‌ها شود. ادامه می‌دهید؟', + processName: 'نام فرآیند', + }, + tool: { + supervisor: { + loadStatusErr: 'دریافت وضعیت فرآیند ناموفق بود، لطفاً وضعیت سرویس supervisor را بررسی کنید.', + notSupport: 'سرویس Supervisor شناسایی نشد، برای نصب دستی به صفحه کتابخانه اسکریپت بروید', + list: 'فرآیندهای محافظ', + config: 'پیکربندی Supervisor', + primaryConfig: 'مکان فایل پیکربندی اصلی', + notSupportCtl: 'supervisorctl شناسایی نشد، برای نصب دستی به صفحه کتابخانه اسکریپت بروید', + user: 'کاربر', + command: 'دستور', + dir: 'دایرکتوری', + numprocs: 'تعداد فرآیندها', + initWarn: + 'این کار مقدار "files" را در بخش "[include]" در فایل پیکربندی اصلی تغییر می‌دهد. دایرکتوری سایر فایل‌های پیکربندی خواهد بود: "{دایرکتوری نصب 1Panel}/1panel/tools/supervisord/supervisor.d/".', + operatorHelper: 'عملیات {1} روی {0} انجام خواهد شد، ادامه می‌دهید؟ ', + uptime: 'زمان فعالیت', + notStartWarn: 'Supervisor راه‌اندازی نشده است. ابتدا آن را راه‌اندازی کنید.', + serviceName: 'نام سرویس', + initHelper: + 'سرویس Supervisor شناسایی شد اما راه‌اندازی نشده است. برای پیکربندی روی دکمه راه‌اندازی در نوار وضعیت بالا کلیک کنید.', + serviceNameHelper: 'نام سرویس Supervisor که توسط systemctl مدیریت می‌شود، معمولاً supervisor یا supervisord', + restartHelper: + 'این کار پس از راه‌اندازی، سرویس را مجدداً راه‌اندازی می‌کند که باعث توقف همه فرآیندهای محافظ موجود می‌شود.', + RUNNING: 'در حال اجرا', + STOPPED: 'متوقف شده', + STOPPING: 'در حال توقف', + STARTING: 'در حال شروع', + FATAL: 'شروع ناموفق', + BACKOFF: 'استثنای شروع', + ERROR: 'خطا', + statusCode: 'کد وضعیت', + manage: 'مدیریت', + autoRestart: 'راه‌اندازی مجدد خودکار', + EXITED: 'خارج شده', + autoRestartHelper: 'آیا در صورت خرابی برنامه، به طور خودکار مجدداً راه‌اندازی شود', + autoStart: 'شروع خودکار', + autoStartHelper: 'آیا پس از شروع Supervisor، سرویس به طور خودکار شروع شود', + }, + }, + disk: { + management: 'مدیریت دیسک', + partition: 'پارتیشن‌بندی', + unmount: 'قطع اتصال', + unmountHelper: 'قطع اتصال پارتیشن {0}؟', + mount: 'اتصال', + partitionAlert: + 'پارتیشن‌بندی دیسک نیاز به فرمت کردن دیسک دارد و داده‌های موجود حذف می‌شوند. لطفاً از داده‌های خود پشتیبان‌گیری یا تصویر لحظه‌ای بگیرید.', + mountPoint: 'دایرکتوری اتصال', + systemDisk: 'دیسک سیستم', + unpartitionedDisk: 'دیسک پارتیشن‌بندی نشده', + handlePartition: 'پارتیشن‌بندی اکنون', + filesystem: 'سیستم فایل', + unmounted: 'قطع اتصال شده', + cannotOperate: 'قابل عملیات نیست', + systemDiskHelper: 'نکته: دیسک فعلی دیسک سیستم است. نمی‌توان روی آن عملیات انجام داد.', + autoMount: 'اتصال خودکار', + model: 'مدل دستگاه', + diskType: 'نوع دیسک', + serial: 'شماره سریال', + noFail: 'شکست اتصال بر راه‌اندازی سیستم تأثیری نمی‌گذارد', + }, + xpack: { + expiresEnterpriseAlert: + 'یادآوری دوستانه: مجوز نسخه سازمانی شما در {0} روز منقضی می‌شود و همه ویژگی‌های نسخه سازمانی دیگر قابل دسترسی نخواهند بود. لطفاً به موقع تمدید کنید تا استفاده ادامه یابد.', + expiresProAlert: + 'یادآوری دوستانه: مجوز نسخه حرفه‌ای شما در {0} روز منقضی می‌شود و همه ویژگی‌های نسخه حرفه‌ای دیگر قابل دسترسی نخواهند بود. لطفاً به موقع تمدید کنید تا استفاده ادامه یابد.', + menu: 'حرفه‌ای', + upage: 'سازنده وب‌سایت هوش مصنوعی', + proAlert: 'برای استفاده از این ویژگی به نسخه تجاری ارتقاء دهید', + opsReport: { + name: 'گزارش عملیات', + overview: 'نمای کلی', + system: 'زمان اجرای میزبان', + login: 'ورود و امنیت', + website: 'حفاظت از وب‌سایت', + resource: 'منابع زمان اجرا', + cronjob: 'وظایف زمان‌بندی', + alert: 'هشدارها', + history: 'تاریخچه خروجی', + setting: 'تنظیمات', + page: { + enterprise: 'سازمانی', + reportNode: 'گره گزارش', + selectReportNode: 'انتخاب گره گزارش', + currentNode: 'جاری', + scoreMeta: '{0} امتیاز کسر شد · {1} ریسک', + hostAddress: 'آدرس میزبان', + panelVersion: 'نسخه پنل', + cpuCores: 'هسته‌های فیزیکی', + coreUnit: '{0} هسته', + memoryTotal: 'مجموع حافظه', + reportDate: 'تاریخ گزارش', + serverSecurityOverview: 'نمای کلی عملیات امنیتی سرور', + securityScore: 'امتیاز امنیت', + overviewSummary: + 'سطح امنیت فعلی: {0}. {1} امتیاز کسر شد، {2} مورد ریسک یافت شد، {3} شیء بررسی شد.', + riskDistribution: 'توزیع ریسک', + totalDeducted: 'مجموع کسر', + noRiskDeducted: 'بدون کسر', + scoreTrend: 'روند امتیاز', + scoreLevelSafe: 'ایمن', + scoreLevelAttention: 'نیاز به توجه', + scoreLevelMediumRisk: 'ریسک متوسط', + scoreLevelHighRisk: 'ریسک بالا', + scoreCategoryHost: 'منابع میزبان', + scoreCategoryLogin: 'امنیت ورود', + scoreCategoryWebsite: 'وب‌سایت‌ها و گواهی‌ها', + scoreCategoryCronjob: 'وظایف زمان‌بندی', + scoreCategoryResource: 'منابع زمان اجرا', + scoreCategoryAlert: 'هشدارها', + scoreDiskHigh: 'استفاده از دیسک {0} برابر با {1}% است', + scoreDiskMedium: 'استفاده از دیسک {0} برابر با {1}% است', + scoreResourceHigh: 'استفاده فعلی {0} برابر با {1}% است', + scoreResourceMedium: 'استفاده فعلی {0} برابر با {1}% است', + scoreLoadMedium: 'بار فعلی {0} است', + scoreMonitorDisabled: 'نظارت بر میزبان غیرفعال است', + scorePanelLoginFailedHigh: 'ورود به پنل {0} بار ناموفق بود', + scorePanelLoginFailedMedium: 'ورود به پنل {0} بار ناموفق بود', + scoreSSHLoginFailedHigh: 'ورود SSH {0} بار ناموفق بود', + scoreSSHLoginFailedMedium: 'ورود SSH {0} بار ناموفق بود', + scoreMFADisabled: 'MFA غیرفعال است', + scoreAllowIPsOpen: 'IP‌های مجاز و دامنه متصل پیکربندی نشده‌اند یا دسترسی محدود نیست', + scorePanelHTTPSDisabled: 'HTTPS پنل غیرفعال است', + scoreSSHRootLogin: 'ورود ریشه SSH مجاز است', + scoreSSHPasswordAuth: 'احراز هویت رمز عبور SSH بدون کلید فعال است', + scoreSSLExpired: 'گواهی {0} منقضی شده است', + scoreSSLHigh: 'گواهی {0} در {1} روز منقضی می‌شود', + scoreSSLMedium: 'گواهی {0} در {1} روز منقضی می‌شود', + scoreWebsiteExpired: 'وب‌سایت {0} منقضی شده است', + scoreWebsiteExpire: 'وب‌سایت {0} در {1} روز منقضی می‌شود', + scoreWebsiteHTTP: '{0} از HTTPS استفاده نمی‌کند', + scoreWebsiteStopped: 'وضعیت {0} غیرعادی است', + scoreWebsiteMonitorUnavailable: 'نظارت وب‌سایت یک سایت غیرقابل دسترس را شناسایی کرد', + scoreWebsiteMonitorAvailability: 'در دسترس بودن نظارت وب‌سایت {0}% کمتر از آستانه است', + scoreWebsiteMonitorStatusAbnormal: 'نظارت وب‌سایت فعال است اما در وضعیت غیرعادی قرار دارد', + scoreWafDisabled: 'WAF غیرفعال است و وب‌سایت‌ها محافظت نمی‌شوند', + scoreWafHighRiskHit: 'WAF در دوره گزارش با {0} قانون پرخطر مطابقت داشت', + scoreCronjobFailed: 'رکورد شکست وظیفه زمان‌بندی {0} در ۷ روز گذشته', + scoreAppFailed: 'برنامه {0} غیرعادی است', + scoreAppStopped: 'برنامه {0} متوقف شده است', + scoreContainerHigh: 'وضعیت کانتینر {0} غیرعادی است', + scoreContainerExited: 'کانتینر {0} متوقف شده است', + scoreContainerResource: 'استفاده از منابع کانتینر {0} بالا است', + scoreContainerPublicPort: 'کانتینر {0} دارای پورت‌های نمایش داده شده به بیرون است', + scoreAlertNoTask: 'هیچ وظیفه هشدار پیکربندی نشده است', + scoreAlertNoEnabledTask: 'همه وظایف هشدار غیرفعال هستند', + scoreAlertDisabledTask: '{0} وظیفه هشدار غیرفعال است', + scoreAlertNoChannel: 'هیچ کانال اعلان هشدار فعال نیست', + scoreAlertFailedHigh: '{0} لاگ شکست هشدار یافت شد', + scoreAlertFailedMedium: '{0} لاگ شکست هشدار یافت شد', + scoreAlertPending: '{0} لاگ هشدار در انتظار همگام‌سازی هستند', + attentionItems: 'موارد قابل توجه', + attentionAssets: 'دارایی‌های قابل توجه', + riskItems: 'موارد ریسک', + object: 'شیء', + description: 'توضیحات', + itemUnit: 'مورد', + recordUnit: 'رکورد', + certUnit: 'گواهی', + containerUnit: 'کانتینر', + loginFailed: 'ورودهای ناموفق', + sslExpire: 'انقضای گواهی', + abnormalContainer: 'کانتینرهای غیرعادی', + statAttentionDesc: '{0} امتیاز کسر شد', + statLoginDesc: 'پنل {0} · SSH {1}', + statSslDesc: '{0} گواهی بررسی شد', + statContainerDesc: '{0} کانتینر بررسی شد', + statAlertDesc: '{0} وظیفه فعال · {1} کانال', + assetHostDesc: 'حداکثر استفاده از دیسک {0}%', + assetWebsiteDesc: '{0} گواهی به زودی منقضی می‌شود، {1} وب‌سایت غیرعادی', + assetResourceDesc: '{0} برنامه غیرعادی، {1} کانتینر غیرعادی', + assetCronjobDesc: '{0} رکورد شکست در ۷ روز گذشته، {1} وظیفه غیرفعال', + assetAlertDesc: '{0} لاگ شکست، {1} لاگ در انتظار همگام‌سازی', + app: 'برنامه‌ها', + website: 'وب‌سایت‌ها', + websiteSsl: 'وب‌سایت‌ها / گواهی‌ها', + cronjob: 'وظایف زمان‌بندی', + container: 'کانتینرها', + sslCertificate: 'گواهی‌های SSL', + loginSecurity: 'امنیت ورود', + panelLogin: 'ورود به پنل', + sshLogin: 'ورود SSH', + failedRecord: 'رکوردهای ناموفق', + expired: 'منقضی شده', + expiredDays: '{0} روز پیش منقضی شده است', + remainingDays: '{0} · {1} روز باقی مانده', + enabled: 'فعال', + disabled: 'غیرفعال', + exportRecordFailed: 'ذخیره رکورد خروجی ناموفق بود', + hostInfo: 'اطلاعات میزبان', + hostname: 'نام میزبان', + osVersion: 'نسخه سیستم عامل', + kernelVersion: 'نسخه هسته', + arch: 'معماری', + uptime: 'زمان فعالیت', + diskUsage: 'استفاده از دیسک', + mountPoint: 'نقطه اتصال', + device: 'دستگاه', + capacity: 'ظرفیت', + used: 'استفاده شده', + usageRate: 'درصد استفاده', + memory: 'حافظه', + load: 'بار', + maxDiskUsage: 'حداکثر استفاده از دیسک', + panelLoginSecurity: 'امنیت ورود به پنل', + sshSecurity: 'امنیت SSH سرور لینوکس', + panelFailedRecords: 'رکوردهای ورود ناموفق به پنل', + sshFailedRecords: 'رکوردهای ورود ناموفق SSH', + location: 'مکان', + configItem: 'مورد پیکربندی', + currentValue: 'مقدار فعلی', + securityEntrance: 'ورودی امنیتی', + configured: 'پیکربندی شده', + notConfigured: 'پیکربندی نشده', + normal: 'عادی', + needAttention: 'نیاز به توجه', + allowIPs: 'IP‌های مجاز', + restricted: 'محدود', + unrestricted: 'نامحدود', + bindDomain: 'دامنه متصل', + accessRestriction: 'محدودیت دسترسی', + panelHTTPS: 'HTTPS پنل', + passwordComplexity: 'پیچیدگی رمز عبور', + sshService: 'سرویس SSH', + running: 'در حال اجرا', + notRunning: 'در حال اجرا نیست', + listenPort: 'پورت شنود', + read: 'خواندن', + rootLogin: 'ورود ریشه', + passwordAuth: 'احراز هویت رمز عبور', + keyAuth: 'احراز هویت کلید', + panelLoginFailed: 'ورودهای ناموفق به پنل', + sshLoginFailed: 'ورودهای ناموفق SSH', + panelSecurityItems: 'موارد امنیتی پنل', + sshSecurityItems: 'موارد امنیتی SSH', + loginSecurityHealthStatus: 'سلامت امنیت ورود', + adjustSSHSecurity: 'تنظیم امنیت SSH', + viewLoginLogs: 'مشاهده لاگ‌های ورود', + riskLevel: 'سطح ریسک', + goConfig: 'پیکربندی', + viewMore: 'مشاهده بیشتر', + involvedIPs: '{0} IP درگیر', + sessionTimeout: 'مهلت جلسه', + countUnit: 'بار', + recent24Hours: '۲۴ ساعت گذشته', + currentService: 'سرویس فعلی', + riskItemsExist: '{0} مورد ریسک', + loginHealthRiskDesc: + '{0} پیکربندی پرخطر شناسایی شد. برای کاهش خطر نفوذ، امنیت ورود را تقویت کنید.', + loginHealthNormalDesc: 'پیکربندی‌های امنیتی ورود و SSH فعلی عادی هستند', + loginHealthNormalReason: 'امنیت ورود عادی است', + securityEntranceConfiguredDesc: 'ورودی امنیتی پیکربندی شده است تا قرار گرفتن در معرض ورودی پیش‌فرض کاهش یابد', + securityEntranceRiskDesc: 'ورودی امنیتی غیرفعال است. ورودی پیش‌فرض را پنهان کنید', + allowIPsRestrictedDesc: 'IP‌های مجاز برای دسترسی به پنل محدود شده‌اند', + allowIPsRiskDesc: 'دسترسی IP محدود نیست. برای محیط‌های عمومی IP‌های مجاز را پیکربندی کنید', + bindDomainRestrictedDesc: 'دامنه دسترسی متصل است', + bindDomainRiskDesc: 'دامنه دسترسی متصل نیست. دسترسی را به یک دامنه ثابت محدود کنید', + accessRestrictionValue: 'IP‌های مجاز: {0} / دامنه متصل: {1}', + accessRestrictionNormalDesc: + 'IP‌های مجاز یا دامنه متصل پیکربندی شده‌اند تا منابع دسترسی به پنل را محدود کنند', + accessRestrictionRiskDesc: + 'IP‌های مجاز و دامنه متصل پیکربندی نشده‌اند یا دسترسی محدود نیست. حداقل یکی را پیکربندی کنید', + panelHTTPSNormalDesc: 'HTTPS پنل فعال است', + panelHTTPSRiskDesc: 'HTTPS پنل غیرفعال است. ترافیک ورود ممکن است در معرض دید قرار گیرد', + passwordComplexityNormalDesc: 'تأیید پیچیدگی رمز عبور فعال است', + passwordComplexityRiskDesc: + 'تأیید پیچیدگی رمز عبور غیرفعال است و خطر رمز عبور ضعیف را افزایش می‌دهد', + mfa: 'MFA', + mfaNormalDesc: 'MFA فعال است و امنیت ورود را بهبود می‌بخشد', + mfaRiskDesc: 'MFA غیرفعال است. احراز هویت چند عاملی را فعال کنید', + sessionTimeoutNormalDesc: 'مهلت جلسه در محدوده ایمن‌تری قرار دارد', + sessionTimeoutRiskDesc: 'مهلت جلسه طولانی است. طول عمر جلسه بیکار را محدود کنید', + sshServiceNormalDesc: 'سرویس SSH به طور عادی در حال اجرا است', + sshServiceRiskDesc: 'سرویس SSH در حال اجرا نیست یا غیرعادی است', + sshPortNormalDesc: 'پورت SSH از پورت پیش‌فرض تغییر کرده است', + sshPortRiskDesc: 'SSH همچنان از پورت پیش‌فرض ۲۲ استفاده می‌کند. در صورت مناسب بودن آن را تغییر دهید', + rootLoginNormalDesc: 'کاربر ریشه نمی‌تواند مستقیماً وارد شود', + rootLoginRiskDesc: 'کاربر ریشه می‌تواند مستقیماً وارد شود. آن را غیرفعال کنید', + passwordAuthNormalDesc: 'ورود با رمز عبور SSH غیرفعال است', + passwordAuthRiskDesc: 'ورود با رمز عبور مجاز است و خطر حملات brute-force را افزایش می‌دهد', + keyAuthNormalDesc: 'احراز هویت کلید SSH فعال است', + keyAuthRiskDesc: 'احراز هویت کلید غیرفعال است. از ورود مبتنی بر کلید استفاده کنید', + websiteOverview: 'نمای کلی وب‌سایت', + primaryDomain: 'دامنه اصلی', + expireTime: 'زمان انقضا', + domain: 'دامنه', + issuer: 'صادرکننده', + autoRenew: 'تمدید خودکار', + websiteCount: 'وب‌سایت‌ها', + httpsWebsite: 'وب‌سایت‌های HTTPS', + certCount: 'گواهی‌ها', + websiteExpire: 'انقضای وب‌سایت', + database: 'پایگاه‌های داده', + remoteDatabase: 'پایگاه‌های داده از راه دور', + address: 'آدرس', + containerResourceUsage: 'استفاده از منابع کانتینر', + spaceUsage: 'استفاده از فضا', + reclaimable: 'قابل بازپس‌گیری', + containerReclaimable: 'قابل بازپس‌گیری کانتینر', + image: 'تصاویر', + volume: 'حجم‌ها', + buildCache: 'کش ساخت', + alert: 'هشدار', + alertConfigured: 'هشدارهای پیکربندی شده', + alertOperations: 'اعلان‌های هشدار', + alertTaskCount: 'وظایف هشدار', + enabledAlertTask: 'وظایف فعال', + disabledAlertTask: 'وظایف غیرفعال', + alertChannels: 'کانال‌های اعلان', + alertLogCount: 'لاگ‌های هشدار', + alertSuccessRate: 'نرخ موفقیت هشدار', + alertFailedLogs: 'لاگ‌های هشدار ناموفق', + alertPendingLogs: 'لاگ‌های در انتظار همگام‌سازی', + alertPending: 'در انتظار همگام‌سازی', + alertTaskStats: 'آمار وظایف هشدار', + alertTaskType: 'نوع هشدار', + alertLogStatusStats: 'وضعیت اجرای هشدار', + alertHealthNormal: 'عادی', + alertHealthAttention: 'نیاز به توجه', + alertHealthRisk: 'پرریسک', + alertHealthSummary: 'سلامت هشدار', + alertHealthNormalReason: 'وظایف هشدار، کانال‌های اعلان و لاگ‌های اجرا سالم هستند', + alertNoChannelReason: 'هیچ کانال اعلان فعال نیست', + alertFailedLogReason: '{0} لاگ هشدار ناموفق یافت شد', + alertPendingReason: '{0} لاگ هشدار در انتظار همگام‌سازی هستند', + alertDisabledTaskReason: '{0} وظیفه هشدار غیرفعال است', + alertNoTaskReason: 'هیچ وظیفه هشدار پیکربندی نشده است', + goAlertConfig: 'پیکربندی هشدار', + goAlertLogs: 'لاگ‌های هشدار', + configureAlertChannel: 'پیکربندی کانال‌ها', + createAlertTask: 'ایجاد وظیفه هشدار', + viewAlertTasks: 'مشاهده وظایف هشدار', + viewFailedAlertLogs: 'مشاهده لاگ‌های ناموفق', + viewAlertLogs: 'مشاهده لاگ‌های هشدار', + alertChannelSummary: '{0} / {1} کانال فعال', + alertTaskEnabledDesc: '{0} وظیفه فعال', + alertTaskSummary: '{0} فعال، {1} غیرفعال', + alertLogSummary: '{0} موفق، {1} ناموفق', + alertPendingDesc: '{0} لاگ در انتظار همگام‌سازی', + alertLogSuccessDesc: 'اعلان تکمیل شد', + alertLogFailedDesc: 'پیکربندی کانال یا مسیر تحویل را بررسی کنید', + alertLogPendingDesc: 'آفلاین یا مسیر همگام‌سازی در انتظار', + failedAlertLogs: 'لاگ‌های هشدار ناموفق', + disabledAlertTasks: 'وظایف هشدار غیرفعال', + alertTableDisplayDesc: 'نمایش {0} از {1}', + noAlertTask: 'هیچ وظیفه هشدار', + noFailedAlertLog: 'هیچ لاگ هشدار ناموفقی وجود ندارد', + noDisabledAlertTask: 'هیچ وظیفه هشدار غیرفعالی وجود ندارد', + alertMsg: 'پیام هشدار', + alertMethod: 'روش هشدار', + alertRule: 'قانون هشدار', + alertCronjobType: 'وظیفه زمان‌بندی: {0}', + alertAllTargets: 'همه اهداف', + alertAllDisks: 'همه دیسک‌ها', + alertAllCertificates: 'همه گواهی‌ها', + alertAllWebsites: 'همه وب‌سایت‌ها', + alertDiskRuleShort: '{0} از {1}{2} تجاوز کرد، {3} بار در روز', + alertAverageRuleShort: 'میانگین {0} دقیقه از {1}% تجاوز کرد، {2} بار در روز', + alertTimeRuleShort: 'در {0} روز فعال شود، {1} بار ارسال شود', + alertSendCountRuleShort: '{0} بار در روز ارسال شود', + failedExecutionRecords: 'رکوردهای اجرای ناموفق', + taskID: 'شناسه وظیفه', + executeTime: 'زمان اجرا', + backupTasks: 'وظایف پشتیبان', + systemMetrics: 'معیارهای زمان اجرا', + cpu: 'CPU', + thresholdPercent: 'آستانه {0}%', + recent24HourPeakPercent: 'اوج ۲۴ ساعت گذشته {0}', + loadAverage: 'بار ۱ / ۵ / ۱۵ دقیقه: {0} / {1} / {2}', + sourceMount: 'نقطه اتصال {0}', + storageUsage: 'استفاده از فضای ذخیره‌سازی', + localDisk: 'دیسک محلی', + highUsagePeriods: 'دوره‌های استفاده بالا', + timeRange: 'محدوده زمانی', + threshold: 'آستانه', + duration: 'مدت زمان', + peak: 'اوج', + scoring: 'امتیازدهی', + counted: 'شمارش شده', + notCounted: 'شمارش نشده', + dataSource: 'منبع داده', + noHighUsagePeriod: 'هیچ دوره استفاده بالا وجود ندارد', + monitorDisabledOrNoData: 'نظارت بر میزبان غیرفعال است یا داده نظارتی در دسترس نیست', + systemHealthStatus: 'ریسک زمان اجرای میزبان در ۲۴ ساعت گذشته', + mainReasons: 'دلایل اصلی', + viewHostMonitor: 'مشاهده نظارت بر میزبان', + systemHealthAttentionDesc: + '{0} مورد ریسک در ۲۴ ساعت گذشته شناسایی شد. اوج منابع و استفاده از دیسک را در اولویت قرار دهید.', + systemHealthNormalDesc: 'معیارهای زمان اجرای میزبان در ۲۴ ساعت گذشته عادی بود', + monitorEnabled: 'نظارت فعال', + cpuCoreUsage: '{0} / {1} هسته', + load1Minute: 'بار ۱ دقیقه', + diskSpaceUsage: 'استفاده از فضای دیسک', + usedCapacity: 'استفاده شده / مجموع', + fileSystem: 'سیستم فایل', + resourceTrendSummary: 'خلاصه روند منابع', + last24Hours: '۲۴ ساعت گذشته', + granularityHour: 'دانه‌بندی: ۱ ساعت', + current: 'فعلی', + average: 'میانگین', + totalItems: '{0} مورد', + to: 'تا', + hoursShort: '{0} ساعت', + minutesShort: '{0} دقیقه', + websiteStatus: 'وضعیت وب‌سایت', + websiteHealthStatus: 'سلامت حفاظت از وب‌سایت', + websiteHealthNormalReason: 'وب‌سایت‌ها، گواهی‌ها، WAF و نظارت وب‌سایت سالم هستند', + websiteHealthAttentionDesc: + '{0} مورد ریسک شناسایی شد. به زودی آنها را مدیریت کنید تا از امنیت و در دسترس بودن وب‌سایت محافظت شود.', + websiteHealthNormalDesc: 'معیارهای حفاظت از وب‌سایت فعلی عادی هستند', + handleSslRisk: 'مدیریت ریسک‌های گواهی', + viewWaf: 'مشاهده WAF', + priority: 'اولویت', + riskDescription: 'توضیح ریسک', + deductScore: 'امتیاز کسر شده', + remaining: 'باقی‌مانده', + wafSourceIpTop: '۵ IP برتر مبدأ WAF', + wafAffectedSiteTop: '۵ سایت متأثر برتر', + sslRisk: 'ریسک‌های گواهی', + sslExpiring: 'گواهی‌های در حال انقضا', + includedInReport: 'در گزارش گنجانده شده است', + needRenewal: 'تمدید توصیه می‌شود', + fromExpireInfo: 'از اطلاعات انقضا', + runningWebsite: 'وب‌سایت در حال اجرا', + fromWebsiteStatus: 'از وضعیت لیست وب‌سایت', + stoppedWebsite: 'وب‌سایت متوقف شده', + confirmStoppedWebsite: 'تأیید کنید که آیا این مورد انتظار می‌رود', + expiringWebsite: 'وب‌سایت‌های در حال انقضا', + expiringSoon: 'به زودی منقضی می‌شود', + none: 'هیچکدام', + noSslRisk: 'هیچ گواهی برای مدیریت وجود ندارد', + websiteProtection: 'WAF و نظارت وب‌سایت', + websiteMonitor: 'نظارت وب‌سایت', + waf: 'WAF', + siteAvailability: 'در دسترس بودن سایت', + monitoredSites: 'سایت‌های تحت نظارت', + requestCount: 'درخواست‌ها', + abnormalSites: 'سایت‌های غیرعادی', + count5xxSource: 'شمارش بر اساس درخواست‌های 5xx', + wafIntercept: 'مسدودسازی‌های WAF', + websiteMonitorDisabledOrNoData: 'نظارت وب‌سایت غیرفعال است یا داده نظارتی در دسترس نیست', + wafDisabledOrNoData: 'WAF غیرفعال است یا داده مسدودسازی در دسترس نیست', + serviceEnabledButAbnormal: 'فعال است، اما در وضعیت غیرعادی قرار دارد', + noWafData: 'هیچ داده مسدودسازی WAF وجود ندارد', + sourceIP: 'IP مبدأ', + hitCount: 'تعداد برخورد', + level: 'سطح', + attackType: 'نوع حمله', + requestRatio: 'نسبت درخواست', + installed: 'نصب شده', + normalRunning: 'به طور عادی در حال اجرا', + failedStart: 'شروع ناموفق', + manualStopped: 'به صورت دستی متوقف شده', + failed: 'ناموفق', + success: 'موفق', + canUpdate: 'قابل ارتقاء', + listSeparator: '، ', + containerCount: 'کانتینرها', + stopped: 'متوقف شده', + abnormal: 'غیرعادی', + abnormalContainers: 'کانتینرهای غیرعادی', + resourceUsage: 'استفاده از منابع', + exposedContainerPorts: 'پورت‌های نمایش داده شده', + portMapping: 'نگاشت پورت', + risk: 'ریسک', + noAbnormalContainer: 'هیچ کانتینر غیرعادی وجود ندارد', + noExposedContainer: 'هیچ پورت نمایش داده شده‌ای شناسایی نشد', + publicExpose: 'نمایش عمومی', + privateExpose: 'نگاشت خصوصی', + resourceHealth: 'سلامت منابع زمان اجرا', + checkTime: 'زمان بررسی', + resourceHealthNormalDesc: 'برنامه‌ها، پایگاه‌های داده و کانتینرها در حال حاضر سالم هستند', + resourceHealthAttentionDesc: + '{0} مورد قابل توجه شناسایی شد. منابع متوقف شده و پورت‌های نمایش داده شده عمومی را در اولویت قرار دهید.', + resourceHealthRiskDesc: + '{0} مورد پرخطر شناسایی شد. کانتینرهای غیرعادی یا برنامه‌های ناموفق را در اولویت قرار دهید.', + resourceThresholdContainers: 'کانتینرهای آستانه CPU / حافظه', + noThresholdExceededContainer: 'هیچ کانتینری از آستانه تجاوز نکرد', + triggerMetric: 'معیار محرک', + resourceReasonAppFailed: '{0} برنامه شروع نشد', + resourceReasonAppStopped: '{0} برنامه متوقف شد', + resourceReasonContainerAbnormal: '{0} کانتینر غیرعادی است', + resourceReasonContainerStopped: '{0} کانتینر متوقف شد', + resourceReasonPublicPorts: '{0} پورت نمایش داده شده عمومی', + resourceReasonNormal: 'برنامه‌ها، پایگاه‌های داده و کانتینرها سالم هستند', + viewAbnormalContainers: 'مشاهده کانتینرهای غیرعادی', + viewExposedPorts: 'مشاهده پورت‌های نمایش داده شده', + viewAppResources: 'مشاهده منابع برنامه', + viewRuntimeResources: 'مشاهده منابع زمان اجرا', + viewContainerResources: 'مشاهده منابع کانتینر', + configuredServices: 'سرویس‌های پیکربندی شده', + publicPrivatePorts: '{0} عمومی / {1} نگاشت خصوصی', + currentDisplayTotal: 'نمایش {0} از {1}', + reclaimableSpace: 'فضای قابل بازپس‌گیری', + estimatedReclaimable: 'قابل بازپس‌گیری تخمینی', + unusedImageSpace: 'فضای تصویر استفاده نشده', + stoppedContainerSpace: 'فضای کانتینر متوقف شده', + unusedVolumeSpace: 'فضای حجم استفاده نشده', + buildCacheSpace: 'فضای کش ساخت Docker', + executionRecords: 'رکوردهای اجرا', + successRate: 'نرخ موفقیت', + failedJobs: 'وظایف ناموفق', + recentRecoveryPoint: 'آخرین نقطه بازیابی', + disabledCronjobTasks: 'وظایف زمان‌بندی غیرفعال', + remoteCoverage: 'پوشش از راه دور', + recent7Days: '۷ روز گذشته', + taskTypeStats: 'آمار نوع وظیفه', + total: 'مجموع', + taskTypeDesc: '{0} فعال، {1} غیرفعال', + failedOrAttentionTasks: 'وظایف ناموفق یا قابل توجه', + execution: 'اجرا', + latestExecution: 'آخرین اجرا', + remoteBackup: 'پشتیبان از راه دور', + localOnly: 'فقط محلی', + covered: 'پوشش داده شده', + noAttentionCronjob: 'هیچ وظیفه زمان‌بندی ناموفق یا قابل توجهی وجود ندارد', + cronjobHealth: 'سلامت وظایف زمان‌بندی', + cronjobHealthNormalDesc: 'اجرای وظایف زمان‌بندی و پوشش پشتیبان سالم هستند', + cronjobHealthAttentionDesc: + '{0} مورد قابل توجه شناسایی شد. وظایف غیرفعال و رکوردهای ناموفق را در اولویت قرار دهید.', + cronjobHealthRiskDesc: '{0} مورد پرخطر شناسایی شد. وظایف ناموفق و غیرفعال را در اولویت قرار دهید.', + cronjobReasonFailed: '{0} رکورد ناموفق', + cronjobReasonDisabled: '{0} وظیفه غیرفعال', + cronjobReasonLocalOnlyBackup: '{0} وظیفه پشتیبان فقط محلی', + cronjobReasonNormal: 'اجرای وظایف زمان‌بندی و پوشش پشتیبان عادی هستند', + riskLow: 'ریسک کم', + viewFailedRecords: 'مشاهده وظایف ناموفق', + viewCronjobTasks: 'مشاهده وظایف زمان‌بندی', + checkBackupTasks: 'بررسی وظایف پشتیبان', + generationRule: 'قوانین تولید', + scheduleDaily: 'روزانه', + scheduleDailyDesc: 'هر روز ساعت ۰۹:۰۰ گزارشی برای ۲۴ ساعت گذشته تولید می‌کند', + scheduleWeekly: 'هفتگی', + scheduleWeeklyDesc: 'هر دوشنبه ساعت ۰۹:۰۰ گزارشی برای ۷ روز گذشته تولید می‌کند', + scheduleMonthly: 'ماهانه', + scheduleMonthlyDesc: 'روز اول هر ماه ساعت ۰۹:۰۰ گزارشی برای ماه قبل تولید می‌کند', + scheduleCurrentDaily: 'هر روز ساعت ۰۹:۰۰، گزارش ۲۴ ساعت گذشته · بعدی {0}', + scheduleCurrentWeekly: 'هر دوشنبه ساعت ۰۹:۰۰، گزارش ۷ روز گذشته · بعدی {0}', + scheduleCurrentMonthly: 'روز اول هر ماه ساعت ۰۹:۰۰، گزارش ماه قبل · بعدی {0}', + notificationMethod: 'روش‌های اعلان', + channel: 'کانال', + receiver: 'گیرنده', + systemThreshold: 'آستانه سیستم', + metric: 'معیار', + currentRule: 'قانون فعلی', + hostMonitor: 'نظارت بر میزبان', + monitorInterval: 'فاصله نظارت', + exportSettings: 'تنظیمات خروجی', + lastExportReport: 'نتیجه تولید شده اخیر', + noLastExportReport: 'هیچ رکورد گزارش خروجی وجود ندارد', + lastExportStatus: 'وضعیت آخرین خروجی', + exportFile: 'فایل خروجی', + generateTime: 'زمان تولید', + fileSize: 'اندازه فایل', + viewExportHistory: 'مشاهده تاریخچه خروجی', + defaultFormat: 'فرمت پیش‌فرض', + savePath: 'دایرکتوری ذخیره', + savePathRequired: 'دایرکتوری ذخیره گزارش را تنظیم کنید', + autoExport: 'فعال‌سازی خروجی خودکار', + autoExportDesc: 'هنگام فعال‌سازی، هر روز ساعت ۰۹:۰۰ به طور خودکار یک گزارش عملیات تولید می‌کند', + autoExportEnabled: 'خروجی خودکار فعال است', + autoExportDisabled: 'خروجی خودکار غیرفعال است', + readOnlyPermissionTip: + 'حساب فعلی فقط می‌تواند تنظیمات گزارش عملیات را مشاهده کند. برای ایجاد تغییرات با مدیر تماس بگیرید.', + refreshing: 'در حال بازخوانی', + exporting: 'در حال خروجی', + exportFailed: 'خروجی گزارش ناموفق بود', + generating: 'در حال تولید', + saved: 'ذخیره شد', + saveFailed: 'ذخیره تنظیمات ناموفق بود', + generateNow: 'تولید اکنون', + generateSuccess: 'فایل گزارش تولید شد: {0}', + generateFailed: 'تولید گزارش ناموفق بود', + enabledStatus: 'فعال', + disabledStatus: 'غیرفعال', + alertConfigInvalid: 'پیکربندی نامعتبر', + thresholdRule: 'آستانه {0}، پس از {1} بار متوالی فعال می‌شود', + hours: '{0} ساعت', + minutes: '{0} دقیقه', + seconds: '{0} ثانیه', + totalExports: 'مجموع خروجی‌ها', + successExports: 'خروجی‌های موفق', + failedExports: 'خروجی‌های ناموفق', + reportName: 'نام گزارش', + exportFormat: 'فرمت خروجی', + operator: 'اپراتور', + triggerType: 'محرک', + filePath: 'مسیر فایل', + manualExport: 'دستی', + scheduledExport: 'زمان‌بندی شده', + exportResult: 'نتیجه خروجی', + exportDetail: 'جزئیات خروجی', + }, + }, + user: { + user: 'کاربر', + userInfo: 'اطلاعات کاربر', + userManage: 'مدیریت کاربران', + superAdmin: 'مدیر کل', + superAdminDesc: 'دارای مجوزهای کامل مدیریت سیستم است و می‌تواند همه منابع و پیکربندی‌ها را مدیریت کند.', + nodeAdmin: 'مدیر گره', + nodeAdminDesc: + 'دارای مجوزهای مدیریت برای گره‌های مشخص است و می‌تواند منابع و پیکربندی‌های آن گره‌ها را مدیریت کند.', + readOnly: 'فقط خواندنی', + readOnlyDesc: + 'دسترسی فقط خواندنی به همه مجوزهای سیستم دارد و می‌تواند همه منابع و پیکربندی‌ها را مشاهده کند.', + bindNode: 'اتصال گره', + boundUsers: 'کاربران متصل', + role: 'نقش', + roleName: 'نام', + permission: 'مجوزها', + permissionDuplicate: 'فقط یک نقش می‌تواند به هر گره اختصاص داده شود', + nodeAdminMasterConfirm: + 'مجوزهای مدیر گره در گره اصلی ارتقاء یافته است. بر اساس نیازهای مدیریت واقعی با دقت اختصاص دهید.', + permissionLinkageTip: + 'مجوزهای مرتبط به طور خودکار در صورت وجود وابستگی انتخاب می‌شوند؛ پس از حذف دستی، برخی ویژگی‌ها ممکن است "کاربر فعلی مجوز ندارد" را نشان دهند.', + allViewPermissionHelper: 'همه مجوزهای مشاهده برای دروازه AI را اعطا می‌کند.', + apiKeyViewPermissionHelper: 'فقط مشاهده کلیدهای API دروازه AI را مجاز می‌کند.', + masterOnlyPermission: 'مجوز گره اصلی', + masterOnlyPermissionHelper: 'این مجوز فقط در گره اصلی اعمال می‌شود.', + view: 'مشاهده', + manage: 'مدیریت', + }, + app: { + app: 'برنامه', + title: 'نام مستعار پنل', + titleHelper: 'نام مستعار پنل برای نمایش در برنامه (پیش‌فرض نام مستعار پنل) استفاده می‌شود', + qrCode: 'کد QR', + apiStatusHelper: 'برنامه پنل نیاز به فعال‌سازی ویژگی رابط API دارد', + apiInterfaceHelper: + 'پشتیبانی از دسترسی به رابط API پنل (برای برنامه پنل باید این ویژگی فعال باشد)', + apiInterfaceHelper1: + "دسترسی برنامه پنل نیاز به افزودن بازدیدکننده به لیست سفید دارد؛ برای IP‌های غیر ثابت، توصیه می‌شود 0.0.0.0/0 (همه IPv4)، ::/0 (همه IPv6) اضافه شود", + qrCodeExpired: 'زمان بازخوانی', + apiLeakageHelper: 'کد QR را افشا نکنید. مطمئن شوید که فقط در محیط‌های قابل اعتماد استفاده می‌شود.', + }, + waf: { + name: 'WAF', + blackWhite: 'لیست سیاه و سفید', + globalSetting: 'تنظیمات جهانی', + websiteSetting: 'تنظیمات وب‌سایت', + blockRecords: 'رکوردهای مسدودسازی', + world: 'جهان', + china: 'چین', + intercept: 'رهگیری', + request: 'درخواست‌ها', + count4xx: 'تعداد 4xx', + count5xx: 'تعداد 5xx', + todayStatus: 'وضعیت امروز', + reqMap: 'نقشه حملات (۳۰ روز گذشته)', + resource: 'منبع', + count: 'تعداد', + hight: 'بالا', + low: 'پایین', + reqCount: 'درخواست‌ها', + interceptCount: 'تعداد رهگیری', + requestTrends: 'روند درخواست‌ها (۷ روز گذشته)', + interceptTrends: 'روند رهگیری (۷ روز گذشته)', + whiteList: 'لیست سفید', + blackList: 'لیست سیاه', + ipBlackListHelper: 'IP‌های موجود در لیست سیاه از دسترسی به وب‌سایت مسدود می‌شوند', + ipWhiteListHelper: 'IP‌های موجود در لیست سفید از همه محدودیت‌ها عبور می‌کنند', + uaBlackListHelper: 'درخواست‌هایی با مقادیر User-Agent در لیست سیاه مسدود می‌شوند', + uaWhiteListHelper: 'درخواست‌هایی با مقادیر User-Agent در لیست سفید از همه محدودیت‌ها عبور می‌کنند', + urlBlackListHelper: 'درخواست‌ها به URL‌های موجود در لیست سیاه مسدود می‌شوند', + urlWhiteListHelper: 'درخواست‌ها به URL‌های موجود در لیست سفید از همه محدودیت‌ها عبور می‌کنند', + ccHelper: + 'اگر وب‌سایت بیش از {1} درخواست از یک IP در {0} ثانیه دریافت کند، IP به مدت {2} مسدود می‌شود', + blockTime: 'مدت مسدودسازی', + attackHelper: 'اگر رهگیری‌های تجمعی بیش از {1} در {0} ثانیه باشد، IP به مدت {2} مسدود می‌شود', + notFoundHelper: + 'اگر درخواست‌های تجمعی که خطای ۴۰۴ برمی‌گردانند بیش از {1} بار در {0} ثانیه باشد، IP به مدت {2} مسدود می‌شود', + frequencyLimit: 'محدودیت فرکانس', + regionLimit: 'محدودیت منطقه', + defaultRule: 'قوانین پیش‌فرض', + accessFrequencyLimit: 'محدودیت فرکانس دسترسی', + attackLimit: 'محدودیت فرکانس حمله', + notFoundLimit: 'محدودیت فرکانس ۴۰۴', + urlLimit: 'محدودیت فرکانس URL', + urlLimitHelper: 'فرکانس دسترسی به یک URL واحد را تنظیم کنید', + sqliDefense: 'محافظت در برابر تزریق SQL', + sqliHelper: 'تزریق SQL را در درخواست‌ها تشخیص داده و مسدود کنید', + xssHelper: 'XSS را در درخواست‌ها تشخیص داده و مسدود کنید', + xssDefense: 'محافظت در برابر XSS', + uaDefense: 'قوانین User-Agent مخرب', + uaHelper: 'شامل قوانینی برای شناسایی ربات‌های مخرب رایج است', + argsDefense: 'قوانین پارامترهای مخرب', + argsHelper: 'درخواست‌های حاوی پارامترهای مخرب را مسدود می‌کند', + cookieDefense: 'قوانین کوکی مخرب', + cookieHelper: 'حمل کوکی‌های مخرب در درخواست‌ها را ممنوع می‌کند', + headerDefense: 'قوانین هدر مخرب', + headerHelper: 'حمل هدرهای مخرب در درخواست‌ها را ممنوع می‌کند', + httpRule: 'قوانین روش درخواست HTTP', + httpHelper: + 'نوع روش‌های مجاز برای دسترسی را تنظیم کنید. اگر می‌خواهید برخی از انواع دسترسی را محدود کنید، دکمه آن نوع را خاموش کنید. مثلاً: فقط دسترسی از نوع GET مجاز است، سپس باید دکمه‌های سایر نوع‌ها به جز GET را خاموش کنید', + geoRule: 'محدودیت دسترسی منطقه‌ای', + geoHelper: + 'دسترسی به وب‌سایت خود را از برخی مناطق محدود کنید، مثلاً: اگر دسترسی از سرزمین اصلی چین مجاز است، درخواست‌های خارج از سرزمین اصلی چین مسدود می‌شوند', + ipLocation: 'مکان IP', + action: 'اقدام', + ruleType: 'نوع حمله', + ipHelper: 'آدرس IP را وارد کنید', + attackLog: 'لاگ حمله', + rule: 'قانون', + ipArr: 'محدوده IPv4', + ipStart: 'IP شروع', + ipEnd: 'IP پایان', + ipv4: 'IPv4', + ipv6: 'IPv6', + urlDefense: 'قوانین URL', + urlHelper: 'URL ممنوع', + dirFilter: 'فیلتر دایرکتوری', + sqlInject: 'تزریق SQL', + xss: 'XSS', + phpExec: 'اجرای اسکریپت PHP', + oneWordTrojan: 'تروژان یک کلمه‌ای', + appFilter: 'فیلتر دایرکتوری خطرناک', + webShell: 'Webshell', + args: 'پارامترهای مخرب', + protocolFilter: 'فیلتر پروتکل', + javaFilter: 'فیلتر فایل خطرناک جاوا', + scannerFilter: 'فیلتر اسکنر', + escapeFilter: 'فیلتر فرار', + customRule: 'قوانین سفارشی', + httpMethod: 'فیلتر روش HTTP', + fileExt: 'محدودیت آپلود فایل', + fileExtHelper: 'پسوندهای فایل ممنوع برای آپلود', + deny: 'ممنوع', + allow: 'مجاز', + field: 'شیء', + pattern: 'شرط', + ruleContent: 'محتوا', + contain: 'شامل', + equal: 'مساوی', + regex: 'عبارت منظم', + notEqual: 'نامساوی', + customRuleHelper: 'بر اساس شرایط مشخص شده اقدام کنید', + actionAllow: 'مجاز', + blockIP: 'مسدود کردن IP', + code: 'کد وضعیت بازگشت', + noRes: 'قطع اتصال (۴۴۴)', + badReq: 'پارامترهای نامعتبر (۴۰۰)', + forbidden: 'دسترسی ممنوع (۴۰۳)', + serverErr: 'خطای سرور (۵۰۰)', + resHtml: 'صفحه پاسخ', + allowHelper: 'اجازه دسترسی از قوانین بعدی WAF عبور می‌کند، لطفاً با احتیاط استفاده کنید', + captcha: 'تأیید انسان-ماشین', + fiveSeconds: 'تأیید ۵ ثانیه‌ای', + location: 'منطقه', + redisConfig: 'پیکربندی Redis', + redisHelper: 'فعال‌سازی Redis برای ماندگاری IP‌های مسدود شده موقت', + wafHelper: 'همه وب‌سایت‌ها پس از بسته شدن محافظت را از دست می‌دهند', + websiteWafHelper: 'این وب‌سایت پس از بسته شدن محافظت را از دست می‌دهد', + attackIP: 'IP مهاجم', + attackParam: 'جزئیات حمله', + execRule: 'قانون برخورد', + acl: 'ACL', + sql: 'تزریق SQL', + cc: 'محدودیت فرکانس دسترسی', + isBlocking: 'مسدود شده', + isFree: 'رفع مسدودیت', + unLock: 'رفع مسدودیت', + unLockHelper: 'رفع مسدودیت IP: {0}؟', + saveDefault: 'ذخیره پیش‌فرض', + saveToWebsite: 'اعمال به وب‌سایت', + saveToWebsiteHelper: 'تنظیمات فعلی به همه وب‌سایت‌ها اعمال شود؟ ', + websiteHelper: + 'در اینجا تنظیمات پیش‌فرض برای ایجاد وب‌سایت است. تغییرات باید به وب‌سایت اعمال شوند تا اعمال شوند', + websiteHelper2: + 'در اینجا تنظیمات پیش‌فرض برای ایجاد وب‌سایت است. لطفاً پیکربندی خاص را در وب‌سایت تغییر دهید', + ipGroup: 'گروه IP', + ipGroupHelper: + 'هر خط یک IP یا محدوده IP، پشتیبانی از IPv4 و IPv6، مثلاً: 192.168.1.1 یا 192.168.1.0/24', + ipBlack: 'لیست سیاه IP', + openRestyAlert: 'نسخه OpenResty باید بالاتر از {0} باشد', + initAlert: + 'برای اولین استفاده نیاز به راه‌اندازی است، فایل پیکربندی وب‌سایت تغییر می‌کند و پیکربندی WAF قبلی از بین می‌رود. حتماً از OpenResty پشتیبان‌گیری کنید', + initHelper: + 'عملیات راه‌اندازی پیکربندی WAF موجود را پاک می‌کند. آیا مطمئن هستید که می‌خواهید راه‌اندازی کنید؟ ', + mainSwitch: 'کلید اصلی', + websiteSwitch: 'کلید', + websiteAlert: 'لطفاً ابتدا یک وب‌سایت ایجاد کنید', + defaultUrlBlack: 'قوانین URL', + htmlRes: 'صفحه رهگیری', + urlSearchHelper: 'URL را برای جستجوی فازی وارد کنید', + toCreate: 'ایجاد', + closeWaf: 'بستن WAF', + closeWafHelper: 'بستن WAF باعث از دست رفتن محافظت وب‌سایت می‌شود، آیا ادامه می‌دهید؟', + addblack: 'سیاه', + addwhite: 'سفید', + addblackHelper: 'آیا IP:{0} به لیست سیاه پیش‌فرض اضافه شود؟', + addwhiteHelper: 'آیا IP:{0} به لیست سفید پیش‌فرض اضافه شود؟', + defaultUaBlack: 'قانون User-Agent', + defaultIpBlack: 'گروه IP مخرب', + cookie: 'قوانین کوکی', + urlBlack: 'لیست سیاه URL', + uaBlack: 'لیست سیاه User-Agent', + attackCount: 'محدودیت فرکانس حمله', + fileExtCheck: 'محدودیت آپلود فایل', + geoRestrict: 'محدودیت دسترسی منطقه‌ای', + attacklog: 'رکورد رهگیری', + unknownWebsite: 'دسترسی به دامنه غیرمجاز', + geoRuleEmpty: 'منطقه نمی‌تواند خالی باشد', + unknown: 'وب‌سایت وجود ندارد', + geo: 'محدودیت منطقه', + revertHtml: 'بازگردانی {0} به عنوان صفحه پیش‌فرض؟', + five_seconds: 'تأیید ۵ ثانیه‌ای', + header: 'قوانین هدر', + methodWhite: 'قوانین HTTP', + expiryDate: 'تاریخ انقضا', + expiryDateHelper: 'پس از عبور از تأیید، در مدت اعتبار دیگر تأیید نمی‌شود', + defaultIpBlackHelper: 'برخی IP‌های مخرب جمع‌آوری شده از اینترنت برای جلوگیری از دسترسی', + notFoundCount: 'محدودیت فرکانس ۴۰۴', + matchValue: 'مقدار تطابق', + headerName: 'پشتیبانی از کاراکترهای غیر ویژه با شروع انگلیسی، اعداد، -، طول ۳-۳۰', + cdnHelper: 'وب‌سایت‌های استفاده‌کننده از CDN می‌توانند در اینجا باز شوند تا IP مبدأ صحیح به دست آید', + clearLogWarn: 'پاک‌سازی لاگ ممکن نیست، ادامه می‌دهید؟', + commonRuleHelper: 'قانون تطابق فازی است', + blockIPHelper: + 'IP‌های مسدود شده به طور موقت در OpenResty ذخیره می‌شوند و با راه‌اندازی مجدد OpenResty آزاد می‌شوند. می‌توانند از طریق عملکرد مسدودسازی به طور دائمی مسدود شوند', + addWhiteUrlHelper: 'آیا URL {0} به لیست سفید اضافه شود؟', + dashHelper: 'نسخه انجمن همچنین می‌تواند از عملکردهای موجود در تنظیمات جهانی و تنظیمات وب‌سایت استفاده کند', + wafStatusHelper: 'دیواره آتش فعال نیست. حفاظت امنیتی وب‌سایت متوقف شده است. به زودی آن را فعال کنید.', + enableProtection: 'فعال‌سازی محافظت', + ccMode: 'حالت', + global: 'حالت جهانی', + uriMode: 'حالت URL', + globalHelper: + 'حالت جهانی: زمانی فعال می‌شود که تعداد کل درخواست‌ها به هر URL در یک واحد زمان از آستانه تجاوز کند', + uriModeHelper: + 'حالت URL: زمانی فعال می‌شود که تعداد درخواست‌ها به یک URL واحد در یک واحد زمان از آستانه تجاوز کند', + ip: 'لیست سیاه IP', + globalSettingHelper: + 'تنظیمات با برچسب [وب‌سایت] باید در [تنظیمات وب‌سایت] فعال شوند و تنظیمات جهانی فقط تنظیمات پیش‌فرض برای وب‌سایت‌های تازه ایجاد شده هستند', + globalSettingHelper2: + 'تنظیمات باید هم در [تنظیمات جهانی] و هم در [تنظیمات وب‌سایت] به طور همزمان فعال شوند', + urlCCHelper: 'بیش از {1} درخواست به این URL در {0} ثانیه، این IP را به مدت {2} مسدود می‌کند', + urlCCHelper2: 'URL نمی‌تواند شامل پارامتر باشد', + notContain: 'شامل نباشد', + urlcc: 'محدودیت فرکانس URL', + method: 'نوع درخواست', + addIpsToBlock: 'مسدودسازی دسته‌ای IP', + addUrlsToWhite: 'افزودن دسته‌ای URL به لیست سفید', + noBlackIp: 'IP از قبل مسدود شده است، نیازی به مسدودسازی مجدد نیست', + noWhiteUrl: 'URL از قبل در لیست سفید است، نیازی به افزودن مجدد نیست', + spiderIpHelper: + 'شامل Baidu، Bing، Google، 360، Shenma، Sogou، ByteDance، DuckDuckGo، Yandex. بستن این گزینه همه دسترسی‌های عنکبوتی را مسدود می‌کند.', + spiderIp: 'مجموعه IP عنکبوت', + geoIp: 'کتابخانه آدرس IP', + geoIpHelper: 'برای تأیید موقعیت جغرافیایی IP استفاده می‌شود', + stat: 'گزارش حمله', + statTitle: 'گزارش', + attackIp: 'IP', + attackCountNum: 'تعداد', + percent: 'درصد', + addblackUrlHelper: 'آیا URL: {0} به لیست سیاه پیش‌فرض اضافه شود؟', + rce: 'اجرای کد از راه دور', + software: 'نرم‌افزار', + cveHelper: 'شامل آسیب‌پذیری‌های نرم‌افزارها و فریم‌ورک‌های رایج است', + vulnCheck: 'قوانین تکمیلی', + ssrf: 'آسیب‌پذیری SSRF', + afr: 'خواندن فایل دلخواه', + ua: 'دسترسی غیرمجاز', + id: 'افشای اطلاعات', + aa: 'دور زدن احراز هویت', + dr: 'پیمایش دایرکتوری', + xxe: 'آسیب‌پذیری XXE', + suid: 'آسیب‌پذیری سریال‌سازی', + dos: 'آسیب‌پذیری محرومیت از سرویس', + afd: 'دانلود فایل دلخواه', + sqlInjection: 'تزریق SQL', + afw: 'نوشتن فایل دلخواه', + il: 'نشت اطلاعات', + clearAllLog: 'پاک‌سازی همه لاگ‌ها', + exportLog: 'خروجی لاگ‌ها', + appRule: 'قوانین برنامه', + appRuleHelper: + 'قوانین برنامه رایج، فعال‌سازی می‌تواند هشدارهای نادرست را کاهش دهد، هر وب‌سایت فقط می‌تواند از یک قانون استفاده کند', + logExternal: 'حذف انواع رکورد', + ipWhite: 'لیست سفید IP', + urlWhite: 'لیست سفید URL', + uaWhite: 'لیست سفید User-Agent', + logExternalHelper: + 'انواع رکورد حذف شده در لاگ‌ها ثبت نمی‌شوند، لیست سیاه/سفید، محدودیت دسترسی منطقه‌ای و قوانین سفارشی لاگ‌های زیادی تولید می‌کنند، توصیه می‌شود حذف شوند', + ssti: 'حمله SSTI', + crlf: 'تزریق CRLF', + strict: 'حالت سخت‌گیرانه', + strictHelper: 'از قوانین سخت‌گیرانه‌تر برای تأیید درخواست‌ها استفاده کنید', + saveLog: 'ذخیره لاگ', + remoteURLHelper: 'URL از راه دور باید تضمین کند که هر خط یک IP است و هیچ کاراکتر دیگری ندارد', + notFound: 'یافت نشد (۴۰۴)', + serviceUnavailable: 'سرویس در دسترس نیست (۵۰۳)', + gatewayTimeout: 'مهلت دروازه (۵۰۴)', + belongToIpGroup: 'متعلق به گروه IP است', + notBelongToIpGroup: 'متعلق به گروه IP نیست', + unknownWebsiteKey: 'دامنه ناشناخته', + special: 'ویژه', + fileToLarge: 'فایل بیش از ۱ مگابایت است و قابل آپلود نیست', + uploadOverLimit: 'فایل آپلود شده از حد تعداد فراتر رفته است، حداکثر ۱ فایل', + importRuleHelper: 'هر خط یک قانون', + }, + monitor: { + '360': 'جستجوی ۳۶۰', + name: 'نظارت وب‌سایت', + pv: 'بازدید صفحه', + uv: 'بازدیدکننده یکتا', + flow: 'ترافیک', + ip: 'IP', + spider: 'عنکبوت', + visitors: 'روند بازدیدکنندگان', + today: 'امروز', + last7days: '۷ روز گذشته', + last30days: '۳۰ روز گذشته', + uvMap: 'نقشه بازدیدکنندگان (۳۰ روز)', + qps: 'درخواست‌های بلادرنگ (در دقیقه)', + flowSec: 'ترافیک بلادرنگ (در دقیقه)', + excludeCode: 'رد کردن کدهای وضعیت', + excludeUrl: 'رد کردن URL‌ها', + excludeExt: 'رد کردن پسوندها', + cdnHelper: 'IP واقعی را از هدر ارائه شده توسط CDN دریافت کنید', + reqRank: 'رتبه‌بندی بازدید', + refererDomain: 'دامنه مرجع', + os: 'سیستم عامل', + browser: 'مرورگر/کلاینت', + device: 'دستگاه', + showMore: 'بیشتر', + unknown: 'سایر', + pc: 'رایانه', + mobile: 'دستگاه موبایل', + wechat: 'وی‌چت', + machine: 'ماشین', + tencent: 'مرورگر تنسنت', + ucweb: 'مرورگر UC', + '2345explorer': 'مرورگر ۲۳۴۵', + huaweibrowser: 'مرورگر هوآوی', + log: 'لاگ‌های درخواست', + statusCode: 'کد وضعیت', + requestTime: 'زمان پاسخ', + flowRes: 'ترافیک پاسخ', + method: 'روش درخواست', + statusCodeHelper: 'کد وضعیت را در بالا وارد کنید', + statusCodeError: 'نوع کد وضعیت نامعتبر است', + methodHelper: 'روش درخواست را در بالا وارد کنید', + all: 'همه', + baidu: 'بایدو', + google: 'گوگل', + bing: 'بینگ', + bytes: 'تایتلز امروز', + sogou: 'سوگو', + failed: 'خطا', + ipCount: 'تعداد IP', + spiderCount: 'درخواست‌های عنکبوت', + averageReqTime: 'میانگین زمان پاسخ', + totalFlow: 'مجموع ترافیک', + logSize: 'اندازه فایل لاگ', + realIPType: 'روش دریافت IP واقعی', + fromHeader: 'دریافت از هدر HTTP', + fromHeaders: 'دریافت از لیست هدرها', + header: 'هدر HTTP', + cdnConfig: 'پیکربندی CDN', + xff1: 'پروکسی سطح اول از X-Forwarded-For', + xff2: 'پروکسی سطح دوم از X-Forwarded-For', + xff3: 'پروکسی سطح سوم از X-Forwarded-For', + xffHelper: + 'مثلاً: X-Forwarded-For: ,,, پروکسی سطح بالاتر آخرین IP را می‌گیرد', + headersHelper: + 'IP واقعی را از هدرهای HTTP CDN رایج دریافت می‌کند و اولین مقدار موجود را انتخاب می‌کند', + monitorCDNHelper: + 'تغییر پیکربندی CDN برای نظارت وب‌سایت، تنظیمات CDN WAF را نیز به‌روزرسانی می‌کند', + wafCDNHelper: 'تغییر پیکربندی CDN WAF، تنظیمات CDN نظارت وب‌سایت را نیز به‌روزرسانی می‌کند', + statusErr: 'فرمت کد وضعیت نامعتبر است', + shenma: 'جستجوی شنما', + duckduckgo: 'داک‌داک‌گو', + excludeUri: 'رد کردن URI‌ها', + top100Helper: 'نمایش ۱۰۰ داده برتر', + logSaveDay: 'دوره نگهداری لاگ (روز)', + cros: 'سیستم عامل کروم', + theworld: 'مرورگر TheWorld', + edge: 'مایکروسافت اج', + maxthon: 'مرورگر مکس‌تون', + monitorStatusHelper: 'نظارت وب‌سایت در حال حاضر غیرفعال است. اکنون آن را فعال کنید', + excludeIp: 'رد کردن آدرس‌های IP', + excludeUa: 'رد کردن User-Agent', + remotePort: 'پورت از راه دور', + unknown_browser: 'ناشناخته', + unknown_os: 'ناشناخته', + unknown_device: 'ناشناخته', + logSaveSize: 'حداکثر اندازه ذخیره لاگ', + logSaveSizeHelper: 'این اندازه ذخیره لاگ برای یک وب‌سایت است', + '360se': 'مرورگر امنیتی ۳۶۰', + websites: 'لیست وب‌سایت‌ها', + trend: 'آمار روند', + reqCount: 'تعداد درخواست', + uriHelper: 'برای رد کردن Uri می‌توانید از /test/* یا /*/index.php استفاده کنید', + }, + tamper: { + tamper: 'محافظت در برابر دستکاری وب‌سایت', + ignoreTemplate: 'الگوی حذف', + protectTemplate: 'الگوی محافظت', + ignoreTemplateHelper: + 'قوانین حذف را با Enter یا فاصله جدا کنید. (دایرکتوری خاص ./log یا نام دایرکتوری tmp. برای حذف یک فایل، مسیر فایل خاص را وارد کنید، مانند ./data/test.html)', + protectTemplateHelper: + 'قوانین محافظت را با Enter یا فاصله جدا کنید. (فایل خاص ./index.html، پسوند فایل .html، نوع فایل js. برای محافظت از یک دایرکتوری، مسیر دایرکتوری خاص را وارد کنید، مانند ./log)', + templateContent: 'محتوای قالب', + template: 'قالب', + saveTemplate: 'ذخیره به عنوان قالب', + tamperHelper1: + 'برای وب‌سایت‌های مستقر شده با یک کلیک، توصیه می‌شود محافظت در برابر دستکاری را برای دایرکتوری برنامه فعال کنید. اگر وب‌سایت نمی‌تواند به طور عادی کار کند یا پشتیبان‌گیری یا بازیابی با شکست مواجه شد، ابتدا محافظت در برابر دستکاری را غیرفعال کنید.', + tamperHelper2: + 'این کار عملیات خواندن، نوشتن، حذف، تغییر مجوز و مالک را روی فایل‌های محافظت شده در دایرکتوری‌های حذف نشده محدود می‌کند.', + tamperPath: 'دایرکتوری محافظت', + tamperPathEdit: 'تغییر مسیر', + log: 'لاگ رهگیری', + totalProtect: 'مجموع محافظت', + todayProtect: 'محافظت امروز', + templateRule: 'طول باید ۱-۵۱۲ باشد و نام نمی‌تواند شامل کاراکترهایی مانند {0} باشد.', + ignore: 'حذف', + ignoreHelper: + 'قوانین حذف را با Enter یا فاصله جدا کنید. (دایرکتوری خاص ./log یا نام دایرکتوری tmp. برای حذف یک فایل، مسیر فایل خاص را وارد کنید، مانند ./data/test.html)', + protect: 'محافظت', + protectHelper: + 'قوانین محافظت را با Enter یا فاصله جدا کنید. (فایل خاص ./index.html، پسوند فایل .html، نوع فایل js. برای محافظت از یک دایرکتوری، مسیر دایرکتوری خاص را وارد کنید، مانند ./log)', + tamperHelper00: 'حذف و محافظت فقط از مسیرهای نسبی پشتیبانی می‌کنند.', + tamperHelper01: + 'پس از فعال‌سازی محافظت در برابر دستکاری، سیستم عملیات ایجاد، ویرایش و حذف را روی فایل‌های محافظت شده در دایرکتوری‌های حذف نشده محدود می‌کند.', + tamperHelper02: 'اولویت: محافظت مسیر خاص > حذف مسیر خاص > محافظت > حذف', + tamperHelper03: + 'عملیات نظارت فقط دایرکتوری‌های حذف نشده را هدف قرار می‌دهند و ایجاد فایل‌های محافظت نشده در این دایرکتوری‌ها را نظارت می‌کنند.', + disableHelper: 'در حال غیرفعال‌سازی محافظت در برابر دستکاری برای وب‌سایت‌های زیر، ادامه می‌دهید؟', + appendOnly: 'فقط افزودن', + appendOnlyHelper: + 'عملیات حذف را برای فایل‌های این دایرکتوری محدود می‌کند و فقط اجازه افزودن دایرکتوری‌های حذف شده یا فایل‌های محافظت نشده را می‌دهد', + immutable: 'غیرقابل تغییر', + immutableHelper: 'عملیات ویرایش، حذف، تغییر مجوز و مالک را برای این فایل محدود می‌کند', + onWatch: 'نظارت', + onWatchHelper: + 'ایجاد فایل‌های محافظت شده یا دایرکتوری‌های حذف نشده را در این دایرکتوری نظارت و رهگیری می‌کند', + forceStop: 'بستن اجباری', + forceStopHelper: 'در حال بستن اجباری عملکرد ضد دستکاری برای این دایرکتوری وب‌سایت. ادامه می‌دهید؟', + }, + setting: { + setting: 'تنظیمات پنل', + title: 'توضیحات پنل', + titleHelper: + 'در صفحه ورود کاربر نمایش داده می‌شود (مثلاً پنل مدیریت عملیات سرور لینوکس، توصیه می‌شود ۸-۱۵ کاراکتر)', + logo: 'لوگو (بدون متن)', + logoHelper: + 'در گوشه بالا سمت چپ صفحه مدیریت زمانی که منو جمع شده است نمایش داده می‌شود (اندازه توصیه شده تصویر: ۸۲px*82px)', + logoWithText: 'لوگو (با متن)', + logoWithTextHelper: + 'در گوشه بالا سمت چپ صفحه مدیریت زمانی که منو باز است نمایش داده می‌شود (اندازه توصیه شده تصویر: ۱۸۵px*55px)', + favicon: 'آیکون وب‌سایت', + faviconHelper: 'آیکون وب‌سایت (اندازه توصیه شده تصویر: ۱۶px*16px)', + setDefault: 'بازگردانی پیش‌فرض', + setHelper: 'تنظیمات فعلی ذخیره می‌شوند. ادامه می‌دهید؟', + setDefaultHelper: 'همه تنظیمات پنل به پیش‌فرض بازگردانده می‌شوند. ادامه می‌دهید؟', + logoGroup: 'لوگو', + imageGroup: 'تصویر', + loginImage: 'تصویر', + loginImageHelper: 'در صفحه ورود نمایش داده می‌شود (اندازه توصیه شده تصویر: ۵۰۰*416px)', + loginBgType: 'نوع پس‌زمینه', + loginBgImage: 'تصویر پس‌زمینه', + loginBgImageHelper: 'به عنوان تصویر پس‌زمینه در صفحه ورود نمایش داده می‌شود (اندازه توصیه شده تصویر: ۱۹۲۰*1080px)', + loginBgColor: 'رنگ پس‌زمینه', + loginBgColorHelper: 'به عنوان رنگ پس‌زمینه در صفحه ورود نمایش داده می‌شود', + image: 'تصویر', + bgColor: 'رنگ پس‌زمینه', + loginGroup: 'صفحه ورود', + loginBtnLinkColor: 'رنگ دکمه/لینک', + loginBtnLinkColorHelper: 'به عنوان رنگ دکمه/لینک در صفحه ورود نمایش داده می‌شود', + }, + helper: { + wafTitle1: 'نقشه رهگیری', + wafContent1: 'توزیع جغرافیایی رهگیری‌ها را در ۳۰ روز گذشته نمایش می‌دهد', + wafTitle2: 'محدودیت دسترسی منطقه‌ای', + wafContent2: 'منابع دسترسی وب‌سایت را بر اساس موقعیت جغرافیایی محدود کنید', + wafTitle3: 'صفحه رهگیری سفارشی', + wafContent3: 'یک صفحه سفارشی برای نمایش پس از رهگیری درخواست ایجاد کنید', + wafTitle4: 'قوانین سفارشی (ACL)', + wafContent4: 'درخواست‌ها را بر اساس قوانین سفارشی رهگیری کنید', + tamperTitle1: 'نظارت بر یکپارچگی فایل', + tamperContent1: + 'یکپارچگی فایل‌های وب‌سایت، از جمله فایل‌های هسته، فایل‌های اسکریپت و فایل‌های پیکربندی را نظارت کنید.', + tamperTitle2: 'اسکن و تشخیص بلادرنگ', + tamperContent2: 'با اسکن بلادرنگ سیستم فایل وب‌سایت، فایل‌های غیرعادی یا دستکاری شده را تشخیص دهید.', + tamperTitle3: 'تنظیمات مجوز امنیتی', + tamperContent3: + 'دسترسی به فایل‌های وب‌سایت را از طریق تنظیمات مجوز مناسب و سیاست‌های کنترل دسترسی محدود کنید و سطح حمله بالقوه را کاهش دهید.', + tamperTitle4: 'ثبت و تحلیل لاگ', + tamperContent4: + 'دسترسی و عملیات فایل را برای حسابرسی بعدی و تحلیل توسط مدیران و همچنین شناسایی تهدیدات امنیتی بالقوه ثبت کنید.', + settingTitle1: 'پیام خوش‌آمدگویی سفارشی', + settingContent1: 'یک پیام خوش‌آمدگویی سفارشی در صفحه ورود 1Panel تنظیم کنید.', + settingTitle2: 'لوگوی سفارشی', + settingContent2: 'اجازه آپلود تصاویر لوگو حاوی نام تجاری یا متن دیگر را بدهید.', + settingTitle3: 'آیکون وب‌سایت سفارشی', + settingContent3: + 'اجازه آپلود آیکون‌های سفارشی برای جایگزینی آیکون پیش‌فرض مرورگر، بهبود تجربه کاربری.', + monitorTitle1: 'روند بازدیدکنندگان', + monitorContent1: 'روند بازدیدکنندگان وب‌سایت را آماری و نمایش می‌دهد', + monitorTitle2: 'نقشه بازدیدکنندگان', + monitorContent2: 'توزیع جغرافیایی بازدیدکنندگان وب‌سایت را آماری و نمایش می‌دهد', + monitorTitle3: 'آمار دسترسی', + monitorContent3: + 'اطلاعات درخواست وب‌سایت، از جمله عنکبوت‌ها، دستگاه‌های دسترسی، وضعیت درخواست و غیره را آماری می‌کند.', + monitorTitle4: 'نظارت بلادرنگ', + monitorContent4: + 'اطلاعات درخواست وب‌سایت را به صورت بلادرنگ، از جمله تعداد درخواست‌ها، ترافیک و غیره نظارت می‌کند.', + alertTitle1: 'هشدار پیامکی', + alertContent1: + 'هنگامی که استفاده از منابع سرور غیرعادی، انقضای وب‌سایت و گواهی، نسخه جدید به‌روزرسانی، انقضای رمز عبور و غیره رخ دهد، کاربران از طریق هشدار پیامکی مطلع می‌شوند تا پردازش به موقع تضمین شود.', + alertTitle2: 'لاگ هشدار', + alertContent2: + 'کاربران را با قابلیت مشاهده لاگ‌های هشدار برای تسهیل ردیابی و تحلیل رویدادهای هشدار تاریخی فراهم می‌کند.', + alertTitle3: 'تنظیمات هشدار', + alertContent3: + 'کاربران را با پیکربندی شماره تلفن سفارشی، فرکانس ارسال روزانه و زمان ارسال روزانه فراهم می‌کند و تنظیم هشدارهای منطقی‌تر را برای کاربران آسان‌تر می‌سازد.', + nodeDashTitle1: 'مدیریت برنامه', + nodeDashContent1: + 'مدیریت یکپارچه برنامه‌های چند گره، پشتیبانی از نظارت بر وضعیت، شروع/توقف سریع، اتصال ترمینال و پشتیبان‌گیری', + nodeDashTitle2: 'مدیریت وب‌سایت', + nodeDashContent2: + 'مدیریت یکپارچه وب‌سایت‌های چند گره، نظارت بر وضعیت بلادرنگ، پشتیبانی از شروع/توقف دسته‌ای و پشتیبان‌گیری سریع', + nodeDashTitle3: 'مدیریت پایگاه داده', + nodeDashContent3: + 'مدیریت یکپارچه پایگاه‌های داده چند گره، وضعیت کلیدی در یک نگاه، پشتیبانی از پشتیبان‌گیری یک‌کلیکی', + nodeDashTitle4: 'مدیریت وظایف زمان‌بندی', + nodeDashContent4: + 'مدیریت یکپارچه وظایف زمان‌بندی چند گره، پشتیبانی از نظارت بر وضعیت، شروع/توقف سریع و اجرای دستی', + nodeTitle1: 'افزودن یک‌کلیکی گره', + nodeContent1: 'سریعاً چندین گره سرور را یکپارچه کنید', + nodeTitle2: 'ارتقاء دسته‌ای', + nodeContent2: 'همه گره‌ها را با یک عملیات همگام‌سازی و ارتقاء دهید', + nodeTitle3: 'نظارت بر وضعیت گره', + nodeContent3: "نظارت بر وضعیت عملیاتی هر گره به صورت بلادرنگ", + nodeTitle4: 'اتصال سریع از راه دور', + nodeContent4: 'اتصال مستقیم یک‌کلیکی به ترمینال‌های از راه دور گره', + fileExchangeTitle1: 'انتقال احراز هویت کلید', + fileExchangeContent1: 'از طریق کلیدهای SSH احراز هویت کنید تا امنیت انتقال تضمین شود.', + fileExchangeTitle2: 'همگام‌سازی کارآمد فایل', + fileExchangeContent2: + 'فقط محتوای تغییر یافته را همگام‌سازی کنید تا سرعت انتقال و پایداری به طور قابل توجهی بهبود یابد.', + fileExchangeTitle3: 'پشتیبانی از ارتباط چند گره', + fileExchangeContent3: + 'به راحتی فایل‌های پروژه را بین گره‌های مختلف انتقال دهید، مدیریت انعطاف‌پذیر چندین سرور.', + nodeAppTitle1: 'مدیریت ارتقاء برنامه', + nodeAppContent1: 'نظارت یکپارچه بر به‌روزرسانی برنامه‌های چند گره، پشتیبانی از ارتقاء یک‌کلیکی', + appTitle1: 'مدیریت پنل انعطاف‌پذیر', + appContent1: 'سرور 1Panel خود را هر زمان و هر مکان به راحتی مدیریت کنید.', + appTitle2: 'اطلاعات جامع سرویس', + appContent2: + 'برنامه‌های پایه، وب‌سایت‌ها، Docker، پایگاه‌های داده و غیره را مدیریت کنید و به سرعت برنامه‌ها و وب‌سایت‌ها را از طریق برنامه موبایل ایجاد کنید.', + appTitle3: 'نظارت بر ناهنجاری‌های بلادرنگ', + appContent3: + 'وضعیت بلادرنگ سرور، نظارت امنیتی WAF، آمار ترافیک وب‌سایت و وضعیت سلامت فرآیند را در برنامه موبایل مشاهده کنید.', + clusterTitle1: 'استقرار اصلی-برده', + clusterContent1: + 'پشتیبانی از ایجاد نمونه‌های اصلی-برده MySQL/Postgres/Redis در گره‌های مختلف، تکمیل خودکار ارتباط و راه‌اندازی اولیه اصلی-برده', + clusterTitle2: 'مدیریت اصلی-برده', + clusterContent2: + 'صفحه یکپارچه برای مدیریت متمرکز چندین گره اصلی-برده، مشاهده نقش‌ها، وضعیت اجرا و غیره.', + clusterTitle3: 'وضعیت تکرار', + clusterContent3: + 'وضعیت تکرار اصلی-برده و اطلاعات تأخیر را نمایش می‌دهد و به رفع مشکلات همگام‌سازی کمک می‌کند', + vllmTitle1: 'مدیریت متمرکز', + vllmContent1: + 'سرویس‌های vLLM پراکنده را به 1Panel بیاورید تا دید یکپارچه از نمونه‌ها، نسخه‌ها، وضعیت و مسیرهای زمان اجرا داشته باشید.', + vllmTitle2: 'استقرار سریع', + vllmContent2: + 'از یک فرم بصری برای پیکربندی انتخاب نسخه، نصب مدل و پارامترهای راه‌اندازی با هماهنگی دستی کمتر استفاده کنید.', + vllmTitle3: 'کارایی عملیاتی', + vllmContent3: + 'عملیات ایجاد، ویرایش، شروع، توقف، راه‌اندازی مجدد، حذف و ردیابی وظایف را از یک صفحه مدیریت کنید تا عملیات مدل محلی ساده‌تر شود.', + vllmTitle4: 'پیکربندی کنترل شده', + vllmContent4: + 'پورت‌ها، کانتینرها، دستورات راه‌اندازی و تنظیمات Compose را از طریق گزینه‌های پیشرفته استاندارد کنید تا تحویل و تنظیمات بعدی آسان‌تر شود.', + modelDownloaderTitle1: 'کشف مدل', + modelDownloaderContent1: + 'مستقیماً مخازن مدل HuggingFace را جستجو کنید و دانلودها، لایک‌ها، جزئیات مدل و لیست فایل‌ها را مشاهده کنید.', + modelDownloaderTitle2: 'دانلود شتاب‌دهنده', + modelDownloaderContent2: + 'یک نقطه پایانی شتاب HuggingFace و توکن HF را برای سایت رسمی، آینه‌ها و مدل‌های خصوصی پیکربندی کنید.', + modelDownloaderTitle3: 'ردیابی وظایف', + modelDownloaderContent3: + 'صف‌های دانلود، وضعیت وظایف، پیشرفت و خطاها را مرور کنید و از لغو، تلاش مجدد و پاک‌سازی رکوردها پشتیبانی کنید.', + modelDownloaderTitle4: 'مدیریت محلی', + modelDownloaderContent4: + 'دایرکتوری‌های مدل محلی را در یک مکان مدیریت کنید، از جمله مسیرها، اندازه‌ها، مهرهای زمانی و حذف فایل‌های مدل استفاده نشده.', + }, + node: { + master: 'گره اصلی', + masterBackup: 'پشتیبان گره اصلی', + backupNode: 'گره پشتیبان', + backupFrequency: 'فرکانس پشتیبان‌گیری (ساعت)', + backupCopies: 'تعداد کپی‌های پشتیبان', + noBackupNode: 'گره پشتیبان در حال حاضر خالی است. برای ذخیره، یک گره پشتیبان انتخاب کرده و دوباره تلاش کنید!', + masterBackupAlert: + 'پشتیبان‌گیری از گره اصلی در حال حاضر پیکربندی نشده است. برای اطمینان از امنیت داده، لطفاً در اسرع وقت یک گره پشتیبان تنظیم کنید تا در صورت خرابی امکان تغییر دستی به گره اصلی جدید فراهم شود.', + node: 'گره', + addr: 'آدرس', + nodeUpgrade: 'تنظیمات به‌روزرسانی', + nodeUpgradeHelper: + 'گره‌های انتخاب شده پس از اتمام ارتقاء گره اصلی، به طور خودکار شروع به ارتقاء می‌کنند، بدون نیاز به عملیات دستی.', + nodeUpgradePackageManage: 'مدیریت بسته نصب', + nodeUpgradePackageClean: 'پاک‌سازی', + nodeUpgradePackageFormatHelper: + 'فقط بسته‌های نصب `1panel-agent_v*_*` یا `1panel-v*-linux-*` پشتیبانی می‌شوند', + nodeUpgradePackageHostConfirm: 'فایل سرور {0} انتخاب خواهد شد. ادامه می‌دهید؟', + nodeUpgradePackageCleanHelper: 'همه بسته‌های به‌روزرسانی نسخه پایین‌تر پاک‌سازی می‌شوند. ادامه می‌دهید؟', + nodeUpgradeOfflinePackageHelper: + 'در محیط‌های آفلاین، گره‌های با معماری‌های مختلف باید قبل از به‌روزرسانی، بسته به‌روزرسانی متناسب را آپلود کنند.', + nodeUnhealthy: 'وضعیت گره غیرعادی', + deletedNode: 'گره حذف شده {0} در حال حاضر از عملیات ارتقاء پشتیبانی نمی‌کند!', + nodeUnhealthyHelper: 'وضعیت غیرعادی گره تشخیص داده شد. لطفاً در [مدیریت گره] بررسی کرده و دوباره تلاش کنید!', + nodeUnbind: 'گره به مجوز متصل نیست', + nodeUnbindHelper: + 'تشخیص داده شد که این گره به مجوز متصل نیست. لطفاً آن را در [تنظیمات پنل - مجوز] متصل کرده و دوباره تلاش کنید!', + memTotal: 'مجموع حافظه', + nodeManagement: 'مدیریت چند ماشینه', + multiOverview: 'چند ماشینه', + commonNodes: 'گره‌های پرکاربرد', + searchNodePlaceholder: 'جستجوی نام گره، گروه یا آدرس', + nodeItem: 'مدیریت گره', + panelItem: 'مدیریت پنل', + addPanel: 'افزودن پنل', + addPanelHelper: + 'پس از افزودن موفقیت‌آمیز پنل، می‌توانید در [نمای کلی - پنل‌ها] به سرعت به پنل هدف دسترسی داشته باشید.', + panel: 'پنل 1Panel', + others: 'سایر پنل‌ها', + addNode: 'افزودن گره', + connInfo: 'اطلاعات اتصال', + nodeInfo: 'اطلاعات گره', + withProxy: 'فعال‌سازی دسترسی پراکسی', + withoutProxy: 'غیرفعال‌سازی دسترسی پراکسی', + withProxyHelper: + 'از پراکسی سیستم {0} نگهداری شده در تنظیمات پنل برای دسترسی به گره‌های زیرین استفاده می‌کند. ادامه می‌دهید؟', + withoutProxyHelper: + 'استفاده از پراکسی سیستم نگهداری شده در تنظیمات پنل برای دسترسی به گره‌های زیرین متوقف می‌شود. ادامه می‌دهید؟', + syncInfo: 'همگام‌سازی', + syncHelper: 'هنگامی که داده‌های گره اصلی تغییر می‌کند، به‌طور بلادرنگ به این گره زیرین همگام‌سازی می‌شود', + syncBackupAccount: 'تنظیمات حساب پشتیبان', + syncWithMaster: + 'پس از ارتقاء به نسخه حرفه‌ای، همه داده‌ها به طور پیش‌فرض همگام‌سازی می‌شوند. سیاست‌های همگام‌سازی را می‌توان به صورت دستی در مدیریت گره تنظیم کرد.', + syncProxy: 'تنظیمات پراکسی سیستم', + syncProxyHelper: 'همگام‌سازی تنظیمات پراکسی سیستم نیاز به راه‌اندازی مجدد Docker دارد', + syncProxyHelper1: 'راه‌اندازی مجدد Docker ممکن است بر سرویس‌های کانتینر در حال اجرا تأثیر بگذارد.', + syncProxyHelper2: 'می‌توانید در صفحه کانتینرها - پیکربندی به صورت دستی راه‌اندازی مجدد کنید.', + syncProxyHelper3: + 'همگام‌سازی تنظیمات پراکسی سیستم نیاز به راه‌اندازی مجدد Docker دارد که ممکن است بر سرویس‌های کانتینر در حال اجرا تأثیر بگذارد', + syncProxyHelper4: + 'همگام‌سازی تنظیمات پراکسی سیستم نیاز به راه‌اندازی مجدد Docker دارد. می‌توانید بعداً در صفحه کانتینرها - پیکربندی به صورت دستی راه‌اندازی مجدد کنید.', + syncCustomApp: 'همگام‌سازی مخزن برنامه سفارشی', + syncAlertSetting: 'تنظیمات هشدار سیستم', + syncNodeInfo: 'داده‌های پایه گره،', + nodeSyncHelper: 'همگام‌سازی اطلاعات گره اطلاعات زیر را همگام‌سازی می‌کند:', + nodeSyncHelper1: '۱. اطلاعات حساب پشتیبان عمومی', + nodeSyncHelper2: '۲. اطلاعات اتصال بین گره اصلی و گره‌های زیرین', + nodeCheck: 'بررسی در دسترس بودن', + checkSSH: 'بررسی اتصال SSH گره', + checkUserPermission: 'بررسی مجوزهای کاربر گره', + isNotRoot: 'تشخیص داده شد که این گره از sudo بدون رمز عبور پشتیبانی نمی‌کند و کاربر فعلی غیر ریشه است', + checkLicense: 'بررسی وضعیت مجوز گره', + checkService: 'بررسی اطلاعات سرویس موجود در گره', + checkPort: 'بررسی دسترسی به پورت گره', + panelExist: + 'تشخیص داده شد که این گره در حال اجرای سرویس 1Panel V1 است. لطفاً قبل از افزودن، با استفاده از اسکریپت مهاجرت به V2 ارتقاء دهید.', + coreExist: + 'گره فعلی از قبل به عنوان گره اصلی فعال شده است و نمی‌توان آن را مستقیماً به عنوان گره زیرین اضافه کرد. لطفاً ابتدا آن را به گره زیرین تنزل دهید، سپس دوباره اضافه کنید، برای جزئیات به مستندات مراجعه کنید.', + agentExist: + 'تشخیص داده شد که 1panel-agent از قبل روی این گره نصب شده است. ادامه باعث می‌شود داده‌های موجود نگهداری شوند و فقط سرویس 1panel-agent جایگزین شود.', + agentNotExist: + 'تشخیص داده شد که 1panel-agent روی این گره نصب نشده است، بنابراین اطلاعات گره قابل ویرایش مستقیم نیستند. لطفاً آن را حذف کرده و دوباره اضافه کنید.', + oldDataExist: + 'داده‌های تاریخی 1Panel V2 روی این گره تشخیص داده شد. اطلاعات زیر برای بازنویسی تنظیمات فعلی استفاده می‌شوند:', + errLicense: 'مجوز متصل به این گره در دسترس نیست. لطفاً بررسی کرده و دوباره تلاش کنید!', + errNodePort: + 'پورت گره [ {0} ] غیرقابل دسترس تشخیص داده شد. لطفاً بررسی کنید که آیا دیواره آتش یا گروه امنیتی این پورت را باز کرده است.', + reinstallHelper: 'نصب مجدد گره {0}، ادامه می‌دهید؟', + unhealthyCheck: 'بررسی غیرعادی', + fixOperation: 'عملیات تعمیر', + checkName: 'مورد بررسی', + checkSSHConn: 'بررسی در دسترس بودن اتصال SSH', + fixSSHConn: 'ویرایش دستی گره برای تأیید اطلاعات اتصال', + checkConnInfo: 'بررسی اطلاعات اتصال عامل', + checkStatus: 'بررسی در دسترس بودن سرویس گره', + fixStatus: 'برای بررسی در حال اجرا بودن سرویس، "systemctl status 1panel-agent.service" را اجرا کنید.', + checkAPI: 'بررسی در دسترس بودن API گره', + fixAPI: 'لاگ‌های گره را بررسی کنید و تأیید کنید که پورت‌های دیواره آتش به درستی باز شده‌اند.', + forceDelete: 'حذف اجباری', + operateHelper: 'گره‌های زیر تحت عملیات {0} قرار می‌گیرند، ادامه می‌دهید؟', + operatePanelHelper: 'پنل‌های زیر تحت عملیات {0} قرار می‌گیرند، ادامه می‌دهید؟', + forceDeleteHelper: 'حذف اجباری خطاهای حذف گره را نادیده گرفته و فراداده پایگاه داده را حذف می‌کند', + uninstall: 'حذف داده‌های گره', + uninstallHelper: 'این کار همه داده‌های مرتبط با 1Panel گره را حذف می‌کند. با احتیاط ادامه دهید!', + baseDir: 'دایرکتوری نصب', + baseDirHelper: + 'هنگامی که دایرکتوری نصب خالی است، به طور پیش‌فرض در دایرکتوری /opt نصب می‌شود', + nodePort: 'پورت گره', + offline: 'حالت آفلاین', + freeCount: 'سهمیه رایگان [{0}]', + offlineHelper: 'زمانی که گره در محیط آفلاین است استفاده می‌شود', + appUpgrade: 'ارتقاء برنامه', + appUpgradeHelper: '{0} برنامه نیاز به ارتقاء دارند', + dashboardSetting: 'تنظیمات نمای کلی', + keepOneDashboardComponent: 'حداقل یک بخش نمای کلی نگهداری کنید', + }, + customApp: { + name: 'مخزن برنامه سفارشی', + appStoreType: 'منبع بسته فروشگاه برنامه', + appStoreUrl: 'URL مخزن', + local: 'مسیر محلی', + remote: 'لینک از راه دور', + imagePrefix: 'پیشوند تصویر', + imagePrefixHelper: + 'عملکرد: سفارشی‌سازی پیشوند تصویر و تغییر فیلد تصویر در فایل compose. به عنوان مثال، وقتی پیشوند تصویر روی 1panel/custom تنظیم شود، فیلد تصویر برای MaxKB به 1panel/custom/maxkb:v1.10.0 تغییر می‌کند', + closeHelper: 'لغو استفاده از مخزن برنامه سفارشی', + appStoreUrlHelper: 'فقط فرمت .tar.gz پشتیبانی می‌شود', + postNode: 'همگام‌سازی با گره زیرین', + postNodeHelper: + 'بسته فروشگاه سفارشی را به tmp/customApp/apps.tar.gz در دایرکتوری نصب گره زیرین همگام‌سازی کنید', + nodes: 'گره‌ها', + selectNode: 'انتخاب گره', + selectNodeError: 'یک گره انتخاب کنید', + licenseHelper: 'نسخه حرفه‌ای از ویژگی مخزن برنامه سفارشی پشتیبانی می‌کند', + databaseHelper: 'پایگاه داده مرتبط با برنامه، پایگاه داده گره هدف را انتخاب کنید', + nodeHelper: 'نمی‌توان گره فعلی را انتخاب کرد', + migrateHelper: + 'در حال حاضر فقط از مهاجرت برنامه‌های تک‌ساحتی و برنامه‌های مرتبط فقط با پایگاه‌های داده MySQL، MariaDB، PostgreSQL پشتیبانی می‌شود', + opensslHelper: + 'در صورت استفاده از پشتیبان رمزگذاری شده، نسخه‌های OpenSSL بین دو گره باید یکسان باشند، در غیر این صورت مهاجرت ممکن است ناموفق باشد.', + installApp: 'نصب دسته‌ای', + installAppHelper: 'نصب دسته‌ای برنامه‌ها به گره‌های انتخاب شده', + }, + alert: { + isAlert: 'هشدار', + alertCount: 'تعداد هشدار', + clamHelper: 'هنگام اسکن فایل‌های آلوده، هشدار را فعال کنید', + cronJobHelper: 'هنگام شکست اجرای وظیفه، هشدار را فعال کنید', + licenseHelper: 'نسخه تجاری از کانال‌های هشدار اضافی پشتیبانی می‌کند', + alertCountHelper: 'حداکثر فرکانس هشدار روزانه', + alert: 'هشدار پیامکی', + logs: 'لاگ‌های هشدار', + list: 'لیست هشدارها', + addTask: 'ایجاد هشدار', + editTask: 'ویرایش هشدار', + alertMethod: 'روش', + alertMsg: 'پیام هشدار', + alertRule: 'قوانین هشدار', + titleSearchHelper: 'برای جستجوی فازی عنوان هشدار را وارد کنید', + taskType: 'نوع', + ssl: 'انقضای گواهی', + siteEndTime: 'انقضای وب‌سایت', + panelPwdEndTime: 'انقضای رمز عبور پنل', + panelUpdate: 'نسخه جدید پنل موجود است', + cpu: 'هشدار CPU سرور', + memory: 'هشدار حافظه سرور', + load: 'هشدار بار سرور', + disk: 'هشدار دیسک سرور', + website: 'وب‌سایت', + certificate: 'گواهی SSL', + remainingDays: 'روزهای باقی‌مانده', + sendCount: 'تعداد ارسال', + sms: 'پیامک', + wechat: 'وی‌چت', + dingTalk: 'دینگ‌تاک', + feiShu: 'فیشو', + mail: 'ایمیل', + email: 'ایمیل', + weCom: 'WeCom', + bark: 'Bark', + sendCountRulesHelper: 'مجموع هشدارهای ارسال شده قبل از انقضا (یک بار در روز)', + panelUpdateRulesHelper: 'مجموع هشدارهای ارسال شده برای نسخه جدید پنل (یک بار در روز)', + oneDaySendCountRulesHelper: 'حداکثر هشدارهای ارسال شده در روز', + siteEndTimeRulesHelper: 'وب‌سایت‌هایی که هرگز منقضی نمی‌شوند هشدار را فعال نمی‌کنند', + autoRenewRulesHelper: + 'گواهی‌هایی با تمدید خودکار فعال و روزهای باقی‌مانده کمتر از ۳۱ هشدار را فعال نمی‌کنند', + panelPwdEndTimeRulesHelper: 'هشدار انقضای رمز عبور پنل در صورت عدم تنظیم انقضا در دسترس نیست', + sslRulesHelper: 'همه گواهی‌های SSL', + diskInfo: 'دیسک', + monitoringType: 'نوع نظارت', + autoRenew: 'تمدید خودکار', + useDisk: 'استفاده از دیسک', + usePercentage: 'درصد استفاده', + changeStatus: 'تغییر وضعیت', + disableMsg: 'توقف وظیفه هشدار از ارسال پیام‌های هشدار توسط این وظیفه جلوگیری می‌کند. ادامه می‌دهید؟', + enableMsg: 'فعال‌سازی وظیفه هشدار به این وظیفه اجازه می‌دهد پیام‌های هشدار ارسال کند. ادامه می‌دهید؟', + useExceed: 'استفاده بیشتر از', + useExceedRulesHelper: 'هنگامی که استفاده از مقدار تعیین شده بیشتر شود، هشدار را فعال کنید', + cpuUseExceedAvg: 'میانگین استفاده از CPU از مقدار مشخص شده بیشتر است', + memoryUseExceedAvg: 'میانگین استفاده از حافظه از مقدار مشخص شده بیشتر است', + loadUseExceedAvg: 'میانگین استفاده از بار از مقدار مشخص شده بیشتر است', + cpuUseExceedAvgHelper: 'میانگین استفاده از CPU در زمان مشخص شده از مقدار مشخص شده بیشتر است', + memoryUseExceedAvgHelper: 'میانگین استفاده از حافظه در زمان مشخص شده از مقدار مشخص شده بیشتر است', + loadUseExceedAvgHelper: 'میانگین استفاده از بار در زمان مشخص شده از مقدار مشخص شده بیشتر است', + resourceAlertRulesHelper: 'توجه: هشدارهای پیوسته در ۳۰ دقیقه فقط یک بار ارسال می‌شوند', + specifiedTime: 'زمان مشخص', + deleteTitle: 'حذف هشدار', + deleteMsg: 'آیا مطمئن هستید که می‌خواهید وظیفه هشدار را حذف کنید؟', + allSslTitle: 'هشدار انقضای گواهی SSL همه وب‌سایت‌ها', + sslTitle: 'هشدار انقضای گواهی SSL وب‌سایت {0}', + allSiteEndTimeTitle: 'هشدار انقضای همه وب‌سایت‌ها', + siteEndTimeTitle: 'هشدار انقضای وب‌سایت {0}', + panelPwdEndTimeTitle: 'هشدار انقضای رمز عبور پنل', + panelUpdateTitle: 'اعلان نسخه جدید پنل', + cpuTitle: 'هشدار استفاده زیاد از CPU', + memoryTitle: 'هشدار استفاده زیاد از حافظه', + loadTitle: 'هشدار بار زیاد', + diskTitle: 'هشدار استفاده زیاد از دیسک برای دایرکتوری اتصال {0}', + allDiskTitle: 'هشدار استفاده زیاد از دیسک', + timeRule: 'زمان باقی‌مانده کمتر از {0} روز (در صورت عدم رسیدگی، روز بعد دوباره ارسال می‌شود)', + panelUpdateRule: + 'هنگامی که نسخه جدید پنل شناسایی شد، یک بار هشدار ارسال کنید (در صورت عدم رسیدگی، روز بعد دوباره ارسال می‌شود)', + avgRule: 'میانگین استفاده {1} در {0} دقیقه از {2}% بیشتر است، هشدار را فعال کرده و {3} بار در روز ارسال می‌کند', + diskRule: 'استفاده از دیسک برای دایرکتوری اتصال {0} از {1}{2} بیشتر است، هشدار را فعال کرده و {3} بار در روز ارسال می‌کند', + allDiskRule: 'استفاده از دیسک از {0}{1} بیشتر است، هشدار را فعال کرده و {2} بار در روز ارسال می‌کند', + cpuName: ' CPU ', + memoryName: 'حافظه', + loadName: 'بار', + diskName: 'دیسک', + syncAlertInfo: 'ارسال دستی', + syncAlertInfoMsg: 'وظیفه هشدار به صورت دستی ارسال شود؟', + pushError: 'ارسال ناموفق', + pushSuccess: 'ارسال موفق', + syncError: 'همگام‌سازی ناموفق', + success: 'هشدار موفق', + pushing: 'در حال ارسال...', + error: 'هشدار ناموفق', + cleanLog: 'پاک‌سازی لاگ‌ها', + cleanAlertLogs: 'پاک‌سازی لاگ‌های هشدار', + daily: 'تعداد هشدار روزانه: {0}', + cumulative: 'تعداد هشدار تجمعی: {0}', + clams: 'هشدار اسکن ویروس', + taskName: 'نام وظیفه', + cronJobType: 'نوع وظیفه', + clamPath: 'دایرکتوری اسکن', + cronjob: 'اجرای وظیفه زمان‌بندی {0} ناموفق بود', + app: 'پشتیبان‌گیری از برنامه', + web: 'پشتیبان‌گیری از وب‌سایت', + database: 'پشتیبان‌گیری از پایگاه داده', + directory: 'پشتیبان‌گیری از دایرکتوری', + log: 'پشتیبان‌گیری از لاگ‌ها', + snapshot: 'تصویر لحظه‌ای سیستم', + clamsRulesHelper: 'وظایف اسکن ویروس که نیاز به هشدار دارند', + cronJobRulesHelper: 'این نوع وظیفه زمان‌بندی باید پیکربندی شود', + clamsTitle: 'وظیفه اسکن ویروس « {0} » هشدار فایل آلوده شناسایی شد', + cronJobAppTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از برنامه « {0} » هشدار شکست وظیفه', + cronJobWebsiteTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از وب‌سایت « {0} » هشدار شکست وظیفه', + cronJobDatabaseTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از پایگاه داده « {0} » هشدار شکست وظیفه', + cronJobDirectoryTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از دایرکتوری « {0} » هشدار شکست وظیفه', + cronJobLogTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از لاگ‌ها « {0} » هشدار شکست وظیفه', + cronJobSnapshotTitle: 'وظیفه زمان‌بندی - پشتیبان‌گیری از تصویر لحظه‌ای « {0} » هشدار شکست وظیفه', + cronJobShellTitle: 'وظیفه زمان‌بندی - اسکریپت شل « {0} » هشدار شکست وظیفه', + cronJobCurlTitle: 'وظیفه زمان‌بندی - دسترسی به URL « {0} » هشدار شکست وظیفه', + cronJobCutWebsiteLogTitle: 'وظیفه زمان‌بندی - برش لاگ وب‌سایت « {0} » هشدار شکست وظیفه', + cronJobCleanTitle: 'وظیفه زمان‌بندی - پاک‌سازی کش « {0} » هشدار شکست وظیفه', + cronJobNtpTitle: 'وظیفه زمان‌بندی - همگام‌سازی زمان سرور « {0} » هشدار شکست وظیفه', + clamsRule: 'هشدار فایل آلوده اسکن ویروس شناسایی شد، {0} بار در روز ارسال می‌شود', + cronJobAppRule: 'هشدار شکست وظیفه پشتیبان‌گیری از برنامه، {0} بار در روز ارسال می‌شود', + cronJobWebsiteRule: 'هشدار شکست وظیفه پشتیبان‌گیری از وب‌سایت، {0} بار در روز ارسال می‌شود', + cronJobDatabaseRule: 'هشدار شکست وظیفه پشتیبان‌گیری از پایگاه داده، {0} بار در روز ارسال می‌شود', + cronJobDirectoryRule: 'هشدار شکست وظیفه پشتیبان‌گیری از دایرکتوری، {0} بار در روز ارسال می‌شود', + cronJobLogRule: 'هشدار شکست وظیفه پشتیبان‌گیری از لاگ‌ها، {0} بار در روز ارسال می‌شود', + cronJobSnapshotRule: 'هشدار شکست وظیفه پشتیبان‌گیری از تصویر لحظه‌ای، {0} بار در روز ارسال می‌شود', + cronJobShellRule: 'هشدار شکست وظیفه اسکریپت شل، {0} بار در روز ارسال می‌شود', + cronJobCurlRule: 'هشدار شکست وظیفه دسترسی به URL، {0} بار در روز ارسال می‌شود', + cronJobCutWebsiteLogRule: 'هشدار شکست وظیفه برش لاگ وب‌سایت، {0} بار در روز ارسال می‌شود', + cronJobCleanRule: 'هشدار شکست وظیفه پاک‌سازی کش، {0} بار در روز ارسال می‌شود', + cronJobNtpRule: 'هشدار شکست وظیفه همگام‌سازی زمان سرور، {0} بار در روز ارسال می‌شود', + alertSmsHelper: 'محدودیت پیامک: مجموع {0} پیام، {1} استفاده شده', + goBuy: 'خرید بیشتر', + phone: 'تلفن', + phoneHelper: 'شماره تلفن واقعی را برای پیام‌های هشدار ارائه دهید', + dailyAlertNum: 'محدودیت هشدار روزانه', + dailyAlertNumHelper: 'حداکثر تعداد هشدار در روز (حداکثر ۱۰۰)', + timeRange: 'محدوده زمانی', + sendTimeRange: 'محدوده زمان ارسال', + sendTimeRangeHelper: 'می‌تواند محدوده زمانی {0} را ارسال کند', + to: 'تا', + startTime: 'زمان شروع', + endTime: 'زمان پایان', + defaultPhone: 'پیش‌فرض به شماره تلفن حساب متصل به مجوز', + noticeAlert: 'هشدار اعلان', + resourceAlert: 'هشدار منابع', + agentOfflineAlertHelper: + 'هنگامی که هشدار آفلاین برای گره فعال باشد، گره اصلی هر ۳۰ دقیقه یکبار اسکن می‌کند تا وظایف هشدار را اجرا کند.', + offline: 'هشدار آفلاین', + offlineHelper: + 'هنگامی که روی هشدار آفلاین تنظیم شود، گره اصلی هر ۳۰ دقیقه یکبار اسکن می‌کند تا وظایف هشدار را اجرا کند.', + offlineOff: 'فعال‌سازی هشدار آفلاین', + offlineOffHelper: + 'فعال‌سازی هشدار آفلاین باعث می‌شود گره اصلی هر ۳۰ دقیقه یکبار اسکن کند تا وظایف هشدار را اجرا کند.', + offlineClose: 'غیرفعال‌سازی هشدار آفلاین', + offlineCloseHelper: + 'غیرفعال‌سازی هشدار آفلاین نیاز دارد که گره‌های زیرین به طور مستقل هشدارها را مدیریت کنند. لطفاً برای جلوگیری از شکست هشدار، از اتصال شبکه اطمینان حاصل کنید.', + alertNotice: 'اعلان هشدار', + methodConfig: 'پیکربندی روش اعلان', + createMethod: 'ایجاد روش اعلان', + methodInvalid: 'پیکربندی {0} نامعتبر است', + commonConfig: 'پیکربندی جهانی', + smsConfig: 'پیامک', + smsConfigHelper: 'شماره تلفن‌ها را برای اعلان‌های پیامکی پیکربندی کنید', + emailConfig: 'ایمیل', + emailConfigHelper: 'سرویس ارسال ایمیل SMTP را پیکربندی کنید', + deleteConfigTitle: 'حذف پیکربندی هشدار', + deleteConfigMsg: 'آیا مطمئن هستید که می‌خواهید پیکربندی هشدار را حذف کنید؟', + test: 'تست', + alertTestOk: 'اعلان تست با موفقیت انجام شد', + alertTestFailed: 'اعلان تست ناموفق بود', + displayName: 'نام نمایشی', + sender: 'فرستنده', + password: 'رمز عبور', + host: 'سرور SMTP', + port: 'پورت', + encryption: 'رمزگذاری', + recipient: 'گیرنده', + licenseTime: 'یادآوری انقضای مجوز', + licenseTimeTitle: 'یادآوری انقضای مجوز', + displayNameHelper: 'نام نمایشی فرستنده برای ایمیل‌ها', + senderHelper: 'آدرس ایمیلی که برای ارسال پیام استفاده می‌شود', + passwordHelper: 'کد مجوز برای سرویس ایمیل', + hostHelper: 'آدرس سرور SMTP، مثلاً smtp.qq.com', + portHelper: 'SSL معمولاً از ۴۶۵ استفاده می‌کند، TLS معمولاً از ۵۸۷ استفاده می‌کند', + sslHelper: 'اگر پورت SMTP ۴۶۵ است، معمولاً به SSL نیاز است', + tlsHelper: 'اگر پورت SMTP ۵۸۷ است، معمولاً به TLS نیاز است', + triggerCondition: 'شرط فعال‌سازی', + loginFail: ' شکست در ورود در عرض', + nodeException: 'هشدار ناهنجاری گره', + licenseException: 'هشدار ناهنجاری مجوز', + panelLogin: 'هشدار ناهنجاری ورود به پنل', + sshLogin: 'هشدار ناهنجاری ورود SSH', + panelIpLogin: 'هشدار ناهنجاری IP ورود به پنل', + sshIpLogin: 'هشدار ناهنجاری IP ورود SSH', + ipWhiteListHelper: + 'IP‌های موجود در لیست سفید توسط قوانین محدود نمی‌شوند و در صورت ورود موفق، هشدار وجود نخواهد داشت', + nodeExceptionRule: 'هشدار ناهنجاری گره، {0} بار در روز ارسال می‌شود', + licenseExceptionRule: 'هشدار ناهنجاری مجوز، {0} بار در روز ارسال می‌شود', + panelLoginRule: 'هشدار ورود به پنل، {0} بار در روز ارسال می‌شود', + sshLoginRule: 'هشدار ورود SSH، {0} بار در روز ارسال می‌شود', + userNameHelper: 'نام کاربری خالی است، آدرس فرستنده به طور پیش‌فرض استفاده می‌شود', + alertConfigHelper: 'کانال‌های اعلان هشدار را پیکربندی کنید تا پیام‌های پنل را دریافت کنید', + weComConfigHelper: 'پیکربندی اعلان هشدار WeCom', + barkConfigHelper: 'پیکربندی اعلان هشدار Bark', + wechatConfigHelper: 'پیکربندی اعلان هشدار حساب رسمی وی‌چت', + dingTalkConfigHelper: 'پیکربندی اعلان هشدار دینگ‌تاک', + feiShuConfigHelper: 'پیکربندی اعلان هشدار فیشو', + webhookName: 'نام ربات', + webhookUrl: 'URL وب‌هوک', + alertConfigProHelper: 'نسخه تجاری همچنین از هشدارهای WeCom، دینگ‌تاک، فیشو و پیامک پشتیبانی می‌کند.', + recipientPlaceholder: 'لطفاً آدرس ایمیل گیرنده را وارد کنید', + addRecipient: 'افزودن گیرنده', + webhookItem: 'وب‌هوک', + addWebhook: 'افزودن وب‌هوک', + selectAlertType: 'انتخاب نوع هشدار', + configDetail: 'جزئیات پیکربندی', + webhookCount: ' وب‌هوک', + }, + theme: { + lingXiaGold: 'طلا لینگ‌ژیا', + classicBlue: 'آبی کلاسیک', + freshGreen: 'سبز تازه', + customColor: 'رنگ سفارشی', + setDefault: 'پیش‌فرض', + setDefaultHelper: 'طرح رنگی تم به حالت اولیه بازگردانده می‌شود. ادامه می‌دهید؟', + setHelper: 'طرح رنگی تم انتخاب شده فعلی ذخیره می‌شود. ادامه می‌دهید؟', + }, + sync: { + menu: 'همگام‌سازی منابع', + file: 'تبادل فایل', + fileSyncConfirm: 'آیا می‌خواهید فایل/پوشه {1} را از گره {0} به دایرکتوری {3} در گره {2} منتقل کنید؟', + image: 'تبادل تصویر', + imageBatchDesc: 'ابتدا یک گره منبع و تصویر را انتخاب کنید، سپس به صورت دسته‌ای به چندین گره هدف انتقال دهید.', + imageBatchConfirmPrefix: 'در حال انتقال {0} تصویر به {1} گره، مجموعاً {2} وظیفه.', + + cert: 'همگام‌سازی گواهی', + certBatchDesc: + 'پس از انتخاب یک گره منبع، گواهی مشخص شده را به محیط پنل فعلی همگام‌سازی کنید.', + certBatchConfirmPrefix: 'در حال همگام‌سازی {0} گواهی به {1} گره، مجموعاً {2} وظیفه.', + + app: 'انتقال برنامه', + appBatchDesc: + 'گره منبع، برنامه و گره‌های هدف را انتخاب کنید، سپس وابستگی‌های منابع را تأیید کرده و وظیفه انتقال برنامه را شروع کنید.', + appSelectedApp: 'برنامه انتخاب شده:', + appPreviewTitle: 'پیش‌نمایش انتقال', + appPreviewDesc: 'قبل از شروع انتقال برنامه، گره‌های هدف و منابع وابسته را تأیید کنید.', + appDatabaseDependency: 'وابستگی پایگاه داده', + appResourceRequired: 'ابتدا همه منابع مرتبط مورد نیاز را انتخاب کنید.', + appUnsupportedMultipleResources: 'فقط برنامه‌هایی که حداکثر یک منبع مرتبط دارند قابل مهاجرت هستند.', + appUnsupportedResourceType: + 'فقط برنامه‌هایی با وابستگی منبع صفر یا یک وابستگی MySQL، MariaDB یا PostgreSQL قابل مهاجرت هستند.', + + targetTitle: 'گره‌های هدف', + targetDesc: 'گره منبع به طور خودکار حذف می‌شود. یک یا چند گره هدف را انتخاب کنید.', + targetSearchPlaceholder: 'جستجوی نام گره یا آدرس', + noTargetNodes: 'هیچ گره هدفی در دسترس نیست', + noSourceNode: 'لطفاً ابتدا یک گره منبع انتخاب کنید', + reviewTargets: 'گره‌های هدف', + reviewEmpty: 'لطفاً ابتدا منابع و گره‌های هدف را انتخاب کنید', + selectSourceFirst: 'لطفاً ابتدا یک گره منبع انتخاب کنید.', + selectResourceFirst: 'لطفاً ابتدا منابع را برای همگام‌سازی انتخاب کنید.', + selectTargetFirst: 'لطفاً حداقل یک گره هدف انتخاب کنید.', + submitSuccess: 'وظیفه همگام‌سازی ارسال شد.', + }, + cluster: { + cluster: 'کارایی بالا برنامه', + name: 'نام خوشه', + addCluster: 'افزودن خوشه', + installNode: 'گره نصب', + master: 'گره اصلی', + slave: 'گره برده', + replicaStatus: 'وضعیت اصلی-برده', + unhealthyDeleteError: 'وضعیت گره نصب غیرعادی است، لطفاً لیست گره‌ها را بررسی کرده و دوباره تلاش کنید!', + replicaStatusError: 'دریافت وضعیت غیرعادی است، لطفاً گره اصلی را بررسی کنید.', + masterHostError: 'IP گره اصلی نمی‌تواند 127.0.0.1 باشد', + }, + }, +}; + +export default { + ...getFuLocaleMessage('fa'), + ...message, +}; \ No newline at end of file diff --git a/frontend/src/views/login/components/login-form.vue b/frontend/src/views/login/components/login-form.vue index 01e8f9d2a7a0..c5375db856ad 100644 --- a/frontend/src/views/login/components/login-form.vue +++ b/frontend/src/views/login/components/login-form.vue @@ -62,6 +62,7 @@ Русский Bahasa Melayu Turkish + فارسی diff --git a/frontend/src/views/setting/panel/index.vue b/frontend/src/views/setting/panel/index.vue index f3c74bde81cf..e943e5d06629 100644 --- a/frontend/src/views/setting/panel/index.vue +++ b/frontend/src/views/setting/panel/index.vue @@ -285,6 +285,7 @@ const languageOptions = ref([ { value: 'ms', label: 'Bahasa Melayu' }, { value: 'tr', label: 'Turkish' }, { value: 'es-ES', label: 'España - Español' }, + { value: 'fa', label: 'فارسی' }, ]); if (isIntl.value) {