O que mudou
Infra (por app):
i18n/locales.ts — lista de locales (pt, en), default pt, labels para o seletor
i18n/request.ts — lê o cookie NEXT_LOCALE, carrega as mensagens
messages/pt.json + messages/en.json — todas as strings extraídas
next.config.ts — envolvido com withNextIntl (operator-pwa: withPWA(withNextIntl(...)))
app/layout.tsx — <html lang={locale}> dinâmico, NextIntlClientProvider
app/language-switcher.tsx — seletor PT | EN (cookie + router.refresh())
23 ficheiros de UI atualizados — todos os textos visíveis agora usam t('...') ou getTranslations.
Datas no relatório passaram de toLocaleString('pt-PT') fixo para useFormatter() do next-intl — localizam-se automaticamente.
Plurais em ICU no sync-chip: {count, plural, one {# pedido...} other {# pedidos...}}.
Resultado dos testes:
pnpm test:e2e — 3/3 ✓
pnpm test:e2e:auth — 4/4 ✓
tsc --noEmit em ambas as apps — limpo ✓
Para adicionar uma língua futura: criar messages/<locale>.json + adicionar o locale a i18n/locales.ts em cada app. O seletor aparece automaticamente.
50 lines
1.4 KiB
JSON
50 lines
1.4 KiB
JSON
{
|
|
"name": "@repo/operator-pwa",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "dotenv -e ../../.env -- next dev --port 3000",
|
|
"build": "dotenv -e ../../.env -- next build",
|
|
"start": "dotenv -e ../../.env -- next start --port 3000",
|
|
"lint": "next lint",
|
|
"typecheck": "tsc --noEmit",
|
|
"clean": "rimraf .next .turbo node_modules"
|
|
},
|
|
"dependencies": {
|
|
"@ducanh2912/next-pwa": "^10.2.9",
|
|
"@repo/api": "workspace:*",
|
|
"@repo/db": "workspace:*",
|
|
"@repo/domain": "workspace:*",
|
|
"@repo/ui": "workspace:*",
|
|
"@t3-oss/env-nextjs": "^0.11.1",
|
|
"@tanstack/react-query": "^5.62.10",
|
|
"@trpc/client": "^11.0.0",
|
|
"@trpc/react-query": "^11.0.0",
|
|
"@trpc/server": "^11.0.0",
|
|
"dexie": "^4.0.10",
|
|
"lucide-react": "^0.469.0",
|
|
"next": "15.3.9",
|
|
"next-auth": "5.0.0-beta.25",
|
|
"next-intl": "^4.13.0",
|
|
"pino": "^9.5.0",
|
|
"pino-pretty": "^11.3.0",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"superjson": "^2.2.2",
|
|
"zod": "^3.24.1"
|
|
},
|
|
"devDependencies": {
|
|
"@repo/config": "workspace:*",
|
|
"@types/node": "^22.10.2",
|
|
"@types/react": "^19.0.2",
|
|
"@types/react-dom": "^19.0.2",
|
|
"autoprefixer": "^10.4.20",
|
|
"dotenv-cli": "^8.0.0",
|
|
"postcss": "^8.4.49",
|
|
"rimraf": "^6.0.1",
|
|
"tailwindcss": "^3.4.17",
|
|
"typescript": "^5.7.2"
|
|
}
|
|
}
|