admin/texts/events.ts
alisaza 96603d31f7 feat(alert-modal): integrate alert modal for confirmation actions
Enhanced various components to utilize the alert modal for user confirmations before executing critical actions. This includes marking messages as read, saving notification rules, restoring reviews, sending replies, changing ticket statuses, and managing event commissions. The integration improves user experience by ensuring actions are intentional and provides clear feedback on the outcomes.
2026-09-13 10:14:18 +03:30

198 lines
14 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const events = {
free: 'رایگان',
nextStep: 'مرحله بعد',
timeRange: '{start} تا {end}',
prevStep: 'مرحله قبل',
guest: 'مهمان',
host: 'میزبان',
capacity: 'ظرفیت',
title: 'عنوان',
address: 'آدرس',
reviews: 'نظرات',
eventEnded: 'اتمام رویداد',
invalidDate: 'تاریخ نامعتبر است',
uploadFailed: 'آپلود ناموفق بود',
personCount: '{count} نفر',
guestAccessLoadFailed: 'دریافت اطلاعات مهمانان ناموفق بود.',
guestAccessTitle: 'مهمانان ویژه',
guestAccessLoading: 'در حال دریافت اطلاعات مهمانان…',
guestListsConnected: 'لیست‌های متصل',
guestListsCount: '{count} لیست',
guestListFallback: 'لیست مهمان',
guestListNotifiedAt: 'اعلان ارسال شده · {date}',
guestListNotNotified: 'اعلانی ارسال نشده',
guestListsEmpty: 'لیست مهمانی به این رویداد متصل نشده است.',
invitedGuestsTitle: 'مهمانان دعوت‌شده',
invitedGuestsEmpty: 'مهمانی برای دعوت انتخاب نشده است.',
eventNotFound: 'رویداد یافت نشد',
hostProfileAria: 'پروفایل {name}',
wizardStep2Label: 'زمان و مکان',
wizardStep2Hint: 'زمان‌بندی و محل برگزاری رویداد',
wizardStep3Hint: 'ظرفیت، قیمت و هزینهٔ کنسلی',
postersRequiredTitle: 'هر دو پوستر الزامی است',
postersRequiredDescription: 'پوستر عمودی (۹:۱۶) و پوستر مربعی (۱:۱) را آپلود کنید و سپس پیش‌نویس را ذخیره کنید.',
mediaSectionDescription: 'پوستر عمودی و پوستر مربعی هر دو الزامی‌اند. تصاویر گالری اختیاری‌اند و کراپ نمی‌شوند.',
shortDescriptionLabel: 'معرفی کوتاه',
categoryPlaceholder: 'یک دسته‌بندی را انتخاب کنید',
addressVisibilityAttendeesOnly: 'فقط برای رزروکنندگان تأییدشده',
addressVisibilityPublic: 'نمایش برای همه',
startsAtDateLabel: 'تاریخ شروع',
startsAtTimeLabel: 'ساعت شروع',
endsAtDateLabel: 'تاریخ پایان',
endsAtTimeLabel: 'ساعت پایان',
addressVisibilityLabel: 'نمایش آدرس دقیق',
generalAreaLabel: 'منطقه کلی ',
generalAreaPlaceholder: 'مثلاً: مشهد، خیابان هفت‌تیر',
mapTitle: 'موقعیت روی نقشه',
mapLocked: 'موقعیت به‌خاطر رزرو فعال مهمان‌ها قفل شده است.',
mapHint: 'روی نقشه کلیک کنید تا موقعیت انتخاب شود؛ آدرس به‌صورت خودکار پر می‌شود و قابل ویرایش است.',
mapModalHint: 'برای تعیین نقطهٔ دقیق، نقشه را باز کنید؛ آدرس پس از انتخاب پر می‌شود و قابل ویرایش است.',
mapSelectModalTitle: 'انتخاب مکان از روی نقشه',
mapLocationSelected: 'موقعیت انتخاب شد',
mapKeyMissing: 'کلید نقشه (MAP_API_KEY) تنظیم نشده است',
mapLoading: 'در حال بارگذاری نقشه…',
mapAddressNotFound: 'آدرسی برای این نقطه پیدا نشد',
genderRestrictionLabel: 'محدودیت جنسی',
ageRestrictionLabel: 'محدودیت سنی',
cancellationFeeLabel: 'لغو لحظه آخری — ۱ دقیقه تا ۱۲ ساعت مانده',
cancellationFee12To24HoursLabel: 'لغو در آستانه برگزاری — ۱۲ تا ۲۴ ساعت مانده',
cancellationFeeMoreThan24HoursLabel: 'لغو زودهنگام — بیش از ۲۴ ساعت مانده',
discoverableLabel: 'نمایش در جستجوی عمومی',
waitlistAutoOfferLabel: 'پیشنهاد خودکار رزرو به افراد لیست انتظار',
addQuestion: 'افزودن سوال',
faqSectionDescription: 'اگر مهمان‌ها معمولاً سؤال مشخصی دارند، همین‌جا پاسخ آن را اضافه کن. این بخش اختیاری است.',
questionLabel: 'سوال',
imageReadFailed: 'خواندن تصویر ناموفق بود',
portraitPosterEmpty: 'افزودن پوستر عمودی',
portraitPosterHint: 'نسبت ۹:۱۶',
squarePosterEmpty: 'افزودن پوستر مربعی',
squarePosterHint: 'نسبت ۱:۱',
galleryTitle: 'تصاویر گالری',
galleryHint: 'بدون کراپ و بدون قفل نسبت. برای صفحهٔ رویداد استفاده می‌شود.',
ariaRemoveGalleryImage: 'حذف تصویر گالری',
addImage: 'افزودن تصویر',
noAspectLimit: 'بدون محدودیت نسبت',
preparingImage: 'در حال آماده‌سازی تصویر…',
uploading: 'در حال آپلود...',
cancelCurrentUpload: 'لغو عملیات',
confirmUpload: 'تایید و آپلود',
cropPortraitTitle: 'برش پوستر عمودی (۹:۱۶)',
cropSquareTitle: 'برش پوستر مربعی (۱:۱)',
cropSquareFromPortraitHint: 'همین عکس را مربعی ببر، یا عکس دیگری برای کارت مربعی انتخاب کن.',
cropPortraitHint: 'پوستر کارت‌های عمودی با نسبت ۹:۱۶ برش داده می‌شود.',
pickOtherSquarePoster: 'انتخاب عکس دیگر برای پوستر مربعی',
change: 'تغییر',
editEventTitle: 'ویرایش',
invalidEventId: 'شناسه رویداد نامعتبر است',
eventLoadFailed: 'بارگذاری رویداد ناموفق بود',
eventUpdated: 'رویداد به‌روزرسانی شد',
eventUpdateFailed: 'ذخیره تغییرات ناموفق بود',
createEventTitle: 'رویداد جدید',
createEventSuccess: 'رویداد ساخته شد؛ میزبان باید آن را منتشر کند',
createEventFailed: 'ساخت رویداد ناموفق بود',
createEventHostRequired: 'یک میزبان تأییدشده انتخاب کنید',
createEventHostSectionTitle: 'میزبان رویداد',
createEventHostSectionDescription:
'رویداد به نام این میزبان ساخته می‌شود، از قبل تأیید می‌شود و پیامک اطلاع‌رسانی برای او ارسال می‌گردد. انتشار با خود میزبان است.',
createEventHostPickerLabel: 'انتخاب میزبان تأییدشده',
createEventHostPickerPlaceholder: 'میزبان را انتخاب کنید',
createEventHostSearchPlaceholder: 'جستجو با موبایل، نام یا نام خانوادگی',
createEventHostSearchEmpty: 'میزبان تأییدشده‌ای پیدا نشد',
createEventHostSearchFailed: 'دریافت لیست میزبان‌ها ناموفق بود',
reservedCapacityLabel: 'ظرفیت رزروشده (خارج از قبیله)',
createEventSubmit: 'ساخت رویداد تأییدشده',
createEventApprovedHint: 'پس از ساخت، وضعیت پیش‌نویس تأییدشده است و فقط میزبان می‌تواند آن را منتشر کند.',
editStatusBlocked: 'این رویداد در وضعیت «{status}» دیگر قابل ویرایش نیست.',
capacityBelowOccupied: 'ظرفیت نمی‌تواند کمتر از صندلی‌های اشغال‌شده ({min}) باشد',
basicInfoCardTitle: 'اطلاعات پایه',
basicInfoCardDescription: 'عنوان، دسته‌بندی و توضیحات اصلی رویداد',
slugLockedHint: 'پس از انتشار، تغییر اسلاگ تا تایید ادمین روی لینک عمومی اعمال نمی‌شود.',
slugFormatHint: 'فقط حروف کوچک انگلیسی، عدد و خط تیره',
slugFieldLabel: 'اسلاگ',
pricingCardTitle: 'قیمت و ظرفیت',
isFreeLabel: 'رویداد رایگان',
priceTomanLabel: 'قیمت (تومان)',
autoCreateGroupAfterEndLabel: 'ساخت خودکار گروه چت بعد از پایان رویداد',
sendReviewSmsAfterEndLabel: 'ارسال پیامک درخواست نظر بعد از پایان رویداد',
editLockedWithBookings:
'این رویداد {count} رزرو فعال دارد؛ زمان، مکان، قیمت، هزینهٔ کنسلی، محدودیت جنسی/سنی و تنظیمات رفتاری قفل شده‌اند.',
editMediaCardTitle: 'پوستر و تصاویر',
editFaqCardTitle: 'سوالات متداول',
reservedCapacityEditHint: 'ظرفیت رزرو شده: {count} نفر (مهمان‌های خارج از قبیله). تغییر این عدد از صفحه مدیریت ایونت انجام می‌شود.',
revisionApproveSuccess: 'ویرایش تایید و روی رویداد اعمال شد',
revisionRejectSuccess: 'ویرایش رد شد؛ نسخهٔ عمومی قبلی باقی ماند',
revisionPendingCardTitle: 'ویرایش در انتظار تایید',
revisionApprove: 'تایید و اعمال ویرایش',
revisionReject: 'رد ویرایش',
revisionRejectReasonLabel: 'دلیل رد',
revisionLoadFailed: 'بارگذاری ویرایش ناموفق بود',
adminLifecycleHintDraftUnapproved: 'تأیید برای انتشار: فقط اجازه می‌دهد میزبان خودش منتشر کند · انتشار فوری: همین الان عمومی می‌شود',
adminLifecycleHintDraftApproved: 'ادمین تأیید کرده؛ منتظر Publish میزبان بمانید یا با «انتشار فوری» همین الان منتشر کنید',
adminLifecycleHintPendingReview: 'میزبان درخواست انتشار داده؛ «تأیید و انتشار» رویداد را عمومی می‌کند',
adminLifecycleHintPublished: 'پایان: پس از برگزاری · لغو: همهٔ رزروها لغو می‌شوند',
adminLifecycleHintDeleteOnly: 'حذف فقط برای رویدادهای بدون رزرو فعال',
adminLifecycleTitleForcePublish: 'انتشار فوری بدون انتظار برای میزبان',
genderOpen: 'آزاد برای عموم',
genderFemaleOnly: 'خانم‌ها',
genderMaleOnly: 'آقایان',
age15_19: '۱۵-۱۹ سال',
age20_24: '۲۰-۲۴ سال',
age25Plus: '+۲۵',
remainingCapacity: '{count} نفر باقی‌مانده',
eventIsFreeTitle: 'این ایونت رایگان است',
percentOff: '{value}٪ تخفیف',
amountOff: '{value} تخفیف',
discountTypePercent: 'درصدی',
discountTypeFixed: 'مبلغی (تومان)',
bearerPlatform: 'پلتفرم',
discountsLoadFailed: 'دریافت کدهای تخفیف ناموفق بود.',
discountValueRequired: 'مقدار تخفیف را وارد کنید',
discountPercentRange: 'درصد تخفیف باید بین ۱ تا ۹۹ باشد',
discountCountRequired: 'تعداد کد را وارد کنید',
discountCreateFailed: 'ساخت کد تخفیف ناموفق بود',
discountCreatedCount: '{count} کد تخفیف ساخته شد',
discountToggleAfterEnd: 'بعد از پایان رویداد نمی‌توان وضعیت کد را تغییر داد',
discountToggleFailed: 'تغییر وضعیت کد ناموفق بود',
discountDeleteAfterEnd: 'بعد از پایان رویداد نمی‌توان کد را حذف کرد',
discountDeleteUsed: 'کد استفاده‌شده قابل حذف نیست',
discountDeleteFailed: 'حذف کد ناموفق بود',
discountDeleted: 'کد تخفیف حذف شد',
codesCopied: 'کدها کپی شد',
copyFailed: 'کپی ناموفق بود',
freeEventNoDiscounts: 'برای ایونت رایگان امکان تعریف کد تخفیف وجود ندارد.',
activeCodes: 'کدهای فعال',
redemptionCount: 'دفعات استفاده',
totalDiscount: 'مجموع تخفیف',
platformDiscountShare: 'سهم پلتفرم از تخفیف',
createDiscountTitle: 'ساخت کد تخفیف',
createDiscountIntro: 'می‌توانید یک یا چند کد یکتا بسازید و در اختیار مهمانان بگذارید. کد در صفحه پرداخت اعمال می‌شود.',
createDiscountEnded: 'این ایونت به پایان رسیده است و امکان ساخت کد تخفیف تازه وجود ندارد.',
discountTypeLabel: 'نوع تخفیف',
discountPercentValueLabel: 'درصد تخفیف (۱ تا ۹۹)',
discountFixedValueLabel: 'مبلغ تخفیف (تومان)',
uniqueCodeCountLabel: 'تعداد کد یکتا',
bearerLabel: 'هزینه تخفیف بر عهده',
bearerPlatformHint: 'در حالت پلتفرم، تخفیف ابتدا از کمیسیون کسر می‌شود.',
advancedSettingsOpen: 'تنظیمات پیشرفته (محدودیت استفاده)',
advancedSettingsClose: 'بستن تنظیمات پیشرفته',
maxUsesLabel: 'حداکثر دفعات استفاده (اختیاری)',
maxUsesPerUserLabel: 'حداکثر استفاده هر کاربر (اختیاری)',
unlimitedPlaceholder: 'نامحدود',
codesCreatedCount: '{count} کد ساخته شد',
copyAll: 'کپی همه',
definedCodesTitle: 'کدهای تعریف‌شده',
noDiscountCodes: 'هنوز کد تخفیفی برای این ایونت ساخته نشده است.',
platformCostChip: 'هزینه پلتفرم',
createdLabel: 'ساخت',
eventEndedShort: 'رویداد پایان یافته',
availableToGuests: 'در دسترس مهمانان',
deactivated: 'غیرفعال شده',
redeemedCodesTitle: 'کدهای استفاده‌شده ({count})',
payableAmount: 'پرداختی: {amount}',
discountUpdateFailed: 'به‌روزرسانی کد تخفیف ناموفق بود',
categoriesListFailed: 'دریافت لیست دسته‌بندی‌ها ناموفق بود',
categoryCreateFailed: 'ایجاد دسته‌بندی ناموفق بود',
categoryUpdateFailed: 'ویرایش دسته‌بندی ناموفق بود',
categoryDeleteFailed: 'حذف دسته‌بندی ناموفق بود',
} as const