Add Persian (fa) translations (#13100)

* Add Persian (fa) translations

* Update index.ts

Add fa to LOCALE_LOADERS

* Update fu.ts

Add fa item

* Update index.vue

enable Persian (fa) in language selector

* Update login-form.vue

enable Persian (fa) in language selector

* Create fa.yaml

add fa backend translations

* Update i18n.go

Add fa to langFiles variable

* Add Persian (fa) Translation to agent
This commit is contained in:
Reza Alipour Kondori
2026-06-26 17:17:32 +08:00
committed by GitHub
parent 2de7079dd2
commit fb483ecb90
11 changed files with 6561 additions and 0 deletions
+1
View File
@@ -132,6 +132,7 @@ type Locale struct {
Ko string `json:"ko"`
Tr string `json:"tr"`
Es string `json:"es-es" yaml:"es-es"`
Fa string `json:"fa"`
}
type AppForm struct {
+1
View File
@@ -24,6 +24,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 {
+613
View File
@@ -0,0 +1,613 @@
ErrInvalidParams: 'درخواست نامعتبر: {{ .detail }}'
ErrTokenParse: 'خطا در توکن: {{ .detail }}'
ErrInitialPassword: 'رمز عبور اصلی اشتباه است'
ErrInternalServer: 'خطای داخلی سرور: {{ .detail }}'
ErrFileAINotEnabled: 'خلاصه‌سازی هوش مصنوعی مدیریت فایل نیاز به فعال بودن حساب هوش مصنوعی در مدیریت فایل دارد. جستجوی صرفاً محتوایی زمانی که هوش مصنوعی خاموش است همچنان کار می‌کند.'
ErrFileAISearchBadPattern: 'الگوی جستجوی فایل نامعتبر است (عبارت منظم یا کل کلمه): {{ .detail }}'
ErrWgetRemoteFailed: 'دانلود از راه دور ناموفق بود یا URL قابل دسترس نیست: {{ .detail }}'
ErrWgetInvalidContentType: 'URL از راه دور فایلی را برنگرداند (احتمالاً صفحه خطا)، {{ .detail }}'
ErrWgetProxyNotConfigured: 'ابتدا یک سرور پروکسی در تنظیمات پنل پیکربندی کنید'
ErrWgetProxyInvalid: 'آدرس سرور پروکسی نامعتبر است: {{ .detail }}'
ErrRecordExist: 'رکورد از قبل وجود دارد'
ErrRecordNotFound: 'رکورد یافت نشد'
ErrStructTransform: 'تبدیل نوع ناموفق بود: {{ .err }}'
ErrNotLogin: 'وارد نشده‌اید: {{ .detail }}'
ErrPasswordExpired: 'رمز عبور منقضی شده است: {{ .detail }}'
ErrNotSupportType: 'نوع پشتیبانی نمی‌شود: {{ .name }}'
ErrAlertMethodNotSupported: 'این نسخه از این روش هشدار پشتیبانی نمی‌کند'
ErrProxy: 'درخواست ناموفق بود: {{ .detail }}'
ErrApiConfigStatusInvalid: 'دسترسی API غیرفعال است: {{ .detail }}'
ErrApiConfigKeyInvalid: 'کلید API نامعتبر است: {{ .detail }}'
ErrApiConfigIPInvalid: 'IP در لیست سفید API نیست: {{ .detail }}'
ErrApiConfigDisable: 'نقطه پایانی از طریق API مجاز نیست: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'مهر زمانی API نامعتبر است: {{ .detail }}'
ErrShutDown: 'دستور به صورت دستی متوقف شد'
ErrMinQuickJump: 'حداقل یک ورودی پرش سریع تنظیم کنید'
ErrMaxQuickJump: 'حداکثر ۴ ورودی پرش سریع'
#common
ErrUsernameIsExist: 'نام کاربری از قبل وجود دارد'
ErrNameIsExist: 'نام از قبل وجود دارد'
ErrDemoEnvironment: 'در محیط آزمایشی غیرفعال است'
ErrCmdTimeout: 'زمان اجرای دستور به پایان رسید'
ErrCmdIllegal: 'دستور شامل کاراکترهای غیرمجاز است'
ErrPortExist: 'پورت {{ .port }} قبلاً توسط {{ .type }} [{{ .name }}] اشغال شده است'
TYPE_APP: 'برنامه'
TYPE_RUNTIME: 'محیط اجرا'
TYPE_DOMAIN: 'دامنه'
ErrTypePort: 'فرمت پورت نامعتبر است: {{ .name }}'
ErrTypePortRange: 'محدوده پورت باید ۱-۶۵۵۳۵ باشد'
Success: 'موفق'
Failed: 'ناموفق'
SystemRestart: 'وظیفه به دلیل راه‌اندازی مجدد سیستم قطع شد'
ErrGroupIsDefault: 'گروه پیش‌فرض، قابل حذف نیست'
ErrGroupIsInWebsiteUse: 'گروه توسط یک وب‌سایت در حال استفاده است'
Decrypt: "رمزگشایی"
#agent
ErrAgentAccountBound: 'حساب به یک عامل متصل است و قابل حذف نیست'
ErrTerminalAIAccountInUse: 'این حساب مدل در حال حاضر توسط ترمینال هوش مصنوعی استفاده می‌شود. حساب را در تنظیمات ترمینال هوش مصنوعی تغییر دهید یا ترمینال هوش مصنوعی را غیرفعال کرده و دوباره تلاش کنید.'
ErrAgentAccountUnavailable: 'اتصال حساب در دسترس نیست: {{ .err }}'
ErrAgentProviderNotSupported: 'ارائه‌دهنده عامل پشتیبانی نمی‌شود'
ErrAgentAccountRequired: 'ابتدا یک حساب عامل انتخاب کنید'
ErrAgentAccountNotVerified: 'حساب عامل تأیید نشده است'
ErrAgentAccountModelsRequired: 'لطفاً حداقل یک مدل پیکربندی کنید'
ErrAgentAccountSingleInitialModel: 'فقط یک مدل اولیه می‌تواند در هنگام ایجاد حساب پیکربندی شود'
ErrAgentModelNotInAccount: 'مدل در حساب انتخاب شده پیکربندی نشده است'
ErrAgentFallbackModelDuplicate: 'مدل‌های جایگزین نمی‌توانند تکراری باشند'
ErrAgentFallbackModelPrimary: 'مدل جایگزین نمی‌تواند با مدل اصلی یکی باشد'
ErrAgentModelInUse: 'یک عامل متصل هنوز از این مدل استفاده می‌کند: {{ .name }}'
ErrAgentBaseURLRequired: 'آدرس پایه الزامی است'
ErrAgentApiKeyRequired: 'کلید API الزامی است'
ErrAgentComposeRequired: 'محتوای Compose الزامی است'
ErrAgentIDRequired: 'شناسه عامل الزامی است'
ErrAgentAccountIDRequired: 'شناسه حساب الزامی است'
ErrAgentLimitReached: 'نسخه انجمن تا {{ .max }} عامل هوش مصنوعی را پشتیبانی می‌کند. برای عامل‌های نامحدود به نسخه تجاری ارتقاء دهید'
ErrAgentWebsiteBound: 'این عامل قبلاً به یک وب‌سایت متصل است'
ErrAgentWebsiteTypeUnsupported: 'فقط وب‌سایت‌های پراکسی یا استاتیک قابل اتصال هستند'
ErrAgentWebsiteInUse: 'این وب‌سایت قبلاً به عامل دیگری متصل است'
ErrAgentWebsiteUnbindUnsupported: 'وب‌سایت‌های استقرار یافته را نمی‌توان به صورت دستی قطع اتصال کرد'
ErrHermesPairingCodeUnavailable: 'کد جفت‌سازی به طور موقت در هرمس در دسترس نیست، احتمالاً به دلیل مشکلات شبکه. لطفاً بعداً دوباره تلاش کنید.'
ErrHermesFeishuGroupAllowlistRequiresAllowlist: 'وقتی خط مشی گروه فیشو لیست سفید باشد، خط مشی DM نمی‌تواند کد جفت‌سازی باشد.'
#backup
Localhost: 'محلی'
ErrBackupInUsed: 'حساب پشتیبان توسط یک وظیفه زمان‌بندی در حال استفاده است'
ErrBackupCheck: 'تست اتصال حساب پشتیبان ناموفق بود: {{ .err }}'
ErrBackupLocalDelete: 'حساب‌های پشتیبان محلی قابل حذف نیستند'
ErrBackupLocalCreate: 'حساب‌های پشتیبان محلی قابل ایجاد نیستند'
ErrAlertConfigInUse: 'پیکربندی هشدار در حال استفاده است و قابل حذف نیست'
ErrAlertConfigPhoneExist: 'شماره تلفن از قبل وجود دارد'
#app
ErrPortInUsed: 'پورت {{ .detail }} قبلاً اشغال شده است!'
ErrAppLimit: 'محدودیت نصب برنامه رسیده است'
ErrNotInstall: 'برنامه نصب نشده است'
ErrPortInOtherApp: 'پورت {{ .port }} قبلاً توسط برنامه {{ .apps }} اشغال شده است!'
ErrDbUserNotValid: 'نام کاربری/رمز عبور پایگاه داده مطابقت ندارد'
ErrUpdateBuWebsite: 'برنامه به‌روزرسانی شد، اما به‌روزرسانی پیکربندی وب‌سایت ناموفق بود'
Err1PanelNetworkFailed: 'ایجاد شبکه پیش‌فرض کانتینر ناموفق بود! {{ .detail }}'
ErrFileParse: 'تجزیه فایل docker-compose برنامه ناموفق بود'
ErrInstallDirNotFound: 'دایرکتوری نصب یافت نشد؛ از حذف اجباری استفاده کنید'
AppStoreIsUpToDate: 'فروشگاه برنامه از قبل آخرین نسخه است'
LocalAppVersionNull: 'برنامه {{ .name }} هیچ نسخه همگام‌سازی شده‌ای ندارد'
LocalAppVersionErr: 'همگام‌سازی نسخه {{ .version }} برنامه {{ .name }} ناموفق بود: {{ .err }}'
ErrFileNotFound: 'فایل {{ .name }} وجود ندارد'
ErrFileParseApp: 'تجزیه {{ .name }} ناموفق بود: {{ .err }}'
ErrAppDirNull: 'پوشه نسخه وجود ندارد'
LocalAppErr: 'همگام‌سازی برنامه {{ .name }} ناموفق بود: {{ .err }}'
ErrContainerName: 'نام کانتینر از قبل وجود دارد'
ErrCreateHttpClient: 'ایجاد درخواست HTTP ناموفق بود: {{ .err }}'
ErrHttpReqTimeOut: 'زمان درخواست HTTP به پایان رسید: {{ .err }}'
ErrHttpReqFailed: 'درخواست HTTP ناموفق بود: {{ .err }}'
ErrNoSuchHost: 'تفکیک میزبان ناموفق بود: {{ .err }}'
ErrHttpReqNotFound: 'منبع درخواستی یافت نشد: {{ .err }}'
ErrContainerNotFound: 'کانتینر {{ .name }} وجود ندارد'
ErrContainerMsg: 'کانتینر {{ .name }} غیرعادی است؛ لاگ‌ها را بررسی کنید'
ErrAppBackup: 'پشتیبان‌گیری از برنامه ناموفق بود: {{ .name }} {{ .err }}'
ErrVersionTooLow: 'نسخه 1Panel برای به‌روزرسانی فروشگاه برنامه بسیار پایین است'
ErrAppNameExist: 'نام برنامه از قبل وجود دارد'
ErrAppInstallNameExist: 'نام نصب برنامه {{ .name }} از قبل وجود دارد'
AppStoreIsSyncing: 'فروشگاه برنامه در حال همگام‌سازی است؛ بعداً دوباره تلاش کنید'
ErrGetCompose: 'خواندن docker-compose.yml ناموفق بود: {{ .detail }}'
ErrAppWarn: 'وضعیت برنامه غیرعادی است؛ لاگ‌ها را بررسی کنید'
ErrAppParamKey: 'پارامتر برنامه نامعتبر است: {{ .name }}'
ErrAppUpgrade: 'ارتقاء برنامه ناموفق بود: {{ .name }} {{ .err }}'
AppRecover: 'بازگشت برنامه {{ .name }}'
PullImageStart: 'دریافت تصویر [{{ .name }}]'
PullImageSuccess: 'تصویر دریافت شد'
AppStoreSyncSuccess: 'فروشگاه برنامه همگام‌سازی شد'
SyncAppDetail: 'همگام‌سازی پیکربندی برنامه'
AppVersionNotMatch: 'رد شدن {{ .name }}: نیاز به 1Panel جدیدتر دارد'
MoveSiteDir: 'دایرکتوری وب‌سایت تغییر کرد؛ مهاجرت دایرکتوری OpenResty به {{ .name }}'
MoveSiteDirSuccess: 'دایرکتوری وب‌سایت مهاجرت کرد'
DeleteRuntimePHP: 'حذف محیط اجرا PHP'
CustomAppStoreFileValid: 'بسته فروشگاه برنامه باید .tar.gz باشد'
PullImageTimeout: 'زمان دریافت تصویر به پایان رسید؛ آینه دیگری را امتحان کنید'
ErrAppIsDown: 'برنامه {{ .name }} غیرعادی است'
ErrCustomApps: 'برنامه‌های نصب شده شناسایی شدند؛ ابتدا حذف نصب کنید'
ErrCustomRuntimes: 'محیط‌های اجرایی نصب شده شناسایی شدند؛ ابتدا حذف کنید'
ErrAppVersionDeprecated: "برنامه {{ .name }} با نسخه فعلی 1Panel سازگار نیست، رد شد"
ErrDockerFailed: 'Docker غیرعادی است؛ وضعیت سرویس را بررسی کنید'
ErrDockerComposeCmdNotFound: 'Docker Compose روی میزبان یافت نشد'
UseExistImage: 'تصویر وجود دارد؛ استفاده از تصویر موجود'
ErrDatabaseNotFound: 'پایگاه داده یافت نشد: {{ .name }}'
#ssh
ExportIP: "IP ورود"
ExportArea: "مکان"
ExportPort: "پورت"
ExportAuthMode: "روش ورود"
ExportUser: "کاربر"
ExportStatus: "وضعیت ورود"
ExportDate: "زمان"
#file
ErrFileCanNotRead: 'پیش‌نمایش فایل پشتیبانی نمی‌شود'
ErrSensitiveFileRead: 'خواندن فایل‌های حساس مجاز نیست'
ErrFileToLarge: 'فایل بزرگتر از ۱۰ مگابایت است'
ErrPathNotFound: 'دایرکتوری وجود ندارد'
ErrMovePathFailed: 'مسیر هدف نمی‌تواند شامل مسیر منبع باشد'
ErrLinkPathNotFound: 'مسیر هدف وجود ندارد!'
ErrFileIsExist: 'فایل یا پوشه از قبل وجود دارد!'
ErrFileUpload: 'بارگذاری ناموفق بود: {{ .name }} {{ .detail }}'
ErrFileDownloadDir: 'دانلود دایرکتوری پشتیبانی نمی‌شود'
ErrFileSharePath: 'مسیر فایل نامعتبر است یا هدف یک فایل نیست'
ErrFileShareInvalid: 'لینک اشتراک نامعتبر یا منقضی شده است'
ErrFileShareExpired: 'لینک اشتراک منقضی شده است'
ErrFileSharePassword: 'رمز عبور اشتراک اشتباه است'
ErrFileShareExhausted: 'محدودیت دانلود برای این اشتراک رسیده است'
ErrFileSharePasswordPolicy: 'رمز عبور باید حداقل ۴ کاراکتر باشد'
ErrFileShareRateLimit: 'تعداد درخواست‌ها زیاد است، لطفاً بعداً دوباره تلاش کنید'
ErrCmdNotFound: 'دستور یافت نشد: {{ .name }}'
ErrSourcePathNotFound: 'دایرکتوری منبع وجود ندارد'
ErrFavoriteExist: 'مسیر از قبل در نشان‌ها وجود دارد'
ErrInvalidChar: 'کاراکترهای غیرمجاز مجاز نیستند'
ErrPathNotDelete: 'دایرکتوری انتخاب شده قابل حذف نیست'
ErrLogFileToLarge: 'فایل لاگ بیش از ۵۰۰ مگابایت است'
FileDropFailed: 'پاک‌سازی فایل ناموفق بود: {{ .name }} {{ .err }}'
FileDropSuccess: 'پاک‌سازی {{ .name }}؛ فایل‌ها: {{ .count }}، آزاد شده: {{ .size }}'
FileDropSum: 'پاک‌سازی انجام شد؛ فایل‌ها: {{ .count }}، آزاد شده: {{ .size }}'
ErrBadDecrypt: 'رمز عبور آرشیو اشتباه است؛ استخراج ناموفق بود'
#website
ErrAliasIsExist: 'نام مستعار از قبل وجود دارد'
ErrBackupMatch: 'داده‌های پشتیبان مطابقت ندارند: {{ .detail }}'
ErrBackupExist: 'داده‌های منبع پشتیبان وجود ندارند: {{ .detail }}'
ErrPHPResource: 'تغییر محیط اجرای محلی پشتیبانی نمی‌شود'
ErrPathPermission: 'پوشه غیر ۱۰۰۰:۱۰۰۰ در دایرکتوری ایندکس ممکن است باعث خطای دسترسی شود'
ErrDomainIsUsed: 'نام دامنه قبلاً توسط وب‌سایت [{{ .name }}] استفاده می‌شود'
ErrDomainFormat: 'فرمت دامنه نامعتبر است: {{ .name }}'
ErrDefaultAlias: 'default رزرو شده است؛ از نام مستعار دیگری استفاده کنید'
ErrParentWebsite: 'ابتدا زیرسایت {{ .name }} را حذف کنید'
ErrBuildDirNotFound: 'دایرکتوری ساخت وجود ندارد'
ErrImageNotExist: 'تصویر محیط اجرا یافت نشد: {{ .name }}'
ErrProxyIsUsed: 'تعادل بار توسط پراکسی معکوس استفاده می‌شود'
ErrSSLValid: 'فایل گواهی نامعتبر است'
ErrWebsiteDir: 'یک زیردایرکتوری در زیر دایرکتوری وب‌سایت انتخاب کنید'
ErrComposerFileNotFound: "فایل composer.json وجود ندارد"
ErrRuntimeNoPort: 'پورت محیط اجرا تنظیم نشده است'
ErrRuntimeProjectDirContainsCodeDir: 'دایرکتوری محیط اجرا شامل دایرکتوری پروژه انتخاب شده است. لطفاً دایرکتوری پروژه دیگری را انتخاب کرده و دوباره ایجاد کنید.'
Status: 'وضعیت'
start: 'شروع'
stop: 'توقف'
restart: 'راه‌اندازی مجدد'
kill: 'توقف اجباری'
pause: 'مکث'
unpause: 'ادامه'
remove: 'حذف'
delete: 'حذف'
ErrDefaultWebsite: 'وب‌سایت پیش‌فرض از قبل تنظیم شده است؛ ابتدا آن را لغو تنظیم کنید'
SSL: 'گواهی'
Set: 'تنظیمات'
#ssl
ErrSSLCannotDelete: 'گواهی {{ .name }} توسط یک وب‌سایت در حال استفاده است'
ErrAccountCannotDelete: 'حساب به یک گواهی متصل است و قابل حذف نیست'
ErrSSLApply: 'گواهی تمدید شد؛ بارگذاری مجدد OpenResty ناموفق بود'
ErrEmailIsExist: 'ایمیل از قبل وجود دارد'
ErrSSLKeyNotFound: 'فایل کلید خصوصی وجود ندارد'
ErrSSLCertificateNotFound: 'فایل گواهی وجود ندارد'
ErrSSLKeyFormat: 'تأیید فایل کلید خصوصی ناموفق بود'
ErrSSLCertificateFormat: 'فرمت گواهی نامعتبر است؛ از PEM استفاده کنید'
ErrEabKidOrEabHmacKeyCannotBlank: 'EabKid یا EabHmacKey نمی‌توانند خالی باشند'
ErrOpenrestyNotFound: 'حالت HTTP نیاز به OpenResty دارد'
ApplySSLStart: 'شروع درخواست گواهی. دامنه: [{{ .domain }}]، روش: [{{ .type }}]'
dnsAccount: 'خودکار DNS'
dnsManual: 'دستی DNS'
http: 'HTTP'
ApplySSLFailed: 'درخواست گواهی برای [{{ .domain }}] ناموفق بود: {{ .detail }}'
ApplySSLSuccess: 'گواهی برای [{{ .domain }}] صادر شد'
DNSAccountName: 'حساب DNS [{{ .name }}]، ارائه‌دهنده [{{ .type }}]'
PushDirLog: 'گواهی به دایرکتوری [{{ .path }}] ارسال شد {{ .status }}'
ErrDeleteCAWithSSL: 'CA گواهی‌هایی صادر کرده است؛ قابل حذف نیست'
ErrDeleteWithPanelSSL: 'گواهی در تنظیمات SSL پنل در حال استفاده است'
ErrDefaultCA: 'مرجع پیش‌فرض قابل حذف نیست'
ApplyWebSiteSSLLog: 'به‌روزرسانی گواهی وب‌سایت: {{ .name }}'
ErrUpdateWebsiteSSL: 'به‌روزرسانی گواهی وب‌سایت {{ .name }} ناموفق بود: {{ .err }}'
ApplyWebSiteSSLSuccess: 'گواهی وب‌سایت به‌روزرسانی شد'
ErrExecShell: 'اجرای اسکریپت ناموفق بود {{ .err }}'
ExecShellStart: 'اجرای اسکریپت'
ExecShellSuccess: 'اسکریپت با موفقیت اجرا شد'
StartUpdateSystemSSL: 'به‌روزرسانی گواهی سیستم'
UpdateSystemSSLSuccess: 'گواهی سیستم به‌روزرسانی شد'
ErrWildcardDomain: 'گواهی‌های عام در حالت HTTP پشتیبانی نمی‌شوند'
ErrApplySSLCanNotDelete: 'گواهی {{ .name }} در حال صدور است و هنوز قابل حذف نیست'
StartPushSSLToNode: 'ارسال گواهی به گره'
PushSSLToNodeFailed: "ارسال گواهی به گره ناموفق بود: {{ .err }}"
PushSSLToNodeSuccess: 'گواهی به گره ارسال شد'
#mysql
ErrUserIsExist: 'کاربر از قبل وجود دارد'
ErrDatabaseIsExist: 'پایگاه داده از قبل وجود دارد'
ErrExecTimeOut: 'زمان اجرای SQL به پایان رسید'
ErrRemoteExist: 'نام پایگاه داده از راه دور از قبل وجود دارد'
ErrLocalExist: 'نام پایگاه داده محلی از قبل وجود دارد'
RemoteBackup: 'قبل از پشتیبان‌گیری از پایگاه داده از راه دور، کانتینر پایگاه داده محلی را با تصویر {{ .name }} راه‌اندازی کنید'
RemoteRecover: 'قبل از بازیابی پایگاه داده از راه دور، کانتینر پایگاه داده محلی را با تصویر {{ .name }} راه‌اندازی کنید'
Arg: "آرگومان"
#redis
ErrTypeOfRedis: 'نوع فایل پشتیبان با حالت ماندگاری فعلی مطابقت ندارد'
#container
ErrInUsed: "{{ .detail }} در حال استفاده است و قابل حذف نیست!"
ErrObjectInUsed: "این شی در حال استفاده است و قابل حذف نیست!"
ErrObjectBeDependent: "این تصویر توسط تصاویر دیگر ارجاع داده شده است و قابل حذف نیست!"
ErrPortRules: 'تعداد پورت‌ها مطابقت ندارد'
ErrPgImagePull: 'زمان دریافت تصویر به پایان رسید؛ شتاب را پیکربندی کنید یا {{ .name }} را به صورت دستی دریافت کنید'
PruneHelper: "پاک‌سازی {{ .name }} فضای دیسک {{ .size }} را آزاد کرد"
ImageRemoveHelper: "تصویر {{ .name }} حذف شد، فضای دیسک {{ .size }} آزاد شد"
BuildCache: 'کش ساخت'
Volume: 'حجم'
Network: "شبکه"
PruneStart: 'پاک‌سازی در حال انجام است'
ContainerBackupPrepare: 'آماده‌سازی فضای کاری پشتیبان کانتینر'
ContainerBackupStop: 'توقف کانتینر قبل از پشتیبان‌گیری'
ContainerBackupInspect: 'بررسی و شبکه کانتینر پشتیبان'
ContainerBackupMounts: 'نصب‌های کانتینر پشتیبان'
ContainerBackupMeta: 'نوشتن فراداده پشتیبان کانتینر'
ContainerBackupStart: 'شروع کانتینر پس از پشتیبان‌گیری'
ContainerRecoverPrepare: 'آماده‌سازی فضای کاری بازیابی کانتینر'
ContainerRecoverExtract: 'استخراج آرشیو پشتیبان کانتینر'
ContainerRecoverParse: 'بارگذاری فراداده پشتیبان کانتینر'
ContainerRecoverCreate: 'بازآفرینی کانتینر'
ContainerRecoverMounts: 'بازیابی نصب‌های کانتینر'
ContainerRecoverStart: 'شروع کانتینر بازیابی شده'
ContainerRecoverCleanup: 'پاک‌سازی فضای کاری بازیابی کانتینر'
ComposeBackupPrepare: 'آماده‌سازی فضای کاری پشتیبان Compose'
ComposeBackupStop: 'توقف Compose قبل از پشتیبان‌گیری'
ComposeBackupFiles: 'پشتیبان‌گیری از فایل‌های Compose'
ComposeBackupContainers: 'پشتیبان‌گیری از کانتینرهای Compose'
ComposeBackupMeta: 'نوشتن فراداده پشتیبان Compose'
ComposeBackupStart: 'شروع Compose پس از پشتیبان‌گیری'
ComposeBackupCleanup: 'پاک‌سازی فضای کاری پشتیبان Compose'
ComposeRecoverPrepare: 'آماده‌سازی فضای کاری بازیابی Compose'
ComposeRecoverExtract: 'استخراج آرشیو پشتیبان Compose'
ComposeRecoverMeta: 'بارگذاری فراداده پشتیبان Compose'
ComposeRecoverMetaLogName: 'فراداده بازیابی Compose: name={{ .name }}'
ComposeRecoverMetaLogPath: 'فراداده بازیابی Compose: backupPath={{ .backupPath }} targetDir={{ .targetDir }}'
ComposeRecoverMetaLogCount: 'فراداده بازیابی Compose: files={{ .files }} containers={{ .containers }}'
ComposeRecoverFiles: 'بازیابی فایل‌های Compose'
ComposeRecoverContainers: 'بازیابی کانتینرهای Compose'
ComposeRecoverRecord: 'ذخیره رکورد Compose'
ComposeRecoverCleanup: 'پاک‌سازی فضای کاری بازیابی Compose'
#runtime
ErrFileNotExist: 'فایل منبع یافت نشد: {{ .detail }}'
ErrImageBuildErr: 'ساخت تصویر ناموفق بود'
ErrImageExist: "تصویر از قبل وجود دارد. از نام تصویر دیگری استفاده کنید."
ErrDelWithWebsite: 'محیط اجرا به یک وب‌سایت متصل است و قابل حذف نیست'
ErrRuntimeStart: 'شروع ناموفق بود'
ErrPackageJsonNotFound: 'فایل package.json وجود ندارد'
ErrScriptsNotFound: 'هیچ بخش scripts در package.json یافت نشد'
ErrContainerNameNotFound: 'نام کانتینر یافت نشد؛ .env را بررسی کنید'
ErrNodeModulesNotFound: 'node_modules یافت نشد؛ محیط اجرا را ویرایش کنید یا منتظر شروع باشید'
ErrContainerNameIsNull: 'نام کانتینر خالی است'
ErrPHPPortIsDefault: 'پورت ۹۰۰۰ به عنوان پیش‌فرض رزرو شده است؛ از پورت دیگری استفاده کنید'
ErrPHPRuntimePortFailed: 'پورت {{ .name }} قبلاً توسط این محیط اجرا استفاده می‌شود'
#tool
ErrConfigNotFound: 'فایل پیکربندی وجود ندارد'
ErrConfigParse: 'فرمت فایل پیکربندی نامعتبر است'
ErrConfigIsNull: 'فایل پیکربندی نمی‌تواند خالی باشد'
ErrConfigDirNotFound: 'دایرکتوری اجرا یافت نشد'
ErrConfigAlreadyExist: 'فایل پیکربندی با همین نام از قبل وجود دارد'
ErrUserFindErr: 'یافتن کاربر {{ .name }} ناموفق بود: {{ .err }}'
#cronjob
CutWebsiteLogSuccess: 'لاگ وب‌سایت چرخش یافت: {{ .name }} (پشتیبان: {{ .path }})'
HandleShell: 'اجرای اسکریپت {{ .name }}'
HandleCurl: 'درخواست به URL {{ .name }}'
HandleNtpSync: 'همگام‌سازی زمان سیستم'
HandleSystemClean: 'پاک‌سازی کش سیستم'
SystemLog: 'لاگ سیستم'
CutWebsiteLog: 'چرخش لاگ وب‌سایت'
FileOrDir: 'دایرکتوری / فایل'
UploadFile: 'بارگذاری پشتیبان {{ .file }} به {{ .backup }}'
Upload: "بارگذاری"
IgnoreBackupErr: 'پشتیبان‌گیری ناموفق بود: {{ .detail }} (نادیده گرفته شد)'
IgnoreUploadErr: 'بارگذاری ناموفق بود: {{ .detail }} (نادیده گرفته شد)'
LoadBackupFailed: 'دریافت اطلاعات اتصال حساب پشتیبان ناموفق بود: {{ .detail }}'
InExecuting: 'وظیفه در حال اجراست'
NoSuchResource: 'هیچ رکورد پشتیبان یافت نشد؛ رد شد'
CleanLog: 'پاک‌سازی لاگ'
CleanLogByName: 'پاک‌سازی لاگ‌های {{ .name }}'
WafIpGroupNotFound: "گروه IP WAF یافت نشد. به [ویژگی‌های پیشرفته -> WAF -> لیست سیاه/سفید -> گروه IP] بروید و با استفاده از دانلود از راه دور یکی را اضافه کنید."
#toolbox
ErrNotExistUser: 'کاربر وجود ندارد'
ErrBanAction: 'پیکربندی ناموفق بود: سرویس {{ .name }} در دسترس نیست'
ErrClamdscanNotFound: 'دستور clamdscan یافت نشد'
TaskSwapSet: 'تنظیم swap'
SetSwap: "تنظیم Swap {{ .path }} - {{ .size }}"
CreateSwap: 'ایجاد فایل swap'
FormatSwap: 'فرمت فایل swap'
EnableSwap: 'فعال‌سازی swap'
#tamper
CleanTamperSetting: 'پاک‌سازی تنظیمات حفاظتی قدیمی'
SetTamperWithRules: 'فعال‌سازی محافظت دایرکتوری بر اساس قوانین'
ProtectDir: "محافظت از دایرکتوری {{ .name }}"
IgnoreFile: "محافظت از فایل {{ .name }}"
TamperSetSuccessful: 'محافظت تنظیم شد. نظارت بر این دایرکتوری‌ها:'
#waf
ErrScope: 'این پیکربندی قابل تغییر نیست'
ErrStateChange: 'تغییر وضعیت ناموفق بود'
ErrRuleExist: 'قانون از قبل وجود دارد'
ErrRuleNotExist: 'قانون وجود ندارد'
ErrParseIP: 'فرمت IP نامعتبر است'
ErrDefaultIP: 'default رزرو شده است؛ از نام دیگری استفاده کنید'
ErrGroupInUse: 'گروه IP توسط قوانین لیست سیاه/سفید استفاده می‌شود'
ErrIPGroupAclUse: 'گروه IP توسط قوانین سفارشی وب‌سایت {{ .name }} استفاده می‌شود'
ErrGroupExist: 'نام گروه IP از قبل وجود دارد'
ErrIPRange: 'محدوده IP نامعتبر است'
ErrIPExist: 'IP از قبل وجود دارد'
urlDefense: 'قوانین URL'
urlHelper: 'URL مسدود شده'
dirFilter: 'فیلتر دایرکتوری'
xss: 'XSS'
phpExec: 'اجرای اسکریپت PHP'
oneWordTrojan: 'تروژان یک کلمه‌ای'
appFilter: 'فیلتر دایرکتوری خطرناک برنامه'
webShell: 'WebShell'
args: 'قوانین پارامتر'
protocolFilter: 'فیلتر پروتکل'
javaFilter: 'فیلتر فایل خطرناک جاوا'
scannerFilter: 'فیلتر اسکنر'
escapeFilter: 'فیلتر فرار'
customRule: 'قوانین سفارشی'
httpMethod: 'فیلتر روش HTTP'
fileExt: 'محدودیت‌های بارگذاری فایل'
defaultIpBlack: 'گروه IP مخرب'
cookie: 'قوانین کوکی'
urlBlack: 'لیست سیاه URL'
uaBlack: 'لیست سیاه User-Agent'
attackCount: 'محدودیت فرکانس حمله'
fileExtCheck: 'محدودیت‌های بارگذاری فایل'
geoRestrict: 'محدودیت‌های دسترسی منطقه‌ای'
unknownWebsite: 'دسترسی به دامنه غیرمجاز'
notFoundCount: 'محدودیت نرخ ۴۰۴'
headerDefense: 'قوانین هدر'
defaultUaBlack: 'قوانین User-Agent'
methodWhite: 'قوانین HTTP'
captcha: 'تأیید انسانی'
fiveSeconds: 'تأیید ۵ ثانیه‌ای'
vulnCheck: 'قوانین تکمیلی'
acl: 'قوانین سفارشی'
sql: 'تزریق SQL'
cc: 'محدودیت فرکانس دسترسی'
defaultUrlBlack: 'قوانین URL'
sqlInject: 'تزریق SQL'
ErrDBNotExist: 'پایگاه داده وجود ندارد'
allow: 'مجاز'
deny: 'ممنوع'
OpenrestyNotFound: 'OpenResty نصب نشده است'
remoteIpIsNull: "لیست IP خالی است"
OpenrestyVersionErr: 'نسخه OpenResty بسیار پایین است؛ به ۱.۲۷.۱.۲-۲-۲-focal ارتقاء دهید'
ErrFileTooLarge: 'فایل بزرگتر از ۱ مگابایت است و قابل بارگذاری نیست'
#task
TaskStart: '{{ .name }} [شروع]'
TaskEnd: '{{ .name }} [انجام شد]'
TaskFailed: 'وظیفه {{ .name }} ناموفق بود'
TaskTimeout: 'زمان وظیفه {{ .name }} به پایان رسید'
TaskSuccess: 'وظیفه {{ .name }} با موفقیت انجام شد'
TaskRetry: 'تلاش مجدد #{{ .name }}'
SubTaskSuccess: '{{ .name }} با موفقیت انجام شد'
SubTaskFailed: '{{ .name }} ناموفق بود: {{ .err }}'
TaskInstall: 'نصب'
TaskUninstall: 'حذف نصب'
TaskCreate: 'ایجاد'
TaskDelete: 'حذف'
TaskUpgrade: 'ارتقاء'
TaskUpdate: 'به‌روزرسانی'
TaskRestart: 'راه‌اندازی مجدد'
TaskProtect: "محافظت"
TaskBackup: 'پشتیبان‌گیری'
TaskRecover: 'بازیابی'
TaskRollback: 'بازگشت'
TaskPull: 'دریافت'
TaskCommit: 'ثبت'
TaskBuild: 'ساخت'
TaskPush: 'ارسال'
TaskClean: "پاک‌سازی"
TaskHandle: 'اجرا'
TaskImport: "واردات"
TaskExport: "خروجی"
Website: 'وب‌سایت'
App: 'برنامه'
Runtime: 'محیط اجرا'
Database: 'پایگاه داده'
ConfigFTP: 'ایجاد کاربر FTP {{ .name }}'
ConfigOpenresty: 'ایجاد فایل پیکربندی OpenResty'
InstallAppSuccess: 'برنامه {{ .name }} نصب شد'
ConfigRuntime: 'پیکربندی محیط اجرا'
ConfigApp: 'پیکربندی برنامه'
SuccessStatus: '{{ .name }} با موفقیت انجام شد'
FailedStatus: '{{ .name }} ناموفق بود: {{ .err }}'
HandleLink: 'پردازش لینک‌های برنامه'
HandleDatabaseApp: 'پردازش پارامترهای برنامه'
ExecShell: 'اجرای اسکریپت {{ .name }}'
PullImage: 'دریافت تصویر'
Start: 'شروع'
Run: 'شروع'
Stop: 'توقف'
Image: 'تصویر'
Compose: 'Compose'
Container: 'کانتینر'
AppLink: 'برنامه متصل'
EnableSSL: 'فعال‌سازی HTTPS'
AppStore: 'فروشگاه برنامه'
TaskSync: 'همگام‌سازی'
LocalApp: 'برنامه محلی'
SubTask: 'وظیفه فرعی'
RuntimeExtension: 'پسوند محیط اجرا'
TaskIsExecuting: 'وظیفه در حال اجراست'
CustomAppstore: 'مخزن برنامه سفارشی'
TaskExec: 'اجرا'
TaskBatch: "عملیات دسته‌ای"
FileConvert: 'تبدیل فایل'
# task - clam
Clamscan: "اسکن {{ .name }}"
TaskScan: "اسکن"
# task - ai
OllamaModelPull: 'دریافت مدل Ollama {{ .name }}'
OllamaModelSize: 'دریافت اندازه مدل Ollama: {{ .name }}'
AIBenchmarkRun: 'اجرای معیار سنجش هوش مصنوعی'
# task-snapshot
Snapshot: 'تصویر لحظه‌ای'
SnapDBInfo: 'نوشتن اطلاعات پایگاه داده 1Panel'
SnapCopy: 'کپی فایل‌ها/دایرکتوری‌ها {{ .name }}'
SnapNewDB: 'راه‌اندازی اتصال پایگاه داده {{ .name }}'
SnapDeleteOperationLog: 'حذف لاگ‌های عملیات'
SnapDeleteLoginLog: 'حذف لاگ‌های دسترسی'
SnapDeleteMonitor: 'حذف داده‌های نظارت'
SnapRemoveSystemIP: 'حذف IP سیستم'
SnapBaseInfo: 'نوشتن اطلاعات پایه 1Panel'
SnapInstallAppImageEmpty: 'هیچ تصویر برنامه‌ای انتخاب نشد؛ رد شد'
SnapInstallApp: 'پشتیبان‌گیری از برنامه‌های نصب شده'
SnapDockerSave: 'فشرده‌سازی برنامه‌های نصب شده'
SnapLocalBackup: 'پشتیبان‌گیری از دایرکتوری پشتیبان محلی'
SnapCompressBackup: 'فشرده‌سازی دایرکتوری پشتیبان محلی'
SnapPanelData: 'پشتیبان‌گیری از دایرکتوری داده 1Panel'
SnapCompressPanel: 'فشرده‌سازی دایرکتوری داده'
SnapWebsite: 'پشتیبان‌گیری از دایرکتوری وب‌سایت'
SnapCloseDBConn: 'بستن اتصال پایگاه داده'
SnapCompress: 'ایجاد فایل تصویر لحظه‌ای'
SnapCompressFile: 'فشرده‌سازی فایل تصویر لحظه‌ای'
SnapCheckCompress: 'بررسی آرشیو تصویر لحظه‌ای'
SnapCompressSize: 'اندازه تصویر لحظه‌ای {{ .name }}'
SnapUpload: 'بارگذاری فایل تصویر لحظه‌ای'
SnapUploadTo: 'بارگذاری تصویر لحظه‌ای به {{ .name }}'
SnapUploadRes: 'بارگذاری تصویر لحظه‌ای به {{ .name }}'
SnapshotRecover: 'بازیابی تصویر لحظه‌ای'
RecoverDownload: 'دانلود فایل تصویر لحظه‌ای'
Download: 'دانلود'
RecoverDownloadAccount: 'دریافت حساب دانلود تصویر لحظه‌ای {{ .name }}'
RecoverDecompress: 'باز کردن فشرده آرشیو تصویر لحظه‌ای'
Decompress: 'باز کردن فشرده'
BackupBeforeRecover: 'پشتیبان‌گیری از داده‌های سیستم قبل از بازیابی'
ReadJson: 'خواندن فایل JSON تصویر لحظه‌ای'
ReadJsonPath: 'دریافت مسیر JSON تصویر لحظه‌ای'
ReadJsonContent: 'خواندن محتوای JSON'
ReadJsonMarshal: 'پردازش فرار JSON'
RecoverApp: 'بازیابی برنامه‌های نصب شده'
RecoverWebsite: 'بازیابی دایرکتوری وب‌سایت'
RecoverAppImage: 'بازیابی پشتیبان تصویر تصویر لحظه‌ای'
RecoverCompose: 'بازیابی سایر پروژه‌های Compose'
RecoverComposeList: 'دریافت همه پروژه‌های Compose برای بازیابی'
RecoverComposeItem: 'بازیابی Compose {{ .name }}'
RecoverAppEmpty: 'هیچ پشتیبان تصویر برنامه در تصویر لحظه‌ای یافت نشد'
RecoverBaseData: 'بازیابی داده‌های پایه و فایل‌ها'
RecoverDaemonJsonEmpty: 'daemon.json در تصویر لحظه‌ای یا میزبان فعلی یافت نشد'
RecoverDaemonJson: 'بازیابی daemon.json'
RecoverDBData: 'بازیابی داده‌های پایگاه داده'
RecoverBackups: 'بازیابی دایرکتوری پشتیبان محلی'
RecoverPanelData: 'بازیابی دایرکتوری داده'
# task - container
ContainerImagePull: 'دریافت تصویر کانتینر {{ .name }}'
ContainerRemoveOld: 'حذف کانتینر اصلی {{ .name }}'
ContainerImageCheck: 'بررسی نتیجه دریافت تصویر'
ContainerLoadInfo: 'بارگذاری اطلاعات کانتینر'
ContainerRecreate: 'به‌روزرسانی کانتینر ناموفق بود؛ بازگردانی کانتینر اصلی'
ContainerCreate: 'ایجاد کانتینر جدید {{ .name }}'
ContainerCreateFailed: 'ایجاد کانتینر ناموفق بود؛ حذف کانتینر ناموفق'
ContainerStartCheck: 'بررسی شروع کانتینر'
# task - image
ImageBuild: 'ساخت تصویر'
ImagePull: 'دریافت تصویر'
ImageRepoAuthFromDB: 'بارگذاری احراز هویت مخزن از پایگاه داده'
ImagePush: 'ارسال تصویر'
ImageRenameTag: 'به‌روزرسانی برچسب تصویر'
ImageNewTag: 'برچسب تصویر جدید {{ .name }}'
ComposeCreate: 'ایجاد پروژه Compose'
# task - website
BackupNginxConfig: 'پشتیبان‌گیری از پیکربندی OpenResty وب‌سایت'
CompressFileSuccess: 'دایرکتوری به {{ .name }} فشرده شد'
CompressDir: 'فشرده‌سازی دایرکتوری'
DeCompressFile: 'باز کردن فشرده فایل {{ .name }}'
ErrCheckValid: 'تأیید فایل پشتیبان ناموفق بود: {{ .name }}'
Rollback: 'بازگشت'
websiteDir: 'دایرکتوری وب‌سایت'
RecoverFailedStartRollBack: 'بازیابی ناموفق بود؛ شروع بازگشت'
AppBackupFileIncomplete: 'پشتیبان ناقص است: app.json یا app.tar.gz وجود ندارد'
AppAttributesNotMatch: 'نوع یا نام برنامه مطابقت ندارد'
#alert
ErrAlertSync: 'همگام‌سازی پیام هشدار ناموفق بود'
#task - runtime
ErrInstallExtension: 'وظیفه نصب پسوند دیگری در حال اجراست'
# alert mail template
PanelAlertTitle: "اعلان هشدار پنل"
TestAlertTitle: "ایمیل آزمایشی - تأیید اتصال ایمیل"
TestAlert: "این یک ایمیل آزمایشی برای تأیید صحت پیکربندی ارسال ایمیل شما است."
LicenseExpirationAlert: "پنل {{ .node }}{{ .ip }}: مجوز در {{ .day }} روز منقضی می‌شود. برای مشاهده جزئیات وارد شوید."
CronJobFailedAlert: "پنل {{ .node }}{{ .ip }}: وظیفه زمان‌بندی {{ .name }} ناموفق بود. برای مشاهده جزئیات وارد شوید."
ClamAlert: "پنل {{ .node }}{{ .ip }}: اسکن ویروس {{ .num }} فایل آلوده پیدا کرد. برای مشاهده جزئیات وارد شوید."
WebSiteAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} وب‌سایت در {{ .day }} روز منقضی می‌شوند. برای مشاهده جزئیات وارد شوید."
SSLAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} گواهی SSL در {{ .day }} روز منقضی می‌شوند. برای مشاهده جزئیات وارد شوید."
DiskUsedAlert: "پنل {{ .node }}{{ .ip }}: استفاده از دیسک {{ .name }} به {{ .used }} رسید. برای مشاهده جزئیات وارد شوید."
ResourceAlert: "پنل {{ .node }}{{ .ip }}: میانگین استفاده {{ .name }} در {{ .time }} دقیقه برابر با {{ .used }} است. برای مشاهده جزئیات وارد شوید."
PanelVersionAlert: "پنل {{ .node }}{{ .ip }}: نسخه جدید پنل موجود است. برای مشاهده جزئیات وارد شوید."
PanelPwdExpirationAlert: "پنل {{ .node }}{{ .ip }}: رمز عبور پنل در {{ .day }} روز منقضی می‌شود. برای مشاهده جزئیات وارد شوید."
CommonAlert: "پنل {{ .node }}{{ .ip }}: {{ .msg }}. برای مشاهده جزئیات وارد شوید."
NodeExceptionAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} گره غیرعادی هستند. برای مشاهده جزئیات وارد شوید."
LicenseExceptionAlert: "پنل {{ .node }}{{ .ip }}: {{ .num }} مجوز غیرعادی است. برای مشاهده جزئیات وارد شوید."
SSHAndPanelLoginAlert: "پنل {{ .node }}{{ .ip }}: ورود غیرعادی {{ .name }} از {{ .loginIp }}. برای مشاهده جزئیات وارد شوید."
#disk
DeviceNotFound: "دستگاه {{ .name }} یافت نشد"
DeviceIsMounted: 'دستگاه {{ .name }} متصل است؛ ابتدا قطع اتصال کنید'
PartitionDiskErr: 'پارتیشن‌بندی ناموفق بود: {{ .err }}'
FormatDiskErr: 'فرمت کردن ناموفق بود: {{ .err }}'
MountDiskErr: 'اتصال ناموفق بود: {{ .err }}'
XfsNotFound: 'xfs یافت نشد؛ ابتدا xfsprogs را نصب کنید'
# terminal
TerminalAIBlockedRiskyCommand: 'دستور پرخطر مسدود شد: {{ .command }}'
TerminalAIThinking: 'هوش مصنوعی در حال فکر کردن است...'
TerminalAIReadyToExecute: 'تفکر کامل شد، برای اجرا Enter را فشار دهید (مدت زمان: {{ .duration }}، توکن‌ها: {{ .tokens }})'
TerminalAIRequestFailed: 'درخواست هوش مصنوعی ناموفق بود: {{ .err }}'
FileAISearchEmptyDir: 'هیچ فایل یا دایرکتوری در این مسیر یافت نشد (یا همه ورودی‌ها فیلتر شدند).'
# ai proxy
ErrAIProxyServiceNotInstalled: 'سرویس {{ .name }} نصب نشده است'
ErrAIProxyModelAccountNotFound: 'حساب مدل {{ .id }} یافت نشد'
ErrAIProxyModelMapRequired: 'این فیلد الزامی است.'
ErrAIProxyModelMapInvalid: 'نگاشت مدل باید یک شی JSON معتبر باشد: {{ .err }}'
ErrAIProxyModelMapEmpty: 'نگاشت مدل نمی‌تواند خالی باشد'
ErrAIProxyModelMapEmptyExternalModel: 'نگاشت مدل شامل یک مدل درخواست خالی است'
ErrAIProxyModelMapEmptyUpstreamModel: 'مدل بالادست برای {{ .model }} نمی‌تواند خالی باشد'
AIProxyUserFallback: 'کاربر حذف شده (شناسه: {{ .id }})'
+1
View File
@@ -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 {
+353
View File
@@ -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: "دستور"
+2
View File
@@ -17,6 +17,7 @@ import ru from 'element-plus/es/locale/lang/ru';
import ko from 'element-plus/es/locale/lang/ko';
import tr from 'element-plus/es/locale/lang/tr';
import esES from 'element-plus/es/locale/lang/es';
import fa from 'element-plus/es/locale/lang/fa';
import { useTheme } from '@/global/use-theme';
useTheme();
@@ -36,6 +37,7 @@ const i18nLocale = computed(() => {
if (language.value === 'ko') return ko;
if (language.value === 'tr') return tr;
if (language.value === 'es-ES') return esES;
if (language.value === 'fa') return fa;
return zhCn;
});
+14
View File
@@ -141,6 +141,20 @@ const fuLocales: Record<string, FuLocaleMessage> = {
},
},
},
fa: {
fu: {
table: {
more: 'بیشتر',
custom_table_rows: 'ستون‌های سفارشی',
},
steps: {
cancel: 'لغو',
prev: 'قبلی',
next: 'بعدی',
finish: 'پایان',
},
},
},
};
export const getFuLocaleMessage = (locale: string) => {
+1
View File
@@ -16,6 +16,7 @@ const LOCALE_LOADERS: Record<string, LocaleLoader> = {
ms: () => import('./modules/ms'),
ko: () => import('./modules/ko'),
tr: () => import('./modules/tr'),
fa: () => import('./modules/fa'),
'es-ES': () => import('./modules/es-es'),
};
File diff suppressed because it is too large Load Diff
@@ -62,6 +62,7 @@
<el-dropdown-item command="ru">Русский</el-dropdown-item>
<el-dropdown-item command="ms">Bahasa Melayu</el-dropdown-item>
<el-dropdown-item command="tr">Turkish</el-dropdown-item>
<el-dropdown-item command="fa">فارسی</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
@@ -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) {