feat(i18n): French and German localization (phase 5)
- Add full message catalogs and content for French (fr) and German (de) - Implement ASCII canonical slugs for French and German routes - Add language-specific search endpoints (/api/busca/fr, /api/busca/de) - Configure strict 404 responses for /fr/livro and /de/livro - Localize SEO, OpenGraph (fr_FR, de_DE), Twitter and JSON-LD schemas - Add localized code example comments across 14 examples for fr and de - Enable 'fr' and 'de' in ENABLED_LOCALES with root negotiation and redirect - Extend test suite in check-i18n, smoke-imagem and verifica-vazamentos Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
1 parent
7b673aeb4b
commit
7fce46b9e1
104 files changed
+33369
-686
No files matched your search
+33
-1
@@ -46,6 +46,8 @@ export async function generateMetadata({ params }) {
|
||||
const { locale } = await params;
|
||||
const isEn = locale === "en";
|
||||
const isEs = locale === "es";
|
||||
const isFr = locale === "fr";
|
||||
const isDe = locale === "de";
|
||||
|
||||
const ogLocaleMap = {
|
||||
pt: "pt_BR",
|
||||
@@ -62,12 +64,20 @@ export async function generateMetadata({ params }) {
|
||||
? "ESPDocs · ESP32 Open Documentation"
|
||||
: isEs
|
||||
? "ESPDocs · Documentación abierta de ESP32"
|
||||
: isFr
|
||||
? "ESPDocs · Documentation ouverte ESP32"
|
||||
: isDe
|
||||
? "ESPDocs · Offene ESP32-Dokumentation"
|
||||
: "ESPDocs · Documentação do ESP32 em português";
|
||||
|
||||
const description = isEn
|
||||
? "Specifications, pinouts, comparison and selection of 12 ESP32 microcontroller series. Datasheets, peripherals, hardware security and connection diagrams."
|
||||
: isEs
|
||||
? "Especificaciones, patillaje, comparación y selección de las 12 series de microcontroladores ESP32. Hojas de datos, periféricos, seguridad en hardware y diagramas de conexión."
|
||||
: isFr
|
||||
? "Spécifications, brochages, comparaison et sélection des 12 séries de microcontrôleurs ESP32. Fiches techniques, périphériques, sécurité matérielle et schémas de connexion."
|
||||
: isDe
|
||||
? "Spezifikationen, Pinbelegungen, Vergleich und Auswahl der 12 ESP32-Mikrocontrollerserien. Datenblätter, Peripheriegeräte, Hardwaresicherheit und Anschlussdiagramme."
|
||||
: "Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro. Datasheets, periféricos, segurança em hardware e diagramas de conexão.";
|
||||
|
||||
const keywords = isEn
|
||||
@@ -84,6 +94,20 @@ export async function generateMetadata({ params }) {
|
||||
"comparar ESP32", "cuál ESP32 elegir", "datasheet ESP32", "hoja de datos ESP32",
|
||||
"microcontrolador", "Espressif", "ESP-IDF", "IoT", "sistemas embebidos",
|
||||
]
|
||||
: isFr
|
||||
? [
|
||||
"ESP32", "ESP32 en français", "documentation ESP32", "brochage ESP32", "pinout ESP32",
|
||||
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
|
||||
"comparer ESP32", "quel ESP32 choisir", "datasheet ESP32", "fiche technique ESP32",
|
||||
"microcontrôleur", "Espressif", "ESP-IDF", "IoT", "systèmes embarqués",
|
||||
]
|
||||
: isDe
|
||||
? [
|
||||
"ESP32", "ESP32 auf Deutsch", "ESP32 Dokumentation", "ESP32 Pinbelegung", "ESP32 Pinout",
|
||||
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
|
||||
"ESP32 vergleichen", "welchen ESP32 wählen", "ESP32 Datenblatt",
|
||||
"Mikrocontroller", "Espressif", "ESP-IDF", "IoT", "eingebettete Systeme",
|
||||
]
|
||||
: [
|
||||
"ESP32", "ESP32 português", "documentação ESP32", "pinout ESP32",
|
||||
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
|
||||
@@ -126,6 +150,10 @@ export async function generateMetadata({ params }) {
|
||||
? "Specifications, pinouts, comparison and selection of 12 ESP32 microcontroller series."
|
||||
: isEs
|
||||
? "Especificaciones, patillaje, comparación y selección de las 12 series de microcontroladores ESP32."
|
||||
: isFr
|
||||
? "Spécifications, brochages, comparaison et sélection des 12 séries de microcontrôleurs ESP32."
|
||||
: isDe
|
||||
? "Spezifikationen, Pinbelegungen, Vergleich und Auswahl der 12 ESP32-Mikrocontrollerserien."
|
||||
: "Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro.",
|
||||
},
|
||||
twitter: {
|
||||
@@ -135,6 +163,10 @@ export async function generateMetadata({ params }) {
|
||||
? "Specifications, pinouts, comparison and selection of 12 ESP32 series."
|
||||
: isEs
|
||||
? "Especificaciones, patillaje, comparación y selección de las 12 series de ESP32."
|
||||
: isFr
|
||||
? "Spécifications, brochages, comparaison et sélection des 12 séries ESP32."
|
||||
: isDe
|
||||
? "Spezifikationen, Pinbelegungen, Vergleich und Auswahl der 12 ESP32-Serien."
|
||||
: "Especificações, pinagem, comparação e seleção das 12 séries de ESP32, em português.",
|
||||
},
|
||||
robots: {
|
||||
@@ -194,7 +226,7 @@ export default async function RootLayout({ children, params }) {
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd.siteESociedade(locale)) }}
|
||||
/>
|
||||
</head>
|
||||
<body className="font-sans antialiased bg-canvas text-ink overflow-x-clip" suppressHydrationWarning>
|
||||
<body className="font-sans antialiased bg-canvas text-ink overflow-x-clip hyphens-auto" suppressHydrationWarning>
|
||||
<a
|
||||
href="#conteudo"
|
||||
className="sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[200] focus:rounded-full focus:bg-ink focus:px-5 focus:py-3 focus:text-sm focus:font-semibold focus:text-canvas"
|
||||
|
||||
Reference in new issue
Block a user