mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-05-29 16:39:35 +00:00
This bundles a set of group-related improvements that built up across one session and only make sense together. Terminology / API surface: - Rename "assign group" → "add to group" everywhere: i18n keys, callback names (bulkAddToGroup), component + file names (BulkAddToGroupModal, AddClientsToGroupModal), Go controller/struct names (bulkAddToGroup, AddToGroup), OpenAPI summaries. Nothing keeps the word "assign" anymore. - Move group routes under /panel/api/clients/groups/* (was /bulkAssignGroup at the clients root). - Split add and remove into two endpoints: /groups/bulkAdd now rejects empty group; new /groups/bulkRemove clears the label for the given emails. The old "submit empty to clear" UX is gone — Ungroup is its own action. UI affordances on Clients page: - Promote Group + Ungroup to visible bar buttons next to Attach + Detach. Group reuses BulkAddToGroupModal; Ungroup pops a danger confirm and calls bulkRemoveFromGroup. - Custom UngroupIcon (TagsOutlined with a diagonal strike) for the Ungroup button so the pairing reads at a glance. - Hide the Group column when no clients have a group label yet — removes a column of em-dashes on fresh installs. UI on Groups page: - New per-row Add clients… / Remove clients… actions backed by GroupAddClientsModal and GroupRemoveClientsModal: rich client picker (email / comment / current group / enable) with search and preserveSelectedRowKeys, mirroring the inbounds Attach modal UX. Controller split: - Move all /groups/* routes, handlers, and request bodies out of web/controller/client.go into a dedicated web/controller/group.go (GroupController with leaner clientService + xrayService dependencies). URLs are byte-identical because the new controller registers on the same parent gin.RouterGroup; api_docs_test.go gets a group.go → /panel/api/clients basePath entry so its route extraction keeps working. Invalidation dedup: - Removing a client from a group on the Groups page used to refetch /clients/groups and /clients/onlines three times: once from the mutation's onSuccess, once from a redundant invalidate() in the page's onSubmit, once from the WebSocket invalidate broadcast that the backend fires after every mutation. The manual invalidate() is gone, and a small invalidationTracker module lets websocketBridge skip WS-driven invalidates that arrive within 1.5s of a local invalidate — bringing the refetch count down to one. The WS path still works for changes made by another tab or user.
1169 lines
79 KiB
JSON
1169 lines
79 KiB
JSON
{
|
||
"username": "نامکاربری",
|
||
"password": "رمزعبور",
|
||
"login": "ورود",
|
||
"confirm": "تایید",
|
||
"cancel": "انصراف",
|
||
"close": "بستن",
|
||
"save": "ذخیره",
|
||
"logout": "خروج",
|
||
"create": "ایجاد",
|
||
"add": "افزودن",
|
||
"remove": "حذف",
|
||
"update": "بهروزرسانی",
|
||
"copy": "کپی",
|
||
"copied": "کپی شد",
|
||
"more": "بیشتر",
|
||
"download": "دانلود",
|
||
"remark": "نام",
|
||
"enable": "فعال",
|
||
"protocol": "پروتکل",
|
||
"search": "جستجو",
|
||
"filter": "فیلتر",
|
||
"loading": "...در حال بارگذاری",
|
||
"refresh": "تازهسازی",
|
||
"clear": "پاک کردن",
|
||
"second": "ثانیه",
|
||
"minute": "دقیقه",
|
||
"hour": "ساعت",
|
||
"day": "روز",
|
||
"check": "چک کردن",
|
||
"indefinite": "نامحدود",
|
||
"unlimited": "نامحدود",
|
||
"none": "هیچ",
|
||
"qrCode": "QRکد",
|
||
"info": "اطلاعات بیشتر",
|
||
"edit": "ویرایش",
|
||
"delete": "حذف",
|
||
"reset": "ریست",
|
||
"noData": "دادهای وجود ندارد.",
|
||
"copySuccess": "باموفقیت کپیشد",
|
||
"sure": "مطمئن",
|
||
"encryption": "رمزگذاری",
|
||
"useIPv4ForHost": "از IPv4 برای میزبان استفاده کنید",
|
||
"transmission": "راهاتصال",
|
||
"host": "آدرس",
|
||
"path": "مسیر",
|
||
"camouflage": "مبهمسازی",
|
||
"status": "وضعیت",
|
||
"enabled": "فعال",
|
||
"disabled": "غیرفعال",
|
||
"depleted": "منقضی",
|
||
"depletingSoon": "درحالانقضا",
|
||
"offline": "آفلاین",
|
||
"online": "آنلاین",
|
||
"domainName": "آدرس دامنه",
|
||
"monitor": "آیپی اتصال",
|
||
"certificate": "گواهی دیجیتال",
|
||
"fail": "ناموفق",
|
||
"comment": "توضیحات",
|
||
"success": "موفق",
|
||
"lastOnline": "آخرین فعالیت",
|
||
"getVersion": "دریافت نسخه",
|
||
"install": "نصب",
|
||
"clients": "کاربران",
|
||
"usage": "استفاده",
|
||
"twoFactorCode": "کد",
|
||
"remained": "باقیمانده",
|
||
"security": "امنیت",
|
||
"secAlertTitle": "هشدارامنیتی",
|
||
"secAlertSsl": "ایناتصالامن نیست. لطفا تازمانیکه تیالاس برای محافظت از دادهها فعال نشدهاست، از وارد کردن اطلاعات حساس خودداری کنید",
|
||
"secAlertConf": "تنظیمات خاصی در برابر حملات آسیب پذیر هستند. توصیه میشود پروتکلهای امنیتی را برای جلوگیری از نفوذ احتمالی تقویت کنید",
|
||
"secAlertSSL": "پنل فاقد ارتباط امن است. لطفاً یک گواهینامه تیالاس برای محافظت از دادهها نصب کنید",
|
||
"secAlertPanelPort": "استفاده از پورت پیشفرض پنل ناامن است. لطفاً یک پورت تصادفی یا خاص تنظیم کنید",
|
||
"secAlertPanelURI": "مسیر پیشفرض لینک پنل ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید",
|
||
"secAlertSubURI": "مسیر پیشفرض لینک سابسکریپشن ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید",
|
||
"secAlertSubJsonURI": "مسیر پیشفرض لینک سابسکریپشن جیسون ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید",
|
||
"emptyDnsDesc": "هیچ سرور DNS اضافه نشده است.",
|
||
"emptyFakeDnsDesc": "هیچ سرور Fake DNS اضافه نشده است.",
|
||
"emptyBalancersDesc": "هیچ بالانسر اضافه نشده است.",
|
||
"emptyReverseDesc": "هیچ پروکسی معکوس اضافه نشده است.",
|
||
"somethingWentWrong": "مشکلی پیش آمد",
|
||
"subscription": {
|
||
"title": "اطلاعات سابسکریپشن",
|
||
"subId": "شناسه اشتراک",
|
||
"status": "وضعیت",
|
||
"downloaded": "دانلود",
|
||
"uploaded": "آپلود",
|
||
"expiry": "تاریخ پایان",
|
||
"totalQuota": "حجم کلی",
|
||
"individualLinks": "لینکهای تکی",
|
||
"active": "فعال",
|
||
"inactive": "غیرفعال",
|
||
"unlimited": "نامحدود",
|
||
"noExpiry": "بدون انقضا"
|
||
},
|
||
"menu": {
|
||
"theme": "تم",
|
||
"dark": "تیره",
|
||
"ultraDark": "فوق تیره",
|
||
"dashboard": "نمای کلی",
|
||
"inbounds": "ورودیها",
|
||
"clients": "کلاینتها",
|
||
"nodes": "نودها",
|
||
"settings": "تنظیمات پنل",
|
||
"xray": "پیکربندی ایکسری",
|
||
"apiDocs": "مستندات API",
|
||
"logout": "خروج",
|
||
"link": "مدیریت",
|
||
"donate": "حمایت مالی"
|
||
},
|
||
"pages": {
|
||
"login": {
|
||
"hello": "سلام",
|
||
"title": "خوشآمدید",
|
||
"loginAgain": "مدت زمان استفاده بهاتمامرسیده، لطفا دوباره وارد شوید",
|
||
"toasts": {
|
||
"invalidFormData": "اطلاعات بهدرستی وارد نشدهاست",
|
||
"emptyUsername": "لطفا یک نامکاربری وارد کنید",
|
||
"emptyPassword": "لطفا یک رمزعبور وارد کنید",
|
||
"wrongUsernameOrPassword": "نام کاربری، رمز عبور یا کد دو مرحلهای نامعتبر است.",
|
||
"successLogin": "شما با موفقیت به حساب کاربری خود وارد شدید."
|
||
}
|
||
},
|
||
"index": {
|
||
"title": "نمای کلی",
|
||
"cpu": "پردازنده",
|
||
"logicalProcessors": "پردازندههای منطقی",
|
||
"frequency": "فرکانس",
|
||
"swap": "سواپ",
|
||
"storage": "ذخیرهسازی",
|
||
"memory": "حافظه رم",
|
||
"threads": "رشتهها",
|
||
"xrayStatus": "ایکسری",
|
||
"stopXray": "توقف",
|
||
"restartXray": "شروعمجدد",
|
||
"xraySwitch": "نسخه",
|
||
"xrayUpdates": "بهروزرسانیهای Xray",
|
||
"xraySwitchClick": "نسخه مورد نظر را انتخاب کنید",
|
||
"xraySwitchClickDesk": "لطفا بادقت انتخاب کنید. درصورت انتخاب نسخه قدیمیتر، امکان ناهماهنگی با پیکربندی فعلی وجود دارد",
|
||
"updatePanel": "بهروزرسانی پنل",
|
||
"panelUpdateDesc": "این عملیات 3X-UI را به آخرین نسخه بهروزرسانی میکند و سرویس پنل را مجدداً راهاندازی میکند.",
|
||
"currentPanelVersion": "نسخه فعلی پنل",
|
||
"latestPanelVersion": "آخرین نسخه پنل",
|
||
"panelUpToDate": "پنل بهروز است",
|
||
"upToDate": "بهروز",
|
||
"xrayStatusUnknown": "ناشناخته",
|
||
"xrayStatusRunning": "در حال اجرا",
|
||
"xrayStatusStop": "متوقف",
|
||
"xrayStatusError": "خطا",
|
||
"xrayErrorPopoverTitle": "خطا در هنگام اجرای Xray رخ داد",
|
||
"operationHours": "مدتکارکرد",
|
||
"systemHistoryTitle": "تاریخچه سیستم",
|
||
"charts": "نمودارها",
|
||
"xrayMetricsTitle": "متریکهای Xray",
|
||
"xrayMetricsDisabled": "نقطه پایانی متریکهای Xray پیکربندی نشده",
|
||
"xrayMetricsHint": "یک بلاک metrics در سطح بالای پیکربندی xray با tag برابر metrics_out و listen برابر 127.0.0.1:11111 اضافه کنید، سپس xray را راهاندازی مجدد کنید.",
|
||
"xrayObservatoryEmpty": "هنوز دادهای از Observatory دریافت نشده",
|
||
"xrayObservatoryHint": "یک بلاک observatory در پیکربندی xray اضافه کنید و outbound tagهایی که میخواهید بررسی شوند را لیست کنید، سپس xray را راهاندازی مجدد کنید.",
|
||
"xrayObservatoryTagPlaceholder": "انتخاب outbound",
|
||
"xrayObservatoryAlive": "فعال",
|
||
"xrayObservatoryDead": "غیرفعال",
|
||
"xrayObservatoryLastSeen": "آخرین مشاهده",
|
||
"xrayObservatoryLastTry": "آخرین تلاش",
|
||
"trendLast2Min": "۲ دقیقه اخیر",
|
||
"systemLoad": "بارسیستم",
|
||
"systemLoadDesc": "میانگین بار سیستم برای 1، 5 و 15 دقیقه گذشته",
|
||
"connectionCount": "تعداد کانکشن ها",
|
||
"ipAddresses": "آدرسهای IP",
|
||
"toggleIpVisibility": "تغییر وضعیت نمایش IP",
|
||
"overallSpeed": "سرعت کلی",
|
||
"upload": "آپلود",
|
||
"download": "دانلود",
|
||
"totalData": "دادههای کل",
|
||
"sent": "ارسال شده",
|
||
"received": "دریافت شده",
|
||
"documentation": "مستندات",
|
||
"xraySwitchVersionDialog": "آیا واقعاً میخواهید نسخه Xray را تغییر دهید؟",
|
||
"xraySwitchVersionDialogDesc": "این کار نسخه Xray را به #version# تغییر میدهد.",
|
||
"xraySwitchVersionPopover": "Xray با موفقیت بهروز شد",
|
||
"panelUpdateDialog": "آیا مطمئن هستید که میخواهید پنل را بهروزرسانی کنید؟",
|
||
"panelUpdateDialogDesc": "این 3X-UI را به نسخه #version# بهروزرسانی کرده و سرویس پنل را مجدداً راهاندازی میکند.",
|
||
"panelUpdateCheckPopover": "خطا در بررسی بهروزرسانی پنل",
|
||
"panelUpdateStartedPopover": "بهروزرسانی پنل آغاز شد",
|
||
"geofileUpdateDialog": "آیا واقعاً میخواهید فایل جغرافیایی را بهروز کنید؟",
|
||
"geofileUpdateDialogDesc": "این عمل فایل #filename# را بهروز میکند.",
|
||
"geofilesUpdateDialogDesc": "با این کار همه فایلها بهروزرسانی میشوند.",
|
||
"geofilesUpdateAll": "همه را بهروزرسانی کنید",
|
||
"geofileUpdatePopover": "فایل جغرافیایی با موفقیت بهروز شد",
|
||
"customGeoTitle": "GeoSite / GeoIP سفارشی",
|
||
"customGeoAdd": "افزودن",
|
||
"customGeoType": "نوع",
|
||
"customGeoAlias": "نام مستعار",
|
||
"customGeoUrl": "URL",
|
||
"customGeoEnabled": "فعال",
|
||
"customGeoLastUpdated": "آخرین بهروزرسانی",
|
||
"customGeoExtColumn": "مسیریابی (ext:…)",
|
||
"customGeoToastUpdateAll": "همه منابع سفارشی بهروزرسانی شدند",
|
||
"customGeoActions": "اقدامات",
|
||
"customGeoEdit": "ویرایش",
|
||
"customGeoDelete": "حذف",
|
||
"customGeoDownload": "بهروزرسانی اکنون",
|
||
"customGeoModalAdd": "افزودن geo سفارشی",
|
||
"customGeoModalEdit": "ویرایش geo سفارشی",
|
||
"customGeoModalSave": "ذخیره",
|
||
"customGeoDeleteConfirm": "این منبع geo سفارشی حذف شود؟",
|
||
"customGeoRoutingHint": "در قوانین مسیریابی مقدار را به صورت ext:file.dat:tag استفاده کنید (tag را جایگزین کنید).",
|
||
"customGeoInvalidId": "شناسه منبع نامعتبر است",
|
||
"customGeoAliasesError": "بارگذاری نام مستعارهای geo سفارشی ناموفق بود",
|
||
"customGeoValidationAlias": "نام مستعار فقط حروف کوچک، اعداد، - و _",
|
||
"customGeoValidationUrl": "URL باید با http:// یا https:// شروع شود",
|
||
"customGeoAliasPlaceholder": "a-z 0-9 _ -",
|
||
"customGeoAliasLabelSuffix": " (سفارشی)",
|
||
"customGeoToastList": "فهرست geo سفارشی",
|
||
"customGeoToastAdd": "افزودن geo سفارشی",
|
||
"customGeoToastUpdate": "بهروزرسانی geo سفارشی",
|
||
"customGeoToastDelete": "geofile سفارشی «{{ .fileName }}» حذف شد",
|
||
"customGeoToastDownload": "geofile «{{ .fileName }}» بهروزرسانی شد",
|
||
"customGeoErrInvalidType": "نوع باید geosite یا geoip باشد",
|
||
"customGeoErrAliasRequired": "نام مستعار لازم است",
|
||
"customGeoErrAliasPattern": "نام مستعار دارای نویسه نامجاز است",
|
||
"customGeoErrAliasReserved": "این نام مستعار رزرو است",
|
||
"customGeoErrUrlRequired": "URL لازم است",
|
||
"customGeoErrInvalidUrl": "URL نامعتبر است",
|
||
"customGeoErrUrlScheme": "URL باید http یا https باشد",
|
||
"customGeoErrUrlHost": "میزبان URL نامعتبر است",
|
||
"customGeoErrDuplicateAlias": "این نام مستعار برای این نوع قبلاً استفاده شده است",
|
||
"customGeoErrNotFound": "منبع geo سفارشی یافت نشد",
|
||
"customGeoErrDownload": "بارگیری ناموفق بود",
|
||
"customGeoErrUpdateAllIncomplete": "بهروزرسانی یک یا چند منبع geo سفارشی ناموفق بود",
|
||
"customGeoEmpty": "هنوز منبع geo سفارشیای ثبت نشده — برای ایجاد روی «افزودن» کلیک کنید",
|
||
"dontRefresh": "در حال نصب، لطفا صفحه را رفرش نکنید",
|
||
"logs": "گزارشها",
|
||
"config": "پیکربندی",
|
||
"backup": "پشتیبانگیری",
|
||
"backupTitle": "پشتیبانگیری و بازیابی",
|
||
"exportDatabase": "پشتیبانگیری",
|
||
"exportDatabaseDesc": "برای دانلود یک فایل .db حاوی پشتیبان از پایگاه داده فعلی خود به دستگاهتان کلیک کنید.",
|
||
"importDatabase": "بازیابی",
|
||
"importDatabaseDesc": "برای انتخاب و آپلود یک فایل .db از دستگاهتان و بازیابی پایگاه داده از یک پشتیبان کلیک کنید.",
|
||
"importDatabaseSuccess": "پایگاه داده با موفقیت وارد شد",
|
||
"importDatabaseError": "خطا در وارد کردن پایگاه داده",
|
||
"readDatabaseError": "خطا در خواندن پایگاه داده",
|
||
"getDatabaseError": "خطا در دریافت پایگاه داده",
|
||
"getConfigError": "خطا در دریافت فایل پیکربندی"
|
||
},
|
||
"inbounds": {
|
||
"title": "کاربران",
|
||
"totalDownUp": "دریافت/ارسال کل",
|
||
"totalUsage": "مصرف کل",
|
||
"inboundCount": "کل ورودیها",
|
||
"operate": "عملیات",
|
||
"enable": "فعال",
|
||
"remark": "نام",
|
||
"node": "نود",
|
||
"deployTo": "استقرار روی",
|
||
"localPanel": "پنل لوکال",
|
||
"fallbacks": {
|
||
"title": "فالبکها",
|
||
"help": "وقتی اتصالی روی این اینباند با هیچ کلاینتی تطبیق پیدا نمیکند، به یک اینباند دیگر ارجاع داده میشود. یک فرزند انتخاب کنید، فیلدهای مسیریابی (SNI / ALPN / Path / xver) خودکار از روی transport آن پر میشود — برای بیشتر تنظیمات نیازی به ویرایش نیست. هر فرزند باید روی 127.0.0.1 با security=none گوش بدهد.",
|
||
"empty": "هنوز فالبکی اضافه نشده",
|
||
"add": "افزودن فالبک",
|
||
"pickInbound": "یک اینباند انتخاب کنید",
|
||
"matchAny": "همه",
|
||
"rederive": "پر کردن مجدد از فرزند",
|
||
"rederived": "از فرزند پر شد",
|
||
"editAdvanced": "ویرایش فیلدهای مسیریابی",
|
||
"hideAdvanced": "بستن پیشرفته",
|
||
"quickAddAll": "افزودن سریع همهی موارد واجد شرایط",
|
||
"quickAdded": "{n} فالبک افزوده شد",
|
||
"quickAddedNone": "اینباند جدیدی برای افزودن وجود ندارد",
|
||
"routesWhen": "هدایت میشود وقتی",
|
||
"defaultCatchAll": "پیشفرض — همهی موارد دیگر را میگیرد"
|
||
},
|
||
"protocol": "پروتکل",
|
||
"port": "پورت",
|
||
"portMap": "پورتهای نظیر",
|
||
"traffic": "ترافیک",
|
||
"details": "توضیحات",
|
||
"transportConfig": "نحوه اتصال",
|
||
"expireDate": "مدت زمان",
|
||
"createdAt": "ایجاد",
|
||
"updatedAt": "بهروزرسانی",
|
||
"resetTraffic": "ریست ترافیک",
|
||
"addInbound": "افزودن ورودی",
|
||
"generalActions": "عملیات کلی",
|
||
"modifyInbound": "ویرایش ورودی",
|
||
"deleteInbound": "حذف ورودی",
|
||
"deleteInboundContent": "آیا مطمئن به حذف ورودی هستید؟",
|
||
"deleteConfirmTitle": "اینباند «{remark}» حذف شود؟",
|
||
"deleteConfirmContent": "این اینباند و تمام کلاینتهای آن حذف میشود. این عمل غیرقابل بازگشت است.",
|
||
"resetConfirmTitle": "ترافیک اینباند «{remark}» صفر شود؟",
|
||
"resetConfirmContent": "شمارندههای ارسال/دریافت این اینباند به صفر برمیگردد.",
|
||
"cloneConfirmTitle": "اینباند «{remark}» کپی شود؟",
|
||
"cloneConfirmContent": "یک نسخه با پورت جدید و لیست کلاینت خالی ساخته میشود.",
|
||
"delAllClients": "حذف همه کلاینتها",
|
||
"delAllClientsConfirmTitle": "حذف هر {count} کلاینت اینباند «{remark}»؟",
|
||
"delAllClientsConfirmContent": "تمام کلاینتهای این اینباند به همراه رکوردهای ترافیکشان حذف میشوند. خود اینباند باقی میماند. این عمل غیرقابل بازگشت است.",
|
||
"attachClients": "اتصال کلاینتها به…",
|
||
"addClientsToGroup": "افزودن کلاینتها به گروه…",
|
||
"attachClientsTitle": "اتصال کلاینتهای «{remark}»",
|
||
"attachClientsDesc": "همان {count} کلاینت (با همان UUID/پسورد و ترافیک مشترک) را به اینباند(های) انتخابشده هم متصل میکند. روی این اینباند هم باقی میمانند.",
|
||
"attachClientsTargets": "اینباندهای مقصد",
|
||
"attachClientsNoTargets": "اینباند سازگار دیگری برای اتصال وجود ندارد.",
|
||
"attachClientsResult": "{attached} متصل شد، {skipped} رد شد.",
|
||
"attachClientsResultMixed": "{attached} متصل شد، {skipped} رد شد، {errors} خطا.",
|
||
"attachClientsSelectLabel": "کلاینتهای قابل اتصال",
|
||
"attachClientsSearchPlaceholder": "جستجوی ایمیل یا توضیح",
|
||
"attachClientsStatusDisabled": "غیرفعال",
|
||
"attachClientsSelectedCount": "{selected} از {total} انتخابشده",
|
||
"detachClients": "جداسازی کلاینتها",
|
||
"detachClientsTitle": "جداسازی کلاینتهای «{remark}»",
|
||
"detachClientsDesc": "کلاینتهای انتخابشده فقط از همین اینباند جدا میشوند. خود رکورد کلاینتها حفظ میشود (برای حذف کامل از Delete استفاده کنید). این اینباند مجموعاً {count} کلاینت دارد.",
|
||
"detachClientsResult": "{detached} جدا شد، {skipped} رد شد.",
|
||
"detachClientsResultMixed": "{detached} جدا شد، {skipped} رد شد، {errors} خطا.",
|
||
"detachClientsSelectLabel": "کلاینتهای قابل جداسازی",
|
||
"exportLinksTitle": "خروجی لینکهای اینباند",
|
||
"exportSubsTitle": "خروجی لینکهای ساب",
|
||
"exportAllLinksTitle": "خروجی لینکهای همه اینباندها",
|
||
"exportAllSubsTitle": "خروجی لینکهای ساب همه اینباندها",
|
||
"inboundJsonTitle": "JSON اینباند",
|
||
"deleteClient": "حذف کاربر",
|
||
"deleteClientContent": "آیا مطمئن به حذف کاربر هستید؟",
|
||
"resetTrafficContent": "آیا مطمئن به ریست ترافیک هستید؟",
|
||
"copyLink": "کپی لینک",
|
||
"address": "آدرس",
|
||
"network": "شبکه",
|
||
"destinationPort": "پورت مقصد",
|
||
"targetAddress": "آدرس مقصد",
|
||
"monitorDesc": "بهطور پیشفرض خالیبگذارید",
|
||
"meansNoLimit": "0 = واحد: گیگابایت) نامحدود)",
|
||
"totalFlow": "ترافیک کل",
|
||
"leaveBlankToNeverExpire": "برای منقضینشدن خالیبگذارید",
|
||
"noRecommendKeepDefault": "توصیهمیشود بهطور پیشفرض حفظشود",
|
||
"certificatePath": "مسیر فایل",
|
||
"certificateContent": "محتوای فایل",
|
||
"publicKey": "کلید عمومی",
|
||
"privatekey": "کلید خصوصی",
|
||
"clickOnQRcode": "برای کپی بر روی کدتصویری کلیک کنید",
|
||
"client": "کاربر",
|
||
"export": "استخراج لینکها",
|
||
"clone": "شبیهسازی",
|
||
"cloneInbound": "شبیهسازی ورودی",
|
||
"cloneInboundContent": "همه موارد این ورودی بجز پورت، آیپی و کاربرها شبیهسازی خواهند شد",
|
||
"cloneInboundOk": "ساختن شبیه ساز",
|
||
"resetAllTraffic": "ریست ترافیک کل ورودیها",
|
||
"resetAllTrafficTitle": "ریست ترافیک کل ورودیها",
|
||
"resetAllTrafficContent": "آیا مطمئن به ریست ترافیک تمام ورودیها هستید؟",
|
||
"resetInboundClientTraffics": "ریست ترافیک کاربران",
|
||
"resetInboundClientTrafficTitle": "ریست ترافیک کاربران",
|
||
"resetInboundClientTrafficContent": "آیا مطمئن به ریست ترافیک تمام کاربران این ورودی هستید؟",
|
||
"resetAllClientTraffics": "ریست ترافیک کل کاربران",
|
||
"resetAllClientTrafficTitle": "ریست ترافیک کل کاربران",
|
||
"resetAllClientTrafficContent": "آیا مطمئن به ریست ترافیک تمام کاربران هستید؟",
|
||
"delDepletedClients": "حذف کاربران منقضی",
|
||
"delDepletedClientsTitle": "حذف کاربران منقضی",
|
||
"delDepletedClientsContent": "آیا مطمئن به حذف تمام کاربران منقضیشده هستید؟",
|
||
"email": "ایمیل",
|
||
"emailDesc": "باید یک ایمیل یکتا باشد",
|
||
"IPLimit": "محدودیت آیپی",
|
||
"IPLimitDesc": "(اگر تعداد از مقدار تنظیم شده بیشتر شود، ورودی را غیرفعال می کند. (0 = غیرفعال",
|
||
"IPLimitlog": "گزارشها",
|
||
"IPLimitlogDesc": "گزارش تاریخچه آیپی. برای فعال کردن ورودی پس از غیرفعال شدن، گزارش را پاک کنید",
|
||
"IPLimitlogclear": "پاک کردن گزارشها",
|
||
"setDefaultCert": "استفاده از گواهی پنل",
|
||
"streamTab": "استریم",
|
||
"securityTab": "امنیت",
|
||
"sniffingTab": "اسنیفینگ",
|
||
"sniffingMetadataOnly": "فقط متادیتا",
|
||
"sniffingRouteOnly": "فقط مسیریابی",
|
||
"sniffingIpsExcluded": "IPهای مستثنا",
|
||
"sniffingDomainsExcluded": "دامنههای مستثنا",
|
||
"decryption": "رمزگشایی",
|
||
"encryption": "رمزنگاری",
|
||
"vlessAuthX25519": "احراز X25519",
|
||
"vlessAuthMlkem768": "احراز ML-KEM-768",
|
||
"vlessAuthCustom": "سفارشی",
|
||
"vlessAuthSelected": "انتخابشده: {auth}",
|
||
"advanced": {
|
||
"title": "بخشهای JSON اینباند",
|
||
"subtitle": "JSON کامل اینباند و ویرایشگرهای جداگانه برای settings، sniffing و streamSettings.",
|
||
"all": "همه",
|
||
"allHelp": "شیء کامل اینباند با همه فیلدها در یک ویرایشگر.",
|
||
"settings": "تنظیمات",
|
||
"settingsHelp": "ساختار بلوک settings در Xray:",
|
||
"sniffing": "اسنیفینگ",
|
||
"sniffingHelp": "ساختار بلوک sniffing در Xray:",
|
||
"stream": "استریم",
|
||
"streamHelp": "ساختار بلوک stream در Xray:",
|
||
"jsonErrorPrefix": "JSON پیشرفته"
|
||
},
|
||
"telegramDesc": "لطفا شناسه گفتگوی تلگرام را وارد کنید. (از دستور '/id' در ربات استفاده کنید) یا ({'@'}userinfobot)",
|
||
"subscriptionDesc": "شما میتوانید لینک سابسکربپشن خودرا در 'جزئیات' پیدا کنید، همچنین میتوانید از همین نام برای چندین کاربر استفادهکنید",
|
||
"info": "اطلاعات",
|
||
"same": "همسان",
|
||
"inboundData": "دادههای ورودی",
|
||
"exportInbound": "استخراج ورودی",
|
||
"import": "افزودن",
|
||
"importInbound": "افزودن یک ورودی",
|
||
"periodicTrafficResetTitle": "بازنشانی ترافیک",
|
||
"periodicTrafficResetDesc": "بازنشانی خودکار شمارنده ترافیک در فواصل زمانی مشخص",
|
||
"lastReset": "آخرین بازنشانی",
|
||
"periodicTrafficReset": {
|
||
"never": "هرگز",
|
||
"daily": "روزانه",
|
||
"weekly": "هفتگی",
|
||
"monthly": "ماهانه",
|
||
"hourly": "هر ساعت"
|
||
},
|
||
"toasts": {
|
||
"obtain": "فراهمسازی",
|
||
"updateSuccess": "بروزرسانی با موفقیت انجام شد",
|
||
"logCleanSuccess": "لاگ پاکسازی شد",
|
||
"inboundsUpdateSuccess": "ورودیها با موفقیت بهروزرسانی شدند",
|
||
"inboundUpdateSuccess": "ورودی با موفقیت بهروزرسانی شد",
|
||
"inboundCreateSuccess": "ورودی با موفقیت ایجاد شد",
|
||
"inboundDeleteSuccess": "ورودی با موفقیت حذف شد",
|
||
"inboundClientAddSuccess": "کلاینت(های) ورودی اضافه شدند",
|
||
"inboundClientDeleteSuccess": "کلاینت ورودی حذف شد",
|
||
"inboundClientUpdateSuccess": "کلاینت ورودی بهروزرسانی شد",
|
||
"delDepletedClientsSuccess": "تمام کلاینتهای مصرف شده حذف شدند",
|
||
"resetAllClientTrafficSuccess": "تمام ترافیک کلاینت بازنشانی شد",
|
||
"resetAllTrafficSuccess": "تمام ترافیکها بازنشانی شدند",
|
||
"resetInboundClientTrafficSuccess": "ترافیک بازنشانی شد",
|
||
"resetInboundTrafficSuccess": "ترافیک ورودی بازنشانی شد",
|
||
"trafficGetError": "خطا در دریافت ترافیکها",
|
||
"getNewX25519CertError": "خطا در دریافت گواهی X25519.",
|
||
"getNewmldsa65Error": "خطا در دریافت گواهی mldsa65.",
|
||
"getNewVlessEncError": "خطا در دریافت گواهی VlessEnc."
|
||
},
|
||
"stream": {
|
||
"general": {
|
||
"request": "درخواست",
|
||
"response": "پاسخ",
|
||
"name": "نام",
|
||
"value": "مقدار"
|
||
},
|
||
"tcp": {
|
||
"version": "نسخه",
|
||
"method": "متد",
|
||
"path": "مسیر",
|
||
"status": "وضعیت",
|
||
"statusDescription": "توضیحات وضعیت",
|
||
"requestHeader": "سربرگ درخواست",
|
||
"responseHeader": "سربرگ پاسخ"
|
||
}
|
||
}
|
||
},
|
||
"clients": {
|
||
"add": "افزودن کلاینت",
|
||
"edit": "ویرایش کلاینت",
|
||
"submitAdd": "افزودن کلاینت",
|
||
"submitEdit": "ذخیره تغییرات",
|
||
"clientCount": "تعداد کلاینتها",
|
||
"bulk": "افزودن گروهی",
|
||
"copyFromInbound": "کپی کلاینتها از اینباند",
|
||
"copyToInbound": "کپی کلاینتها به",
|
||
"copySelected": "کپی انتخابشدهها",
|
||
"copySource": "منبع",
|
||
"copyEmailPreview": "پیشنمایش ایمیل خروجی",
|
||
"copySelectSourceFirst": "ابتدا یک اینباند مبدأ انتخاب کنید.",
|
||
"copyResult": "نتیجه کپی",
|
||
"copyResultSuccess": "با موفقیت کپی شد",
|
||
"copyResultNone": "چیزی برای کپی نیست: کلاینتی انتخاب نشده یا منبع خالی است",
|
||
"copyResultErrors": "خطاهای کپی",
|
||
"copyFlowLabel": "Flow برای کلاینتهای جدید (VLESS)",
|
||
"copyFlowHint": "روی همه کلاینتهای کپیشده اعمال میشود. خالی بگذارید تا رد شود.",
|
||
"selectAll": "انتخاب همه",
|
||
"clearAll": "پاک کردن همه",
|
||
"method": "روش",
|
||
"first": "اول",
|
||
"last": "آخر",
|
||
"ipLog": "گزارش IP",
|
||
"prefix": "پیشوند",
|
||
"postfix": "پسوند",
|
||
"delayedStart": "شروع پس از اولین استفاده",
|
||
"expireDays": "مدت",
|
||
"days": "روز",
|
||
"renew": "تمدید خودکار",
|
||
"renewDesc": "تمدید خودکار پس از انقضا. (۰ = غیرفعال) (واحد: روز)",
|
||
"title": "کلاینتها",
|
||
"actions": "عملیات",
|
||
"totalGB": "مجموع ارسال/دریافت (گیگابایت)",
|
||
"expiryTime": "انقضا",
|
||
"addClients": "افزودن کلاینتها",
|
||
"limitIp": "محدودیت IP",
|
||
"password": "رمز عبور",
|
||
"subId": "شناسه اشتراک",
|
||
"online": "آنلاین",
|
||
"email": "ایمیل",
|
||
"comment": "توضیحات",
|
||
"traffic": "ترافیک",
|
||
"offline": "آفلاین",
|
||
"addTitle": "افزودن کلاینت",
|
||
"qrCode": "کد QR",
|
||
"moreInformation": "اطلاعات بیشتر",
|
||
"delete": "حذف",
|
||
"reset": "بازنشانی ترافیک",
|
||
"editTitle": "ویرایش کلاینت",
|
||
"client": "کلاینت",
|
||
"enabled": "فعال",
|
||
"remaining": "باقیمانده",
|
||
"duration": "مدت",
|
||
"attachedInbounds": "اینباندهای متصل",
|
||
"selectInbound": "یک یا چند اینباند انتخاب کنید",
|
||
"noSubId": "این کلاینت subId ندارد، لینک اشتراکگذاری وجود ندارد.",
|
||
"noLinks": "لینکی برای اشتراکگذاری نیست — ابتدا این کلاینت را به یک اینباند با پروتکل سازگار متصل کنید.",
|
||
"link": "لینک",
|
||
"resetNotPossible": "ابتدا این کلاینت را به یک اینباند متصل کنید.",
|
||
"general": "عمومی",
|
||
"resetAllTraffics": "بازنشانی ترافیک همه کلاینتها",
|
||
"resetAllTrafficsTitle": "بازنشانی ترافیک همه کلاینتها؟",
|
||
"resetAllTrafficsContent": "شمارنده ارسال/دریافت همه کلاینتها به صفر میرسد. سهمیه و تاریخ انقضا تغییری نمیکند. این عمل غیرقابل بازگشت است.",
|
||
"empty": "هنوز کلاینتی نیست — برای شروع یکی اضافه کنید.",
|
||
"deleteConfirmTitle": "حذف کلاینت {email}؟",
|
||
"deleteConfirmContent": "این کلاینت از تمام اینباندهای متصل حذف و سابقه ترافیک آن پاک میشود. این عمل غیرقابل بازگشت است.",
|
||
"deleteSelected": "حذف ({count})",
|
||
"adjustSelected": "تنظیم ({count})",
|
||
"attach": "اتصال",
|
||
"adjust": "تنظیم",
|
||
"subLinks": "لینکهای ساب",
|
||
"selectedCount": "{count} انتخابشده",
|
||
"ungroup": "حذف گروه",
|
||
"ungroupConfirmTitle": "{count} کلاینت از گروهشان حذف شود؟",
|
||
"ungroupConfirmContent": "برچسب گروه از هر کلاینت انتخابشده پاک میشود. خود کلاینتها حفظ میشوند (برای حذف کامل، از Delete استفاده کنید).",
|
||
"addToGroup": "افزودن به گروه",
|
||
"attachSelected": "اتصال ({count})",
|
||
"attachToInboundsTitle": "اتصال {count} کلاینت به اینباند(ها)",
|
||
"attachToInboundsDesc": "{count} کلاینت انتخابشده (با همان UUID/پسورد و ترافیک مشترک) به اینباند(های) انتخابی متصل میشوند. روی اینباندهای فعلی هم باقی میمانند.",
|
||
"attachToInboundsTargets": "اینباندهای مقصد",
|
||
"attachToInboundsNoTargets": "اینباند سازگار برای اتصال وجود ندارد.",
|
||
"detachSelected": "جداسازی ({count})",
|
||
"detach": "جداسازی",
|
||
"detachFromInboundsTitle": "جداسازی {count} کلاینت از اینباند(ها)",
|
||
"detachFromInboundsDesc": "{count} کلاینت انتخابشده از اینباند(های) انتخابی جدا میشوند. زوجهایی که کلاینت در آنها متصل نیست بیصدا رد میشوند. خود رکورد کلاینتها حفظ میشود (برای حذف کامل از Delete استفاده کنید).",
|
||
"detachFromInboundsTargets": "اینباندهای مبدأ",
|
||
"detachFromInboundsNoTargets": "اینباند سازگار وجود ندارد.",
|
||
"detachFromInboundsResult": "{detached} جدا شد، {skipped} رد شد.",
|
||
"detachFromInboundsResultMixed": "{detached} جدا شد، {skipped} رد شد، {errors} خطا.",
|
||
"bulkDeleteConfirmTitle": "حذف {count} کلاینت؟",
|
||
"bulkDeleteConfirmContent": "هر کلاینت انتخابشده از تمام اینباندهای متصل حذف و سابقه ترافیک آن پاک میشود. این عمل غیرقابل بازگشت است.",
|
||
"bulkAdjustTitle": "تنظیم {count} کلاینت",
|
||
"bulkAdjustHint": "مقادیر مثبت اضافه و منفی کم میکنند. کلاینتهایی که زمان یا ترافیک نامحدود دارند برای همان فیلد رد میشوند.",
|
||
"bulkAdjustNothing": "قبل از اعمال، روز یا ترافیک را تنظیم کنید.",
|
||
"addDays": "افزودن روز",
|
||
"addTrafficGB": "افزودن ترافیک (گیگابایت)",
|
||
"delDepleted": "حذف اتمامیافتهها",
|
||
"delDepletedConfirmTitle": "حذف کلاینتهای اتمامیافته؟",
|
||
"delDepletedConfirmContent": "هر کلاینتی که سهمیه ترافیکاش تمام شده یا تاریخ انقضایش گذشته است حذف میشود. این عمل غیرقابل بازگشت است.",
|
||
"auth": "Auth",
|
||
"hysteriaAuth": "Auth (هیستریا)",
|
||
"uuid": "UUID",
|
||
"flow": "Flow",
|
||
"vmessSecurity": "امنیت VMess",
|
||
"reverseTag": "Reverse tag",
|
||
"reverseTagPlaceholder": "Reverse tag اختیاری",
|
||
"telegramId": "شناسه کاربر تلگرام",
|
||
"telegramIdPlaceholder": "شناسه عددی کاربر تلگرام (۰ = هیچ)",
|
||
"created": "ساختهشده",
|
||
"updated": "بهروزشده",
|
||
"ipLimit": "محدودیت IP",
|
||
"toasts": {
|
||
"deleted": "کلاینت حذف شد",
|
||
"trafficReset": "ترافیک بازنشانی شد",
|
||
"allTrafficsReset": "ترافیک همه کلاینتها بازنشانی شد",
|
||
"bulkDeleted": "{count} کلاینت حذف شد",
|
||
"bulkDeletedMixed": "{ok} حذف، {failed} ناموفق",
|
||
"bulkCreated": "{count} کلاینت ساخته شد",
|
||
"bulkCreatedMixed": "{ok} ساخته شد، {failed} ناموفق",
|
||
"bulkAdjusted": "{count} کلاینت تنظیم شد",
|
||
"bulkAdjustedMixed": "{ok} تنظیم، {skipped} رد شد",
|
||
"delDepleted": "{count} کلاینت اتمامیافته حذف شد"
|
||
}
|
||
},
|
||
"nodes": {
|
||
"title": "نودها",
|
||
"addNode": "افزودن نود",
|
||
"editNode": "ویرایش نود",
|
||
"totalNodes": "کل نودها",
|
||
"onlineNodes": "آنلاین",
|
||
"offlineNodes": "آفلاین",
|
||
"avgLatency": "میانگین تاخیر",
|
||
"name": "نام",
|
||
"namePlaceholder": "مثلاً de-frankfurt-1",
|
||
"addressPlaceholder": "panel.example.com یا 1.2.3.4",
|
||
"remark": "توضیحات",
|
||
"scheme": "پروتکل",
|
||
"address": "آدرس",
|
||
"port": "پورت",
|
||
"basePath": "مسیر پایه",
|
||
"apiToken": "توکن API",
|
||
"apiTokenPlaceholder": "توکن از صفحه تنظیمات پنل ریموت",
|
||
"apiTokenHint": "پنل ریموت توکن API خودش را در بخش تنظیمات → توکن API نمایش میدهد.",
|
||
"regenerate": "تولید مجدد توکن",
|
||
"regenerateConfirm": "تولید مجدد، توکن فعلی را باطل میکند. هر پنل مرکزیای که از این توکن استفاده میکند تا زمان بهروزرسانی، دسترسیاش قطع میشود. ادامه میدهید؟",
|
||
"allowPrivateAddress": "اجازه آدرس خصوصی",
|
||
"allowPrivateAddressHint": "فقط برای نودهای روی شبکه خصوصی یا VPN فعال شود.",
|
||
"enable": "فعال",
|
||
"status": "وضعیت",
|
||
"cpu": "پردازنده",
|
||
"mem": "حافظه",
|
||
"uptime": "زمان کارکرد",
|
||
"latency": "تاخیر",
|
||
"lastHeartbeat": "آخرین ضربان",
|
||
"xrayVersion": "نسخه Xray",
|
||
"panelVersion": "نسخه پنل",
|
||
"actions": "عملیات",
|
||
"probe": "بررسی فوری",
|
||
"testConnection": "تست اتصال",
|
||
"connectionOk": "اتصال موفق ({ms} میلیثانیه)",
|
||
"connectionFailed": "اتصال ناموفق",
|
||
"never": "هرگز",
|
||
"justNow": "هماکنون",
|
||
"deleteConfirmTitle": "نود «{name}» حذف شود؟",
|
||
"deleteConfirmContent": "نظارت روی این نود متوقف میشود. خود پنل ریموت تغییری نمیکند.",
|
||
"statusValues": {
|
||
"online": "آنلاین",
|
||
"offline": "آفلاین",
|
||
"unknown": "نامشخص"
|
||
},
|
||
"toasts": {
|
||
"list": "بارگذاری نودها ناموفق",
|
||
"obtain": "بارگذاری نود ناموفق",
|
||
"add": "افزودن نود",
|
||
"update": "بهروزرسانی نود",
|
||
"delete": "حذف نود",
|
||
"deleted": "نود حذف شد",
|
||
"test": "تست اتصال",
|
||
"fillRequired": "نام، آدرس، پورت و توکن API الزامی است",
|
||
"probeFailed": "بررسی ناموفق"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "تنظیمات پنل",
|
||
"save": "ذخیره",
|
||
"infoDesc": "برای اعمال تغییرات در این بخش باید پس از ذخیره کردن، پنل را ریستارت کنید",
|
||
"restartPanel": "ریستارت پنل",
|
||
"restartPanelDesc": "آیا مطمئن به ریستارت پنل هستید؟ اگر پساز ریستارت نمیتوانید به پنل دسترسی پیدا کنید، لطفاً گزارشهای موجود در اسکریپت پنل را بررسی کنید",
|
||
"restartPanelSuccess": "پنل با موفقیت راهاندازی مجدد شد",
|
||
"actions": "عملیات ها",
|
||
"resetDefaultConfig": "برگشت به پیشفرض",
|
||
"panelSettings": "پیکربندی",
|
||
"securitySettings": "احرازهویت",
|
||
"securityWarnings": "هشدارهای امنیتی",
|
||
"panelExposed": "ممکن است پنل شما در معرض خطر باشد:",
|
||
"warnHttp": "پنل از طریق HTTP ساده ارائه میشود — برای محیط عملیاتی TLS فعال کنید.",
|
||
"warnDefaultPort": "پورت پیشفرض 2053 شناختهشده است — آن را به یک پورت تصادفی تغییر دهید.",
|
||
"warnDefaultBasePath": "مسیر پایه پیشفرض «/» شناختهشده است — آن را به یک مسیر تصادفی تغییر دهید.",
|
||
"warnDefaultSubPath": "مسیر ساب پیشفرض «/sub/» شناختهشده است — تغییرش دهید.",
|
||
"warnDefaultJsonPath": "مسیر JSON ساب پیشفرض «/json/» شناختهشده است — تغییرش دهید.",
|
||
"TGBotSettings": "ربات تلگرام",
|
||
"panelListeningIP": "آدرس آیپی",
|
||
"panelListeningIPDesc": "آدرس آیپی برای وب پنل. برای گوشدادن بهتمام آیپیها خالیبگذارید",
|
||
"panelListeningDomain": "نام دامنه",
|
||
"panelListeningDomainDesc": "آدرس دامنه برای وب پنل. برای گوش دادن بهتمام دامنهها و آیپیها خالیبگذارید",
|
||
"panelPort": "پورت",
|
||
"panelPortDesc": "شماره پورت برای وب پنل. باید پورت استفاده نشدهباشد",
|
||
"publicKeyPath": "مسیر کلید عمومی",
|
||
"publicKeyPathDesc": "مسیر فایل کلیدعمومی برای وب پنل. با '/' شروعمیشود",
|
||
"privateKeyPath": "مسیر کلید خصوصی",
|
||
"privateKeyPathDesc": "مسیر فایل کلیدخصوصی برای وب پنل. با '/' شروعمیشود",
|
||
"panelUrlPath": "URI مسیر",
|
||
"panelUrlPathDesc": "برای وب پنل. با '/' شروع و با '/' خاتمه مییابد URI مسیر",
|
||
"pageSize": "اندازه صفحه بندی جدول",
|
||
"pageSizeDesc": "(اندازه صفحه برای جدول ورودیها.(0 = غیرفعال",
|
||
"panelProxy": "پراکسی شبکهی پنل",
|
||
"panelProxyDesc": "درخواستهای خروجیِ خودِ پنل (آپدیت geo، چک نسخهی Xray و پنل، تلگرام) را از این پراکسی عبور میدهد تا فیلترینگ سروری گیتهاب/تلگرام دور زده شود. پشتیبانی از socks5:// و http(s)://، برای نمونه یک اینباند SOCKS لوکالِ Xray. برای اتصال مستقیم خالی بگذارید.",
|
||
"remarkModel": "نامکانفیگ و جداکننده",
|
||
"datepicker": "نوع تقویم",
|
||
"datepickerPlaceholder": "انتخاب تاریخ",
|
||
"datepickerDescription": "وظایف برنامه ریزی شده بر اساس این تقویم اجرا میشود",
|
||
"sampleRemark": "نمونهنام",
|
||
"oldUsername": "نامکاربری فعلی",
|
||
"currentPassword": "رمزعبور فعلی",
|
||
"newUsername": "نامکاربری جدید",
|
||
"newPassword": "رمزعبور جدید",
|
||
"telegramBotEnable": "فعالسازی ربات تلگرام",
|
||
"telegramBotEnableDesc": "ربات تلگرام را فعال میکند",
|
||
"telegramToken": "توکن تلگرام",
|
||
"telegramTokenDesc": "دریافت کنید {'@'}botfather توکن را میتوانید از",
|
||
"telegramProxy": "SOCKS پراکسی",
|
||
"telegramProxyDesc": "را برای اتصال به تلگرام فعال می کند SOCKS5 پراکسی",
|
||
"telegramAPIServer": "سرور API تلگرام",
|
||
"telegramAPIServerDesc": "API سرور تلگرام برای اتصال را تغییر میدهد. برای استفاده از سرور پیش فرض خالی بگذارید",
|
||
"telegramChatId": "آیدی چت مدیر",
|
||
"telegramChatIdDesc": "دریافت کنید ('/id'یا (دستور ({'@'}userinfobot) آیدی(های) چت تلگرام مدیر، از",
|
||
"telegramNotifyTime": "زمان نوتیفیکیشن",
|
||
"telegramNotifyTimeDesc": "زماناطلاعرسانی ربات تلگرام برای گزارش های دورهای. از فرمت زمانبندی لینوکس استفادهکنید",
|
||
"tgNotifyBackup": "پشتیبانگیری از دیتابیس",
|
||
"tgNotifyBackupDesc": "فایل پشتیباندیتابیس را بههمراه گزارش ارسال میکند",
|
||
"tgNotifyLogin": "اعلان ورود",
|
||
"tgNotifyLoginDesc": "نامکاربری، آدرس آیپی، و زمان ورود، فردی که سعی میکند وارد پنل شود را نمایش میدهد",
|
||
"sessionMaxAge": "بیشینه زمان جلسه وب",
|
||
"sessionMaxAgeDesc": "(بیشینه زمانی که میتوانید لاگین بمانید. (واحد: دقیقه",
|
||
"expireTimeDiff": "آستانه زمان باقی مانده",
|
||
"expireTimeDiffDesc": "(فاصله زمانی هشدار تا رسیدن به زمان انقضا. (واحد: روز",
|
||
"trafficDiff": "آستانه ترافیک باقی مانده",
|
||
"trafficDiffDesc": "(فاصله زمانی هشدار تا رسیدن به اتمام ترافیک. (واحد: گیگابایت",
|
||
"tgNotifyCpu": "آستانه هشدار بار پردازنده",
|
||
"tgNotifyCpuDesc": "(اگر بار روی پردازنده ازاین آستانه فراتر رفت، برای شما پیام ارسال میشود. (واحد: درصد",
|
||
"timeZone": "منطقه زمانی",
|
||
"timeZoneDesc": "وظایف برنامه ریزی شده بر اساس این منطقهزمانی اجرا میشود",
|
||
"subSettings": "سابسکریپشن",
|
||
"subEnable": "فعالسازی سرویس سابسکریپشن",
|
||
"subEnableDesc": "سرویس سابسکریپشن را فعالمیکند",
|
||
"subJsonEnable": "فعال/غیرفعالسازی مستقل نقطه دسترسی سابسکریپشن JSON.",
|
||
"subTitle": "عنوان اشتراک",
|
||
"subTitleDesc": "عنوان نمایش داده شده در کلاینت VPN",
|
||
"subSupportUrl": "آدرس پشتیبانی",
|
||
"subSupportUrlDesc": "لینک پشتیبانی فنی که در کلاینت VPN نمایش داده میشود",
|
||
"subProfileUrl": "آدرس پروفایل",
|
||
"subProfileUrlDesc": "لینک وبسایت شما که در کلاینت VPN نمایش داده میشود",
|
||
"subAnnounce": "اعلان",
|
||
"subAnnounceDesc": "متن اعلانی که در کلاینت VPN نمایش داده میشود",
|
||
"subEnableRouting": "فعالسازی مسیریابی",
|
||
"subEnableRoutingDesc": "تنظیمات سراسری برای فعالسازی مسیریابی در کلاینت VPN. (فقط برای Happ)",
|
||
"subRoutingRules": "قوانین مسیریابی",
|
||
"subRoutingRulesDesc": "قوانین مسیریابی سراسری برای کلاینت VPN. (فقط برای Happ)",
|
||
"subListen": "آدرس آیپی",
|
||
"subListenDesc": "آدرس آیپی برای سرویس سابسکریپشن. برای گوش دادن بهتمام آیپیها خالیبگذارید",
|
||
"subPort": "پورت",
|
||
"subPortDesc": "شماره پورت برای سرویس سابسکریپشن. باید پورت استفاده نشدهباشد",
|
||
"subCertPath": "مسیر کلید عمومی",
|
||
"subCertPathDesc": "مسیر فایل کلیدعمومی برای سرویس سابیکریپشن. با '/' شروعمیشود",
|
||
"subKeyPath": "مسیر کلید خصوصی",
|
||
"subKeyPathDesc": "مسیر فایل کلیدخصوصی برای سرویس سابسکریپشن. با '/' شروعمیشود",
|
||
"subPath": "URI مسیر",
|
||
"subPathDesc": "برای سرویس سابسکریپشن. با '/' شروع و با '/' خاتمه مییابد URI مسیر",
|
||
"subDomain": "نام دامنه",
|
||
"subDomainDesc": "آدرس دامنه برای سرویس سابسکریپشن. برای گوش دادن به تمام دامنهها و آیپیها خالیبگذارید",
|
||
"subUpdates": "فاصله بروزرسانی سابسکریپشن",
|
||
"subUpdatesDesc": "(فاصله مابین بروزرسانی در برنامههای کاربری. (واحد: ساعت",
|
||
"subEncrypt": "کدگذاری",
|
||
"subEncryptDesc": "کدگذاری خواهدشد Base64 محتوای برگشتی سرویس سابسکریپشن برپایه",
|
||
"subShowInfo": "نمایش اطلاعات مصرف",
|
||
"subShowInfoDesc": "ترافیک و زمان باقیمانده را در برنامههای کاربری نمایش میدهد",
|
||
"subEmailInRemark": "گنجاندن ایمیل در نام",
|
||
"subEmailInRemarkDesc": "ایمیل کاربر در نام پروفایل اشتراک گنجانده میشود.",
|
||
"subURI": "پروکسی معکوس URI مسیر",
|
||
"subURIDesc": "سابسکریپشن را برای استفاده در پشت پراکسیها تغییر میدهد URI مسیر",
|
||
"externalTrafficInformEnable": "اطلاع رسانی خارجی مصرف ترافیک",
|
||
"externalTrafficInformEnableDesc": "مصرف ترافیک به سرویس خارجی ارسال می شود",
|
||
"externalTrafficInformURI": "لینک اطلاع رسانی خارجی مصرف ترافیک",
|
||
"externalTrafficInformURIDesc": "ترافیک های مصرفی به این لینک هم ارسال می شود",
|
||
"restartXrayOnClientDisable": "ریاستارت Xray بعد از غیرفعالسازی خودکار",
|
||
"restartXrayOnClientDisableDesc": "وقتی کاربر بهصورت خودکار بهدلیل اتمام زمان یا ترافیک غیرفعال میشود، Xray ریاستارت شود.",
|
||
"fragment": "فرگمنت",
|
||
"fragmentDesc": "فعال کردن فرگمنت برای بستهی نخست تیالاس",
|
||
"fragmentSett": "تنظیمات فرگمنت",
|
||
"noisesDesc": "فعال کردن Noises.",
|
||
"noisesSett": "تنظیمات Noises",
|
||
"mux": "ماکس",
|
||
"muxDesc": "چندین جریان داده مستقل را در یک جریان داده ثابت منتقل می کند",
|
||
"muxSett": "تنظیمات ماکس",
|
||
"direct": "اتصال مستقیم",
|
||
"directDesc": "به طور مستقیم با دامنه ها یا محدوده آیپی یک کشور خاص ارتباط برقرار می کند",
|
||
"notifications": "اعلانها",
|
||
"certs": "گواهیها",
|
||
"externalTraffic": "ترافیک خارجی",
|
||
"dateAndTime": "تاریخ و زمان",
|
||
"proxyAndServer": "پراکسی و سرور",
|
||
"intervals": "فواصل",
|
||
"information": "اطلاعات",
|
||
"language": "زبان",
|
||
"telegramBotLanguage": "زبان ربات تلگرام",
|
||
"security": {
|
||
"admin": "اعتبارنامههای ادمین",
|
||
"twoFactor": "احراز هویت دو مرحلهای",
|
||
"twoFactorEnable": "فعالسازی 2FA",
|
||
"twoFactorEnableDesc": "یک لایه اضافی امنیتی برای احراز هویت فراهم میکند.",
|
||
"twoFactorModalSetTitle": "فعالسازی احراز هویت دو مرحلهای",
|
||
"twoFactorModalDeleteTitle": "غیرفعالسازی احراز هویت دو مرحلهای",
|
||
"twoFactorModalSteps": "برای راهاندازی احراز هویت دو مرحلهای، مراحل زیر را انجام دهید:",
|
||
"twoFactorModalFirstStep": "1. این کد QR را در برنامه احراز هویت اسکن کنید یا توکن کنار کد QR را کپی کرده و در برنامه بچسبانید",
|
||
"twoFactorModalSecondStep": "2. کد را از برنامه وارد کنید",
|
||
"twoFactorModalRemoveStep": "برای حذف احراز هویت دو مرحلهای، کد را از برنامه وارد کنید.",
|
||
"twoFactorModalChangeCredentialsTitle": "تغییر اعتبارنامهها",
|
||
"twoFactorModalChangeCredentialsStep": "برای تغییر اعتبارنامههای مدیر، کد را از برنامه وارد کنید.",
|
||
"twoFactorModalSetSuccess": "احراز هویت دو مرحلهای با موفقیت برقرار شد",
|
||
"twoFactorModalDeleteSuccess": "احراز هویت دو مرحلهای با موفقیت حذف شد",
|
||
"twoFactorModalError": "کد نادرست",
|
||
"show": "نمایش",
|
||
"hide": "پنهان",
|
||
"apiTokenNew": "توکن جدید",
|
||
"apiTokenName": "نام",
|
||
"apiTokenNamePlaceholder": "مثلاً central-panel-a",
|
||
"apiTokenNameRequired": "نام الزامی است",
|
||
"apiTokenEmpty": "هنوز توکنی وجود ندارد — برای احراز هویت رباتها یا پنلهای راه دور یکی بسازید.",
|
||
"apiTokenDeleteWarning": "هر کلاینتی که از این توکن استفاده میکند بلافاصله احراز هویتش قطع میشود."
|
||
},
|
||
"toasts": {
|
||
"modifySettings": "پارامترها تغییر کردهاند.",
|
||
"getSettings": "خطا در دریافت پارامترها",
|
||
"modifyUserError": "خطا در تغییر اعتبارنامههای مدیر سیستم.",
|
||
"modifyUser": "شما با موفقیت اعتبارنامههای مدیر سیستم را تغییر دادید.",
|
||
"originalUserPassIncorrect": "نامکاربری یا رمزعبور فعلی اشتباهاست",
|
||
"userPassMustBeNotEmpty": "نامکاربری یا رمزعبور جدید خالیاست",
|
||
"getOutboundTrafficError": "خطا در دریافت ترافیک خروجی",
|
||
"resetOutboundTrafficError": "خطا در بازنشانی ترافیک خروجی"
|
||
}
|
||
},
|
||
"xray": {
|
||
"title": "پیکربندی ایکسری",
|
||
"save": "ذخیره",
|
||
"restart": "ریستارت ایکسری",
|
||
"restartSuccess": "Xray با موفقیت راهاندازی مجدد شد",
|
||
"stopSuccess": "Xray با موفقیت متوقف شد",
|
||
"restartError": "خطا در راهاندازی مجدد Xray.",
|
||
"stopError": "خطا در توقف Xray.",
|
||
"basicTemplate": "پایه",
|
||
"advancedTemplate": "پیشرفته",
|
||
"generalConfigs": "استراتژی کلی",
|
||
"generalConfigsDesc": "این گزینهها استراتژی کلی ترافیک را تعیین میکنند",
|
||
"logConfigs": "گزارش",
|
||
"logConfigsDesc": "گزارشها ممکن است بر کارایی سرور شما تأثیر بگذارد. توصیه می شود فقط در صورت نیاز آن را عاقلانه فعال کنید",
|
||
"blockConfigsDesc": "این گزینهها ترافیک را بر اساس پروتکلهای درخواستی خاص، و وب سایتها مسدود میکند",
|
||
"basicRouting": "مسیریابی پایه",
|
||
"blockConnectionsConfigsDesc": "این گزینهها ترافیک را بر اساس کشور درخواستشده خاص مسدود میکنند.",
|
||
"directConnectionsConfigsDesc": "یک اتصال مستقیم تضمین میکند که ترافیک خاص از طریق سرور دیگری مسیریابی نشود.",
|
||
"blockips": "مسدود کردن آیپیها",
|
||
"blockdomains": "مسدود کردن دامنهها",
|
||
"directips": "آیپیهای مستقیم",
|
||
"directdomains": "دامنههای مستقیم",
|
||
"ipv4Routing": "IPv4 مسیریابی",
|
||
"ipv4RoutingDesc": "این گزینهها ترافیک را از طریق آیپی نسخه4 سرور، به مقصد هدایت میکند",
|
||
"warpRouting": "WARP مسیریابی",
|
||
"warpRoutingDesc": "این گزینهها ترافیک را از طریق وارپ کلادفلر به مقصد هدایت میکند",
|
||
"nordRouting": "مسیریابی NordVPN",
|
||
"nordRoutingDesc": "این گزینهها ترافیک را بر اساس مقصد خاص از طریق NordVPN مسیریابی میکنند.",
|
||
"Template": "پیکربندی پیشرفته الگو ایکسری",
|
||
"TemplateDesc": "فایل پیکربندی نهایی ایکسری بر اساس این الگو ایجاد میشود",
|
||
"FreedomStrategy": "Freedom استراتژی پروتکل",
|
||
"FreedomStrategyDesc": "تعیین میکند Freedom استراتژی خروجی شبکه را برای پروتکل",
|
||
"RoutingStrategy": "استراتژی کلی مسیریابی",
|
||
"RoutingStrategyDesc": "استراتژی کلی مسیریابی برای حل تمام درخواستها را تعیین میکند",
|
||
"outboundTestUrl": "آدرس تست خروجی",
|
||
"outboundTestUrlDesc": "آدرسی که برای تست اتصال خروجی استفاده میشود.",
|
||
"Torrent": "مسدودسازی پروتکل بیتتورنت",
|
||
"Inbounds": "ورودیها",
|
||
"InboundsDesc": "پذیرش کلاینت خاص",
|
||
"Outbounds": "خروجیها",
|
||
"Balancers": "بالانسرها",
|
||
"balancerTagRequired": "تگ الزامی است",
|
||
"balancerSelectorRequired": "حداقل یک outbound انتخاب کنید",
|
||
"OutboundsDesc": "مسیر ترافیک خروجی را تنظیم کنید",
|
||
"Routings": "قوانین مسیریابی",
|
||
"RoutingsDesc": "اولویت هر قانون مهم است",
|
||
"completeTemplate": "کامل",
|
||
"logLevel": "سطح گزارش",
|
||
"logLevelDesc": "سطح گزارش برای گزارش های خطا، نشان دهنده اطلاعاتی است که باید ثبت شوند.",
|
||
"accessLog": "مسیر گزارش",
|
||
"accessLogDesc": "مسیر فایل برای گزارش دسترسی. مقدار ویژه «هیچ» گزارشهای دسترسی را غیرفعال میکند.",
|
||
"errorLog": "گزارش خطا",
|
||
"errorLogDesc": "مسیر فایل برای ورود به سیستم خطا. مقدار ویژه «هیچ» گزارش های خطا را غیرفعال میکند",
|
||
"dnsLog": "گزارش DNS",
|
||
"dnsLogDesc": "آیا ثبتهای درخواست DNS را فعال کنید",
|
||
"maskAddress": "پنهان کردن آدرس",
|
||
"maskAddressDesc": "پوشش آدرس IP، هنگامی که فعال میشود، به طور خودکار آدرس IP که در لاگ ظاهر میشود را جایگزین میکند.",
|
||
"statistics": "آمار",
|
||
"statsInboundUplink": "آمار آپلود ورودی",
|
||
"statsInboundUplinkDesc": "جمعآوری آمار برای ترافیک بالارو (آپلود) تمام پروکسیهای ورودی را فعال میکند.",
|
||
"statsInboundDownlink": "آمار دانلود ورودی",
|
||
"statsInboundDownlinkDesc": "جمعآوری آمار برای ترافیک پایینرو (دانلود) تمام پروکسیهای ورودی را فعال میکند.",
|
||
"statsOutboundUplink": "آمار آپلود خروجی",
|
||
"statsOutboundUplinkDesc": "جمعآوری آمار برای ترافیک بالارو (آپلود) تمام پروکسیهای خروجی را فعال میکند.",
|
||
"statsOutboundDownlink": "آمار دانلود خروجی",
|
||
"statsOutboundDownlinkDesc": "جمعآوری آمار برای ترافیک پایینرو (دانلود) تمام پروکسیهای خروجی را فعال میکند.",
|
||
"rules": {
|
||
"first": "اولین",
|
||
"last": "آخرین",
|
||
"up": "بالا",
|
||
"down": "پایین",
|
||
"source": "مبدا",
|
||
"dest": "مقصد",
|
||
"inbound": "ورودی",
|
||
"outbound": "خروجی",
|
||
"balancer": "بالانسر",
|
||
"info": "اطلاعات",
|
||
"add": "افزودن قانون",
|
||
"edit": "ویرایش قانون",
|
||
"useComma": "موارد جدا شده با کاما"
|
||
},
|
||
"outbound": {
|
||
"addOutbound": "افزودن خروجی",
|
||
"addReverse": "افزودن معکوس",
|
||
"editOutbound": "ویرایش خروجی",
|
||
"editReverse": "ویرایش معکوس",
|
||
"reverseTag": "تگ معکوس",
|
||
"reverseTagDesc": "تگ خروجی پروکسی معکوس ساده VLESS. برای غیرفعال کردن خالی بگذارید. در صورت تنظیم، اتصالات این کلاینت میتوانند به عنوان تونل پروکسی معکوس استفاده شوند.",
|
||
"reverseTagPlaceholder": "تگ خروجی (خالی = غیرفعال)",
|
||
"tag": "برچسب",
|
||
"tagDesc": "برچسب یگانه",
|
||
"address": "آدرس",
|
||
"reverse": "معکوس",
|
||
"domain": "دامنه",
|
||
"type": "نوع",
|
||
"bridge": "پل",
|
||
"portal": "پورتال",
|
||
"link": "لینک",
|
||
"intercon": "اتصال میانی",
|
||
"settings": "تنظیمات",
|
||
"accountInfo": "اطلاعات حساب",
|
||
"outboundStatus": "وضعیت خروجی",
|
||
"sendThrough": "ارسال با",
|
||
"test": "تست",
|
||
"testResult": "نتیجه تست",
|
||
"testing": "در حال تست اتصال...",
|
||
"testSuccess": "تست موفقیتآمیز",
|
||
"testFailed": "تست ناموفق",
|
||
"testError": "خطا در تست خروجی",
|
||
"nordvpn": "NordVPN",
|
||
"accessToken": "توکن دسترسی",
|
||
"country": "کشور",
|
||
"server": "سرور",
|
||
"city": "شهر",
|
||
"allCities": "همه شهرها",
|
||
"privateKey": "کلید خصوصی",
|
||
"load": "فشار سرور"
|
||
},
|
||
"balancer": {
|
||
"addBalancer": "افزودن بالانسر",
|
||
"editBalancer": "ویرایش بالانسر",
|
||
"balancerStrategy": "استراتژی",
|
||
"balancerSelectors": "انتخابگرها",
|
||
"tag": "برچسب",
|
||
"tagDesc": "برچسب یگانه",
|
||
"balancerDesc": "امکان استفاده همزمان balancerTag و outboundTag باهم وجود ندارد. درصورت استفاده همزمان فقط outboundTag عمل خواهد کرد."
|
||
},
|
||
"wireguard": {
|
||
"secretKey": "کلید شخصی",
|
||
"publicKey": "کلید عمومی",
|
||
"allowedIPs": "آیپیهای مجاز",
|
||
"endpoint": "نقطه پایانی",
|
||
"psk": "کلید مشترک",
|
||
"domainStrategy": "استراتژی حل دامنه"
|
||
},
|
||
"tun": {
|
||
"nameDesc": "نام رابط TUN. مقدار پیشفرض 'xray0' است",
|
||
"mtuDesc": "واحد انتقال حداکثر. بیشترین اندازه بستههای داده. مقدار پیشفرض 1500 است",
|
||
"userLevel": "سطح کاربر",
|
||
"userLevelDesc": "تمام اتصالات انجامشده از طریق این ورودی از این سطح کاربری استفاده خواهند کرد. مقدار پیشفرض 0 است"
|
||
},
|
||
"dns": {
|
||
"enable": "فعال کردن حل دامنه",
|
||
"enableDesc": "سرور حل دامنه داخلی را فعال کنید",
|
||
"tag": "برچسب",
|
||
"tagDesc": "این برچسب در قوانین مسیریابی به عنوان یک برچسب ورودی قابل استفاده خواهد بود",
|
||
"clientIp": "آیپی کلاینت",
|
||
"clientIpDesc": "برای اطلاعرسانی به سرور درباره مکان IP مشخصشده در طول درخواستهای DNS استفاده میشود",
|
||
"disableCache": "غیرفعالسازی کش",
|
||
"disableCacheDesc": "کش DNS را غیرفعال میکند",
|
||
"disableFallback": "غیرفعالسازی Fallback",
|
||
"disableFallbackDesc": "درخواستهای DNS Fallback را غیرفعال میکند",
|
||
"disableFallbackIfMatch": "غیرفعالسازی Fallback در صورت تطابق",
|
||
"disableFallbackIfMatchDesc": "درخواستهای DNS Fallback را زمانی که لیست دامنههای مطابقتیافته سرور DNS فعال است، غیرفعال میکند",
|
||
"enableParallelQuery": "فعالسازی پرسوجوی موازی",
|
||
"enableParallelQueryDesc": "فعالسازی پرسوجوهای DNS موازی به چندین سرور برای وضوح سریعتر",
|
||
"strategy": "استراتژی پرسوجو",
|
||
"strategyDesc": "استراتژی کلی برای حل نام دامنه",
|
||
"add": "افزودن سرور",
|
||
"edit": "ویرایش سرور",
|
||
"domains": "دامنهها",
|
||
"expectIPs": "آیپیهای مورد انتظار",
|
||
"unexpectIPs": "آیپیهای غیرمنتظره",
|
||
"useSystemHosts": "استفاده از Hosts سیستم",
|
||
"useSystemHostsDesc": "استفاده از فایل hosts یک سیستم نصبشده",
|
||
"serveStale": "ارائه نتایج منقضی",
|
||
"serveStaleDesc": "بازگرداندن نتایج منقضی کش هنگام بروزرسانی در پسزمینه",
|
||
"serveExpiredTTL": "TTL نتایج منقضی",
|
||
"serveExpiredTTLDesc": "مدت اعتبار نتایج منقضی به ثانیه؛ ۰ یعنی هرگز منقضی نمیشود",
|
||
"timeoutMs": "زمان انتظار (میلیثانیه)",
|
||
"skipFallback": "رد کردن Fallback",
|
||
"finalQuery": "پرسوجوی نهایی",
|
||
"hosts": "Hosts",
|
||
"hostsAdd": "افزودن Host",
|
||
"hostsEmpty": "هیچ Host تعریف نشده",
|
||
"hostsDomain": "دامنه (مثلاً domain:example.com)",
|
||
"hostsValues": "آیپی یا دامنه — تایپ کنید و Enter بزنید",
|
||
"usePreset": "استفاده از پیشتنظیم",
|
||
"dnsPresetTitle": "پیشتنظیمهای DNS",
|
||
"dnsPresetFamily": "خانوادگی",
|
||
"clearAll": "حذف همه",
|
||
"clearAllTitle": "حذف همه سرورهای DNS؟",
|
||
"clearAllConfirm": "این کار همه سرورهای DNS را از لیست حذف میکند و قابل بازگشت نیست."
|
||
},
|
||
"fakedns": {
|
||
"add": "افزودن دیاناس جعلی",
|
||
"edit": "ویرایش دیاناس جعلی",
|
||
"ipPool": "زیرشبکه استخر آیپی",
|
||
"poolSize": "اندازه استخر"
|
||
}
|
||
}
|
||
},
|
||
"tgbot": {
|
||
"keyboardClosed": "❌ صفحه کلید بسته شد!",
|
||
"noResult": "❗ نتیجه ای یافت نشد!",
|
||
"noQuery": "❌ درخواست یافت نشد! لطفا دوباره تلاش کنید!",
|
||
"wentWrong": "❌ مشکلی پیش آمد!",
|
||
"noIpRecord": "❗ رکورد آی پی وجود ندارد!",
|
||
"noInbounds": "❗ هیچ ورودی یافت نشد!",
|
||
"unlimited": "♾ نامحدود(ریست)",
|
||
"add": "افزودن",
|
||
"month": "ماه",
|
||
"months": "ماه",
|
||
"day": "روز",
|
||
"days": "روز",
|
||
"hours": "ساعت",
|
||
"minutes": "دقیقه",
|
||
"unknown": "نامشخص",
|
||
"inbounds": "ورودی ها",
|
||
"clients": "کاربران",
|
||
"offline": "🔴 آفلاین",
|
||
"online": "🟢 آنلاین",
|
||
"commands": {
|
||
"unknown": "❗ دستور ناشناخته",
|
||
"pleaseChoose": "👇 لطفاً انتخاب کنید:\r\n",
|
||
"help": "🤖 به این ربات خوش آمدید! این ربات برای ارائه دادههای خاص از سرور طراحی شده است و به شما امکان تغییرات لازم را میدهد.\r\n\r\n",
|
||
"start": "👋 سلام <i>{{ .Firstname }}</i>.\r\n",
|
||
"welcome": "🤖 به ربات مدیریت <b>{{ .Hostname }}</b> خوش آمدید.\r\n",
|
||
"status": "✅ ربات در حالت عادی است!",
|
||
"usage": "❗ لطفاً یک متن برای جستجو وارد کنید!",
|
||
"getID": "🆔 شناسه شما: <code>{{ .ID }}</code>",
|
||
"helpAdminCommands": "برای راهاندازی مجدد Xray Core:\r\n<code>/restart</code>\r\n\r\nبرای جستجوی ایمیل مشتری:\r\n<code>/usage [ایمیل]</code>\r\n\r\nبرای جستجوی ورودیها (با آمار مشتری):\r\n<code>/inbound [توضیحات]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
||
"helpClientCommands": "برای جستجوی آمار، از دستور زیر استفاده کنید:\r\n<code>/usage [ایمیل]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
|
||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||
"restartSuccess": "✅ عملیات با موفقیت انجام شد!",
|
||
"restartFailed": "❗ خطا در عملیات.\r\n\r\n<code>خطا: {{ .Error }}</code>.",
|
||
"xrayNotRunning": "❗ Xray Core در حال اجرا نیست.",
|
||
"startDesc": "نمایش منوی اصلی",
|
||
"helpDesc": "راهنمای ربات",
|
||
"statusDesc": "بررسی وضعیت ربات",
|
||
"idDesc": "نمایش شناسه تلگرام شما"
|
||
},
|
||
"messages": {
|
||
"cpuThreshold": "🔴 بار پردازنده {{ .Percent }}% بیشتر از آستانه است {{ .Threshold }}%",
|
||
"selectUserFailed": "❌ خطا در انتخاب کاربر!",
|
||
"userSaved": "✅ کاربر تلگرام ذخیره شد.",
|
||
"loginSuccess": "✅ با موفقیت به پنل وارد شدید.\r\n",
|
||
"loginFailed": "❗️ ورود به پنل ناموفقبود \r\n",
|
||
"2faFailed": "خطای 2FA",
|
||
"report": "🕰 گزارشاتزمانبندیشده: {{ .RunTime }}\r\n",
|
||
"datetime": "⏰ تاریخوزمان: {{ .DateTime }}\r\n",
|
||
"hostname": "💻 ناممیزبان: {{ .Hostname }}\r\n",
|
||
"version": "🚀 نسخهپنل: {{ .Version }}\r\n",
|
||
"xrayVersion": "📡 نسخههسته: {{ .XrayVersion }}\r\n",
|
||
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
|
||
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
|
||
"ip": "🌐 آدرسآیپی: {{ .IP }}\r\n",
|
||
"ips": "🔢 آدرسهای آیپی:\r\n{{ .IPs }}\r\n",
|
||
"serverUpTime": "⏳ مدتکارکردسیستم: {{ .UpTime }} {{ .Unit }}\r\n",
|
||
"serverLoad": "📈 بارسیستم: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
|
||
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
|
||
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
|
||
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
|
||
"traffic": "🚦 ترافیک: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
|
||
"xrayStatus": "ℹ️ وضعیتایکسری: {{ .State }}\r\n",
|
||
"username": "👤 نامکاربری: {{ .Username }}\r\n",
|
||
"reason": "❗️ دلیل: {{ .Reason }}\r\n",
|
||
"time": "⏰ زمان: {{ .Time }}\r\n",
|
||
"inbound": "📍 نامورودی: {{ .Remark }}\r\n",
|
||
"port": "🔌 پورت: {{ .Port }}\r\n",
|
||
"expire": "📅 تاریخانقضا: {{ .Time }}\r\n\r\n",
|
||
"expireIn": "📅 باقی مانده تا انقضا: {{ .Time }}\r\n\r\n",
|
||
"active": "💡 فعال: {{ .Enable }}\r\n",
|
||
"enabled": "🚨 وضعیت: {{ .Enable }}\r\n",
|
||
"online": "🌐 وضعیت اتصال: {{ .Status }}\r\n",
|
||
"lastOnline": "🔙 آخرین فعالیت: {{ .Time }}\r\n",
|
||
"email": "📧 ایمیل: {{ .Email }}\r\n",
|
||
"upload": "🔼 آپلود↑: {{ .Upload }}\r\n",
|
||
"download": "🔽 دانلود↓: {{ .Download }}\r\n",
|
||
"total": "🔄 کل: {{ .UpDown }} / {{ .Total }}\r\n",
|
||
"TGUser": "👤 کاربر تلگرام: {{ .TelegramID }}\r\n",
|
||
"exhaustedMsg": "🚨 {{ .Type }} بهاتمامرسیدهاست:\r\n",
|
||
"exhaustedCount": "🚨 تعداد {{ .Type }} بهاتمامرسیدهاست:\r\n",
|
||
"onlinesCount": "🌐 کاربرانآنلاین: {{ .Count }}\r\n",
|
||
"disabled": "🛑 غیرفعال: {{ .Disabled }}\r\n",
|
||
"depleteSoon": "🔜 بهزودیبهپایانخواهدرسید: {{ .Deplete }}\r\n\r\n",
|
||
"backupTime": "🗄 زمانپشتیبانگیری: {{ .Time }}\r\n",
|
||
"refreshedOn": "\r\n📋🔄 تازهسازی شده در: {{ .Time }}\r\n\r\n",
|
||
"yes": "✅ بله",
|
||
"no": "❌ خیر",
|
||
"received_id": "🔑📥 شناسه بهروزرسانی شد.",
|
||
"received_password": "🔑📥 رمز عبور بهروزرسانی شد.",
|
||
"received_email": "📧📥 ایمیل بهروزرسانی شد.",
|
||
"received_comment": "💬📥 نظر بهروزرسانی شد.",
|
||
"id_prompt": "🔑 شناسه پیشفرض: {{ .ClientId }}\n\nشناسه خود را وارد کنید.",
|
||
"pass_prompt": "🔑 رمز عبور پیشفرض: {{ .ClientPassword }}\n\nرمز عبور خود را وارد کنید.",
|
||
"email_prompt": "📧 ایمیل پیشفرض: {{ .ClientEmail }}\n\nایمیل خود را وارد کنید.",
|
||
"comment_prompt": "💬 نظر پیشفرض: {{ .ClientComment }}\n\nنظر خود را وارد کنید.",
|
||
"inbound_client_data_id": "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n📊 ترافیک: {{ .ClientTraffic }}\n📅 تاریخ انقضا: {{ .ClientExp }}\n🌐 محدودیت IP: {{ .IpLimit }}\n💬 توضیح: {{ .ClientComment }}\n\nاکنون میتونی مشتری را به ورودی اضافه کنی!",
|
||
"inbound_client_data_pass": "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 رمز عبور: {{ .ClientPass }}\n📧 ایمیل: {{ .ClientEmail }}\n📊 ترافیک: {{ .ClientTraffic }}\n📅 تاریخ انقضا: {{ .ClientExp }}\n🌐 محدودیت IP: {{ .IpLimit }}\n💬 توضیح: {{ .ClientComment }}\n\nاکنون میتونی مشتری را به ورودی اضافه کنی!",
|
||
"cancel": "❌ فرآیند لغو شد! \n\nمیتوانید هر زمان که خواستید /start را دوباره اجرا کنید. 🔄",
|
||
"error_add_client": "⚠️ خطا:\n\n {{ .error }}",
|
||
"using_default_value": "باشه، از مقدار پیشفرض استفاده میکنم. 😊",
|
||
"incorrect_input": "ورودی شما معتبر نیست.\nعبارتها باید بدون فاصله باشند.\nمثال صحیح: aaaaaa\nمثال نادرست: aaa aaa 🚫",
|
||
"AreYouSure": "مطمئنی؟ 🤔",
|
||
"SuccessResetTraffic": "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ✅ موفقیتآمیز",
|
||
"FailedResetTraffic": "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ❌ ناموفق \n\n🛠️ خطا: [ {{ .ErrorMessage }} ]",
|
||
"FinishProcess": "🔚 فرآیند بازنشانی ترافیک برای همه مشتریان به پایان رسید."
|
||
},
|
||
"buttons": {
|
||
"closeKeyboard": "❌ بستن کیبورد",
|
||
"cancel": "❌ لغو",
|
||
"cancelReset": "❌ لغو تنظیم مجدد",
|
||
"cancelIpLimit": "❌ لغو محدودیت آیپی",
|
||
"confirmResetTraffic": "✅ تأیید تنظیم مجدد ترافیک؟",
|
||
"confirmClearIps": "✅ تأیید پاکسازی آدرسهای آیپی؟",
|
||
"confirmRemoveTGUser": "✅ تأیید حذف کاربر تلگرام؟",
|
||
"confirmToggle": "✅ تایید فعال/غیرفعال کردن کاربر؟",
|
||
"dbBackup": "دریافت پشتیبان",
|
||
"serverUsage": "استفاده از سیستم",
|
||
"getInbounds": "دریافت ورودیها",
|
||
"depleteSoon": "بهزودی به پایان خواهد رسید",
|
||
"clientUsage": "دریافت آمار کاربر",
|
||
"onlines": "کاربران آنلاین",
|
||
"commands": "دستورات",
|
||
"refresh": "🔄 تازهسازی",
|
||
"clearIPs": "❌ پاکسازی آدرسها",
|
||
"removeTGUser": "❌ حذف کاربر تلگرام",
|
||
"selectTGUser": "👤 انتخاب کاربر تلگرام",
|
||
"selectOneTGUser": "👤 یک کاربر تلگرام را انتخاب کنید:",
|
||
"resetTraffic": "📈 تنظیم مجدد ترافیک",
|
||
"resetExpire": "📅 تنظیم مجدد تاریخ انقضا",
|
||
"ipLog": "🔢 لاگ آدرسهای IP",
|
||
"ipLimit": "🔢 محدودیت IP",
|
||
"setTGUser": "👤 تنظیم کاربر تلگرام",
|
||
"toggle": "🔘 فعال / غیرفعال",
|
||
"custom": "🔢 سفارشی",
|
||
"confirmNumber": "✅ تایید: {{ .Num }}",
|
||
"confirmNumberAdd": "✅ تایید اضافه کردن: {{ .Num }}",
|
||
"limitTraffic": "🚧 محدودیت ترافیک",
|
||
"getBanLogs": "گزارش های بلوک را دریافت کنید",
|
||
"allClients": "همه مشتریان",
|
||
"addClient": "افزودن مشتری",
|
||
"submitDisable": "ارسال به عنوان غیرفعال ☑️",
|
||
"submitEnable": "ارسال به عنوان فعال ✅",
|
||
"use_default": "🏷️ استفاده از پیشفرض",
|
||
"change_id": "⚙️🔑 شناسه",
|
||
"change_password": "⚙️🔑 گذرواژه",
|
||
"change_email": "⚙️📧 ایمیل",
|
||
"change_comment": "⚙️💬 نظر",
|
||
"change_flow": "⚙️🚦 جریان",
|
||
"ResetAllTraffics": "بازنشانی همه ترافیکها",
|
||
"SortedTrafficUsageReport": "گزارش استفاده از ترافیک مرتبشده"
|
||
},
|
||
"answers": {
|
||
"successfulOperation": "✅ انجام شد!",
|
||
"errorOperation": "❗ خطا در عملیات.",
|
||
"getInboundsFailed": "❌ دریافت ورودیها با خطا مواجه شد.",
|
||
"getClientsFailed": "❌ دریافت مشتریان با شکست مواجه شد.",
|
||
"canceled": "❌ {{ .Email }} : عملیات لغو شد.",
|
||
"clientRefreshSuccess": "✅ {{ .Email }} : کلاینت با موفقیت تازهسازی شد.",
|
||
"IpRefreshSuccess": "✅ {{ .Email }} : آدرسها با موفقیت تازهسازی شدند.",
|
||
"TGIdRefreshSuccess": "✅ {{ .Email }} : کاربر تلگرام کلاینت با موفقیت تازهسازی شد.",
|
||
"resetTrafficSuccess": "✅ {{ .Email }} : ترافیک با موفقیت تنظیم مجدد شد.",
|
||
"setTrafficLimitSuccess": "✅ {{ .Email }} : محدودیت ترافیک با موفقیت ذخیره شد.",
|
||
"expireResetSuccess": "✅ {{ .Email }} : تاریخ انقضا با موفقیت تنظیم مجدد شد.",
|
||
"resetIpSuccess": "✅ {{ .Email }} : محدودیت آدرس IP {{ .Count }} با موفقیت ذخیره شد.",
|
||
"clearIpSuccess": "✅ {{ .Email }} : آدرسها با موفقیت پاکسازی شدند.",
|
||
"getIpLog": "✅ {{ .Email }} : دریافت لاگ آدرسهای IP.",
|
||
"getUserInfo": "✅ {{ .Email }} : دریافت اطلاعات کاربر تلگرام.",
|
||
"removedTGUserSuccess": "✅ {{ .Email }} : کاربر تلگرام با موفقیت حذف شد.",
|
||
"enableSuccess": "✅ {{ .Email }} : با موفقیت فعال شد.",
|
||
"disableSuccess": "✅ {{ .Email }} : با موفقیت غیرفعال شد.",
|
||
"askToAddUserId": "پیکربندی شما یافت نشد!\r\nلطفاً از مدیر خود بخواهید که شناسه کاربر تلگرام خود را در پیکربندی (های) خود استفاده کند.\r\n\r\nشناسه کاربری شما: <code>{{ .TgUserID }}</code>",
|
||
"chooseClient": "یک مشتری برای ورودی {{ .Inbound }} انتخاب کنید",
|
||
"chooseInbound": "یک ورودی انتخاب کنید"
|
||
}
|
||
}
|
||
} |