canina/backend/prisma/seed-ui-texts.ts
parsa aghaei 1a0c98a34e feat: dynamic UI texts system + admin panel editor + Vazirmatn local font + bug fixes
- Add getText() system for all homepage sections (Header, Hero, FeaturedProducts, SmartAdvisor, VetGallery, Footer)
- Add UITexts admin page in frontend/admin-panel with search, group collapse, per-key save
- Add seed-ui-texts.ts with 102 texts in 9 groups
- Add local VazirmatnVariable.woff2 font, remove CDN + Inter references
- Fix hero image path, productService return type { data, meta }
- Fix ArchivePage pagination + CATEGORIES list + breadcrumbs
- Fix BlogPage/Wiki page links + brightness-0 invert removal
- Fix IngredientWiki search + product links + placeholder
- Fix all getProducts() callers for { data } destructuring
- Fix sitemap.ts, CartDrawer, B2BPortal, CheckoutPage type issues
- Add .gitignore for /fonts/ and /backend/uploads/
2026-07-11 17:19:55 +03:30

151 lines
8.7 KiB
TypeScript
Raw 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.

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const UI_TEXTS: Record<string, string> = {
// === Header / Navigation ===
"shipping_notice": "ارسال رایگان برای سفارش‌های بالای ۱۵۰ هزار تومان",
"brand_name_fa": "ایران",
"brand_subtitle": "نماینده رسمی Canina Pharma GmbH آلمان",
"nav_solutions": "راهکارهای درمانی",
"nav_products": "محصولات تخصصی",
"nav_wiki": "دانشنامه علمی",
"nav_blog": "مجله سلامت پت",
"nav_pet_profiles": "شناسنامه پتها",
"nav_search_placeholder": "جستجوی محصولات، مقالات سلامت و...",
"nav_search_button": "جستجو",
"nav_pet_switcher_title": "تغییر پت یا مدیریت حساب",
"nav_register_pet": "ثبت همدم (Pet) جدید",
"nav_wallet_orders": "کیف پول و سفارشات",
"nav_logout": "خروج از حساب کانینا",
"nav_login": "ورود / ثبت‌نام",
"nav_cart": "سبد خرید",
// === Hero Section ===
"hero_badge": "تخصص دارویی از آلمان",
"hero_title": "تخصص آلمانی در خدمت\nسلامت پت‌های خانگی",
"hero_desc": "بیش از <span className=\"font-bold text-canina-blue\">۴۰ سال</span> تجربه نوآورانه در تولید مکمل‌های درمانی با بالاترین استاندارد کیفی «گرید دارویی اختصاصی». راهکار هوشمند برای هر نیاز بالینی.",
"hero_btn_advisor": "دستیار سلامت پت",
"hero_btn_products": "مشاهده محصولات",
"hero_image_badge": "سرآمد علمی در پزشکی پت‌ها",
"hero_image_title": "مکمل‌های تایید شده دامپزشکی",
"hero_quality_standard": "استاندارد کیفی آلمان",
"hero_stat_founded": "سال تأسیس ۱۹۸۴",
"hero_stat_agencies": "نمایندگی فعال",
"hero_stat_german_formula": "فرمول آلمانی",
// === Smart Advisor ===
"advisor_badge": "تکنولوژی پایش هوشمند",
"advisor_title": "دستیار سلامت کانینا",
"advisor_subtitle": "فقط چند قدم تا صدور شناسنامه هوشمند و دریافت پیشنهادات تخصصی",
"advisor_step1_title": "گام اول: هویت بصری",
"advisor_step1_desc": "همدم شما رو با چه اسمی صدا می‌زنید؟",
"advisor_pet_name_label": "نام پت",
"advisor_pet_name_placeholder": "لوسی، تدی...",
"advisor_pet_breed_label": "نژاد",
"advisor_pet_breed_placeholder": "ژرمن، پرشین...",
"advisor_submit_btn": "ثبت هویت و ادامه",
"advisor_validation_warning": "⚠️ لطفاً ابتدا نام و نژاد پت را در بالا وارد کنید.",
"advisor_step2_title": "گام دوم: پایش فیزیکی",
"advisor_step2_desc": "اطلاعات فیزیکی دقیق به دوزبندی صحیح مکمل‌ها کمک می‌کند",
"advisor_age_label": "سن حیوان (سال)",
"advisor_weight_label": "وزن حیوان (کیلوگرم)",
"advisor_activity_label": "سطح فعالیت روزانه",
"advisor_back": "قبلی",
"advisor_next_final": "گام نهایی سلامت",
"advisor_step3_title": "گام آخر: سوابق و حساسیت‌ها",
"advisor_step3_desc": "در صورت وجود هر یک از موارد زیر، آن را تیک بزنید",
"advisor_complete": "تکمیل و صدور شناسنامه",
// === Featured Products ===
"featured_badge": "بیشترین انتخاب توسط دامپزشکان",
"featured_title_line1": "محصولات برگزیده و راهکارهای",
"featured_title_line2": "درمان تخصصی",
"featured_desc": "محصولات دارویی کانینا با استفاده از دانش پیشرفته بیوتکنولوژی و مواد اولیه ارگانیک نایاب فرآوری شده‌اند.",
"featured_view_all": "مشاهده تمامی محصولات",
"product_view_details": "مشاهده جزییات",
"featured_no_products_title": "هیچ محصولی یافت نشد",
"featured_no_products_desc": "در حال حاضر هیچ محصول برجسته‌ای برای نمایش وجود ندارد. لطفاً در پنل ادمین محصولات برگزیده را تنظیم کنید.",
// === Vet Gallery / Videos ===
"videos_badge": "Vet Insights",
"videos_title": "مشاوره ویدئویی",
"videos_title_highlight": "دوست دامپزشک پت شما",
"videos_desc": "متخصصین آلمانی کانینا مستقیماً با شما صحبت می‌کنند. نحوه مصرف، مزایای رقابتی و دانش تخصصی پشت هر محصول.",
"videos_view_all": "مشاهده همه ویدئوها",
// === Navigation Cards (Home Page) ===
"nav_card_shop_title": "فروشگاه تخصصی",
"nav_card_shop_desc": "دسترسی به تمامی محصولات بر اساس علائم بالینی و نیازهای پت شما.",
"nav_card_shop_cta": "کاتالوگ کامل محصولات",
"nav_card_wiki_title": "دانشنامه علمی",
"nav_card_wiki_desc": "آشنایی با ترکیبات نایاب و استانداردهای دارویی محصولات آلمانی کانینا.",
"nav_card_wiki_cta": "مطالعه مقالات تخصصی",
// === About Section ===
"about_label": "میراث ما از آلمان",
"about_title": "چرا برند آلمانی Canina مرجع دامپزشکان است؟",
"about_item1_title": "مواد اولیه نایاب",
"about_item1_desc": "استفاده از پودر صدف لب‌سبز اصل نیوزیلند و مواد ارگانیک با گرید دارویی.",
"about_item2_title": "فاقد مواد نگهدارنده",
"about_item2_desc": "تمامی محصولات ۱۰۰٪ طبیعی و فاقد رنگ‌های مصنوعی و طعم‌دهنده‌های شیمیایی هستند.",
"about_item3_title": "تاییدیه اروپا",
"about_item3_desc": "مطابق با سخت‌گیرانه‌ترین استانداردهای ایمنی مواد غذایی و دارویی در اتحادیه اروپا.",
// === CTA Section ===
"cta_title": "می‌خواهید بدانید کدام محصول برای پت شما مناسب‌تر است؟",
"cta_desc": "تیم متخصص دامپزشکی کانینا ایران آماده پاسخگویی به سوالات شماست.",
"cta_btn_primary": "دریافت رژیم مکمل رایگان",
"cta_btn_secondary": "پروانه دامپزشکی و اصالت کالا",
// === Footer ===
"footer_brand_title": "کانینا ایران",
"footer_brand_subtitle": "نماینده رسمی در ایران",
"footer_brand_desc": "تدارک هوشمندانه سلامت برای همراهان وفادار شما. واردکننده انحصاری مکمل‌های درمانی با گرید دارویی اختصاصی از آلمان با سابقه ۴۰ سال نوآوری.",
"footer_links_title": "دسترسی سریع",
"footer_link_products": "محصولات تخصصی ۲۰۲۴",
"footer_link_blog": "مجله سلامت پت (وبلاگ)",
"footer_link_profiles": "شناسنامه پتها",
"footer_link_wiki": "دانشنامه ترکیبات",
"footer_link_b2b": "پنل سفارش عمده (B2B)",
"footer_contact_title": "اطلاعات تماس نمایندگی",
"footer_phone_label": "خط ویژه فروش",
"footer_phone": "۰۲۱-۸۸۸۸ ۴۴۴۴",
"footer_email_label": "مکاتبات رسمی",
"footer_email": "info@canino-iran.com",
"footer_address_label": "دفتر مرکزی",
"footer_address": "تهران، جردن، خیابان سعیدی، ساختمان کانینا، طبقه ۵، واحد ۱۹",
"footer_auth_title": "اصالت کالا تضمین می‌شود",
"footer_auth_desc": "تمامی محصولات دارای لیبل اصالت وزارت بهداشت و QR Code اختصاصی هستند.",
"footer_auth_badge": "اصالت آلمانی کانینا",
"footer_copyright": "© ۲۰۲۶ کانینا ایران. تمامی حقوق محفوظ است.",
"footer_about": "درباره ما",
"footer_contact": "تماس با ما",
"footer_privacy": "حریم خصوصی",
};
async function main() {
console.log('Seeding UI texts...');
const entries = Object.entries(UI_TEXTS);
for (const [key, value] of entries) {
await prisma.uiText.upsert({
where: { key },
update: { value },
create: { key, value },
});
}
console.log(`Seeded ${entries.length} UI texts.`);
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});