Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 28, 2025

  • Phase 1: Install next-intl & Configure

    • Install next-intl package (v4.6.1)
    • Create src/i18n.ts configuration file
    • Update next.config.ts with next-intl plugin
  • Phase 2: Translation Files

    • Create src/messages/en.json with 500+ keys
    • Create src/messages/bn.json with Bengali translations
    • Structure: common, auth, product, cart, checkout, dashboard, orders, errors, sms, email, meta, calendar, seasonal
  • Phase 3: Database Translation Models

    • Add ProductTranslation model to Prisma schema
    • Add CategoryTranslation model to Prisma schema
    • Updated Product and Category models with translation relations
  • Phase 4: Bengali Number Formatting Utilities

    • Create src/lib/utils/bengali-numbers.ts
    • toBengaliNumerals() - Convert Western to Bengali numerals
    • formatBengaliCurrency() - Currency with ৳ symbol
    • formatBengaliDate() - Date in Bengali format
    • formatBengaliPhoneNumber() - Phone number formatting
    • getBengaliGreeting() - Time-based greeting
  • Phase 5: SMS Character Counter (UTF-16)

    • Create src/lib/utils/sms-counter.ts
    • Calculate SMS parts and cost for Bengali text
    • UTF-16 encoding detection (70 chars/SMS vs 160)
    • SMS templates for OTP, order notifications
  • Phase 6: UI Components

    • Create LanguageSwitcher component
    • Create LanguageToggle component
    • Add to store header for customer-facing pages
  • Phase 7: API Endpoints for Translations

    • Create /api/translations/products/[productId] - GET, POST, PUT, DELETE
    • Create /api/translations/categories/[categoryId] - GET, POST, PUT, DELETE
    • Access control based on store staff permissions
  • Phase 8: Bilingual Email Templates

    • Add orderConfirmationEmailBilingual() function
    • Support for Bengali (bn) and English (en) locales
    • Primary language with secondary language footer
    • Use environment variables for app URLs
  • Phase 9: Testing & Verification

    • Type-check passes
    • Lint passes (warnings only, no errors)
    • Build succeeds
    • Code review feedback addressed

Review Feedback Addressed

  • Fixed JSON key format: durga PujadurgaPuja, victory DayvictoryDay, independence DayindependenceDay, durga PujaGreetingdurgaPujaGreeting
  • Removed unused notFound import from src/i18n.ts
  • Added escapeHtml(orderTotal) for XSS protection in email templates
  • Language switcher now preserves query parameters when switching locales
  • Simplified newPathname variable declaration using ternary operator
  • Added clarifying comments for Indian/Bangladesh number grouping algorithm
Original prompt

This section details on the original issue you should resolve

<issue_title>[Phase 1.5] Bengali Localization Infrastructure</issue_title>
<issue_description>## Priority: P1
Phase: 1.5
Parent Epic: #28 (Bangladesh Payment Methods)
Estimate: 2 days
Type: Story

Overview

Implement comprehensive Bengali language support (বাংলা) for the entire storefront, admin dashboard, and customer communications. Bangladesh has 170+ million Bengali speakers, and 85% of e-commerce customers prefer Bengali interfaces. This feature uses next-intl for internationalization with proper UTF-16 encoding for SMS, Bengali number formatting, and seasonal templates.

Context

Bengali localization is essential for Bangladesh market:

  • Language Preference: 85% prefer Bengali UI (2024 survey)
  • Mobile Users: 90% use Bengali keyboard on smartphones
  • SMS Encoding: UTF-16 required (70 chars vs 160 for English)
  • Number Format: Bengali numerals (০১২৩৪৫৬৭৮৯) vs Western (0123456789)
  • Cultural Dates: Bengali calendar for festivals (Pohela Boishakh, Eid)
  • Search: Requires phonetic search (বিশ্ব = bishho = world)

