Localize the deploy wizard.
Move the multi-step deploy wizard (app type/runtime, source, versions & database, optional services, resources & cluster assignment, custom domain + DNS, env vars, cost/payment, review and the provisioning overlay) onto a dashboard.deployWizard dictionary, with localized runtime descriptions, billing cycles, stage labels and RTL-aware controls. This completes full fa-IR/en-US localization of the dashboard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1157,6 +1157,135 @@ const en: Dictionary = {
|
||||
revision: 'Revision', hoursUnit: '{n} hours',
|
||||
payFromWalletBtn: 'Pay from wallet', applyDirectly: 'Apply directly',
|
||||
},
|
||||
deployWizard: {
|
||||
cycles: { hourly: 'Hourly', monthly: 'Monthly', yearly: 'Yearly' },
|
||||
deployNewApp: 'Deploy New Application',
|
||||
followSteps: 'Follow the steps to deploy your app to the cloud.',
|
||||
basicInfo: 'Basic Information',
|
||||
appType: 'Application Type',
|
||||
appName: 'Application Name',
|
||||
descriptionOptional: 'Description (optional)',
|
||||
whatDoesApp: 'What does this app do?',
|
||||
nameHint: 'Lowercase letters, numbers, and hyphens only',
|
||||
source: 'Source',
|
||||
sourceCode: 'Source Code',
|
||||
gitRepository: 'Git Repository',
|
||||
uploadZip: 'Upload ZIP',
|
||||
uploadAZip: 'Upload a ZIP',
|
||||
repositoryUrl: 'Repository URL',
|
||||
branch: 'Branch',
|
||||
accessToken: 'Access Token',
|
||||
auth: 'Auth',
|
||||
tokenProvided: 'Token provided',
|
||||
versionsDatabase: 'Versions & Database',
|
||||
runtime: 'Runtime',
|
||||
nodeVersion: 'Node.js Version', phpVersion: 'PHP Version', pythonVersion: 'Python Version',
|
||||
goVersion: 'Go Version', wordpressVersion: 'WordPress Version',
|
||||
database: 'Database',
|
||||
databaseCredentials: 'Database Credentials',
|
||||
dbUsername: 'DB Username', dbPassword: 'DB Password', dbStorage: 'DB Storage', dbDump: 'DB Dump',
|
||||
databaseStorageSize: 'Database Storage Size',
|
||||
username: 'Username', password: 'Password', autoGenerated: 'Auto-generated',
|
||||
generatePassword: 'Generate random password',
|
||||
dbCredsNote: 'These credentials are used for internal cluster communication only. The database is not exposed externally.',
|
||||
optionalDbDump: 'Optional: Upload DB dump to restore at creation',
|
||||
uploadSqlNote: 'Upload a SQL dump to be restored after the database is created',
|
||||
uploadDbDumpHint: 'You can also upload a SQL database dump in the next step to restore your data.',
|
||||
optionalServices: 'Optional Services',
|
||||
configurePerService: 'Configure resources for each enabled service separately from your application.',
|
||||
redisResources: 'Redis resources', rabbitmqResources: 'RabbitMQ resources',
|
||||
centralizedLogging: 'Centralized logging', logsViaFluentBit: 'Logs collected via Fluent Bit sidecar',
|
||||
logFilePaths: 'Log File Paths',
|
||||
specifyLogFiles: 'Specify which log files to collect. Leave empty for default paths based on runtime.',
|
||||
defaultPathsByRuntime: 'Default paths by runtime:',
|
||||
resourcesConfig: 'Resources & Configuration',
|
||||
applicationWorkload: 'Application workload',
|
||||
cpu: 'CPU', memory: 'Memory', storage: 'Storage', replicas: 'Replicas', port: 'Port',
|
||||
cpuRequest: 'CPU Request', cpuLimit: 'CPU Limit', memoryRequest: 'Memory Request', memoryLimit: 'Memory Limit',
|
||||
clusterAssignment: 'Cluster Assignment',
|
||||
useDefaultCluster: 'Use default cluster', defaultClusterUsed: 'Default cluster will be used',
|
||||
pickSpecificCluster: 'Pick a specific cluster', pickClusterPool: 'Pick a cluster pool',
|
||||
loadBalanced: 'Load Balanced', cluster: 'Cluster',
|
||||
noClustersAvailable: 'No clusters available', noClusterPools: 'No cluster pools configured',
|
||||
askAdminPool: 'Ask your admin to create a cluster pool', defaultClusterWillBeUsed: 'Default cluster will be used',
|
||||
customDomain: 'Custom Domain', domainAddress: 'Domain Address',
|
||||
dnsSetupRequired: 'DNS Setup Required', dnsNotVerified: 'DNS Not Verified', verifyDnsRecords: 'Verify DNS Records',
|
||||
checkingDns: 'Checking DNS...', dnsVerified: 'DNS verified!', dnsVerifiedProceed: 'DNS verified! You can proceed.',
|
||||
mustVerifyDns: 'You must verify DNS before proceeding. SSL will be provisioned automatically after deployment.',
|
||||
requiredCnameRecord: 'Required CNAME record:',
|
||||
record: 'record:', typeColon: 'Type:', nameHost: 'Name/Host:', valueColon: 'Value:', cnameTarget: 'CNAME Target:', versionColon: 'Version:',
|
||||
yourPlatformDomain: 'your app Platform Domain (after creation)',
|
||||
environmentVariables: 'Environment Variables', envVars: 'Env Vars',
|
||||
uploadEnvFile: 'Upload .env file', add: 'Add', clear: 'Clear', remove: 'Remove',
|
||||
reviewDeploy: 'Review & Deploy',
|
||||
costEstimate: 'Cost Estimate', calculating: 'Calculating...', breakdown: 'Breakdown',
|
||||
additionalCharges: 'Additional charges (you pay)', coveredByCredit: 'Covered by prepaid credit',
|
||||
customDomainFee: 'Custom domain fee:', feeIncludedNote: 'This fee is included in the total cost calculation.',
|
||||
prepaidCreditApplied: 'Prepaid credit applied', prepaidCreditPricing: 'Prepaid credit pricing',
|
||||
deployWithCredit: 'Deploy with prepaid credit',
|
||||
noChargeCovered: 'No additional charges — fully covered.',
|
||||
noPaymentCredit: 'No payment required — your prepaid resource credit covers this deployment.',
|
||||
noPricingPlans: 'No pricing plans defined yet',
|
||||
paymentMethod: 'Payment Method', payFromWallet: 'Pay from Wallet', payNow: 'Pay Now', onlineGateway: 'Online payment gateway',
|
||||
insufficientBalance: 'Insufficient balance', toman: 'Toman',
|
||||
payDeploy: 'Pay & Deploy', deployApplication: 'Deploy Application',
|
||||
processingPayment: 'Processing payment', creatingApplication: 'Creating application', startingDeployment: 'Starting deployment',
|
||||
stageCreating: 'Creating application...', stageUploadingSource: 'Uploading source code...',
|
||||
stageUploadingDb: 'Uploading database dump...', stagePaying: 'Processing payment...',
|
||||
stageDeploying: 'Starting deployment...', stageRedirecting: 'Redirecting...', stageError: 'An error occurred',
|
||||
deploymentFailed: 'Deployment Failed', success: 'Success!', deployingApplication: 'Deploying Application',
|
||||
appTypeApplication: 'Application', appTypeDatabase: 'Database',
|
||||
inMemoryCache: 'In-memory cache & store', messageBroker: 'Message broker',
|
||||
wordpressOfficial: 'WordPress (Official Image)',
|
||||
freshInstall: 'Fresh Install', migrateExisting: 'Migrate Existing Site',
|
||||
freshInstallNote: 'Start with a clean WordPress. Install themes & plugins via the admin panel.',
|
||||
migrateNote: 'Upload your WordPress files (wp-content, themes, plugins) and optionally a DB dump.',
|
||||
dragWpZip: 'Drag & drop your WordPress ZIP here',
|
||||
dragProjectZip: 'Drag & drop your project ZIP here',
|
||||
stratLeastApps: 'Least Apps', stratLeastLoaded: 'Least Loaded', stratRoundRobin: 'Round Robin',
|
||||
stratWeightedRR: 'Weighted RR', stratWeightedResource: 'Weighted Resource', stratRegionBased: 'Region Based',
|
||||
default: 'Default', manual: 'Manual', none: 'None',
|
||||
appCreatedDeploying: 'Application created! Triggering deployment...',
|
||||
paymentSuccessDeploying: 'Payment successful! Deploying...',
|
||||
insufficientWallet: 'Insufficient wallet balance. Please top up or use payment gateway.',
|
||||
archiveMax10: 'Archive must be at most 10 GB', fileMax10: 'File size must be at most 10 GB',
|
||||
onlyZipAllowed: 'Only .zip or .tar.gz files are allowed', envReadFailed: 'Failed to read environment file',
|
||||
dnsCheckFailed: 'Failed to check DNS. Please try again.',
|
||||
allowedDumpFormats: 'Allowed: .sql, .gz, .dump', maxSize500: 'Max 500MB',
|
||||
storageTooSmall: 'Storage too small',
|
||||
anyCustom: 'Any custom',
|
||||
ofYourEntire: 'of your entire',
|
||||
uploadAZipContaining: 'Upload a ZIP containing your WordPress files. Supported structures:',
|
||||
zipWithFullRoot: 'ZIP with full WordPress root (',
|
||||
filesAtRoot: 'files at root level',
|
||||
directoryFullRoot: 'directory (the full WordPress root):',
|
||||
zipWith: 'ZIP with',
|
||||
containingWpFiles: ' containing your WordPress files. Supported structures:',
|
||||
wpContentDesc: ' — themes, plugins, uploads',
|
||||
wpConfigDesc: ' — custom configuration (optional)',
|
||||
anyCustomA: 'Any custom ', anyCustomB: ' files at root level',
|
||||
folderMax10: ' folder • Max 10 GB',
|
||||
fullRootSuffix: ', ...) • Max 10 GB',
|
||||
invalidDomainFormat: 'Invalid domain format. Use a format like example.com or www.example.com',
|
||||
dnsNotConfigured: 'DNS records are not configured correctly. Please set up the CNAME record and wait for propagation before proceeding.',
|
||||
dnsVerifyFailed: 'Failed to verify DNS. Please check your domain settings and try again.',
|
||||
platformDomainArrow: 'your app Platform Domain (after creation)',
|
||||
runtimeDescs: {
|
||||
nodejs: 'Express, NestJS, Fastify',
|
||||
laravel: 'PHP, Composer, Artisan',
|
||||
wordpress: 'Official image',
|
||||
go: 'Gin, Echo, Fiber',
|
||||
python: 'Flask, FastAPI',
|
||||
django: 'Python web framework',
|
||||
php: 'Plain PHP apps',
|
||||
dotnet: 'ASP.NET Core',
|
||||
},
|
||||
noValidEnvVars: 'No valid environment variables found in file',
|
||||
appDataStorage: 'Application data storage',
|
||||
wordpressFreshInstall: 'WordPress (Fresh Install)',
|
||||
automaticAllocator: 'Automatic allocator',
|
||||
back: 'Back', next: 'Next',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1169,6 +1169,141 @@ const fa = {
|
||||
revision: 'نسخهٔ', hoursUnit: '{n} ساعت',
|
||||
payFromWalletBtn: 'پرداخت از کیفپول', applyDirectly: 'اعمال مستقیم',
|
||||
},
|
||||
deployWizard: {
|
||||
cycles: { hourly: 'ساعتی', monthly: 'ماهانه', yearly: 'سالانه' },
|
||||
deployNewApp: 'انتشار اپلیکیشن جدید',
|
||||
followSteps: 'برای انتشار اپت روی ابر، مراحل را دنبال کن.',
|
||||
basicInfo: 'اطلاعات پایه',
|
||||
appType: 'نوع اپلیکیشن',
|
||||
appName: 'نام اپلیکیشن',
|
||||
descriptionOptional: 'توضیحات (اختیاری)',
|
||||
whatDoesApp: 'این اپ چه کاری انجام میدهد؟',
|
||||
nameHint: 'فقط حروف کوچک، اعداد و خط تیره',
|
||||
source: 'منبع',
|
||||
sourceCode: 'سورسکد',
|
||||
gitRepository: 'مخزن Git',
|
||||
uploadZip: 'آپلود ZIP',
|
||||
uploadAZip: 'آپلود یک ZIP',
|
||||
repositoryUrl: 'آدرس مخزن',
|
||||
branch: 'شاخه',
|
||||
accessToken: 'توکن دسترسی',
|
||||
auth: 'احراز هویت',
|
||||
tokenProvided: 'توکن داده شد',
|
||||
versionsDatabase: 'نسخهها و دیتابیس',
|
||||
runtime: 'رانتایم',
|
||||
nodeVersion: 'نسخهٔ Node.js', phpVersion: 'نسخهٔ PHP', pythonVersion: 'نسخهٔ Python',
|
||||
goVersion: 'نسخهٔ Go', wordpressVersion: 'نسخهٔ WordPress',
|
||||
database: 'دیتابیس',
|
||||
databaseCredentials: 'اطلاعات ورود دیتابیس',
|
||||
dbUsername: 'نام کاربری دیتابیس', dbPassword: 'رمز دیتابیس', dbStorage: 'فضای دیتابیس', dbDump: 'dump دیتابیس',
|
||||
databaseStorageSize: 'اندازهٔ فضای ذخیرهٔ دیتابیس',
|
||||
username: 'نام کاربری', password: 'رمز عبور', autoGenerated: 'تولید خودکار',
|
||||
generatePassword: 'تولید رمز تصادفی',
|
||||
dbCredsNote: 'این اطلاعات فقط برای ارتباط داخلی کلاستر استفاده میشوند. دیتابیس بهصورت خارجی expose نمیشود.',
|
||||
optionalDbDump: 'اختیاری: آپلود dump دیتابیس برای بازیابی هنگام ساخت',
|
||||
uploadSqlNote: 'یک SQL dump آپلود کن تا پس از ساخت دیتابیس بازیابی شود',
|
||||
uploadDbDumpHint: 'در مرحلهٔ بعد میتوانی یک dump دیتابیس SQL برای بازیابی دادههایت آپلود کنی.',
|
||||
optionalServices: 'سرویسهای اختیاری',
|
||||
configurePerService: 'منابع هر سرویسِ فعال را جدا از اپلیکیشن خود پیکربندی کن.',
|
||||
redisResources: 'منابع Redis', rabbitmqResources: 'منابع RabbitMQ',
|
||||
centralizedLogging: 'لاگینگ متمرکز', logsViaFluentBit: 'لاگها از طریق سایدکار Fluent Bit جمعآوری میشوند',
|
||||
logFilePaths: 'مسیر فایلهای لاگ',
|
||||
specifyLogFiles: 'مشخص کن کدام فایلهای لاگ جمعآوری شوند. برای مسیرهای پیشفرض بر اساس رانتایم، خالی بگذار.',
|
||||
defaultPathsByRuntime: 'مسیرهای پیشفرض بر اساس رانتایم:',
|
||||
resourcesConfig: 'منابع و پیکربندی',
|
||||
applicationWorkload: 'workload اپلیکیشن',
|
||||
cpu: 'CPU', memory: 'حافظه', storage: 'فضای ذخیره', replicas: 'رپلیکاها', port: 'پورت',
|
||||
cpuRequest: 'درخواست CPU', cpuLimit: 'محدودیت CPU', memoryRequest: 'درخواست حافظه', memoryLimit: 'محدودیت حافظه',
|
||||
clusterAssignment: 'تخصیص کلاستر',
|
||||
useDefaultCluster: 'استفاده از کلاستر پیشفرض', defaultClusterUsed: 'کلاستر پیشفرض استفاده خواهد شد',
|
||||
pickSpecificCluster: 'انتخاب یک کلاستر مشخص', pickClusterPool: 'انتخاب یک پول کلاستر',
|
||||
loadBalanced: 'متوازنشده', cluster: 'کلاستر',
|
||||
noClustersAvailable: 'کلاستری در دسترس نیست', noClusterPools: 'هیچ پول کلاستری پیکربندی نشده',
|
||||
askAdminPool: 'از مدیر بخواه یک پول کلاستر بسازد', defaultClusterWillBeUsed: 'کلاستر پیشفرض استفاده خواهد شد',
|
||||
customDomain: 'دامنهٔ اختصاصی', domainAddress: 'آدرس دامنه',
|
||||
dnsSetupRequired: 'تنظیم DNS لازم است', dnsNotVerified: 'DNS تأیید نشده', verifyDnsRecords: 'تأیید رکوردهای DNS',
|
||||
checkingDns: 'در حال بررسی DNS…', dnsVerified: 'DNS تأیید شد', dnsVerifiedProceed: 'DNS تأیید شد! میتوانی ادامه بدهی.',
|
||||
mustVerifyDns: 'پیش از ادامه باید DNS را تأیید کنی. SSL پس از انتشار بهصورت خودکار صادر میشود.',
|
||||
requiredCnameRecord: 'رکورد CNAME موردنیاز:',
|
||||
record: 'رکورد:', typeColon: 'نوع:', nameHost: 'نام/هاست:', valueColon: 'مقدار:', cnameTarget: 'مقصد CNAME:', versionColon: 'نسخه:',
|
||||
yourPlatformDomain: 'دامنهٔ پلتفرمِ اپت (پس از ساخت)',
|
||||
environmentVariables: 'متغیرهای محیطی', envVars: 'متغیرهای محیط',
|
||||
uploadEnvFile: 'آپلود فایل .env', add: 'افزودن', clear: 'پاککردن', remove: 'حذف',
|
||||
reviewDeploy: 'بررسی و انتشار',
|
||||
costEstimate: 'برآورد هزینه', calculating: 'در حال محاسبه…', breakdown: 'تفکیک',
|
||||
additionalCharges: 'هزینههای اضافه (پرداختی شما)', coveredByCredit: 'پوششدادهشده با اعتبار پیشپرداخت',
|
||||
customDomainFee: 'هزینهٔ دامنهٔ اختصاصی:', feeIncludedNote: 'این هزینه در محاسبهٔ هزینهٔ کل لحاظ شده است.',
|
||||
prepaidCreditApplied: 'اعتبار پیشپرداخت اعمال شد', prepaidCreditPricing: 'قیمتگذاری اعتبار پیشپرداخت',
|
||||
deployWithCredit: 'انتشار با اعتبار پیشپرداخت',
|
||||
noChargeCovered: 'بدون هزینهٔ اضافه — کاملاً پوشش داده شده.',
|
||||
noPaymentCredit: 'نیازی به پرداخت نیست — اعتبار منابع پیشپرداختت این انتشار را پوشش میدهد.',
|
||||
noPricingPlans: 'هنوز پلن قیمتی تعریف نشده',
|
||||
paymentMethod: 'روش پرداخت', payFromWallet: 'پرداخت از کیفپول', payNow: 'پرداخت', onlineGateway: 'درگاه پرداخت آنلاین',
|
||||
insufficientBalance: 'موجودی ناکافی', toman: 'تومان',
|
||||
payDeploy: 'پرداخت و انتشار', deployApplication: 'انتشار اپلیکیشن',
|
||||
processingPayment: 'در حال پردازش پرداخت', creatingApplication: 'ساخت اپلیکیشن', startingDeployment: 'شروع انتشار',
|
||||
stageCreating: 'در حال ساخت اپلیکیشن…', stageUploadingSource: 'در حال آپلود سورسکد…',
|
||||
stageUploadingDb: 'در حال آپلود dump دیتابیس…', stagePaying: 'در حال پردازش پرداخت…',
|
||||
stageDeploying: 'در حال شروع انتشار…', stageRedirecting: 'در حال انتقال…', stageError: 'خطایی رخ داد',
|
||||
deploymentFailed: 'انتشار ناموفق بود', success: 'موفق!', deployingApplication: 'در حال انتشار اپلیکیشن',
|
||||
// app types
|
||||
appTypeApplication: 'اپلیکیشن', appTypeDatabase: 'دیتابیس',
|
||||
// service types descriptions
|
||||
inMemoryCache: 'کش و ذخیرهٔ درونحافظهای', messageBroker: 'بروکر پیام',
|
||||
// wordpress
|
||||
wordpressOfficial: 'WordPress (ایمیج رسمی)',
|
||||
freshInstall: 'نصب تازه', migrateExisting: 'انتقال سایت موجود',
|
||||
freshInstallNote: 'با یک WordPress تمیز شروع کن. تمها و افزونهها را از پنل مدیریت نصب کن.',
|
||||
migrateNote: 'فایلهای WordPress خود (wp-content، تمها، افزونهها) و در صورت تمایل یک dump دیتابیس را آپلود کن.',
|
||||
dragWpZip: 'فایل ZIP وردپرس خود را اینجا بکش و رها کن',
|
||||
dragProjectZip: 'فایل ZIP پروژهٔ خود را اینجا بکش و رها کن',
|
||||
// strategies
|
||||
stratLeastApps: 'کمترین اپ', stratLeastLoaded: 'کمبارترین', stratRoundRobin: 'چرخشی',
|
||||
stratWeightedRR: 'چرخشی وزندار', stratWeightedResource: 'منابع وزندار', stratRegionBased: 'بر اساس منطقه',
|
||||
default: 'پیشفرض', manual: 'دستی', none: 'هیچکدام',
|
||||
// toasts
|
||||
appCreatedDeploying: 'اپلیکیشن ساخته شد! در حال آغاز انتشار…',
|
||||
paymentSuccessDeploying: 'پرداخت موفق! در حال انتشار…',
|
||||
insufficientWallet: 'موجودی کیفپول کافی نیست. لطفاً شارژ کن یا از درگاه پرداخت استفاده کن.',
|
||||
archiveMax10: 'آرشیو باید حداکثر ۱۰ گیگابایت باشد', fileMax10: 'حجم فایل باید حداکثر ۱۰ گیگابایت باشد',
|
||||
onlyZipAllowed: 'فقط فایلهای .zip یا .tar.gz مجاز هستند', envReadFailed: 'خواندن فایل محیطی ناموفق بود',
|
||||
dnsCheckFailed: 'بررسی DNS ناموفق بود. لطفاً دوباره تلاش کن.',
|
||||
allowedDumpFormats: 'مجاز: .sql، .gz، .dump', maxSize500: 'حداکثر ۵۰۰ مگابایت',
|
||||
storageTooSmall: 'فضای ذخیره خیلی کم است',
|
||||
// misc fragments
|
||||
anyCustom: 'هر',
|
||||
ofYourEntire: 'از کل',
|
||||
uploadAZipContaining: 'یک ZIP حاوی فایلهای WordPress خود آپلود کن. ساختارهای پشتیبانیشده:',
|
||||
zipWithFullRoot: 'ZIP با ریشهٔ کامل WordPress (',
|
||||
filesAtRoot: 'فایلها در سطح ریشه',
|
||||
directoryFullRoot: 'پوشه (ریشهٔ کامل WordPress):',
|
||||
zipWith: 'ZIP با',
|
||||
containingWpFiles: ' حاوی فایلهای WordPress خود. ساختارهای پشتیبانیشده:',
|
||||
wpContentDesc: ' — تمها، افزونهها، آپلودها',
|
||||
wpConfigDesc: ' — پیکربندی سفارشی (اختیاری)',
|
||||
anyCustomA: 'هر فایل ', anyCustomB: ' سفارشی در سطح ریشه',
|
||||
folderMax10: ' پوشه • حداکثر ۱۰ گیگابایت',
|
||||
fullRootSuffix: '، ...) • حداکثر ۱۰ گیگابایت',
|
||||
invalidDomainFormat: 'فرمت دامنه نامعتبر است. از فرمتی مثل example.com یا www.example.com استفاده کن',
|
||||
dnsNotConfigured: 'رکوردهای DNS درست تنظیم نشدهاند. رکورد CNAME را تنظیم کن و پیش از ادامه منتظر انتشار آن بمان.',
|
||||
dnsVerifyFailed: 'تأیید DNS ناموفق بود. تنظیمات دامنهات را بررسی کن و دوباره تلاش کن.',
|
||||
platformDomainArrow: 'دامنهٔ پلتفرمِ اپت (پس از ساخت)',
|
||||
runtimeDescs: {
|
||||
nodejs: 'Express، NestJS، Fastify',
|
||||
laravel: 'PHP، Composer، Artisan',
|
||||
wordpress: 'تصویر رسمی',
|
||||
go: 'Gin، Echo، Fiber',
|
||||
python: 'Flask، FastAPI',
|
||||
django: 'فریمورک وب پایتون',
|
||||
php: 'اپهای PHP ساده',
|
||||
dotnet: 'ASP.NET Core',
|
||||
},
|
||||
noValidEnvVars: 'هیچ متغیر محیطی معتبری در فایل پیدا نشد',
|
||||
appDataStorage: 'فضای ذخیرهٔ دادهٔ اپلیکیشن',
|
||||
wordpressFreshInstall: 'WordPress (نصب تازه)',
|
||||
automaticAllocator: 'تخصیصدهندهٔ خودکار',
|
||||
back: 'بازگشت', next: 'بعدی',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user