From eccbb5d79d652b7174c06254e1bbff9c8fedad67 Mon Sep 17 00:00:00 2001 From: Alireza Hassani Date: Fri, 14 Aug 2026 13:35:07 +0330 Subject: [PATCH] Add Saleh Kargar factory website with FA/AR i18n. Clone of salehkargar.ir as a Next.js site with localized pages, SEO, and product gallery. Co-authored-by: Cursor --- messages/ar.json | 241 ++++ messages/fa.json | 241 ++++ next.config.ts | 11 +- package-lock.json | 677 +++++++++- package.json | 1 + prompt.txt | 11 + public/favicon.ico | 0 public/favicon.png | Bin 0 -> 13307 bytes public/images | 1 + src/app/[locale]/aboutlime/page.tsx | 72 ++ src/app/[locale]/aboutsuperchalk/page.tsx | 74 ++ src/app/[locale]/aboutus/page.tsx | 65 + src/app/[locale]/gallery/page.tsx | 49 + src/app/[locale]/layout.tsx | 112 ++ src/app/[locale]/page.tsx | 47 + src/app/[locale]/products/[slug]/page.tsx | 65 + src/app/[locale]/products/page.tsx | 38 + src/app/globals.css | 1363 ++++++++++++++++++++- src/app/layout.tsx | 30 +- src/app/page.tsx | 69 -- src/app/robots.ts | 13 + src/app/sitemap.ts | 43 + src/components/AboutTabs.tsx | 89 ++ src/components/Footer.tsx | 68 + src/components/Header.tsx | 216 ++++ src/components/Hero.tsx | 48 + src/components/JsonLd.tsx | 105 ++ src/components/Location.tsx | 52 + src/components/PageHero.tsx | 13 + src/components/PageShell.tsx | 21 + src/components/PowderFeatures.tsx | 75 ++ src/components/ProductDetail.tsx | 44 + src/components/ProductGrid.tsx | 40 + src/components/Productions.tsx | 57 + src/components/ProductsCarousel.tsx | 88 ++ src/data/home.ts | 143 +++ src/data/pages.ts | 82 ++ src/data/products.ts | 42 + src/data/seo.ts | 57 + src/i18n/navigation.ts | 5 + src/i18n/request.ts | 15 + src/i18n/routing.ts | 9 + src/images/about-chalk/1.jpg | Bin 0 -> 249462 bytes src/images/about-chalk/2.jpg | Bin 0 -> 205288 bytes src/images/about-chalk/3.jpg | Bin 0 -> 345552 bytes src/images/about-chalk/4.jpg | Bin 0 -> 157262 bytes src/images/about-lime/1.jpg | Bin 0 -> 311508 bytes src/images/about-lime/2.jpg | Bin 0 -> 249462 bytes src/images/about-lime/3.jpg | Bin 0 -> 217751 bytes src/images/about-us/1.jpg | Bin 0 -> 610036 bytes src/images/about-us/2.png | Bin 0 -> 51143 bytes src/images/featurebox/1.jpg | Bin 0 -> 54259 bytes src/images/featurebox/2.jpg | Bin 0 -> 51426 bytes src/images/files/Bd4HF0Mm3G.jpg | Bin 0 -> 252731 bytes src/images/files/eADGpxlT4k.jpg | Bin 0 -> 167500 bytes src/images/gallery/1.jpg | Bin 0 -> 242710 bytes src/images/gallery/10.jpg | Bin 0 -> 207994 bytes src/images/gallery/11.jpg | Bin 0 -> 167500 bytes src/images/gallery/12.jpg | Bin 0 -> 252731 bytes src/images/gallery/13.jpg | Bin 0 -> 54259 bytes src/images/gallery/14.jpg | Bin 0 -> 51426 bytes src/images/gallery/15.jpg | Bin 0 -> 416445 bytes src/images/gallery/16.jpg | Bin 0 -> 414337 bytes src/images/gallery/17.jpg | Bin 0 -> 249462 bytes src/images/gallery/18.jpg | Bin 0 -> 205288 bytes src/images/gallery/19.jpg | Bin 0 -> 345552 bytes src/images/gallery/2.jpg | Bin 0 -> 136454 bytes src/images/gallery/20.jpg | Bin 0 -> 311508 bytes src/images/gallery/21.jpg | Bin 0 -> 217751 bytes src/images/gallery/22.jpg | Bin 0 -> 610036 bytes src/images/gallery/3.jpg | Bin 0 -> 186742 bytes src/images/gallery/4.jpg | Bin 0 -> 221947 bytes src/images/gallery/5.jpg | Bin 0 -> 224544 bytes src/images/gallery/6.jpg | Bin 0 -> 86792 bytes src/images/gallery/7.jpg | Bin 0 -> 162142 bytes src/images/gallery/8.jpg | Bin 0 -> 249837 bytes src/images/gallery/9.jpg | Bin 0 -> 335131 bytes src/images/header/logo.jpg | Bin 0 -> 4039 bytes src/images/header/logo1.png | Bin 0 -> 13307 bytes src/images/info/1.jpg | Bin 0 -> 416445 bytes src/images/info/2.jpg | Bin 0 -> 414337 bytes src/images/info/bg.jpg | Bin 0 -> 17460 bytes src/images/info1/1.png | Bin 0 -> 198922 bytes src/images/info1/2.png | Bin 0 -> 1534 bytes src/images/info1/bg.jpg | Bin 0 -> 139642 bytes src/images/infoitems/1.png | Bin 0 -> 296187 bytes src/images/infoitems/icon.png | 2 + src/images/infoitems/line.png | Bin 0 -> 422 bytes src/images/infoitems1/1.jpg | Bin 0 -> 335131 bytes src/images/infoitems1/2.jpg | Bin 0 -> 207994 bytes src/images/infoitems1/3.jpg | Bin 0 -> 167500 bytes src/images/infoitems1/4.jpg | Bin 0 -> 252731 bytes src/images/languages/ar.png | Bin 0 -> 293 bytes src/images/languages/fa.png | Bin 0 -> 297 bytes src/images/products/building-lime.jpg | Bin 0 -> 221947 bytes src/images/products/clay.jpg | Bin 0 -> 224544 bytes src/images/products/joshaghan.jpg | Bin 0 -> 86792 bytes src/images/products/lime-lump.jpg | Bin 0 -> 186742 bytes src/images/products/mineral-powder.jpg | Bin 0 -> 136454 bytes src/images/products/premium-powder.jpg | Bin 0 -> 249837 bytes src/images/products/sand.jpg | Bin 0 -> 162142 bytes src/images/products/super-chalk-full.jpg | Bin 0 -> 169592 bytes src/images/products/super-chalk.jpg | Bin 0 -> 242710 bytes src/images/slider/1.png | Bin 0 -> 1133 bytes src/images/slider/2.png | Bin 0 -> 740 bytes src/images/slider/3.png | Bin 0 -> 753 bytes src/images/slider/slider.jpg | Bin 0 -> 318952 bytes src/images/subheader/bg.jpg | Bin 0 -> 577636 bytes src/images/subheader/page-bg.jpg | Bin 0 -> 230826 bytes src/lib/seo.ts | 68 + src/proxy.ts | 8 + 111 files changed, 4456 insertions(+), 114 deletions(-) create mode 100644 messages/ar.json create mode 100644 messages/fa.json create mode 100644 prompt.txt create mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 120000 public/images create mode 100644 src/app/[locale]/aboutlime/page.tsx create mode 100644 src/app/[locale]/aboutsuperchalk/page.tsx create mode 100644 src/app/[locale]/aboutus/page.tsx create mode 100644 src/app/[locale]/gallery/page.tsx create mode 100644 src/app/[locale]/layout.tsx create mode 100644 src/app/[locale]/page.tsx create mode 100644 src/app/[locale]/products/[slug]/page.tsx create mode 100644 src/app/[locale]/products/page.tsx delete mode 100644 src/app/page.tsx create mode 100644 src/app/robots.ts create mode 100644 src/app/sitemap.ts create mode 100644 src/components/AboutTabs.tsx create mode 100644 src/components/Footer.tsx create mode 100644 src/components/Header.tsx create mode 100644 src/components/Hero.tsx create mode 100644 src/components/JsonLd.tsx create mode 100644 src/components/Location.tsx create mode 100644 src/components/PageHero.tsx create mode 100644 src/components/PageShell.tsx create mode 100644 src/components/PowderFeatures.tsx create mode 100644 src/components/ProductDetail.tsx create mode 100644 src/components/ProductGrid.tsx create mode 100644 src/components/Productions.tsx create mode 100644 src/components/ProductsCarousel.tsx create mode 100644 src/data/home.ts create mode 100644 src/data/pages.ts create mode 100644 src/data/products.ts create mode 100644 src/data/seo.ts create mode 100644 src/i18n/navigation.ts create mode 100644 src/i18n/request.ts create mode 100644 src/i18n/routing.ts create mode 100644 src/images/about-chalk/1.jpg create mode 100644 src/images/about-chalk/2.jpg create mode 100644 src/images/about-chalk/3.jpg create mode 100644 src/images/about-chalk/4.jpg create mode 100644 src/images/about-lime/1.jpg create mode 100644 src/images/about-lime/2.jpg create mode 100644 src/images/about-lime/3.jpg create mode 100644 src/images/about-us/1.jpg create mode 100644 src/images/about-us/2.png create mode 100644 src/images/featurebox/1.jpg create mode 100644 src/images/featurebox/2.jpg create mode 100644 src/images/files/Bd4HF0Mm3G.jpg create mode 100644 src/images/files/eADGpxlT4k.jpg create mode 100644 src/images/gallery/1.jpg create mode 100644 src/images/gallery/10.jpg create mode 100644 src/images/gallery/11.jpg create mode 100644 src/images/gallery/12.jpg create mode 100644 src/images/gallery/13.jpg create mode 100644 src/images/gallery/14.jpg create mode 100644 src/images/gallery/15.jpg create mode 100644 src/images/gallery/16.jpg create mode 100644 src/images/gallery/17.jpg create mode 100644 src/images/gallery/18.jpg create mode 100644 src/images/gallery/19.jpg create mode 100644 src/images/gallery/2.jpg create mode 100644 src/images/gallery/20.jpg create mode 100644 src/images/gallery/21.jpg create mode 100644 src/images/gallery/22.jpg create mode 100644 src/images/gallery/3.jpg create mode 100644 src/images/gallery/4.jpg create mode 100644 src/images/gallery/5.jpg create mode 100644 src/images/gallery/6.jpg create mode 100644 src/images/gallery/7.jpg create mode 100644 src/images/gallery/8.jpg create mode 100644 src/images/gallery/9.jpg create mode 100644 src/images/header/logo.jpg create mode 100644 src/images/header/logo1.png create mode 100644 src/images/info/1.jpg create mode 100644 src/images/info/2.jpg create mode 100644 src/images/info/bg.jpg create mode 100644 src/images/info1/1.png create mode 100644 src/images/info1/2.png create mode 100644 src/images/info1/bg.jpg create mode 100644 src/images/infoitems/1.png create mode 100644 src/images/infoitems/icon.png create mode 100644 src/images/infoitems/line.png create mode 100644 src/images/infoitems1/1.jpg create mode 100644 src/images/infoitems1/2.jpg create mode 100644 src/images/infoitems1/3.jpg create mode 100644 src/images/infoitems1/4.jpg create mode 100644 src/images/languages/ar.png create mode 100644 src/images/languages/fa.png create mode 100644 src/images/products/building-lime.jpg create mode 100644 src/images/products/clay.jpg create mode 100644 src/images/products/joshaghan.jpg create mode 100644 src/images/products/lime-lump.jpg create mode 100644 src/images/products/mineral-powder.jpg create mode 100644 src/images/products/premium-powder.jpg create mode 100644 src/images/products/sand.jpg create mode 100644 src/images/products/super-chalk-full.jpg create mode 100644 src/images/products/super-chalk.jpg create mode 100644 src/images/slider/1.png create mode 100644 src/images/slider/2.png create mode 100644 src/images/slider/3.png create mode 100644 src/images/slider/slider.jpg create mode 100644 src/images/subheader/bg.jpg create mode 100644 src/images/subheader/page-bg.jpg create mode 100644 src/lib/seo.ts create mode 100644 src/proxy.ts diff --git a/messages/ar.json b/messages/ar.json new file mode 100644 index 0000000..399ddc2 --- /dev/null +++ b/messages/ar.json @@ -0,0 +1,241 @@ +{ + "Meta": { + "homeTitle": "الرئيسية", + "homeDescription": "مجمّع مصانع صالح كاركر وأبنائه لسحق الأحجار وإنتاج الجير — إنتاج مسحوق الحجر والجير وجص سوبر صالح ومواد معدنية بجودة عالية وتحميل سريع ورضا العملاء", + "siteName": "مصنع صالح كاركر وأبنائه", + "productsTitle": "المنتجات", + "productsDescription": "اطّلع على منتجات مصنع صالح كاركر وأبنائه بما في ذلك جص سوبر صالح ومسحوق الحجر المعدني والجير الإنشائي والصناعي وغيرها من المواد المعدنية.", + "productDetails": "تفاصيل المنتج", + "aboutChalkTitle": "حول جص سوبر صالح", + "aboutChalkDescription": "تعرّف على تاريخ إنتاج الجص وطريقة تصنيعه ومزاياه وخصائص جص سوبر صالح؛ جص ميكروني قابل للغسل بصلابة تفوق الجص العادي بثلاثة أضعاف.", + "aboutLimeTitle": "حول الجير", + "aboutLimeDescription": "تعرّف على تاريخ إنتاج الجير والطرق التقليدية والصناعية في مجمّع صالح كاركر وأبنائه واستخدامات الجير الإنشائي والصناعي.", + "galleryTitle": "معرض الصور", + "galleryDescription": "معرض صور مصنع ومنجم صالح كاركر وأبنائه؛ مشاهدة بيئة الإنتاج والمنتجات وأنشطة المجمع.", + "aboutUsTitle": "من نحن", + "aboutUsDescription": "حول مجمّع إنتاج صالح كاركر وأبنائه؛ منتج الأحجار المعدنية ومسحوق الجير وجص سوبر صالح بشعار الجودة الأعلى والتحميل السريع." + }, + "Nav": { + "home": "الصفحة الرئيسية", + "products": "المنتجات", + "aboutChalk": "حول جص سوبر صالح", + "aboutLime": "حول الجير", + "gallery": "المعرض", + "aboutUs": "من نحن", + "mainMenu": "القائمة الرئيسية", + "openMenu": "فتح القائمة", + "closeMenu": "إغلاق القائمة", + "login": "تسجيل الدخول", + "logoAlt": "صالح كاركر وأبنائه" + }, + "Language": { + "label": "اللغة", + "fa": "فارسی", + "ar": "العربية" + }, + "Hero": { + "title": "مصنع صالح كاركر وأبنائه", + "subtitleEn": "Saleh Kargar Factory", + "imageAlt": "مصنع صالح كاركر", + "transport": "النقل", + "demolition": "الهدم", + "limeProduction": "إنتاج الجير" + }, + "Productions": { + "title": "إنتــاجــات المــصــنــع", + "imageAlt": "منتجات المصنع", + "items": { + "clay": { + "title": "طين مطحون (طين البلاط)", + "description": "يُستخدم هذا الطين عادة في الجص والطين، وطين صناعة البلاط وأعمال التبليط." + }, + "mineralPowder": { + "title": "مسحوق الحجر المعدني", + "description": "يُحضَّر هذا المسحوق من أفضل أنواع حجر كربونات الكالسيوم بنقاء عالٍ جدًا وبياض ونعومة تقلل استهلاك الإسمنت، وهو ما يلاحظه مستخدمو هذا النوع من المسحوق." + }, + "joshaghan": { + "title": "مسحوق حجر جوشقان", + "description": "يُستخدم هذا المسحوق في الأغراض الصناعية والتبييض والإنشاء وأعمال الكنتيكس ومصانع اللواصق وغيرها." + }, + "superChalk": { + "title": "جص سوبر صالح", + "description": "جص سوبر كاركر أقوى بثلاثة أضعاف من أنواع الجص الأخرى، ويمنح الواجهة الداخلية للمبنى بياضًا ولمعانًا وبريقًا استثنائيًا. ومن حيث البياض يمكن أن يحل محل الدهان، فيقلل التكلفة ويزيد سرعة وسهولة التنفيذ." + }, + "buildingLime": { + "title": "جير إنشائي وصناعي", + "description": "يُقدَّم هذا الجير بنوعين سائب ومعبّأ؛ فالمعبّأ (جير مطفأ) في عبوات، والسائب للاستخدامات الإنشائية. أما النوع الصناعي فبنقاء عالٍ جدًا لمصانع الجلود والخرسانة الخفيفة والهيدرات وغيرها." + }, + "limestone": { + "title": "حجر جيري بكربونات البوتاسيوم", + "description": "يُستخدم الحجر الجيري في الأغراض الإنشائية مثل شيّ الجير الصناعي والتقليدي والجير ومسحوق الحجر وحجر الواجهة، وبسبب وفرة كربونات الكالسيوم فيه يُستخدم أيضًا في علف الدواجن. يُستخرج من المنجم على شكل كتل أو بالتفجير من الجبل." + }, + "superPowder": { + "title": "سوبر مسحوق معدني", + "description": "بفضل بياضه العالي وعدم الحاجة إلى الغربلة وقابليته الممتازة للتشطيب وسهولة العمل وعدم التشقق في الواجهات الداخلية والخارجية وفي لحام البلاط، يمكن أن يكون بديلًا عن مسحوق جوشقان." + }, + "sand": { + "title": "رمل ناعم", + "description": "يُستخدم هذا الرمل الناعم في أعمال البستنة والحدائق." + } + } + }, + "Powder": { + "title": "خصائص مسحوق الحجر المعدني", + "benefitsTitle": "مزايا العمل بمسحوق الحجر المعدني:", + "usesTitle": "مجالات استخدام مسحوق الحجر المعدني", + "benefitsImageAlt": "مزايا مسحوق الحجر المعدني", + "usesImageAlt": "مجالات استخدام مسحوق الحجر المعدني", + "benefits": { + "quality": "جودة ممتازة", + "lessCement": "تقليل استهلاك الإسمنت", + "whiteness": "البياض", + "easyWork": "سهولة العمل على يد الحرفي", + "finish": "قابلية تشطيب ممتازة وقابل للغسل" + }, + "uses": { + "whitework": "1- التبييض بالإسمنت", + "grout": "2- لحام البلاط والسيراميك والموزاييك", + "mosaic": "3- صناعة الموزاييك", + "slurry": "4- عمل الملاط خلف أحجار الصين والرخام" + } + }, + "AboutTabs": { + "sampleWork": "نموذج عمل", + "factoryView": "منظر المصنع", + "tabs": { + "work": { + "label": "عملنا", + "title": "نتائج تحليل عينات الأحجار", + "subtitle": "شعارنا :\nجودة أعلى - تحميل سريع - رضا العملاء", + "body": "يمتلك هذا المجمع وكالات لعدة أنواع من جص سمنان وقم وأنواع جص سوبر قم.", + "cta": "اعرف المزيد عنا ..." + }, + "goal": { + "label": "هدفنا", + "title": "اطلب منا أفضل جودة للجير...", + "subtitle": "يفتخر هذا المجمع الإنتاجي بتقديم جميع منتجاته معبّأة وسائبة بجودة عالية مباشرة لعملائه الكرام، ويمتلك وكالات لعدة أنواع من جص سمنان وقم وأنواع جص سوبر قم.", + "body": "هدفنا رضا العميل وإنتاج سلعة عالية الجودة", + "cta": "حول الجير ..." + }, + "services": { + "label": "خدماتنا", + "title": "منتجات ممتازة وعالية الجودة ...", + "subtitle": "يفتخر إنتاج صالح كاركر وأبنائه بتقديم جميع منتجاته من أفضل الأحجار المعدنية المتوفرة في البلاد وبجودة عالية لعملائه الكرام.", + "body": "شعارنا:\nجودة أعلى\nتحميل سريع\nرضا العملاء", + "cta": "اعرف المزيد ..." + } + } + }, + "Carousel": { + "title": "منتجات المصنع", + "prev": "السابق", + "next": "التالي", + "items": { + "aryanClay": "طين آريائي", + "ore": "حجر المنجم", + "superPowder": "سوبر مسحوق معدني", + "mineralPowder": "مسحوق الحجر المعدني", + "joshaghan": "مسحوق حجر جوشقان", + "superChalk": "جص سوبر صالح" + } + }, + "Location": { + "title": "مــوقــعــنــا", + "heading": "مجمّع مصانع سحق الأحجار وإنتاج الجير صالح", + "subtitle": "( صالح كاركر وأبنائه )", + "coverage": "التوزيع في جميع أنحاء إيران", + "mapAlt": "موقع المجمع" + }, + "Footer": { + "brand": "مـــوقـــع الـــمـــعـــدن", + "aboutTitle": "من نحن", + "aboutText": "إنتاج أنواع الأحجار المعدنية ومسحوق الجير", + "addressTitle": "عنواننا", + "address": "قم - طريق أراك - الكيلومتر 8 - دوران مارال - بعد مستشفى الإمام رضا - الزقاق الثاني - داخل الزقاق (المسابك)", + "noteFactory": "مجمّع مصانع سحق الأحجار وإنتاج الجير صالح", + "noteSlogan": "شعارنا: جودة أعلى - تحميل سريع - رضا العملاء", + "contactTitle": "اتصل بنا", + "accounting": "المحاسبة", + "sales": "المبيعات", + "loading": "التحميل", + "copyright": "مصنع صالح كاركر وأبنائه" + }, + "Products": { + "pageTitle": "المنتجات", + "detailsTitle": "تفاصيل المنتج", + "backToProducts": "العودة إلى المنتجات", + "currency": "تومان", + "notFound": "المنتج غير موجود", + "items": { + "super-chalk": { + "title": "جص سوبر صالح", + "description": "هذا الجص أقوى بثلاثة أضعاف من أنواع الجص الأخرى. يُنفَّذ جص سوبر صالح كطبقة رقيقة بسمك 3-4 مم على طبقة الجص السفلية (جص التبييض والإنشاء)، فيمنح الواجهة الداخلية للمبنى بياضًا ولمعانًا وبريقًا استثنائيًا. ومن حيث البياض يمكن أن يحل محل الدهان، فيقلل التكلفة ويزيد سرعة وسهولة التنفيذ." + } + } + }, + "AboutChalkPage": { + "title": "حول جص سوبر صالح", + "sections": { + "history": { + "title": "تاريــخ إنتــاج الجــص", + "body": "الجص هو كبريتات الكالسيوم المائية الطبيعية ويوجد بأشكال بلورية متعددة ضمن قشور سميكة نسبيًا في القشرة الصلبة للأرض، حيث يُستخرج ويُستخدم. ويُعد الجص من أقدم مواد البناء المستخدمة في العالم، وقد أُنتج واستُخدم بطرق مختلفة عبر القرون. بعد استخراجه من المنجم يُنقل إلى الفرن مثل الجير ويُسخَّن إلى نحو 180 درجة مئوية حتى يفقد جزءًا من جزيئات ماء التبلور ويصبح صالحًا كمواد بناء وللقوالب. عادةً ما يُطحن الجص بمطاحن خاصة ويُباع في أكياس أو سائبًا. ويجب أن تكون مساحيق الجص الجيدة أصغر من 0.15 مم." + }, + "method": { + "title": "طريقة إنتــاج الجــص", + "body": "تُعرَّف نقاوة حجر الجص بنسبة معدن الجبس فيه. ووفق جمعية معايير المواد الأمريكية (ASTM) فإن الحد الأدنى المطلوب لنقاوة حجر الجص في المواد الصناعية هو 70٪ جبس، بينما تتراوح نقاوة معظم أحجار الجص التجارية بين 75 و90٪. وتشمل الشوائب عادةً الطفل والطين وكربونات الكالسيوم، وقد تظهر بقايا أنشطة حيوية.\n\nلون الجص طبيعيًا أبيض، وقد يظهر رماديًا أو رماديًا مائلًا إلى الأزرق أو ورديًا أو أصفر بسبب شوائب عضوية أو طين أو أكسيد الحديد. ونظام تبلور حجر الجص أحادي الميل، وكثافته النوعية 2.2 وصلابته 2. والجبس المستخدم يكون على شكل كتلة بلورية ناعمة أو خشنة، ويذوب في حمض الهيدروكلوريك والماء الساخن. ويتكون حجر الجص النقي من نحو 20.9٪ ماء مركب و64.6٪ SO3 و32.5٪ CaO.\n\nمعادلة تحضير الجص: 2CaSO4.4H2O → 2CaSO4 + H2O 3H2O (يتبخر بالحرارة)" + }, + "strength": { + "title": "مقاومة الجص", + "body": "يتمتع الجص بمقاومة جيدة نسبيًا، ويتحمل ضغطًا أقصاه نحو 30 كغ/سم²، أما في الشد فمقاومته أضعف وتصل إلى نحو 5 كغ/سم²؛ وهذه القيم للجص النقي، وإذا استُخدم مخلوطًا (جص وطين) تنخفض المقاومة بشكل ملحوظ. ونسبة الماء المستخدمة تؤثر بقوة على المقاومة. مقاومة الجص للحريق: يقاوم الجص الحرائق ويمكن أن يعمل كطبقة عازلة للفولاذ، لأن بنيته الكيميائية تحتوي جزيئي ماء ينفصلان عند الحريق ويكوّنان طبقة رقيقة واقية." + }, + "pros": { + "title": "مــزايا الجــص", + "body": "رخص الجص: لرخصه ووفوره يعمل به الجميع حتى غير المختصين لإصلاحات بسيطة. قابلية التشكيل: للجص قابلية تشكيل عالية تُستخدم في صناعات مثل الخزف كقوالب، ولذلك يلعب النحت الجصي دورًا مهمًا في تجميل الداخل. الامتصاص الصوتي: يمتص الجص نحو 70٪ من الموجات الصوتية تقريبًا. البياض: يمنح اللون الأبيض جمالية مميزة للفضاء الداخلي. التمدد الحجمي: يزداد حجمه عند التصلب فيملأ المسام ويصبح سطحًا متجانسًا صحيًا." + }, + "cons": { + "title": "عيــوب الجــص", + "body": "يمتص الجص الأوساخ بسرعة، وأداؤه ضعيف جدًا أمام الرطوبة؛ فإذا تعرض للماء باستمرار تظهر ظاهرة الانتفاخ. لذلك يقل استخدامه في المناطق الرطبة مثل شمال إيران، ويُستبدل بالجير والإسمنت الأبيض في التبييض. كما قد تتشقق الطبقات الجصية قرب أنابيب التدفئة بسبب التمدد والانكماش المتكرر وفقدان الماء." + }, + "super": { + "title": "جــص ســوبر كــاركر", + "body": "جص سوبر كاركر أقوى بثلاثة أضعاف من أنواع الجص الأخرى. يُنفَّذ كطبقة رقيقة بسمك 3-4 مم على طبقة الجص السفلية (جص التبييض والإنشاء) فيمنح الواجهة الداخلية بياضًا ولمعانًا وبريقًا استثنائيًا، ويمكن أن يحل محل الدهان فيقلل التكلفة ويزيد سرعة وسهولة التنفيذ. قابل للغسل: جص سوبر كاركر ميكروني وقابل للغسل فيدوم أكثر. قابلية تشطيب ممتازة تمنح سطحًا أملسًا خاليًا من التعرجات، إضافة إلى صلابة أعلى بثلاثة أضعاف من الجص العادي." + } + } + }, + "AboutLimePage": { + "title": "حول الجير", + "sections": { + "history": { + "title": "تاريــخ إنتــاج الجيــر", + "body": "لا يعرف عامة الناس كثيرًا عن الجير وأنواعه وطرق إنتاجه. يُنتج الجير بطريقتين تقليدية وصناعية. والطريقة التقليدية موجودة منذ آلاف السنين، وما زالت مستخدمة رغم الطرق الصناعية لأنها ذات جودة مناسبة وملائمة للورش الصغيرة. وترافق معالجة الجير دائمًا عملية الشيّ، ولذلك يلزم فرن لشيّ الجير." + }, + "traditional": { + "title": "طريقة الإنتــاج التقليــدي للجير", + "body": "في الطريقة التقليدية يُختار موقع الورشة عادة عند منجم الجير، فيُحفر تجويف في الأرض وتُرصّ فيه أحجار الجير طبقات. وهكذا تؤدي الأرض دور الفرن، وتُعرف هذه الأفران بأفران الجير البئرية أو التنورية. ثم تُشعل من الأسفل وتُغلق بطبقة من طين الجير. هذه طريقة إنتاج الجير الحي (المشوّي) التقليدي. وإذا أُريد جير مطفأ يُرطَّب أثناء الشيّ لتكوين جير مهدرج. وتصل نقاوة الجير في هذا النوع من الشيّ إلى أكثر من 94٪." + }, + "difference": { + "title": "الفرق بين الجير التقليــدي والصناعــي", + "body": "يستغرق شيّ الجير التقليدي وقتًا أطول وحرارة أقل من الصناعي. ولا يمكن القول إن أحدهما أفضل مطلقًا لأن لكل منهما استخداماته، وتفضّل كل صناعة أحدهما. والفرق الأساسي في نوع الفرن: التقليدي داخل الأرض بشكل تنور، والصناعي دوار (روتاري) من سبيكة خاصة." + }, + "uses": { + "title": "استخدامــات الجير التقليــدي", + "body": "الجير التقليدي بطيء التفاعل ونقاوته أعلى من الصناعي، لذلك يُستخدم في البناء والتعقيم في تربية المواشي والدواجن ودفن النفايات وإنتاج الجير المهدرج وإنتاج طوب الأوتوكلاف الذي يساهم في تخفيف وزن المباني." + } + } + }, + "AboutUsPage": { + "title": "من نحن", + "imageAlt": "مجمّع إنتاج صالح كاركر وأبنائه", + "p1": "يفتخر مجمّع إنتاج صالح كاركر وأبنائه بتقديم جميع منتجاته من أفضل الأحجار المعدنية المتوفرة في البلاد وبجودة عالية لعملائه الكرام.", + "p2": "ويفتخر هذا المجمع بتقديم جميع منتجاته معبّأة وسائبة بجودة عالية مباشرة لعملائه، ويمتلك وكالات لعدة أنواع من جص سمنان وهو منتج جص سوبر صالح في قم.", + "p3": "شعارنا: جودة أعلى - تحميل سريع - رضا العملاء" + }, + "GalleryPage": { + "title": "معرض الصور", + "itemAlt": "معرض الصور {n}" + }, + "Common": { + "home": "الرئيسية", + "products": "المنتجات" + } +} diff --git a/messages/fa.json b/messages/fa.json new file mode 100644 index 0000000..e52c937 --- /dev/null +++ b/messages/fa.json @@ -0,0 +1,241 @@ +{ + "Meta": { + "homeTitle": "خانه", + "homeDescription": "مجتمع تولیدی کارخانجات سنگ‌کوبی و آهک‌پزی صالح کارگر و پسران — تولید پودر سنگ، آهک، گچ سوپر صالح و مصالح معدنی با کیفیت برتر، بارگیری سریع و جلب رضایت مشتری", + "siteName": "کارخانه صالح کارگر و پسران", + "productsTitle": "محصولات", + "productsDescription": "مشاهده محصولات کارخانه صالح کارگر و پسران شامل سوپر گچ صالح، پودر سنگ معدنی، آهک ساختمانی و صنعتی و سایر مصالح معدنی.", + "productDetails": "جزئیات محصول", + "aboutChalkTitle": "درباره سوپر گچ صالح", + "aboutChalkDescription": "آشنایی با تاریخچه، روش تولید، مزایا و ویژگی‌های سوپر گچ صالح؛ گچ میکرونیزه قابل شستشو با استحکام سه برابر گچ معمولی.", + "aboutLimeTitle": "درباره آهک", + "aboutLimeDescription": "آشنایی با تاریخچه و روش تولید سنتی و صنعتی آهک در مجتمع صالح کارگر و پسران و کاربردهای آهک ساختمانی و صنعتی.", + "galleryTitle": "گالری تصاویر", + "galleryDescription": "گالری تصاویر کارخانه و معدن صالح کارگر و پسران؛ مشاهده فضای تولید، محصولات و فعالیت‌های مجموعه.", + "aboutUsTitle": "درباره ما", + "aboutUsDescription": "درباره مجتمع تولیدی صالح کارگر و پسران؛ تولیدکننده سنگ‌های معدنی، پودر آهک و گچ سوپر صالح با شعار کیفیت برتر و بارگیری سریع." + }, + "Nav": { + "home": "صفحه اصلی", + "products": "محصولات", + "aboutChalk": "درباره گچ سوپر صالح", + "aboutLime": "درباره آهک", + "gallery": "گالری", + "aboutUs": "درباره ما", + "mainMenu": "منوی اصلی", + "openMenu": "باز کردن منو", + "closeMenu": "بستن منو", + "login": "ورود", + "logoAlt": "صالح کارگر و پسران" + }, + "Language": { + "label": "زبان", + "fa": "فارسی", + "ar": "العربية" + }, + "Hero": { + "title": "کارخانه صالح کارگر و پسران", + "subtitleEn": "Saleh Kargar Factory", + "imageAlt": "کارخانه صالح کارگر", + "transport": "حمل و نقل", + "demolition": "تخریب", + "limeProduction": "تولید آهک" + }, + "Productions": { + "title": "تولیــدات کارخــانه", + "imageAlt": "تولیدات کارخانه", + "items": { + "clay": { + "title": "خاک رس آسیابی (گل کاشی)", + "description": "موارد مصرف این خاک معمولا گچ و خاک، گل مخصوص کاشی سازی و کاشی کاری مورد استفاده می باشد." + }, + "mineralPowder": { + "title": "پودر سنگ معدنی", + "description": "این پودر تهیه شده از بهترین نوع سنگ کربنات کلسیم با خلوس بسیار بالا با سفیدی و نرمی مصرف حداقلی سیمان در این مورد توجه مصرف کنندگان این نوع پودر می باشد." + }, + "joshaghan": { + "title": "پودر سنگ جوشقان", + "description": "این نوع پودر جهت مصارف صنعتی و سفید کاری و ساختمانی و کنیتکس کاری و کارخانجات چسب سازی و ... مورد استفاده می باشد." + }, + "superChalk": { + "title": "سوپر گچ صالح", + "description": "گچ سوپر کارگر سه برابر مستحکم تر از سایر گچ هاست، که سفیدی و درخشندگی و براقیت فوق العاده ای را به نمای داخلی ساختمان می بخشد. این گچ از نظر سفیدی جایگزین رنگ می شود که به طبع آن هزینه را کاهش و سرعت و سهولت اجرا را افزایش می دهد." + }, + "buildingLime": { + "title": "آهک ساختمانی و صنعتی", + "description": "این آهک در دو نوع فله و پاکتی ارائه می شود که پاکتی آن( آهک آب زده) در بسته بندی و فله آن جهت امور ساختمانی مورد مصرف می باشد. نوع صنعتی آن با خلوص بسیار بالا جهت کارخانجات چرم سازی و بتون سبک ، هیدراته و ... مورد مصرف قرار میگیرد." + }, + "limestone": { + "title": "سنگ آهکی کربنات پتاسیم", + "description": "سنگ آهکی در مصارف ساختمانی از جمله پختن آهک صنعتی و سنتی - آهک - پودر سنگ و سنگ نما استفاده می شود و به دلیل کربنات کلسیم فراوان در این سنگ جهت خوراک طیور نیز استفاده می شود. این سنگ را از معدن به طور کوپ و یا انفجار از کوه استخراج می کنند." + }, + "superPowder": { + "title": "سوپر پودر معدنی", + "description": "این پودر با سفیدی زیاد و عدم نیاز به الک و پرداخت پذیری عالی و سهولت کار و ترک نخوردن در نمای داخل و خارج ساختمان و بند کشی کاشی، می تواند جایگزینی برای پودر جوشقان مورد مصرف قرار گیرد." + }, + "sand": { + "title": "ماسه بادی", + "description": "این نوع ماسه بادی جهت مصارف باغ داری و باغچه استفاده می گردد." + } + } + }, + "Powder": { + "title": "ویژگی پودر سنگ معدنی", + "benefitsTitle": "مزایای کار با پودر سنگ معدنی:", + "usesTitle": "موارد مصرف پودر سنگ معدنی", + "benefitsImageAlt": "مزایای پودر سنگ معدنی", + "usesImageAlt": "موارد مصرف پودر سنگ معدنی", + "benefits": { + "quality": "کیفیت عالی", + "lessCement": "کاهش مصرف سیمان", + "whiteness": "سفیدی", + "easyWork": "سهولت کار توسط استاد کار", + "finish": "پرداخت پذیری عالی و با قابلیت شستشو" + }, + "uses": { + "whitework": "1- سفید کاری با سیمان", + "grout": "2- بندکشی کاشی، سرامیک و موزائیک", + "mosaic": "3- موائیک سازی", + "slurry": "4- دوغ آب کاری پشت سنگ های چینی و مرمر" + } + }, + "AboutTabs": { + "sampleWork": "نمونه کار", + "factoryView": "نمای کارخانه", + "tabs": { + "work": { + "label": "کار ما", + "title": "نتایج آنالیز نمونه سنگ ها", + "subtitle": "شعار ما :\nکیفیت برتر- بارگیری سریع- جلب رضایت مشتری", + "body": "این مجتمع دارای نمایندگی چندین نوع گچ سمنان و قم و انواع گچ سوپر قم می باشد.", + "cta": "درباره ما بیشتر بدانید ..." + }, + "goal": { + "label": "هدف ما", + "title": "بهترین کیفیت آهک را از ما بخواهید...", + "subtitle": "این مجتمع تولید مفتخر است که تمامی مصولات خود را به صورت بسته بندی و فله با کیفیت عالی به طور مستقیم در دسترس مشتریان عزیز خود قرار داده ودارای نمایندگی چندین نوع گچ سمنان و قم و انواع گچ سوپر قم می باشد.", + "body": "هدف ما رضایت مشتری است و تولید کالایی با کیفیت", + "cta": "درباره آهک ..." + }, + "services": { + "label": "خدمات ما", + "title": "تولیداتی مرغوب و با کیفیت ...", + "subtitle": "تولیدی صالح کارگر و پسران مفتخر است که تمامی محصولات خود را از بهترین نوع سنگهای معدنی موجود در کشور و با کیفیت عالی د ردسترس مشتریان محترم خود قرار می دهد.", + "body": "شعار ما:\nکیفیت برتر\nبارگیری سریع\nجلب رضایت مشتری", + "cta": "بیشتر بدانید ..." + } + } + }, + "Carousel": { + "title": "محصولات کارخانه", + "prev": "قبلی", + "next": "بعدی", + "items": { + "aryanClay": "خاک رس آریایی", + "ore": "سنگ معدن", + "superPowder": "سوپر پودر معدنی", + "mineralPowder": "پودر سنگ معدنی", + "joshaghan": "پودر سنگ جوشقان", + "superChalk": "سوپر گچ صالح" + } + }, + "Location": { + "title": "مــوقــعــیــت مـــــا", + "heading": "مجتمع تولیدی کارخانجات سنک کوبی و آهک پزی صالح", + "subtitle": "( صالح کارگر و پسران)", + "coverage": "پخش در سرتاسر ایران", + "mapAlt": "موقعیت مجتمع" + }, + "Footer": { + "brand": "سایــــت معــــــدن", + "aboutTitle": "درباره ما", + "aboutText": "تولید انواع سنگ معدنی و پودر آهک", + "addressTitle": "آدرس ما", + "address": "قم - جاده اراک - کیلومتر 8 - دوربرگردان مارال - بعد از بیمارستان امام رضا- کوچه دوم - داخل کوچه ( ریخته گری ها)", + "noteFactory": "مجتمع تولید کارخانجات سنگ کوبی و آهک پزی صالح", + "noteSlogan": "شعارما: کیفیت برتر- بارگیری سریع- جلب رضایت مشتری است", + "contactTitle": "تماس با ما", + "accounting": "حسابداری", + "sales": "فروش", + "loading": "بارگیری", + "copyright": "کارخانه صالح کارگر و پسران" + }, + "Products": { + "pageTitle": "محصولات", + "detailsTitle": "جزئیات محصول", + "backToProducts": "بازگشت به محصولات", + "currency": "تومان", + "notFound": "محصول یافت نشد", + "items": { + "super-chalk": { + "title": "سوپر گچ صالح", + "description": "این گچ سه برابر مستحکم تر از سایر گچ هاست. سوپر گچ صالح به عنوان یک لایه نازک به ضخامت 4-3 میلی متر روی لایه زیرین گچ کاری (گچ سفید کاری و ساختمانی) اجرا می شود که سفیدی و درخشندگی و براقیت فوق العاده ای را به نمای داخلی ساختمان می بخشد این گچ از نظر سفیدی جایگزین رنگ می شود که به طبع، هزینه را کاهش و سرعت و سهولت اجرا را افزایش می دهد." + } + } + }, + "AboutChalkPage": { + "title": "درباره سوپر گچ صالح", + "sections": { + "history": { + "title": "تاریخچـه تولیـد گــچ", + "body": "گَچ‌ کلسیم سولفات آبدار طبیعی است و در چندین فرم بلوری یافت می‌شود که در ذخایر پوسته جامد کره زمین به فرم قشرهای نسبتاً ضخیم و کلفت یافت می‌شود که آن را از دل زمین استخراج می‌کنند و مورد به‌کارگیری قرار می‌دهند. گچ یکی از قدیمی‌ترین مصالح ساختمانی مورد استفاده در دنیا می‌باشد که در قرون گذشته با روش‌های متفاوتی تولید و استفاده می‌شده‌ است. گچ را پس از استخراج از معدن مانند آهک به کوره می‌برند و تا دمای نزدیک به ۱۸۰ درجه سانتی‌گراد گرما می‌دهند تا شماری از مولکول‌های آب تبلورش را از دست بدهند و به فرم گچ قابل بکارگیری به عنوان مصالح ساختمانی و قالب گیری درآید. معمولاً گچ را با آسیاب های مخصوص به صورت پودر درمی‌آورند و در کیسه‌های گچ یا به صورت فله به فروش می‌رسد. پودرهای گچ مرغوب باید کوچکتر از ۰٫۱۵ میلی‌مترباشد." + }, + "method": { + "title": "روش تولیـد گــچ", + "body": "خلوص سنگ گچ بر پایه درصد کانی ژیپس در آن تعریف می‌شود. بر پایه انجمن استاندارد مصالح آمریکا (ASTM) دست‌ کم خلوص مورد نیاز برای سنگ گچ در مواد صنعتی ۷۰ درصد ژیپس است در صورتی که بیش‌تر سنگ گچ‌های تجارتی و بازرگانی دارای ۷۵ تا ۹۰ درصدخلوص می‌باشند. نا خالصی‌های موجود درسنگ گچ بیش‌تر شیل، رس‌ها و کربنات کلسیم است و گاهی بازمانده کنش‌ها و فعالیت‌های حیاتی نیز در آن دیده می‌شود.\n\nرنگ گچ به فرم طبیعی سفید بوده و ممکن است به دلیل ناخالصی‌های مواد آلی رس و اکسید آهن به رنگ‌های خاکستری، خاکستری مایل به آبی، صورتی یا زرد دیده شود. سنگ گچ دارای سیستم تبلور منوکلینیک، وزن مخصوص ۲/۲ و سختی ۲ می‌باشد. ژیپس مورد بکارگیری با سنگ گچ به فرم توده‌ای بلوری‌ شده که به فرم دانه‌های ریز و درشت است؛ که در اسید کلریدریک و آب گرم به فرم محلول در می‌آید. سنگ گچ خالص دارای ۹/۲۰ درصد آب ترکیبی و ۶/۶۴ درصد SO3 و ۵/۳۲ درصد CaO است.\n\nفرمول تهیه گچ : 2CaSO4.4H2O → 2CaSO4 + H2O 3H2O (در اثر حرارت تبخیر می‌شود)" + }, + "strength": { + "title": "مقاومت گچ", + "body": "گچ مقاومت نسبتا خوبی دارد و حداکثر تنش فشاری قابل تحمل آن حدود ۳۰ کیلوگرم بر سانتیمتر مربع است، در کشش البته گچ ضعیفتر عمل کرده و تنش کششی حداکثر ۵ کیلوگرم بر سانتیمتر مربع را تحمل مینماید؛ توجه داشته باشید که این مقاومت برای گچ خالص است و اگر گچ به صورت ناخالص (گچ و خاک) بکار رود، مقاومت کاهش چشم گیری می یابد. میزان آب مصرفی به شدت در مقاومت گچ موثر است. مقاومت گچ در برابر آتش سوزی: گچ در مقابل سوانح آتش سوزی مقاومت کرده و می تواند به عنوان یک لایه عایق در برابر فولاد عمل نماید." + }, + "pros": { + "title": "مــزایـای گـــچ", + "body": "ارزانی گچ: گچ به دلیل ارزانی و در دسترس بودن، از جمله مصالحی است که همگان با آن کار می کنند. شکل پذیری: گچ شکل پذیری فوق العاده ای دارد و این خاصیت باعث می شود که در بسیاری از صنعت ها مانند چینی سازی، به عنوان قالب مورد استفاده قرار گیرد. اکوستیک بودن یا خاصیت جذب صدا در گچ: گچ می تواند حدود تقریبا ۷۰ درصد امواج صوتی را جذب نماید. سفید بودن: رنگ سفید گچ باعث می شود که در فضای داخلی ساختمان جلوه فوق العاده ای به فضا ببخشد. قابلیت حجیم شدن: گچ در هنگام گیرش افزایش حجم پیدا می کند و منافذ را پر می کند." + }, + "cons": { + "title": "معـــــایب گـــچ", + "body": "گچ کثیفی ها را زود به خود می گیرد. مشکل دیگر گچ این است که در مقابل رطوبت عملکردی بسیار ضعیف از خود نشان می دهد و اگر آب روی آن بریزد و رطوبت ادامه یابد، ضایعه طبله در گچ بروز می کند. این مشکل باعث شده است استفاده از گچ در مناطقی که از لحاظ رطوبتی غنی می باشند، مانند شمال ایران به مراتب کاهش یافته و از مصالح جایگزین آهک و سیمان سفید، برای سفیدکاری استفاده شود." + }, + "super": { + "title": "گــــچ سوپــــر کارگـــــر", + "body": "گچ سوپر کارگر سه برابر مستحکم تر از سایر گچ هاست. سوپر گچ کارگر به عنوان یک لایه نازک به ضخامت ۳-۴ میلیمتر روی لایه زیرین گچ کاری (گچ سفید کاری و ساختمانی) اجرا می شود که سفیدی و درخشندگی و براقیت فوق العاده ای را به نمای داخلی ساختمان می بخشد این گچ از نظر سفیدی جایگزین رنگ می شود که به طبع آن هزینه را کاهش و سرعت و سهولت اجرا را افزایش می دهد. قابل شستشو: گچ سوپر کارگر میکرونیزه و قابل شستشو می باشد. پرداخت پذیری عالی: این گچ با پرداخت پذیری عالی که دارد باعث می شود سطحی بسیار سیقلی و عاری از هر گونه پستی و بلندی ایجاد شود." + } + } + }, + "AboutLimePage": { + "title": "درباره آهک", + "sections": { + "history": { + "title": "تاریخچـــه تولیـــد آهــــک", + "body": "عموما مردم از آهک و نوع و شیوه تولید آن چیزی نمی دانند. تولید آهک به دو روش سنتی و صنعتی تولید می گردد. روش سنتی تولید آهک هزاران سال است که توسط بشر انجام می شود. امروزه نیز با وجود ابداع روش های صنعتی همچنان از روش های سنتی گذشتگان برای تولید آهک استفاده می گردد، زیرا هم کیفیت مناسبی دارد و هم برای کارگاه های کوچک تولید آهک روش خوبی محسوب می شود. فرآوری آهک همیشه با پخت آن همراه است و برای این منظور نیاز به کوره آهک پزی است." + }, + "traditional": { + "title": "روش تولیـد سنتـی آهـک", + "body": "در روش سنتی معمولا محل کارگاه در محل معدن آهک انتخاب می شود برای این منظور یک حفره در زمین ایجاد کرده و درون آن به صورت لایه ای سنگ آهک می چینند. بدین ترتیب زمین نقش کوره در روش سنتی تولید آهک ایفا می کند. این کوره های آهک پزی به کوره آهک چاهی یا تنوری شهرت دارند. در ادامه کوره را از پایین روشن کرده و روی آن را با گل آهک مهر می کنند. این روش تولید آهک زنده (پخته) سنتی است. همچنین در صورتی که هدف تولید آهک شکفته باشد در حین پخت روی آهک را مرطوب می کنند تا آهک هیدراته شود. در این نوع پخت خلوص آهک به درصدی بالای ۹۴٪ می رسد." + }, + "difference": { + "title": "تفاوت آهـک سنتـی و صنعتـی", + "body": "البته پخت آهک در روش سنتی زمان بیشتر و حرارت کمتری نسبت به حالت صنعتی دارد. نمی توان گفت که آهک سنتی از نظر کیفیت بهتر است یا آهک صنعتی زیرا هریک دارای کاربردهای مخصوص به خود بوده و هر صنعتی ترجیح می دهد از یکی از این دو نوع محصول استفاده نماید. تفاوت اصلی در تولید سنتی و صنعتی آهک در کوره های آن می باشد. کوره سنتی در داخل زمین به صورت تنور بوده و کوره آهک صنعتی به شکل دوار یا روتاری و از جنس آلیاژ خاصی می باشد." + }, + "uses": { + "title": "کاربردهـای آهـک سنتــی", + "body": "آهک سنتی دیر واکنش است و درصد خلوص بالاتری نسبت به صنعتی دارد به همین دلیل در بخش ساختمان، ضدعفونی در پرورش دام و طیور، دفن زباله، تولید آهک هیدراته و تولید آجرهای اتو کلاو شده که از نظر سبک سازی ساختمان بسیار موثر است مورد استفاده قرار می گیرد." + } + } + }, + "AboutUsPage": { + "title": "درباره ما", + "imageAlt": "مجتمع تولیدی صالح کارگر و پسران", + "p1": "مجتمع تولیدی صالح کارگر و پسران مفتخر است که تمامی محصولات خود را از بهترین نوع سنگهای معدنی موجود در کشور و با کیفیت عالی د ردسترس مشتریان محترم خود قرار می دهد.", + "p2": "این مجتمع تولید مفتخر است که تمامی مصولات خود را به صورت بسته بندی و فله با کیفیت عالی به طور مستقیم در دسترس مشتریان عزیز خود قرار داده ودارای نمایندگی چندین نوع گچ سمنان و تولید کننده گچ سوپر صالح قم می باشد.", + "p3": "شعار ما: کیفیت برتر بارگیری سریع جلب رضایت مشتری" + }, + "GalleryPage": { + "title": "گالری تصاویر", + "itemAlt": "گالری تصاویر {n}" + }, + "Common": { + "home": "خانه", + "products": "محصولات" + } +} diff --git a/next.config.ts b/next.config.ts index e9ffa30..37576ed 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,14 @@ import type { NextConfig } from "next"; +import createNextIntlPlugin from "next-intl/plugin"; + +const withNextIntl = createNextIntlPlugin("./src/i18n/request.ts"); const nextConfig: NextConfig = { - /* config options here */ + // Leaner production runtime: deploy uses .next/standalone and drops node_modules. + output: "standalone", + images: { + unoptimized: false, + }, }; -export default nextConfig; +export default withNextIntl(nextConfig); diff --git a/package-lock.json b/package-lock.json index fb97e94..a1a7d2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "next": "16.3.0", + "next-intl": "^4.13.6", "react": "19.2.8", "react-dom": "19.2.8" }, @@ -453,6 +454,36 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@formatjs/fast-memoize": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.7.tgz", + "integrity": "sha512-zXfhLpvA6T7+efdt9JLbBwZ00tT7NsBMDVnDu8rpHeNNv8KfRZAMo2gkG0k9lK/Nzc//3kJ9pImsfuJxk3KhUA==", + "license": "MIT" + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.16.tgz", + "integrity": "sha512-kl6b/4D56gjGZi4ZewSmvXbalHwjOUI5ogEHPZqw42goeXTTrL7/yuPzvdrvr0QigDtvaOeb+UeMf62jks43Yg==", + "license": "MIT", + "dependencies": { + "@formatjs/icu-skeleton-parser": "2.1.11" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-2.1.11.tgz", + "integrity": "sha512-j8cUmOJzVgkHuS0QiQ6ga76UIoLOFSAMWhs7aZJztH3aAdCOAE6vpC8KVvFB4cU10ON0y2/5oOVmPJ43s2lTwA==", + "license": "MIT" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.13.tgz", + "integrity": "sha512-kHEAFOkeJSPNi7c5PaKaRjxcBrJwzzt81ifUu+8uve1EDW/VJl83KsxmqgqNZLzcFEhSliZGvx3+pk/RH0IOmg==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "3.1.7" + } + }, "node_modules/@humanfs/core": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", @@ -1317,6 +1348,292 @@ "node": ">=12.4.0" } }, + "node_modules/@parcel/watcher": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -1324,6 +1641,210 @@ "dev": true, "license": "MIT" }, + "node_modules/@schummar/icu-type-parser": { + "version": "1.21.5", + "resolved": "https://registry.npmjs.org/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz", + "integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==", + "license": "MIT" + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.47.tgz", + "integrity": "sha512-GsoMtan3ojGGMGFbl31mmRu5ctZ56re8grGE8mO/OHJ8O+JRkzod02fe7X6ZQ8JvamA3imkEkx/h3u+vsOgPgA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.47.tgz", + "integrity": "sha512-leTi7Rx3KF4zcC637iqWgk9SoV8VXAD8ppQYXsep63px5A/UftOcxLN1pmr8Z1si/YvX90ompP/rHgpYkgwXWg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.47.tgz", + "integrity": "sha512-hBqHuoWKKIsKmDBn9qVeWqj5GWZhtlcczVaqQmNRXsDfq+voR5CxKRfamA367QjJXtceYuliLFfEL8QsskRM2g==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.47.tgz", + "integrity": "sha512-TBxvRz+B4K205TWHHZxWVxkC2RFNP/Mz3PNcECBos5PsKwxjg3QSJzdoebr0VCf0Bfh8HOPldKxAP/8XkFe9gA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.47.tgz", + "integrity": "sha512-3Yu3Uq/VgytqsPjTMbkPU1ExADytbdWbruJYhA584E9jrpE2Ki+R6VVPoZCeAVk1Cb7QxcRTgblw6bSa6a/R+w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-ppc64-gnu": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.47.tgz", + "integrity": "sha512-wfdMi5IaOaNtmh2/6geRoxIdNfqylUZFdtzTKS655y1axWfIWyx7As74vv0wVdjeCIZ3WmCI9odDd4rUttXOSQ==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-s390x-gnu": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.47.tgz", + "integrity": "sha512-3hHYBY0yx8Ez7GMRrkhXHQzMdR5IZA6Wq5Ee4svlgwvSECLpnAJ9+0AimEGUFDvuLwE7nV/2+PYe8+Nm4rvNcQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.47.tgz", + "integrity": "sha512-TjfhjgP/jGCfFHYC3JQPhJA1HwErbIJ9JfREDc1KNkvY6P0LodCgKVIlQ5deeTbkG7ih3bF5PHJLuLpaZjdRyQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.47.tgz", + "integrity": "sha512-CQpS8Ge/avfjZd0UEwG/sds83Uu32deQXcV1Jo3jD0mmvQQqtYAjpsDZXugmheeAwmt+YIuoVtVHro8LMYHqsQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.47.tgz", + "integrity": "sha512-0W8IKHsUTYiT7G2RqtOoVWk+89yzZikIiDUb/sCK6BmQDBhN91hQSfyUtW12jhEWLzYgcfmisfsZrmZE+84U1A==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.47.tgz", + "integrity": "sha512-ZIp49d2Z4/ka2jO9otOg4hDvTdPmp86kVOgS2M5FCPI7eKKZ1W0boxWn+8XeZrfERtFGW0AlMRm4JhlJa7l3NA==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.47.tgz", + "integrity": "sha512-2h8Iek95vnixkBRCo+H8p09+Q5ll2NgSMFrWTy0iKt7+/t+8/T5mBpiT6c0ZxSS7wcWjwZ9sGZkK70tTSYHdDw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", @@ -1333,6 +1854,15 @@ "tslib": "^2.8.0" } }, + "node_modules/@swc/types": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz", + "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, "node_modules/@tailwindcss/node": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", @@ -2933,7 +3463,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -4072,6 +4601,21 @@ "hermes-estree": "0.25.1" } }, + "node_modules/icu-minify": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/icu-minify/-/icu-minify-4.13.6.tgz", + "integrity": "sha512-iYZGCJZ+kX6o7GrxpVe2sOSdW86AvEqh8RQBvWeBd9jqmuABsMc2B6xongACfItLOogyIWH6GuBslNHr79OU8Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/amannn" + } + ], + "license": "MIT", + "dependencies": { + "@formatjs/icu-messageformat-parser": "^3.4.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -4124,6 +4668,16 @@ "node": ">= 0.4" } }, + "node_modules/intl-messageformat": { + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.2.13.tgz", + "integrity": "sha512-JaPaE6TIX+TAS5XLhDUh41geLw4QfBHX4s5pW8Km+L9fVC8HzB9yOuhbh4EMR/F1+8C6b9qk4763Cv+LdOG1kg==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/fast-memoize": "3.1.7", + "@formatjs/icu-messageformat-parser": "3.5.16" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -4302,7 +4856,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4348,7 +4901,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -5156,6 +5708,15 @@ "dev": true, "license": "MIT" }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/next": { "version": "16.3.0", "resolved": "https://registry.npmjs.org/next/-/next-16.3.0.tgz", @@ -5209,6 +5770,83 @@ } } }, + "node_modules/next-intl": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-4.13.6.tgz", + "integrity": "sha512-loS6tjWWkr/IP+EV1yXUm9URB54QmZOp4+ZsMZNmeYxY8IZxLvO2esUegnXIDxj5DpK/4BsxwDGfGhlqodpkCQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/amannn" + } + ], + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "^0.8.1", + "@parcel/watcher": "^2.4.1", + "@swc/core": "^1.15.2", + "icu-minify": "^4.13.6", + "negotiator": "^1.0.0", + "next-intl-swc-plugin-extractor": "^4.13.6", + "po-parser": "^2.1.1", + "use-intl": "^4.13.6" + }, + "peerDependencies": { + "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/next-intl-swc-plugin-extractor": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/next-intl-swc-plugin-extractor/-/next-intl-swc-plugin-extractor-4.13.6.tgz", + "integrity": "sha512-M2L8jtPEAXj0CPmXbiW66THdr3OnDqA9IsU1hqv3CdxtVow3Bl9eXPdT9Opeji7L4AFrUZ016dJOs+CoTw66OA==", + "license": "MIT" + }, + "node_modules/next-intl/node_modules/@swc/core": { + "version": "1.15.47", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.47.tgz", + "integrity": "sha512-FbsO5JcfOjfH38W/rohBRBweJeERsAuIP4f377lmkmxTcq9exjtx4SkRuZY5CdfhR2CBVwDIJegBpJDffwNsOg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.27" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.47", + "@swc/core-darwin-x64": "1.15.47", + "@swc/core-linux-arm-gnueabihf": "1.15.47", + "@swc/core-linux-arm64-gnu": "1.15.47", + "@swc/core-linux-arm64-musl": "1.15.47", + "@swc/core-linux-ppc64-gnu": "1.15.47", + "@swc/core-linux-s390x-gnu": "1.15.47", + "@swc/core-linux-x64-gnu": "1.15.47", + "@swc/core-linux-x64-musl": "1.15.47", + "@swc/core-win32-arm64-msvc": "1.15.47", + "@swc/core-win32-ia32-msvc": "1.15.47", + "@swc/core-win32-x64-msvc": "1.15.47" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, "node_modules/next/node_modules/postcss": { "version": "8.5.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", @@ -5237,6 +5875,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, "node_modules/node-exports-info": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", @@ -5517,6 +6161,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/po-parser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/po-parser/-/po-parser-2.1.1.tgz", + "integrity": "sha512-ECF4zHLbUItpUgE3OTtLKlPjeBN+fKEczj2zYjDfCGOzicNs0GK3Vg2IoAYwx7LH/XYw43fZQP6xnZ4TkNxSLQ==", + "license": "MIT" + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -6619,6 +7269,27 @@ "punycode": "^2.1.0" } }, + "node_modules/use-intl": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-4.13.6.tgz", + "integrity": "sha512-RLej84qL6PGTDp/PSG3tqRpwr7IvJfOu4Qfv/uyy8CrnYn1oEOQb6osNJb++jZ7FQxqN3aQ5BI7wTIerUgrgMA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/amannn" + } + ], + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "^3.1.0", + "@schummar/icu-type-parser": "1.21.5", + "icu-minify": "^4.13.6", + "intl-messageformat": "^11.1.0" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index dcf439c..0618e47 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "next": "16.3.0", + "next-intl": "^4.13.6", "react": "19.2.8", "react-dom": "19.2.8" }, diff --git a/prompt.txt b/prompt.txt new file mode 100644 index 0000000..5264f12 --- /dev/null +++ b/prompt.txt @@ -0,0 +1,11 @@ +Please make a clone of this website +https://www.salehkargar.ir/ + +You can make it better anywhere you want - but use exact design +Color palette: like the original website +Lang: fa +Dir: rtl +Use next js +Download image from main website without any change and put in src/images with proper foldering +Build only home page for now +Use the data from main website \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6a45beb8f221f0f77e10ac21d2d19149a6911d GIT binary patch literal 13307 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 +}; + +export async function generateMetadata({ params }: Props): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + return buildMetadata({ + title: t("aboutLimeTitle"), + description: t("aboutLimeDescription"), + path: `/${locale}/aboutlime`, + locale, + }); +} + +export default async function AboutLimePage({ params }: Props) { + const { locale } = await params; + setRequestLocale(locale); + const t = await getTranslations("AboutLimePage"); + + return ( + +
+
+ {sectionMeta.map((section, index) => ( +
+
+ {t(`sections.${section.key}.title`)} +
+
+

{t(`sections.${section.key}.title`)}

+ + {t(`sections.${section.key}.body`) + .split("\n") + .map((para) => + para.trim() ?

{para}

: null, + )} +
+
+ ))} +
+
+
+ ); +} diff --git a/src/app/[locale]/aboutsuperchalk/page.tsx b/src/app/[locale]/aboutsuperchalk/page.tsx new file mode 100644 index 0000000..a84ace9 --- /dev/null +++ b/src/app/[locale]/aboutsuperchalk/page.tsx @@ -0,0 +1,74 @@ +import type { Metadata } from "next"; +import Image from "next/image"; +import { getTranslations, setRequestLocale } from "next-intl/server"; +import PageShell from "@/components/PageShell"; +import { buildMetadata } from "@/lib/seo"; + +const sectionMeta = [ + { key: "history", image: "/images/about-chalk/1.jpg" }, + { key: "method", image: "/images/about-chalk/2.jpg" }, + { key: "strength", image: "/images/about-chalk/3.jpg" }, + { key: "pros", image: "/images/about-chalk/4.jpg" }, + { key: "cons", image: "/images/about-chalk/1.jpg" }, + { key: "super", image: "/images/products/super-chalk.jpg" }, +] as const; + +type Props = { + params: Promise<{ locale: string }>; +}; + +export async function generateMetadata({ params }: Props): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + return buildMetadata({ + title: t("aboutChalkTitle"), + description: t("aboutChalkDescription"), + path: `/${locale}/aboutsuperchalk`, + locale, + }); +} + +export default async function AboutChalkPage({ params }: Props) { + const { locale } = await params; + setRequestLocale(locale); + const t = await getTranslations("AboutChalkPage"); + + return ( + +
+
+ {sectionMeta.map((section, index) => ( +
+
+ {t(`sections.${section.key}.title`)} +
+
+

{t(`sections.${section.key}.title`)}

+ + {t(`sections.${section.key}.body`) + .split("\n") + .map((para) => + para.trim() ?

{para}

: null, + )} +
+
+ ))} +
+
+
+ ); +} diff --git a/src/app/[locale]/aboutus/page.tsx b/src/app/[locale]/aboutus/page.tsx new file mode 100644 index 0000000..2eef057 --- /dev/null +++ b/src/app/[locale]/aboutus/page.tsx @@ -0,0 +1,65 @@ +import type { Metadata } from "next"; +import Image from "next/image"; +import { getTranslations, setRequestLocale } from "next-intl/server"; +import PageShell from "@/components/PageShell"; +import { buildMetadata } from "@/lib/seo"; + +type Props = { + params: Promise<{ locale: string }>; +}; + +export async function generateMetadata({ params }: Props): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + return buildMetadata({ + title: t("aboutUsTitle"), + description: t("aboutUsDescription"), + path: `/${locale}/aboutus`, + locale, + }); +} + +export default async function AboutUsPage({ params }: Props) { + const { locale } = await params; + setRequestLocale(locale); + const t = await getTranslations("AboutUsPage"); + + return ( + +
+
+
+ {t("imageAlt")} +
+
+ +

{t("title")}

+ +

{t("p1")}

+

{t("p2")}

+

{t("p3")}

+
+
+
+
+ ); +} diff --git a/src/app/[locale]/gallery/page.tsx b/src/app/[locale]/gallery/page.tsx new file mode 100644 index 0000000..e03ede8 --- /dev/null +++ b/src/app/[locale]/gallery/page.tsx @@ -0,0 +1,49 @@ +import type { Metadata } from "next"; +import Image from "next/image"; +import { getTranslations, setRequestLocale } from "next-intl/server"; +import PageShell from "@/components/PageShell"; +import { galleryImages } from "@/data/pages"; +import { buildMetadata } from "@/lib/seo"; + +type Props = { + params: Promise<{ locale: string }>; +}; + +export async function generateMetadata({ params }: Props): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + return buildMetadata({ + title: t("galleryTitle"), + description: t("galleryDescription"), + path: `/${locale}/gallery`, + locale, + }); +} + +export default async function GalleryPage({ params }: Props) { + const { locale } = await params; + setRequestLocale(locale); + const t = await getTranslations("GalleryPage"); + + return ( + +
+
+
+ {galleryImages.map((item) => ( +
+ {t("itemAlt", +
+ ))} +
+
+
+
+ ); +} diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx new file mode 100644 index 0000000..f82f5fe --- /dev/null +++ b/src/app/[locale]/layout.tsx @@ -0,0 +1,112 @@ +import type { Metadata, Viewport } from "next"; +import { hasLocale, NextIntlClientProvider } from "next-intl"; +import { getMessages, getTranslations, setRequestLocale } from "next-intl/server"; +import { Vazirmatn } from "next/font/google"; +import { notFound } from "next/navigation"; +import JsonLd, { + localBusinessJsonLd, + organizationJsonLd, +} from "@/components/JsonLd"; +import { routing } from "@/i18n/routing"; +import { siteConfig } from "@/data/seo"; +import "../globals.css"; + +const vazirmatn = Vazirmatn({ + subsets: ["arabic"], + weight: ["300", "400", "500", "700", "800"], + variable: "--font-vazirmatn", + display: "swap", +}); + +export const viewport: Viewport = { + width: "device-width", + initialScale: 1, + themeColor: "#000000", +}; + +type Props = { + children: React.ReactNode; + params: Promise<{ locale: string }>; +}; + +export function generateStaticParams() { + return routing.locales.map((locale) => ({ locale })); +} + +export async function generateMetadata({ + params, +}: { + params: Promise<{ locale: string }>; +}): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + + return { + metadataBase: new URL(siteConfig.url), + title: { + default: t("siteName"), + template: `%s | ${t("siteName")}`, + }, + description: t("homeDescription"), + applicationName: siteConfig.shortName, + icons: { + icon: "/favicon.png", + apple: "/favicon.png", + }, + openGraph: { + type: "website", + locale: locale === "ar" ? "ar_SA" : "fa_IR", + url: `${siteConfig.url}/${locale}`, + siteName: t("siteName"), + title: t("siteName"), + description: t("homeDescription"), + images: [ + { + url: siteConfig.ogImage, + width: 1920, + height: 680, + alt: t("siteName"), + }, + ], + }, + twitter: { + card: "summary_large_image", + title: t("siteName"), + description: t("homeDescription"), + images: [siteConfig.ogImage], + }, + alternates: { + canonical: `/${locale}`, + languages: { + "fa-IR": "/fa", + "ar": "/ar", + "x-default": "/fa", + }, + }, + robots: { + index: true, + follow: true, + }, + }; +} + +export default async function LocaleLayout({ children, params }: Props) { + const { locale } = await params; + if (!hasLocale(routing.locales, locale)) { + notFound(); + } + + setRequestLocale(locale); + const messages = await getMessages(); + + return ( + + + + + {children} + + + + ); +} diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx new file mode 100644 index 0000000..f623215 --- /dev/null +++ b/src/app/[locale]/page.tsx @@ -0,0 +1,47 @@ +import type { Metadata } from "next"; +import { getTranslations, setRequestLocale } from "next-intl/server"; +import AboutTabs from "@/components/AboutTabs"; +import Footer from "@/components/Footer"; +import Header from "@/components/Header"; +import Hero from "@/components/Hero"; +import Location from "@/components/Location"; +import PowderFeatures from "@/components/PowderFeatures"; +import Productions from "@/components/Productions"; +import ProductsCarousel from "@/components/ProductsCarousel"; +import { buildMetadata } from "@/lib/seo"; + +type Props = { + params: Promise<{ locale: string }>; +}; + +export async function generateMetadata({ params }: Props): Promise { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: "Meta" }); + + return buildMetadata({ + title: t("homeTitle"), + description: t("homeDescription"), + path: `/${locale}`, + locale, + }); +} + +export default async function HomePage({ params }: Props) { + const { locale } = await params; + setRequestLocale(locale); + + return ( + <> +
+
+ + + + + + +
+