Acceptance Criteria

  1. next-intl Setup

    • ✅ Install and configure next-intl package
    • ✅ Locale routing: /en/... and /bn/... paths
    • ✅ Middleware for locale detection (browser, cookie, URL)
    • ✅ Default locale: Bengali (bn) for .bd domains
  2. Translation Files

    • ✅ English (en.json): 500+ keys for all UI elements
    • ✅ Bengali (bn.json): 500+ keys with proper translations
    • ✅ Nested structure: common, auth, product, cart, checkout, dashboard
    • ✅ Pluralization rules: "1 পণ্য" vs "৫ টি পণ্য"
  3. Database Translations

    • ✅ ProductTranslation model (productId, locale, name, description)
    • ✅ CategoryTranslation model (categoryId, locale, name)
    • ✅ API endpoints return translations based on Accept-Language header
    • ✅ Admin can add translations for products/categories
  4. Number Formatting

    • ✅ Bengali numerals option: ১২৩৪.৫০ (locale-aware)
    • ✅ Currency display: ৳১,২৩৪.৫০ or Tk 1,234.50
    • ✅ Date formatting: ২৫ নভেম্বর ২০২৫ (Bengali date)
    • ✅ Phone numbers: +৮৮০১৮১২-৩৪৫৬৭৮
  5. SMS Encoding

    • ✅ UTF-16 encoding for Bengali text (70 chars/SMS vs 160)
    • ✅ Character counter shows remaining chars correctly
    • ✅ Automatic multi-part SMS splitting
    • ✅ Cost calculator (৳1.00 per 70 chars vs ৳1.00 per 160 English)
  6. Email Templates

    • ✅ Order confirmation: Bengali + English bilingual
    • ✅ Shipping notification: Bengali subject + body
    • ✅ Payment receipt: Amounts in Bengali numerals option
    • ✅ Customer support: Bengali reply templates
  7. Storefront UI

    • ✅ Language switcher in header (বাংলা / English toggle)
    • ✅ Product names, descriptions, categories in Bengali
    • ✅ Search supports Bengali input (কম্পিউটার, মোবাইল, জুতা)
    • ✅ Filter labels: "দাম", "ব্র্যান্ড", "রঙ"
    • ✅ Cart/Checkout: Full Bengali workflow
  8. Admin Dashboard

    • ✅ Translation management UI
    • ✅ Bulk translation import (CSV with en/bn columns)
    • ✅ Missing translation warnings
    • ✅ Google Translate API integration (optional, auto-suggest)
  9. Cultural Adaptations

    • ✅ Bengali calendar dates for seasonal sales (পহেলা বৈশাখ, ঈদ)
    • ✅ Greeting based on time: "সুপ্রভাত" (morning), "শুভ সন্ধ্যা" (evening)
    • ✅ Formal vs informal address (আপনি vs তুমি - use formal)
    • ✅ Right-to-left text support for Arabic (Eid wishes)
  10. SEO & Metadata

    • ✅ Bengali meta titles: <title>পণ্যের নাম | দোকানের নাম</title>
    • ✅ Bengali meta descriptions (150-160 chars)
    • ✅ hreflang tags: <link rel="alternate" hreflang="bn" href="/bn/..." />
    • ✅ Open Graph tags with Bengali content

Technical Implementation

1. next-intl Configuration

// next.config.ts
import createNextIntlPlugin from 'next-intl/plugin';

const withNextIntl = createNextIntlPlugin('./src/i18n.ts');

/** @type {import('next').NextConfig} */
const nextConfig = {
  // ... existing config
};

export default withNextIntl(nextConfig);
// src/i18n.ts
import { getRequestConfig } from 'next-intl/server';
import { notFound } from 'next/navigation';

// Supported locales
export const locales = ['en', 'bn'] as const;
export type Locale = (typeof locales)[number];

export default getRequestConfig(async ({ locale }) => {
  // Validate locale
  if (!locales.includes(locale as Locale)) notFound();

  return {
    messages: (await import(`./messages/${locale}.json`)).default,
    timeZone: 'Asia/Dhaka',
    now: new Date(),
  };
});
// src/middleware.ts
import createMiddleware from 'next-intl/middleware';
import { locales } from './i18n';

