feat: AI SEO generator, full admin panel, i18n sweep, new logo + auth/RTL fixes
Build backend images / build content-svc (push) Failing after 3m39s
Build backend images / build file-svc (push) Failing after 52s
Build backend images / build gateway (push) Failing after 58s
Build backend images / build identity-svc (push) Failing after 1m21s
Build backend images / build notification-svc (push) Failing after 1m0s
Build backend images / build render-svc (push) Failing after 58s
Build backend images / build studio-svc (push) Failing after 55s

AI SEO content generator
- content-svc: per-tenant OpenAI config (ai_settings) + /v1/ai endpoints
  (settings GET/PUT, seo-post) with SEO-expert prompt → structured article
- admin UI to configure token/base-url/model and generate + save as blog
- configurable base URL for restricted networks

Full data-driven admin panel
- generic /api/admin/resource proxy + reusable AdminResource component
- categories/tags/fonts/blogs (CRUD), users (list + ban), plans/slides
- AI content section; nav + i18n

i18n localization sweep
- localized 116 user-facing + studio/editor components to next-intl (fa+en)
  under the auto.* namespace; merge tooling in scripts/merge-i18n.js

Branding + assets
- Monoline F logo (LogoMark + favicon)
- offline SVG placeholder generator (/api/placeholder), dropped picsum.photos

Fixes
- JWT issuer mismatch on content/studio (flatrender → flatrender-identity)
- missing role claim → [Authorize(Roles="Admin")] now works (RBAC)
- Secure cookies broke HTTP sessions → gated behind AUTH_COOKIE_SECURE
- Radix RTL via DirectionProvider (right-aligned menus in fa)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-02 09:35:14 +03:30
parent bcc69f0a2e
commit 3fc7bf2b97
160 changed files with 4397 additions and 767 deletions
+900
View File
@@ -305,5 +305,905 @@
"all": "همه",
"popular": "محبوب",
"new": "جدید"
},
"auto": {
"appAdminLayout": {
"brand": "پنل مدیریت FlatRender",
"nodes": "نودها",
"renderQueue": "صف رندر",
"backToDashboard": "← بازگشت به داشبورد",
"aiContent": "محتوای هوش مصنوعی",
"categories": "دسته‌بندی‌ها",
"tags": "برچسب‌ها",
"fonts": "فونت‌ها",
"blogs": "بلاگ",
"slides": "اسلایدها",
"users": "کاربران",
"plans": "پلن‌ها"
},
"appAdminNodesPage": {
"title": "نودهای رندر",
"registered": "{count, plural, other {# نود ثبت‌شده}}"
},
"appAdminRendersPage": {
"title": "صف رندر",
"totalJobs": "{total} کار در مجموع",
"filterAll": "همه",
"stepQueued": "در صف",
"stepPreparing": "در حال آماده‌سازی",
"stepRendering": "در حال رندر",
"stepUploading": "در حال آپلود",
"stepDone": "انجام‌شده",
"stepFailed": "ناموفق",
"stepCancelled": "لغوشده"
},
"appAuthPage": {
"metaTitle": "ورود",
"metaDescription": "وارد حساب CreatorStudio خود شوید یا یک حساب جدید بسازید.",
"loading": "در حال بارگذاری..."
},
"appDashboardSettingsPage": {
"title": "تنظیمات",
"subtitle": "حساب کاربری، امنیت و تنظیمات اعلان‌های خود را مدیریت کنید.",
"dangerZoneTitle": "منطقه خطر",
"dangerZoneDescription": "حساب کاربری و همه پروژه‌های شما برای همیشه حذف می‌شوند. این عمل قابل بازگشت نیست.",
"deleteAccount": "حذف حساب کاربری"
},
"appError": {
"title": "مشکلی پیش آمد",
"description": "خطایی غیرمنتظره رخ داد. لطفاً صفحه را دوباره بارگذاری کنید.",
"reloadButton": "بارگذاری مجدد صفحه"
},
"appNotFound": {
"title": "صفحه پیدا نشد",
"description": "صفحه‌ای که به دنبال آن هستید وجود ندارد یا ممکن است جابه‌جا شده باشد.",
"goHome": "بازگشت به خانه"
},
"appStudioImageProjectIdPage": {
"loadingEditor": "در حال بارگذاری ویرایشگر…"
},
"appStudioTrimmerPage": {
"back": "بازگشت",
"title": "برش و قاب‌بندی ویدیو",
"ffmpegLoadError": "بارگذاری FFmpeg ناموفق بود. اتصال خود را بررسی کنید و دوباره تلاش کنید.",
"processingError": "پردازش ناموفق بود. کلیپ کوتاه‌تر یا قالب دیگری را امتحان کنید."
},
"appStudioVideoProjectIdPage": {
"loading": "در حال بارگذاری استودیو…"
},
"appVideoMakerPage": {
"metaTitle": "ویدیوساز هوش مصنوعی",
"metaDescription": "در چند دقیقه ویدیوهای حرفه‌ای بسازید؛ با فیلم‌نامه هوش مصنوعی، زیرنویس خودکار، بیش از ۵۰۰ قالب و خروجی تک‌کلیکی."
},
"componentsAdminNodesTable": {
"emptyState": "هیچ نودی ثبت نشده است. برای نمایش، عامل نود را روی یک دستگاه رندر اجرا کنید.",
"colNode": "نود",
"colStatus": "وضعیت",
"colSlots": "اسلات‌ها",
"colHeartbeat": "ضربان",
"colActiveJob": "کار فعال",
"colTags": "برچسب‌ها",
"colActions": "عملیات",
"actionDrain": "تخلیه",
"actionRelease": "آزادسازی"
},
"componentsAdminRenderQueueTable": {
"emptyState": "هیچ کار رندری برای فیلتر انتخاب‌شده یافت نشد.",
"colJobId": "شناسه کار",
"colProject": "پروژه",
"colStep": "مرحله",
"colProgress": "پیشرفت",
"colQuality": "کیفیت",
"colNode": "نود",
"colCreated": "زمان ایجاد",
"colActions": "عملیات",
"actionRetry": "تلاش مجدد",
"actionCancel": "لغو"
},
"componentsAuthAuthPageContent": {
"genericError": "خطایی رخ داد. لطفاً دوباره تلاش کنید.",
"accountCreatedVerify": "حساب شما ساخته شد. برای تأیید، ایمیل خود را بررسی کنید و سپس وارد شوید.",
"accountCreatedSignIn": "حساب شما ساخته شد. لطفاً وارد شوید.",
"networkError": "خطای شبکه. لطفاً دوباره تلاش کنید.",
"resetCodeSent": "اگر این ایمیل ثبت شده باشد، کد بازنشانی برای شما ارسال شد.",
"invalidCode": "کد نامعتبر یا منقضی‌شده است.",
"passwordUpdated": "رمز عبور به‌روزرسانی شد. اکنون می‌توانید وارد شوید.",
"checkingAuth": "در حال بررسی احراز هویت...",
"resetTitle": "بازنشانی رمز عبور",
"enterCodeTitle": "وارد کردن کد بازنشانی",
"resetSubtitle": "یک کد یک‌بار‌مصرف به ایمیل شما ارسال می‌کنیم.",
"enterCodeSubtitle": "کد ارسال‌شده به {email} را در ایمیل خود بررسی کنید",
"emailAddressLabel": "نشانی ایمیل",
"sendResetCode": "ارسال کد بازنشانی",
"resetCodeLabel": "کد بازنشانی",
"resetCodePlaceholder": "کد ۶ رقمی",
"newPasswordLabel": "رمز عبور جدید",
"setNewPassword": "تنظیم رمز عبور جدید",
"backToSignIn": "بازگشت به ورود",
"welcomeTitle": "به فلت‌رندر خوش آمدید",
"signInSubtitle": "برای ادامه به داشبورد خود وارد شوید",
"signUpSubtitle": "برای شروع یک حساب رایگان بسازید",
"signInTab": "ورود",
"signUpTab": "ثبت‌نام",
"emailLabel": "ایمیل",
"passwordLabel": "رمز عبور",
"forgotPassword": "رمز عبور را فراموش کرده‌اید؟",
"createAccount": "ساخت حساب",
"legalNotice": "با ادامه دادن، با <terms>قوانین</terms> و <privacy>سیاست حفظ حریم خصوصی</privacy> ما موافقت می‌کنید."
},
"componentsAuthSupabaseSetupNotice": {
"title": "Supabase پیکربندی نشده است",
"instructions": "فایل <envExample></envExample> را به <envLocal></envLocal> کپی کنید و مقادیر <supabaseUrl></supabaseUrl> و <supabaseAnonKey></supabaseAnonKey> را تنظیم کنید، سپس سرور توسعه را دوباره راه‌اندازی کنید.",
"continueDev": "ادامه بدون ورود (فقط حالت توسعه)",
"backToHome": "بازگشت به خانه"
},
"componentsDashboardDashboardEmptyState": {
"title": "هنوز پروژه‌ای ندارید",
"description": "یک پروژه ویدیو، تصویر یا برش بسازید تا اینجا نمایش داده شود. هر چه ذخیره کنید در این فضای کاری ظاهر می‌شود.",
"createFirstProject": "اولین پروژه خود را بسازید"
},
"componentsDashboardDashboardPlanBadge": {
"upgradePlan": "ارتقای اشتراک"
},
"componentsDashboardDashboardProjectsSection": {
"recentProjects": "پروژه‌های اخیر",
"noResultsTitle": "هیچ پروژه‌ای با جستجوی شما مطابقت ندارد",
"noResultsDescription": "کلمه کلیدی دیگری را امتحان کنید یا نوار جستجو را پاک کنید."
},
"componentsDashboardSettingsSettingsBilling": {
"title": "صورتحساب و اشتراک",
"subtitle": "اشتراک و روش پرداخت خود را مدیریت کنید.",
"currentPlan": "اشتراک فعلی",
"planFree": "رایگان",
"planPro": "حرفه‌ای",
"planBusiness": "تجاری",
"statusCancelsAtPeriodEnd": "در پایان دوره لغو می‌شود",
"statusActive": "فعال",
"statusFreeTier": "نسخه رایگان",
"upgrade": "ارتقا",
"changePlan": "تغییر اشتراک",
"cancelPlan": "لغو اشتراک",
"cancelling": "در حال لغو…",
"cancelConfirm": "اشتراک خود را لغو می‌کنید؟ تا پایان دوره فعلی دسترسی شما حفظ می‌شود.",
"cancelFailed": "لغو اشتراک ناموفق بود. لطفاً دوباره تلاش کنید.",
"networkError": "خطای شبکه. لطفاً دوباره تلاش کنید.",
"cancelledNotice": "اشتراک شما لغو شد. تا پایان دوره صورتحساب، دسترسی شما حفظ می‌شود.",
"upgradeHint": "برای دسترسی به پروژه‌های نامحدود، خروجی ۴K و قالب‌های ویژه، اشتراک خود را ارتقا دهید.",
"featureFree5Projects": "۵ پروژه",
"featureFree720pExport": "خروجی ۷۲۰p",
"featureFreeCommunityTemplates": "قالب‌های عمومی",
"featureProUnlimitedProjects": "پروژه‌های نامحدود",
"featurePro4kExport": "خروجی ۴K",
"featureProAllTemplates": "همه قالب‌ها",
"featureProPriorityRenderQueue": "صف رندر اولویت‌دار",
"featureProCustomFonts": "فونت‌های سفارشی",
"featureBusinessEverythingInPro": "همه امکانات نسخه حرفه‌ای",
"featureBusinessTeamSeats": "صندلی‌های تیمی",
"featureBusinessWhiteLabelExport": "خروجی بدون برند",
"featureBusinessApiAccess": "دسترسی به API",
"featureBusinessDedicatedSupport": "پشتیبانی اختصاصی"
},
"componentsDashboardSettingsSettingsNotifications": {
"title": "اعلان‌ها",
"subtitle": "انتخاب کنید چه ایمیل‌هایی از فلت‌رندر دریافت کنید.",
"savePreferences": "ذخیره تنظیمات",
"saved": "ذخیره شد!",
"renderCompleteLabel": "اتمام رندر",
"renderCompleteDescription": "هنگام پایان خروجی گرفتن از ویدیو به شما اطلاع داده می‌شود.",
"projectSharedLabel": "اشتراک‌گذاری پروژه با شما",
"projectSharedDescription": "هنگامی که یکی از اعضای تیم پروژه‌ای را با شما به اشتراک می‌گذارد.",
"weeklyDigestLabel": "خلاصه هفتگی",
"weeklyDigestDescription": "خلاصه‌ای از قالب‌های جدید و به‌روزرسانی‌های پلتفرم.",
"productNewsLabel": "اخبار محصول",
"productNewsDescription": "امکانات جدید، نکته‌ها و اطلاعیه‌ها."
},
"componentsDashboardSettingsSettingsProfile": {
"title": "پروفایل",
"subtitle": "نام عمومی و ایمیل حساب شما.",
"displayNameLabel": "نام نمایشی",
"displayNamePlaceholder": "نام شما",
"emailLabel": "ایمیل",
"emailHint": "ایمیل را از اینجا نمی‌توان تغییر داد. با پشتیبانی تماس بگیرید.",
"saving": "در حال ذخیره…",
"saveChanges": "ذخیره تغییرات",
"updateFailed": "به‌روزرسانی پروفایل ممکن نشد.",
"updateSuccess": "پروفایل با موفقیت به‌روزرسانی شد.",
"networkError": "خطای شبکه. لطفاً دوباره تلاش کنید."
},
"componentsDashboardSettingsSettingsSecurity": {
"title": "امنیت",
"subtitle": "رمز عبور حساب خود را تغییر دهید.",
"currentPasswordLabel": "رمز عبور فعلی",
"newPasswordLabel": "رمز عبور جدید",
"confirmPasswordLabel": "تکرار رمز عبور جدید",
"showPassword": "نمایش رمز عبور",
"hidePassword": "پنهان کردن رمز عبور",
"saving": "در حال ذخیره…",
"changePassword": "تغییر رمز عبور",
"errorMinLength": "رمز عبور جدید باید حداقل ۸ کاراکتر باشد.",
"errorMismatch": "رمزهای عبور مطابقت ندارند.",
"errorChangeFailed": "تغییر رمز عبور ممکن نشد.",
"changeSuccess": "رمز عبور با موفقیت تغییر کرد.",
"networkError": "خطای شبکه. لطفاً دوباره تلاش کنید."
},
"componentsImageMakerImageMakerBeforeAfter": {
"beforeAlt": "قبل از ویرایش",
"afterAlt": "بعد از ویرایش با هوش مصنوعی",
"beforeLabel": "قبل",
"afterLabel": "بعد",
"caption": "رنگ، چیدمان و استایل برند با هوش مصنوعی، تنها با یک کلیک اعمال می‌شود"
},
"componentsImageMakerImageMakerGallery": {
"title": "نمونه‌هایی از ساخته‌های سازندگان",
"subtitle": "چیدمان‌ها و سبک‌های واقعی که می‌توانید بازآفرینی کنید—یا از آن‌ها برای پروژه‌ بعدی‌تان الهام بگیرید."
},
"componentsLayoutNavbarMenuDropdown": {
"learn": "آموزش"
},
"componentsLayoutNavbarMobileMenu": {
"videoMaker": "ویدیوساز",
"imageMaker": "تصویرساز",
"pricing": "قیمت‌گذاری",
"learn": "آموزش"
},
"componentsSectionsHeroPreviewCards": {
"heading": "ساخته‌شده توسط طراحان موشن‌گرافیک در سطح جهانی",
"previewAriaLabel": "پیش‌نمایش {label}",
"template3dTitle": "کارخانه انیمیشن‌های سه‌بعدی",
"templateWhiteboardTitle": "جعبه‌ابزار انیمیشن وایت‌بردی",
"templateExplainerTitle": "جعبه‌ابزار ویدیوی توضیحی سه‌بعدی",
"templateTrendyTitle": "جعبه‌ابزار ویدیوی توضیحی ترِند"
},
"componentsSectionsPricingAnimatedPrice": {
"perMonth": "/ ماهانه"
},
"componentsSectionsPricingBillingToggle": {
"monthly": "ماهانه",
"yearly": "سالانه",
"savePercent": "{percent}٪ صرفه‌جویی",
"switchToYearly": "برای صرفه‌جویی بیشتر به پرداخت سالانه تغییر دهید"
},
"componentsSectionsPricingCard": {
"mostPopular": "محبوب‌ترین"
},
"componentsTemplatesTemplateDetailExamples": {
"heading": "ویدیوهای ساخته‌شده با این قالب"
},
"componentsTemplatesTemplateDetailInfo": {
"sceneCount": "{count} صحنه",
"durationFlexible": "انعطاف‌پذیر",
"durationFixed": "ثابت",
"fallbackDescription": "با این قالب حرفه‌ای ویدیوهای چشم‌نواز بسازید. صحنه‌ها را انتخاب کنید، متن را سفارشی کنید و در چند دقیقه خروجی بگیرید.",
"availableStyles": "سبک‌های موجود ({count})",
"styleClassic": "کلاسیک",
"styleModern": "مدرن",
"styleBold": "پررنگ",
"styleMinimal": "مینیمال",
"createNow": "همین حالا بساز",
"removeFromFavorites": "حذف از علاقه‌مندی‌ها",
"addToFavorites": "افزودن به علاقه‌مندی‌ها",
"createError": "ساخت پروژه ممکن نشد: {error}"
},
"componentsTemplatesTemplateDetailPreview": {
"posterAlt": "پیش‌نمایش {name}",
"playPreview": "پخش پیش‌نمایش قالب"
},
"componentsTemplatesTemplateDetailRating": {
"starsAriaLabel": "{score} از ۵ ستاره",
"ratingsCount": "({count} امتیاز)"
},
"componentsTemplatesTemplatesActiveFilters": {
"removeFilter": "حذف فیلتر: {label}",
"searchLabel": "جستجو: «{query}»"
},
"componentsTemplatesVideoVideoTemplatesHero": {
"breadcrumbHome": "خانه",
"breadcrumbTemplates": "قالب‌ها",
"title": "قالب‌های ویدیویی برای هر نیازی",
"subtitle": "قالب‌های ویدیویی قابل‌شخصی‌سازی را پیدا کنید. با ویدیوساز آنلاین فلت‌رندر، تیزرهای انیمیشنی، نمایش لوگو، اسلایدشو و موارد دیگر بسازید."
},
"componentsTemplatesVideoVideoTemplatesPageContent": {
"openTemplateError": "باز کردن قالب ممکن نشد: {error}",
"emptyStateTitle": "هیچ قالبی با فیلترهای شما مطابقت ندارد",
"emptyStateDescription": "اندازه، دسته‌بندی یا عبارت جست‌وجوی دیگری را امتحان کنید."
},
"componentsTemplatesVideoVideoTemplatesToolbar": {
"searchPlaceholder": "جست‌وجو در هزاران قالب",
"sortByLabel": "مرتب‌سازی بر اساس:",
"sortAriaLabel": "مرتب‌سازی قالب‌ها",
"sortTrending": "پرطرفدار",
"sortNewest": "جدیدترین",
"sortPopular": "محبوب‌ترین"
},
"componentsTrimmerTrimmerExportSection": {
"heading": "خروجی",
"processing": "در حال پردازش…",
"trimAndCrop": "برش و کراپ",
"loadingEngine": "در حال بارگذاری موتور FFmpeg…",
"progress": "پیشرفت",
"download": "دانلود {format}"
},
"componentsTrimmerTrimmerStrip": {
"heading": "برش",
"trimStart": "شروع برش",
"trimEnd": "پایان برش"
},
"componentsTrimmerTrimmerUploadZone": {
"dropPrompt": "ویدیو را بکشید و رها کنید، یا برای انتخاب کلیک کنید",
"supportedFormats": "MP4، WebM، MOV و دیگر فرمت‌های ویدیویی"
},
"componentsDashboardDashboardSidebar": {
"currentPlan": "پلن فعلی",
"signOut": "خروج از حساب"
},
"componentsDashboardDashboardSidebarNav": {
"myProjects": "پروژه‌های من",
"templates": "قالب‌ها",
"upgrade": "ارتقا",
"settings": "تنظیمات",
"navLabel": "داشبورد"
},
"componentsDashboardDashboardTopBar": {
"searchPlaceholder": "جستجوی پروژه‌ها..."
},
"componentsSectionsPricingCompareTable": {
"mostPopular": "محبوب‌ترین",
"compareHeading": "مقایسه پلن‌ها و امکانات",
"saveUpTo": "تا {percent}٪ صرفه‌جویی کنید"
},
"componentsSectionsPricingCreditsBanner": {
"refillCredits": "با داشتن یک پلن فعال می‌توانید هر زمان که خواستید اعتبار هوش مصنوعی خود را شارژ کنید"
},
"componentsSectionsPricingFeatureList": {
"moreInformation": "اطلاعات بیشتر"
},
"componentsSectionsPricingFreeBanner": {
"title": "همیشه رایگان برای امتحان",
"description": "با پلن رایگان، CreatorStudio را تجربه کنید — ویدیوهای HD همراه با واترمارک بسازید، امکانات پایه را امتحان کنید و پیش از خرید اشتراک آزمایش کنید.",
"ctaLabel": "شروع کنید"
},
"componentsSectionsTemplateCard": {
"useTemplateLabel": "استفاده از قالب",
"openingLabel": "در حال باز کردن…",
"viewTemplateAriaLabel": "مشاهده قالب {name}"
},
"componentsSectionsTestimonialCard": {
"ratingLabel": "امتیاز ۵ از ۵ ستاره"
},
"componentsTemplatesTemplateDetailBreadcrumb": {
"breadcrumbAriaLabel": "مسیر راهنما",
"home": "خانه",
"templates": "قالب‌ها"
},
"appImageMakerPage": {
"metaTitle": "ساخت تصویر با هوش مصنوعی",
"metaDescription": "تصاویر حرفه‌ای را در لحظه با تولید هوشمند، قالب‌ها، کیت‌های برند و خروجی گروهی طراحی کنید."
},
"appPage": {
"metaTitle": "ساخت ویدیو و تصویر حرفه‌ای با هوش مصنوعی",
"metaDescription": "فلت‌رندر به سازندگان محتوا و برندها کمک می‌کند تا با قالب‌ها، ویرایشگرها و خروجی تک‌کلیکی هوش مصنوعی، ویدیو و تصویر حرفه‌ای بسازند."
},
"componentsDashboardNewProjectMenu": {
"newProject": "پروژه جدید",
"creating": "در حال ساخت…",
"videoProject": "پروژه ویدیویی",
"imageProject": "پروژه تصویری",
"trimCropVideo": "برش/کراپ ویدیو"
},
"componentsDashboardProjectCard": {
"openInStudio": "باز کردن در استودیو",
"download": "دانلود",
"rename": "تغییر نام",
"duplicate": "ایجاد نسخه مشابه",
"delete": "حذف",
"statusRendering": "در حال رندر",
"statusReady": "آماده",
"statusDraft": "پیش‌نویس",
"actionsFor": "عملیات برای {name}"
},
"componentsSectionsPricingCheckoutButton": {
"checkoutFailed": "پرداخت ناموفق بود.",
"noCheckoutUrl": "آدرس پرداخت دریافت نشد."
},
"componentsTemplatesTemplatesSidebar": {
"categoryHeading": "دسته‌بندی",
"styleHeading": "سبک",
"colorHeading": "رنگ"
},
"componentsTemplatesVideoVideoTemplateCompactCard": {
"viewTemplateAria": "مشاهده قالب {name}",
"opening": "در حال باز شدن…",
"useTemplate": "استفاده از قالب",
"sceneCount": "{count} صحنه"
},
"componentsTemplatesVideoVideoTemplatesCarouselRow": {
"seeAll": "مشاهده همه",
"scrollLeftAria": "اسکرول {title} به چپ",
"scrollRightAria": "اسکرول {title} به راست"
},
"componentsTemplatesVideoVideoTemplatesCategorySidebar": {
"categoriesNavLabel": "دسته‌بندی قالب‌ها",
"categoryAll": "همه قالب‌ها",
"categoryAnimation": "ویدیوهای انیمیشن",
"categoryIntros": "اینترو و لوگو",
"categoryEditing": "تدوین ویدیو",
"categoryInvitation": "ویدیوهای دعوت",
"categoryHoliday": "ویدیوهای مناسبتی",
"categorySlideshow": "اسلایدشو",
"categoryPresentations": "ارائه‌ها",
"categorySocial": "ویدیوهای شبکه‌های اجتماعی",
"categoryAds": "قالب‌های تبلیغاتی ویدیویی",
"categorySales": "ویدیوهای فروش",
"categoryMusic": "ویژوال موزیک",
"filters": "فیلترها",
"sizeLabel": "اندازه"
},
"componentsTemplatesVideoVideoTemplatesFilterControls": {
"premiumOnly": "فقط ویژه",
"premiumOnlyAriaLabel": "فقط ویژه",
"sizeAriaLabel": "اندازه قالب",
"sizePlaceholder": "همه اندازه‌ها"
},
"componentsTrimmerTrimmerVideoPreview": {
"previewAndCrop": "پیش‌نمایش و برش",
"aspectFree": "آزاد",
"aspect16x9": "۱۶:۹",
"aspect9x16": "۹:۱۶",
"aspect1x1": "۱:۱",
"aspect4x3": "۴:۳"
},
"componentsVideoMakerVideoMakerEditorPreview": {
"appBarTitle": "کریتور استودیو — ویرایشگر ویدیو",
"sceneCaption": "صحنه ۲ · معرفی محصول · ۰۰:۱۲",
"layersHeading": "لایه‌ها",
"layerIntroTitle": "عنوان آغازین",
"layerBrollClip": "کلیپ مکمل",
"layerBackgroundMusic": "موسیقی پس‌زمینه",
"layerCaptions": "زیرنویس‌ها"
},
"componentsVideoMakerVideoMakerTemplateCarousel": {
"title": "قالب‌های ویدیویی برای هر داستان",
"subtitle": "از یک طرح آماده شروع کنید و در چند دقیقه صحنه‌ها، متن و موسیقی را شخصی‌سازی کنید.",
"templatePromo": "تبلیغ محصول",
"templateYoutube": "اینترو یوتیوب",
"templateReel": "قلاب ریلز",
"templateCorporate": "خبر سازمانی",
"templateAd": "نمایش تبلیغاتی",
"templateTutorial": "آموزشی",
"templateEvent": "جمع‌بندی رویداد",
"templateTestimonial": "روایت مشتری"
},
"componentsImageEditorAiRemoveBgModal": {
"openImageFirst": "ابتدا یک تصویر باز کنید.",
"removalFailed": "حذف پس‌زمینه ناموفق بود.",
"backgroundRemoved": "پس‌زمینه حذف شد!",
"serviceUnreachable": "دسترسی به سرویس حذف پس‌زمینه ممکن نشد.",
"title": "حذف پس‌زمینه با هوش مصنوعی",
"description": "پس‌زمینه را از تصویر پایه حذف کنید. نتیجه، لایه پس‌زمینه را با یک PNG شفاف جایگزین می‌کند.",
"processing": "در حال پردازش…",
"removeBackground": "حذف پس‌زمینه"
},
"componentsImageEditorImageCropControls": {
"aspectFree": "آزاد",
"cancel": "انصراف",
"applying": "در حال اعمال…",
"applyCrop": "اعمال برش"
},
"componentsImageEditorImageEditorRightPanel": {
"tabAdjust": "تنظیمات",
"tabFilters": "فیلترها",
"tabLayers": "لایه‌ها"
},
"componentsImageEditorImageEditorToolbar": {
"toolSelect": "انتخاب",
"toolCrop": "برش",
"toolText": "متن",
"toolShape": "شکل",
"toolDraw": "ترسیم",
"toolAi": "هوش مصنوعی",
"shapeRectangle": "مستطیل",
"shapeCircle": "دایره",
"shapeLine": "خط",
"shapeArrow": "پیکان"
},
"componentsImageEditorImageEditorTopBar": {
"defaultProjectName": "ویرایشگر تصویر",
"open": "باز کردن",
"export": "خروجی گرفتن",
"format": "فرمت",
"quality": "کیفیت",
"download": "دانلود",
"canvasNotReady": "بوم آماده نیست.",
"exportStarted": "خروجی‌گیری آغاز شد"
},
"componentsImageEditorPanelsAdjustPanel": {
"emptyState": "برای استفاده از تنظیمات، یک تصویر باز کنید.",
"brightness": "روشنایی",
"contrast": "کنتراست",
"saturation": "اشباع رنگ",
"hue": "ته‌رنگ",
"blur": "محو شدگی",
"sharpen": "وضوح",
"vignette": "وینیت"
},
"componentsImageEditorPanelsFiltersPanel": {
"emptyState": "برای اعمال فیلترها یک تصویر باز کنید."
},
"componentsImageEditorPanelsLayersPanel": {
"reorderLayer": "تغییر ترتیب {name}",
"hideLayer": "پنهان کردن لایه",
"showLayer": "نمایش لایه",
"deleteLayer": "حذف {name}",
"emptyState": "هنوز لایه‌ای وجود ندارد."
},
"componentsStudioAddSceneMenu": {
"addScene": "افزودن صحنه",
"blankScene": "صحنه خالی",
"fromTemplate": "از روی قالب"
},
"componentsStudioDraggableSceneItem": {
"dragScene": "جابجایی صحنه {name}",
"sceneNameLabel": "نام صحنه"
},
"componentsStudioProjectSaveIndicator": {
"saving": "در حال ذخیره…",
"saved": "ذخیره شد",
"localSave": "ذخیره محلی",
"saveFailed": "ذخیره ناموفق بود",
"retry": "تلاش مجدد"
},
"componentsStudioPropertiesPanel": {
"title": "ویژگی‌ها",
"emptyState": "برای ویرایش ویژگی‌ها یک لایه را انتخاب کنید",
"layerLabel": "لایه {type}"
},
"componentsStudioRenderModal": {
"dialogTitle": "خروجی گرفتن",
"dialogDescription": "پروژه خود را از طریق خط پردازش nexrender به صورت MP4 خروجی بگیرید.",
"videoReady": "ویدیوی شما آماده است.",
"downloadMp4": "دانلود MP4",
"shareLink": "اشتراک‌گذاری لینک",
"close": "بستن",
"errorGeneric": "مشکلی پیش آمد.",
"retry": "تلاش دوباره",
"previewAlt": "پیش‌نمایش رندر",
"rendering": "در حال رندر…",
"progress": "پیشرفت",
"resolution": "وضوح تصویر",
"format": "فرمت",
"fps": "فریم بر ثانیه",
"startRendering": "شروع رندر",
"errorFetchStatus": "دریافت وضعیت رندر امکان‌پذیر نبود.",
"renderingProgress": "در حال رندر… {progress}٪",
"errorRenderFailed": "رندر ناموفق بود.",
"errorNetworkPolling": "خطای شبکه هنگام بررسی وضعیت.",
"errorStartRender": "شروع رندر ناموفق بود.",
"queued": "در صف رندر قرار گرفت…",
"errorReachApi": "دسترسی به سرویس رندر امکان‌پذیر نبود."
},
"componentsStudioSceneBrowserCard": {
"selectCta": "انتخاب"
},
"componentsStudioSceneBrowserModal": {
"title": "انتخاب صحنه‌ها",
"closeAriaLabel": "بستن",
"filterAll": "همه",
"filterVideo": "ویدیو",
"filterPhoto": "عکس",
"searchPlaceholder": "جستجوی صحنه‌ها...",
"emptyState": "هیچ صحنه‌ای با فیلترهای شما مطابقت ندارد.",
"selectedSuffix": "{count, plural, one {صحنه انتخاب شد} other {صحنه انتخاب شد}}",
"deselectAll": "لغو انتخاب همه",
"cancel": "انصراف",
"addToVideo": "افزودن به ویدیو",
"addToVideoCount": "افزودن به ویدیو ({count})"
},
"componentsStudioSceneItemActions": {
"duplicate": "تکثیر {sceneName}",
"delete": "حذف {sceneName}"
},
"componentsStudioSceneTransitionPicker": {
"transition": "گذار"
},
"componentsStudioStudioMobileGate": {
"titleVideo": "استودیوی ویدیو به مرورگر دسکتاپ نیاز دارد.",
"titleImage": "ویرایشگر تصویر به مرورگر دسکتاپ نیاز دارد.",
"description": "لطفاً این پروژه را روی رایانه رومیزی یا لپ‌تاپ باز کنید.",
"dashboardCta": "رفتن به داشبورد"
},
"componentsStudioStudioToolbar": {
"defaultText": "این متن را ویرایش کنید",
"addText": "افزودن متن",
"addImage": "افزودن تصویر",
"addVideoClip": "افزودن کلیپ ویدیویی",
"addShape": "افزودن شکل",
"shapeRectangle": "مستطیل",
"shapeCircle": "دایره",
"shapeLine": "خط",
"shapeArrow": "پیکان"
},
"componentsStudioCanvasVideoLayerNode": {
"defaultFileName": "ویدیو",
"placeholder": "کلیپ ویدیویی"
},
"componentsStudioPropertiesCommonLayerControls": {
"transformTitle": "تبدیل",
"widthLabel": "عرض",
"heightLabel": "ارتفاع",
"rotationLabel": "چرخش (°)",
"layerOrderTitle": "ترتیب لایه‌ها",
"toFront": "انتقال به جلو",
"toBack": "انتقال به عقب",
"deleteLayer": "حذف لایه"
},
"componentsStudioPropertiesImageLayerProperties": {
"sectionTitle": "تصویر",
"opacity": "شفافیت",
"flipHorizontal": "وارونه افقی",
"flipVertical": "وارونه عمودی",
"replaceImage": "جایگزینی تصویر",
"borderRadius": "گردی گوشه‌ها"
},
"componentsStudioPropertiesPropertyControls": {
"lockAspectRatio": "قفل نسبت ابعاد",
"unlockAspectRatio": "باز کردن قفل نسبت ابعاد"
},
"componentsStudioPropertiesShapeLayerProperties": {
"sectionTitle": "شکل",
"fillColor": "رنگ پرکننده",
"strokeColor": "رنگ خط دور",
"strokeWidth": "ضخامت خط دور",
"borderRadius": "گردی گوشه‌ها",
"opacity": "شفافیت"
},
"componentsStudioPropertiesTextLayerProperties": {
"sectionTitle": "متن",
"fontFamily": "خانواده فونت",
"fontSize": "اندازه فونت",
"bold": "ضخیم",
"italic": "مورب",
"underline": "زیرخط",
"textColor": "رنگ متن",
"alignment": "تراز",
"alignLeft": "چپ‌چین",
"alignCenter": "وسط‌چین",
"alignRight": "راست‌چین",
"letterSpacing": "فاصله حروف",
"lineHeight": "ارتفاع خط",
"opacity": "شفافیت",
"animation": "انیمیشن"
},
"componentsStudioSidebarAudioSidebarContent": {
"musicTab": "موسیقی",
"voiceoverTab": "صداگذاری"
},
"componentsStudioSidebarAudioSidebarMusicTab": {
"upload": "بارگذاری",
"includeTemplateSfx": "افزودن جلوه صوتی قالب",
"searchPlaceholder": "جستجوی موسیقی",
"musicLibrary": "کتابخانه موسیقی",
"myMusic": "موسیقی‌های من",
"uploadOwnMusic": "موسیقی خود را بارگذاری کنید"
},
"componentsStudioSidebarAudioSidebarVoiceoverPane": {
"comingSoon": "به‌زودی",
"description": "صداگذاری را مستقیماً از روی متن خود در استودیو بسازید."
},
"componentsStudioSidebarColorsCustomTab": {
"mainColor": "رنگ اصلی",
"additionalColor": "رنگ مکمل",
"applyToAllScenes": "اعمال به همه صحنه‌ها"
},
"componentsStudioSidebarColorsPalettesTab": {
"paletteFallback": "پالت {number}",
"applyPaletteAriaLabel": "اعمال پالت {name}"
},
"componentsStudioSidebarColorsSidebarContent": {
"palettesTab": "پالت‌ها",
"customTab": "سفارشی"
},
"componentsStudioSidebarColorsTemplatePreviewCard": {
"mainColor": "رنگ اصلی",
"additional": "رنگ مکمل",
"paletteFallback": "پالت {number}"
},
"componentsStudioSidebarFontSidebarContent": {
"title": "فونت",
"fontFamily": "خانواده فونت",
"applyToAll": "اعمال روی همه لایه‌های متنی"
},
"componentsStudioSidebarSceneEditSidebarContent": {
"panelTitle": "ویرایش صحنه",
"titleLabel": "عنوان",
"subtitleLabel": "زیرعنوان",
"textLabel": "متن {index}",
"textPlaceholder": "اینجا بنویسید…",
"imageLabel": "تصویر {index}",
"emptyStateTitle": "این صحنه هنوز محتوایی ندارد.",
"emptyStateHint": "برای شروع ویرایش، یک لایه متن اضافه کنید.",
"addTextLayer": "افزودن لایه متن",
"defaultText": "متن شما اینجا",
"replaceImage": "جایگزینی تصویر",
"uploadImage": "بارگذاری تصویر"
},
"componentsStudioSidebarTransitionsSidebarContent": {
"heading": "ترانزیشن‌ها",
"randomTransition": "ترانزیشن تصادفی",
"noTransition": "بدون ترانزیشن",
"exportNote": "ترانزیشن‌های اعمال‌شده پس از خروجی گرفتن روی همه صحنه‌ها نمایش داده می‌شوند."
},
"componentsStudioSidebarTtsSidebarContent": {
"title": "تبدیل متن به گفتار",
"comingSoon": "به‌زودی",
"description": "صداگذاری روایت را مستقیماً از روی متن خود در استودیو بسازید."
},
"componentsStudioSidebarWatermarkSidebarContent": {
"title": "واترمارک من",
"applyToAllScenes": "اعمال روی همه صحنه‌ها",
"uploadLogo": "لوگوی واترمارک خود را بارگذاری کنید",
"uploadHint": "PNG یا SVG، حداکثر ۲ مگابایت",
"position": "موقعیت",
"positionTopLeft": "بالا چپ",
"positionTopCenter": "بالا وسط",
"positionTopRight": "بالا راست",
"positionMiddleLeft": "میانه چپ",
"positionCenter": "وسط",
"positionMiddleRight": "میانه راست",
"positionBottomLeft": "پایین چپ",
"positionBottomCenter": "پایین وسط",
"positionBottomRight": "پایین راست",
"opacity": "شفافیت",
"opacityAriaLabel": "شفافیت واترمارک"
},
"componentsStudioTimelineAudioTrack": {
"emptyState": "بدون صدا — برای افزودن کلیک کنید"
},
"componentsStudioTimelineSceneBlock": {
"resizeDuration": "تغییر مدت‌زمان {name}"
},
"componentsStudioTimelineSceneThumbnailBlock": {
"duplicateScene": "تکثیر {name}",
"deleteScene": "حذف {name}",
"resizeSceneDuration": "تغییر مدت زمان {name}",
"sceneNameLabel": "نام صحنه",
"doubleClickToRename": "برای تغییر نام، دوبار کلیک کنید"
},
"componentsStudioTimelineSceneThumbnailStrip": {
"browseScenes": "مرور صحنه‌ها",
"addScene": "افزودن صحنه"
},
"componentsStudioTimelineTimeRuler": {
"rulerAriaLabel": "خط‌کش زمان — برای جابه‌جایی کلیک کنید"
},
"componentsStudioTimelineTimelineActionRow": {
"addTextToSpeech": "افزودن تبدیل متن به گفتار",
"addAudio": "افزودن صدا"
},
"componentsStudioTimelineTimelineControlBar": {
"copyLayer": "کپی لایه",
"deleteLayer": "حذف لایه",
"stop": "توقف",
"preview": "پیش‌نمایش",
"previewFromStart": "پیش‌نمایش از ابتدا",
"seekToStart": "رفتن به ابتدا",
"zoomOut": "کوچک‌نمایی",
"zoomIn": "بزرگ‌نمایی",
"timelineZoom": "بزرگ‌نمایی خط زمان"
},
"componentsStudioTimelineTimelineQuickActions": {
"addTextToSpeech": "افزودن تبدیل متن به گفتار",
"addAudio": "افزودن صدا"
},
"componentsStudioVideoCanvasArea": {
"loading": "در حال بارگذاری بوم…",
"editingNotice": "شما در حالت ویرایش هستید — ممکن است ظاهر متفاوت به نظر برسد. برای دیدن نتیجه نهایی روی <preview>پیش‌نمایش</preview> بزنید."
},
"componentsStudioVideoStudioSidebarDock": {
"scenes": "صحنه‌ها",
"audio": "صدا",
"textToSpeech": "تبدیل متن به گفتار",
"colors": "رنگ‌ها",
"transitions": "گذارها",
"font": "فونت",
"myWatermark": "واترمارک من",
"toolsNavLabel": "ابزارهای استودیو",
"guideMe": "راهنمایی‌ام کن",
"guideComingSoon": "👋 راهنما به‌زودی ارائه می‌شود!",
"keyboardShortcuts": "میان‌برهای صفحه‌کلید",
"keyboardShortcutsComingSoon": "میان‌برهای صفحه‌کلید به‌زودی ارائه می‌شوند!"
},
"componentsStudioVideoStudioTopBar": {
"snapshotSaved": "اسنپ‌شات ذخیره شد!",
"canvasNotReady": "بوم آماده نیست. دوباره تلاش کنید.",
"homeLink": "خانه فلت‌رندر",
"breadcrumb": "مسیر",
"myProjects": "پروژه‌های من",
"projectName": "نام پروژه",
"undo": "واگرد",
"redo": "ازنو",
"stop": "توقف",
"preview": "پیش‌نمایش",
"takeSnapshot": "گرفتن اسنپ‌شات",
"export": "خروجی گرفتن"
},
"componentsStudioVideoStudioTopBarSaveBadge": {
"savingTitle": "در حال ذخیره…",
"savingLabel": "در حال ذخیره",
"errorTitle": "ذخیره ناموفق بود",
"errorLabel": "ذخیره ناموفق بود",
"local": "محلی",
"saved": "ذخیره شد ✓"
},
"componentsStudioVideoStudioTopBarTextControls": {
"groupLabel": "ویژگی‌های لایه متن",
"fontFamily": "نوع قلم",
"fontSize": "اندازه قلم",
"bold": "ضخیم",
"italic": "مورب",
"textColor": "رنگ متن"
},
"componentsStudioVideoVideoNewPresetCard": {
"useTemplate": "استفاده از قالب"
},
"componentsStudioVideoVideoProjectNewContent": {
"breadcrumbCreate": "ساخت ویدیوی جدید",
"heading": "برای شروع ساخت، یکی از گزینه‌ها را انتخاب کنید",
"selectScenesTitle": "انتخاب صحنه‌ها",
"selectScenesDescription": "صحنه‌ها را مرور کنید و پروژه‌تان را از ابتدا بسازید",
"createWithAiTitle": "ساخت با هوش مصنوعی",
"createWithAiDescription": "ایده‌ها یا متن خود را به‌سادگی به ویدیوهای ساخته‌شده با هوش مصنوعی تبدیل کنید",
"aiProjectName": "پروژه ویدیویی هوش مصنوعی",
"or": "یا",
"startWithPresets": "شروع با قالب‌های آماده",
"searchPresetsPlaceholder": "جستجوی قالب‌های آماده...",
"newVideoName": "ویدیوی جدید"
},
"adminAi": {
"pageTitle": "محتوای سئو با هوش مصنوعی",
"pageDesc": "OpenAI را پیکربندی کنید و از روی یک توضیح، مقاله‌های بهینه‌شده برای سئو بسازید.",
"settingsTitle": "پیکربندی OpenAI",
"settingsDesc": "کلید API شما به‌صورت امن ذخیره می‌شود و هرگز به‌طور کامل نمایش داده نمی‌شود. در صورت نیاز، آدرس پایه را به یک سرویس سازگار با OpenAI و در‌دسترس تنظیم کنید.",
"apiKeyLabel": "کلید API",
"apiKeyPlaceholder": "sk-… (برای حفظ مقدار فعلی خالی بگذارید)",
"baseUrlLabel": "آدرس پایه",
"modelLabel": "مدل",
"enabledLabel": "فعال‌سازی تولید با هوش مصنوعی",
"saveSettings": "ذخیره تنظیمات",
"saving": "در حال ذخیره…",
"settingsSaved": "تنظیمات ذخیره شد",
"settingsError": "ذخیره تنظیمات ناموفق بود",
"keyConfigured": "کلید API تنظیم شده است",
"noKey": "کلید API تنظیم نشده است",
"generateTitle": "تولید مقاله سئو",
"generateDesc": "موضوع و متادیتا را توصیف کنید تا هوش مصنوعی یک پست آماده‌ی سئو بنویسد.",
"descriptionLabel": "توضیح / خلاصه",
"descriptionPlaceholder": "این صفحه/محصول درباره چیست؟ نکات کلیدی، لحن، اهداف…",
"titleLabel": "عنوان پیشنهادی (اختیاری)",
"typeLabel": "نوع محتوا (اختیاری)",
"typePlaceholder": "مثلاً قالب ویدیویی",
"tagsLabel": "برچسب‌ها (جدا‌شده با کاما، اختیاری)",
"keywordLabel": "کلیدواژه اصلی (اختیاری)",
"audienceLabel": "مخاطب (اختیاری)",
"localeLabel": "زبان",
"localeFa": "فارسی",
"localeEn": "انگلیسی",
"generate": "تولید",
"generating": "در حال تولید…",
"generateError": "تولید ناموفق بود",
"resultTitle": "مقاله تولیدشده",
"fTitle": "عنوان",
"fSlug": "نامک",
"fMetaTitle": "عنوان متا",
"fMetaDesc": "توضیحات متا",
"fKeywords": "کلیدواژه‌ها",
"fShortDesc": "توضیح کوتاه",
"fContent": "محتوا (HTML)",
"preview": "پیش‌نمایش",
"publishNow": "انتشار فوری",
"saveAsBlog": "ذخیره به‌عنوان پست بلاگ",
"savedAsBlog": "به‌عنوان پست بلاگ ذخیره شد",
"saveError": "ذخیره پست ناموفق بود",
"mustConfigure": "پیش از تولید، OpenAI را در بالا پیکربندی و فعال کنید."
}
}
}