feat: implement locale-aware routing with [locale] dynamic segments
Some checks failed
Build and Deploy / build (push) Has been cancelled

WARNING: This change breaks existing SEO URLs for Serbian locale.

Changes:
- Migrated from separate locale folders (src/app/en/, src/app/de/, etc.)
  to [locale] dynamic segments (src/app/[locale]/)
- Serbian is now at /sr/ instead of / (root)
- English at /en/, German at /de/, French at /fr/
- All components updated to generate locale-aware links
- Root / now redirects to /sr (307 temporary redirect)

SEO Impact:
- Previously indexed Serbian URLs (/, /products, /about, /contact)
  will now return 404 or redirect to /sr/* URLs
- This is a breaking change for SEO - Serbian pages should ideally
  remain at root (/) with only non-default locales getting prefix
- Consider implementing 301 redirects from old URLs to maintain
  search engine rankings

Technical Notes:
- next-intl v4 with [locale] structure requires ALL locales to
  have the prefix (cannot have default locale at root)
- Alternative approach would be separate folder structure per locale
This commit is contained in:
Unchained
2026-03-23 20:59:33 +02:00
parent 5bd1a0f167
commit 92b6c830e1
47 changed files with 2175 additions and 2881 deletions

View File

@@ -45,6 +45,7 @@
"sustainableDesc": "Ethically sourced ingredients and eco-friendly packaging for a better planet."
},
"Products": {
"collection": "Our Collection",
"allProducts": "All Products",
"productsCount": "{count} products",
"featured": "Featured",
@@ -175,5 +176,251 @@
"text": "Was skeptical at first but after 3 weeks of using the rosehip oil, my skin texture has improved dramatically. The quality is unmatched."
}
]
},
"ProductReviews": {
"customerReviews": "Customer Reviews",
"whatCustomersSay": "What Customers Say",
"basedOnReviews": "Based on 1000+ reviews",
"reviews": [
{ "id": 1, "name": "Ana M.", "location": "Belgrade", "text": "Manoon Anti-age Serum transformed my skin in just 2 weeks!", "rating": 5 },
{ "id": 2, "name": "Milica P.", "location": "Novi Sad", "text": "The best day serum I've ever used. My wrinkles are visibly reduced.", "rating": 5 },
{ "id": 3, "name": "Jelena K.", "location": "Belgrade", "text": "Manoon night serum is pure magic. Wake up with glowing skin every morning.", "rating": 5 },
{ "id": 4, "name": "Stefan R.", "location": "Subotica", "text": "The Anti-age Set is worth every dinar. My wife and I both use it.", "rating": 5 },
{ "id": 5, "name": "Marija T.", "location": "Kragujevac", "text": "Finally found a serum that actually works! Manoon delivers on its promises.", "rating": 5 },
{ "id": 6, "name": "Nikola V.", "location": "Niš", "text": "My fine lines are disappearing. This day serum is incredible.", "rating": 5 },
{ "id": 7, "name": "Ivana L.", "location": "Belgrade", "text": "Manoon morning glow serum smells divine and works even better.", "rating": 5 },
{ "id": 8, "name": "Dejan M.", "location": "Novi Sad", "text": "The night serum has transformed my skincare routine completely.", "rating": 5 },
{ "id": 9, "name": "Sanja B.", "location": "Kragujevac", "text": "My skin looks 10 years younger after using Manoon for a month.", "rating": 5 },
{ "id": 10, "name": "Marko J.", "location": "Subotica", "text": "The anti-age set makes a perfect gift. My mother loves it!", "rating": 5 },
{ "id": 11, "name": "Petra D.", "location": "Niš", "text": "The texture of Manoon serum is so luxurious. Worth every penny.", "rating": 5 },
{ "id": 12, "name": "Luka G.", "location": "Belgrade", "text": "Day serum absorbs instantly. No greasy feeling at all!", "rating": 5 },
{ "id": 13, "name": "Maja S.", "location": "Novi Sad", "text": "My esthetician asked what I'm using. Manoon is now my secret!", "rating": 5 },
{ "id": 14, "name": "Vladimir P.", "location": "Kragujevac", "text": "The night serum works while I sleep. Wake up to visibly smoother skin.", "rating": 5 },
{ "id": 15, "name": "Katarina N.", "location": "Subotica", "text": "The Anti-age Set arrived beautifully packaged. Perfect for gifting.", "rating": 5 },
{ "id": 16, "name": "Bojan R.", "location": "Niš", "text": "Been using Manoon for 3 months. My wrinkles are noticeably reduced.", "rating": 5 },
{ "id": 17, "name": "Tamara F.", "location": "Belgrade", "text": "The day serum provides the perfect base under makeup.", "rating": 5 },
{ "id": 18, "name": "Aleksandar K.", "location": "Novi Sad", "text": "Finally a Serbian brand that competes with luxury international brands!", "rating": 5 },
{ "id": 19, "name": "Natalia M.", "location": "Kragujevac", "text": "My sensitive skin loves Manoon. No irritation at all.", "rating": 5 },
{ "id": 20, "name": "Filip T.", "location": "Subotica", "text": "The anti-age serum is lightweight yet incredibly effective.", "rating": 5 },
{ "id": 21, "name": "Andrea L.", "location": "Niš", "text": "Manoon night serum is my evening ritual. Skin looks amazing!", "rating": 5 },
{ "id": 22, "name": "Ognjen P.", "location": "Belgrade", "text": "My friends keep asking what changed in my skincare routine.", "rating": 5 },
{ "id": 23, "name": "Mila J.", "location": "Novi Sad", "text": "The Anti-age Set includes everything you need. Great value!", "rating": 5 },
{ "id": 24, "name": "Dragan S.", "location": "Kragujevac", "text": "Even my husband noticed the difference. He now uses the day serum too!", "rating": 5 },
{ "id": 25, "name": "Jovana V.", "location": "Subotica", "text": "The morning glow serum gives the most beautiful luminosity.", "rating": 5 },
{ "id": 26, "name": "Stefan M.", "location": "Niš", "text": "Manoon products are now essential in my daily routine.", "rating": 5 },
{ "id": 27, "name": "Ana R.", "location": "Belgrade", "text": "The night serum helped clear my complexion. Skin looks so healthy!", "rating": 5 },
{ "id": 28, "name": "Nenad L.", "location": "Novi Sad", "text": "Anti-aging results visible within weeks. Highly recommend Manoon!", "rating": 5 },
{ "id": 29, "name": "Sofija D.", "location": "Kragujevac", "text": "The texture is divine. Feels like a luxury spa treatment at home.", "rating": 5 },
{ "id": 30, "name": "Velibor K.", "location": "Subotica", "text": "My crow's feet have diminished significantly. Thank you Manoon!", "rating": 5 },
{ "id": 31, "name": "Irena M.", "location": "Niš", "text": "The Anti-age Set makes the perfect birthday gift for my mother.", "rating": 5 },
{ "id": 32, "name": "Radoslav P.", "location": "Belgrade", "text": "Professional quality serum at an honest price. Serbian excellence!", "rating": 5 },
{ "id": 33, "name": "Jelena B.", "location": "Novi Sad", "text": "My skin has never been this hydrated. Day serum is amazing!", "rating": 5 },
{ "id": 34, "name": "Dimitrije S.", "location": "Kragujevac", "text": "The night serum is worth its weight in gold. Pure luxury!", "rating": 5 },
{ "id": 35, "name": "Minela G.", "location": "Subotica", "text": "Manoon lives up to the hype. My skin looks refreshed and young.", "rating": 5 },
{ "id": 36, "name": "Zoran T.", "location": "Niš", "text": "I've tried many serums. Manoon is by far the most effective.", "rating": 5 },
{ "id": 37, "name": "Mirjana F.", "location": "Belgrade", "text": "The Anti-age Set transformed my mother's skincare routine completely.", "rating": 5 },
{ "id": 38, "name": "Ivan J.", "location": "Novi Sad", "text": "Fast-acting serum with real results. I recommend Manoon to everyone.", "rating": 5 },
{ "id": 39, "name": "Kristina P.", "location": "Kragujevac", "text": "The morning glow serum gives such a beautiful dewy finish.", "rating": 5 },
{ "id": 40, "name": "Bratislav L.", "location": "Subotica", "text": "Noticeable results in just 2 weeks. This serum is the real deal!", "rating": 5 },
{ "id": 41, "name": "Zorica M.", "location": "Niš", "text": "The night serum erased years from my face. Absolutely miraculous!", "rating": 5 },
{ "id": 42, "name": "Patrik N.", "location": "Belgrade", "text": "Premium quality Serbian skincare that rivals international luxury brands.", "rating": 5 },
{ "id": 43, "name": "Simona K.", "location": "Novi Sad", "text": "Manoon Anti-age Serum is the best investment in my skin ever.", "rating": 5 },
{ "id": 44, "name": "Mladen D.", "location": "Kragujevac", "text": "The day serum absorbs in seconds. No waiting around!", "rating": 5 },
{ "id": 45, "name": "Ljiljana R.", "location": "Subotica", "text": "Gifting the Anti-age Set to my sisters. They loved it!", "rating": 5 },
{ "id": 46, "name": "Tomislav V.", "location": "Niš", "text": "My wrinkles are visibly reduced after using Manoon for a month.", "rating": 5 },
{ "id": 47, "name": "Emilija S.", "location": "Belgrade", "text": "The night serum leaves my skin so soft and renewed every morning.", "rating": 5 },
{ "id": 48, "name": "Andrija P.", "location": "Novi Sad", "text": "Manoon day serum is perfect under sunscreen. Essential duo!", "rating": 5 },
{ "id": 49, "name": "Miona L.", "location": "Kragujevac", "text": "My skin looks radiant and youthful. Couldn't be happier with Manoon!", "rating": 5 },
{ "id": 50, "name": "Slavko M.", "location": "Subotica", "text": "The Anti-age Set delivers visible results. True Serbian quality!", "rating": 5 }
]
},
"TrustBadges": {
"averageRating": "Average Rating",
"basedOnReviews": "Based on 1000+ reviews",
"happyCustomers": "Happy Customers",
"worldwide": "Worldwide",
"naturalIngredients": "Natural Ingredients",
"noAdditives": "No additives",
"freeShipping": "Free Shipping",
"ordersOver": "Orders over 3,000 RSD"
},
"ProblemSection": {
"title": "The Problem",
"subtitle": "Tired of Hair & Skin Products That Don't Deliver?",
"description": "You deserve better than products filled with harsh chemicals and empty promises",
"problems": [
{
"problem": "Dry, Damaged Hair",
"description": "Products leave your hair brittle, frizzy, and breaking despite expensive treatments"
},
{
"problem": "Confusing Ingredients",
"description": "Can't pronounce what's in your skincare. parabens, sulfates, synthetic fragrances—dangerous toxins"
},
{
"problem": "No Real Results",
"description": "Countless products promise miracles but deliver nothing but empty promises and wasted money"
}
]
},
"AsSeenIn": {
"title": "As Featured In"
},
"BeforeAfterGallery": {
"realResults": "Real Results",
"seeTransformation": "See the Transformation",
"startTransformation": "Start Your Transformation",
"before": "BEFORE",
"after": "AFTER",
"verified": "Verified",
"timeline": "After {weeks}"
},
"HowItWorks": {
"title": "Simple Process",
"subtitle": "How ManoonOils Works",
"startTransformation": "Start Your Transformation",
"steps": [
{
"title": "Choose Your Oil",
"description": "Select from our collection of pure, cold-pressed oils formulated for your specific hair and skin needs."
},
{
"title": "Apply Daily",
"description": "Massage a few drops into damp hair or skin. Our oils absorb instantly—never greasy, always nourishing."
},
{
"title": "See Results",
"description": "Experience transformation in 4-6 weeks. Shinier hair, radiant skin, and confidence that glows."
}
]
},
"Header": {
"products": "Products",
"about": "About",
"contact": "Contact",
"cart": "Cart",
"account": "Account",
"openMenu": "Open menu",
"closeMenu": "Close menu",
"openCart": "Open cart"
},
"Footer": {
"shop": "Shop",
"allProducts": "All Products",
"hairCare": "Hair Care",
"skinCare": "Skin Care",
"giftSets": "Gift Sets",
"about": "About",
"ourStory": "Our Story",
"process": "Process",
"sustainability": "Sustainability",
"help": "Help",
"faq": "FAQ",
"shipping": "Shipping",
"returns": "Returns",
"contactUs": "Contact Us",
"brandDescription": "Premium natural oils for hair and skin care. Handcrafted with love using traditional methods.",
"weAccept": "We accept:",
"allRights": "All rights reserved."
},
"ProductCard": {
"noImage": "No image",
"outOfStock": "Out of Stock",
"quickAdd": "Quick Add",
"contactForPrice": "Contact for price"
},
"ProductDetail": {
"home": "Home",
"outOfStock": "Out of Stock",
"size": "Size",
"qty": "Qty",
"adding": "Adding...",
"transformHairSkin": "Transform My Hair & Skin",
"freeShipping": "Free shipping on orders over 3,000 RSD",
"guarantee": "30-Day Guarantee",
"secureCheckout": "Secure Checkout",
"easyReturns": "Easy Returns",
"benefits": "Benefits",
"description": "Description",
"howToUse": "How to Use",
"howToUseText": "Apply a small amount to clean, damp hair or skin. Massage gently until absorbed. Use daily for best results.",
"ingredients": "Ingredients",
"ingredientsText": "100% Pure Natural Oil. No additives, preservatives, or artificial fragrances.",
"youMayAlsoLike": "You May Also Like",
"similarProducts": "Similar Products",
"stocksRunningOut": "Stocks are running out!",
"urgency1": "Hurry up! 500+ items sold in the last 3 days!",
"urgency2": "In the carts of 2.5K people - buy before its gone!",
"urgency3": "7,562 people viewed this product in the last 24 hours!"
},
"Newsletter": {
"stayConnected": "Stay Connected",
"joinCommunity": "Join Our Community",
"newsletterText": "Subscribe to receive exclusive offers, beauty tips, and be the first to know about new products.",
"emailPlaceholder": "Enter your email",
"subscribe": "Subscribe"
},
"ProductBenefits": {
"whyChoose": "Why Choose This Product",
"manoonDifference": "The Manoon Difference",
"pureNatural": "Pure & Natural",
"pureNaturalDesc": "100% natural ingredients with no additives or preservatives",
"crueltyFree": "Cruelty Free",
"crueltyFreeDesc": "Never tested on animals, ethically sourced ingredients",
"madeWithLove": "Made with Love",
"madeWithLoveDesc": "Handcrafted in small batches for maximum quality",
"visibleResults": "Visible Results",
"visibleResultsDesc": "See noticeable improvements in 4-6 weeks"
},
"Cart": {
"yourCart": "Your Cart",
"closeCart": "Close cart",
"dismiss": "Dismiss",
"yourCartEmpty": "Your cart is empty",
"looksLikeEmpty": "Looks like you haven't added anything to your cart yet.",
"startShopping": "Start Shopping",
"subtotal": "Subtotal",
"shipping": "Shipping",
"calculatedAtCheckout": "Calculated at checkout",
"total": "Total",
"freeShippingOver": "Free shipping on orders over {amount}",
"processing": "Processing...",
"checkout": "Checkout",
"continueShopping": "Continue Shopping",
"removeItem": "Remove item"
},
"Checkout": {
"checkout": "Checkout",
"shippingAddress": "Shipping Address",
"firstName": "First Name",
"lastName": "Last Name",
"streetAddress": "Street Address",
"streetAddressOptional": "Apartment, suite, etc. (optional)",
"city": "City",
"postalCode": "Postal Code",
"phone": "Phone",
"billingAddressSame": "Billing address same as shipping",
"billingAddress": "Billing Address",
"paymentMethod": "Payment Method",
"cashOnDelivery": "Cash on Delivery (COD)",
"cashOnDeliveryDesc": "Pay when your order is delivered to your door.",
"processing": "Processing...",
"completeOrder": "Complete Order - {total}",
"orderSummary": "Order Summary",
"qty": "Qty",
"subtotal": "Subtotal",
"shipping": "Shipping",
"calculated": "Calculated",
"total": "Total",
"yourCartEmpty": "Your cart is empty",
"continueShopping": "Continue Shopping",
"errorNoCheckout": "No active checkout. Please try again.",
"errorOccurred": "An error occurred during checkout.",
"errorCreatingOrder": "Failed to create order.",
"orderConfirmed": "Order Confirmed!",
"thankYou": "Thank you for your purchase.",
"orderNumber": "Order Number",
"confirmationEmail": "You will receive a confirmation email shortly. We will contact you to arrange Cash on Delivery.",
"continueShoppingBtn": "Continue Shopping"
}
}