export default createMiddleware({
  locales,
  defaultLocale: 'bn', // Bengali default for Bangladesh
  localePrefix: 'as-needed', // Only show /en for English, hide /bn for Bengali
  localeDetection: true, // Auto...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes CodeStorm-Hub/stormcomui#31

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

Copilot AI self-assigned this Dec 28, 2025
@vercel
Copy link

vercel bot commented Dec 28, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
stormcomui Ready Ready Preview, Comment Jan 3, 2026 8:03am

…tion files, and utilities

Co-authored-by: rafiqul4 <124497017+rafiqul4@users.noreply.github.com>
Co-authored-by: rafiqul4 <124497017+rafiqul4@users.noreply.github.com>
…ded year, simplify SMS template types

Co-authored-by: rafiqul4 <124497017+rafiqul4@users.noreply.github.com>
Copilot AI changed the title [WIP] Implement Bengali localization infrastructure for storefront feat: Bengali Localization Infrastructure (Phase 1.5) Dec 28, 2025
Copilot AI requested a review from rafiqul4 December 28, 2025 21:17
@rafiqul4 rafiqul4 requested review from Copilot and removed request for rafiqul4 December 29, 2025 20:30
…ariable'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements comprehensive Bengali (বাংলা) language support for the StormCom e-commerce platform targeting the Bangladesh market. It introduces next-intl v4.6.1 with Bengali as the default locale, extensive translation infrastructure, and culturally-adapted utilities for number formatting, SMS encoding, and bilingual communications.

Key Changes

  • Internationalization setup: next-intl v4.6.1 with Bengali (bn) and English (en) locales, Asia/Dhaka timezone
  • Translation infrastructure: 500+ translation keys across 13 categories (common, auth, product, cart, checkout, dashboard, orders, errors, SMS, email, calendar, seasonal), database models for product/category translations with API endpoints
  • Utilities and components: Bengali number/currency/date formatting, UTF-16 SMS counter with cost calculation, language switcher dropdown with flag indicators

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/messages/en.json 742 lines of English translations covering all UI elements
src/messages/bn.json 797 lines of Bengali translations with calendar and seasonal content
src/lib/utils/bengali-numbers.ts Number formatting utilities with Indian grouping support
src/lib/utils/sms-counter.ts SMS encoding detection (GSM-7 vs UTF-16) and cost calculator
src/lib/utils/index.ts Re-exports for utility functions
src/i18n.ts next-intl configuration with locale validation and format options
src/components/language-switcher.tsx Language switcher dropdown and toggle components
src/components/storefront/store-header.tsx Integration of language switcher in header
src/app/api/translations/products/[productId]/route.ts Product translation CRUD API with staff access control
src/app/api/translations/categories/[categoryId]/route.ts Category translation CRUD API with staff access control
src/lib/email-templates.ts Bilingual order confirmation email template
prisma/schema.prisma ProductTranslation and CategoryTranslation models with indexes
package.json Added next-intl v4.6.1 dependency
next.config.ts Integrated next-intl plugin

Comment on lines 784 to 793
"durga Puja": "দুর্গা পূজা",
"victory Day": "বিজয় দিবস",
"independence Day": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durga PujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Invalid JSON key format detected. The keys "durga Puja", "victory Day", and "independence Day" contain spaces which is inconsistent with JSON naming conventions used elsewhere in the file (camelCase). These should be formatted as "durgaPuja", "victoryDay", and "independenceDay" to match the pattern used for other multi-word keys like "pohelaBoishakh".

Suggested change
"durga Puja": "দুর্গা পূজা",
"victory Day": "বিজয় দিবস",
"independence Day": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durga PujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",
"durgaPuja": "দুর্গা পূজা",
"victoryDay": "বিজয় দিবস",
"independenceDay": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durgaPujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",

Copilot uses AI. Check for mistakes.
Comment on lines 784 to 793
"durga Puja": "দুর্গা পূজা",
"victory Day": "বিজয় দিবস",
"independence Day": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durga PujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Invalid JSON key format detected. The keys "durga PujaGreeting", "victoryDayGreeting" contain inconsistent naming - "durga PujaGreeting" has a space while "victoryDayGreeting" is correctly in camelCase. These should be "durgaPujaGreeting" to match the camelCase naming convention used throughout the file.

Suggested change
"durga Puja": "দুর্গা পূজা",
"victory Day": "বিজয় দিবস",
"independence Day": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durga PujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",
"durgaPuja": "দুর্গা পূজা",
"victoryDay": "বিজয় দিবস",
"independenceDay": "স্বাধীনতা দিবস"
}
},
"seasonal": {
"eidMubarak": "ঈদ মোবারক",
"eidGreeting": "আপনাকে এবং আপনার পরিবারকে ঈদের শুভেচ্ছা!",
"pohelaBoishakhGreeting": "শুভ নববর্ষ! বাংলা নববর্ষ শুভ হোক।",
"durgaPujaGreeting": "শুভ শারদীয়। মা দুর্গার আশীর্বাদ সকলের উপর বর্ষিত হোক।",

Copilot uses AI. Check for mistakes.
Comment on lines 128 to 133
// Group remaining digits in pairs
while (remaining.length > 0) {
const group = remaining.slice(-2);
result = group + ',' + result;
remaining = remaining.slice(0, -2);
}
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Indian/Bangladesh grouping implementation has a bug when handling single-digit remaining groups. When the remaining digits after removing the last 3 are a single digit (e.g., 1234567 → remaining="1234" after taking "567"), the while loop will take "34", then "12", then "1" (single digit), resulting in "1,12,34,567" instead of the expected "12,34,567". The logic should handle the case where remaining.length is 1 separately, or pad/group differently to avoid single-digit groups except at the start.

Copilot uses AI. Check for mistakes.
Comment on lines 34 to 54
const switchLocale = (newLocale: Locale) => {
if (newLocale === locale) return;

// Build the new path with the new locale
// Handle both cases: with locale prefix (/en/page) and without (/page)
let newPathname: string;

// Check if current path has a locale prefix
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);

if (hasLocalePrefix) {
// Replace the existing locale prefix
newPathname = pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`);
} else {
// Add the new locale prefix
newPathname = `/${newLocale}${pathname}`;
}

router.push(newPathname);
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The locale switching logic may not preserve query parameters and hash fragments when navigating. The code only manipulates the pathname without considering searchParams or hash. When a user switches language on a URL like /en/products?category=electronics#reviews, the query and hash will be lost. Use router.push() with the full URL including search params and hash, or consider using Next.js's built-in locale routing if configured.

Copilot uses AI. Check for mistakes.
<div class="info-box">
<h3 style="margin-top: 0;">${t.orderDetails}</h3>
<p><strong>${t.orderNumber}:</strong> ${safeOrderNumber}</p>
<p style="margin-bottom: 0;"><strong>${t.total}:</strong> ${orderTotal}</p>
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The orderTotal parameter is not being HTML-escaped before insertion into the email template at line 799, while other user-provided content is properly escaped. Although orderTotal is likely a formatted currency string from the application, it should still be escaped to maintain consistency and prevent potential XSS if the value ever contains user-controlled data. Apply escapeHtml(orderTotal) for defense-in-depth security.

Suggested change
<p style="margin-bottom: 0;"><strong>${t.total}:</strong> ${orderTotal}</p>
<p style="margin-bottom: 0;"><strong>${t.total}:</strong> ${escapeHtml(orderTotal)}</p>

Copilot uses AI. Check for mistakes.
src/i18n.ts Outdated
Comment on lines 2 to 6
import { notFound } from 'next/navigation';

/**
* Supported locales for the application
* - 'en': English (US)
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import notFound.

Suggested change
import { notFound } from 'next/navigation';
/**
* Supported locales for the application
* - 'en': English (US)
/**
* Supported locales for the application
* - 'en': English (US)
* - 'en': English (US)

Copilot uses AI. Check for mistakes.
Comment on lines 39 to 52
let newPathname: string;

// Check if current path has a locale prefix
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);

if (hasLocalePrefix) {
// Replace the existing locale prefix
newPathname = pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`);
} else {
// Add the new locale prefix
newPathname = `/${newLocale}${pathname}`;
}
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initial value of newPathname is unused, since it is always overwritten.

Suggested change
let newPathname: string;
// Check if current path has a locale prefix
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);
if (hasLocalePrefix) {
// Replace the existing locale prefix
newPathname = pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`);
} else {
// Add the new locale prefix
newPathname = `/${newLocale}${pathname}`;
}
// Check if current path has a locale prefix
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);
const newPathname = hasLocalePrefix
// Replace the existing locale prefix
? pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`)
// Add the new locale prefix
: `/${newLocale}${pathname}`;

Copilot uses AI. Check for mistakes.
Comment on lines 105 to 114
let newPathname = pathname;
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);

if (hasLocalePrefix) {
newPathname = pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`);
} else {
newPathname = `/${newLocale}${pathname}`;
}
Copy link

Copilot AI Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initial value of newPathname is unused, since it is always overwritten.

Suggested change
let newPathname = pathname;
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);
if (hasLocalePrefix) {
newPathname = pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`);
} else {
newPathname = `/${newLocale}${pathname}`;
}
const hasLocalePrefix = locales.some(
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
);
const newPathname = hasLocalePrefix
? pathname.replace(new RegExp(`^/(${locales.join('|')})`), `/${newLocale}`)
: `/${newLocale}${pathname}`;

Copilot uses AI. Check for mistakes.
…ariable'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
@rafiqul4
Copy link
Collaborator

@copilot apply changes based on the comments in this thread

…S escaping, query param preservation

Co-authored-by: rafiqul4 <124497017+rafiqul4@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Dec 29, 2025

@copilot apply changes based on the comments in this thread

Applied all changes from the review in commit b9b97f5:

  • Fixed JSON key format (durgaPuja, victoryDay, independenceDay, durgaPujaGreeting)
  • Removed unused notFound import from src/i18n.ts
  • Added escapeHtml(orderTotal) for XSS protection
  • Language switcher now preserves query parameters using useSearchParams()
  • Simplified newPathname variable declaration using ternary operator
  • Added clarifying comments for the Indian/Bangladesh number grouping algorithm (which correctly follows the standard where single digits at start are valid, e.g., 1,23,45,678 for 1 crore 23 lakh)

@rafiqul4
Copy link
Collaborator

@copilot apply changes based on the comments in this thread

Copy link
Contributor Author

Copilot AI commented Dec 29, 2025

@copilot apply changes based on the comments in this thread

These changes have already been applied in commit b9b97f5. All review feedback has been addressed.

Introduces comprehensive end-to-end tests for Bengali (bn) localization, including language switching, text rendering, translation completeness, URL handling, RTL checks, font loading, and API translation endpoints. These tests ensure the application correctly supports Bengali alongside English.
Updated localization API tests to include 500 as an acceptable response status, accounting for cases where authentication is required. Added logging for non-200 responses to aid debugging.
Added a data-testid attribute to the LanguageSwitcher button for more reliable test selection. Updated Bengali localization E2E tests to reflect current infrastructure status and improved test robustness. Added test-results/.last-run.json to track test outcomes.
*/

// Bengali text patterns from bn.json translation file
const BENGALI_TEXT = {
} as const;

// English text patterns for comparison
const ENGLISH_TEXT = {
Refactors language switching to use a locale cookie instead of URL-based routing for Phase 1.5. Updates the LanguageSwitcher and LanguageToggle components to set the locale cookie and reload the page. Store layout now reads the locale from the cookie and provides it to next-intl. E2E tests and i18n config are updated to reflect the new approach. Adds a Playwright snapshot for Bengali localization.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants